如何在识别过程中更改未识别语音信号的长度?

How to change the length of the unidentified speech signal during recognition?

如几本书所述,孤立词的识别过程包括以下内容:

  1. 对于给定的一组信号(模板),确定特征向量 每个模板——矩阵 M×N,其中 M 是数量 特征(MFCC,ZCR,...)和 N 是帧数。
  2. 使用一些算法训练模板,例如 ANN、HMM、GMM、SVM。
  3. 通过训练模型识别测试信号。

由于语音信号具有不同的持续时间,因此它们的长度通过动态时间规整(DTW)技术对齐,因此所有模板的 N 都相同。可以在训练的时候完成。

我的问题是:如何改变测试信号的长度?我不能在上面使用 DTW,因为我不知道它属于哪个 class。我是否应该使用 "time stretching" 算法,保留音高?如果我应该,这将如何影响识别准确性?

通过提取 N 帧在时间上间隔得更近或更远的特征,您可以获得与 "time stretched" 信号一个等效的 MxN 特征向量。

您无需更改长度即可匹配。你从参考样本和测试样本中提取特征,它们都有不同的帧数。然后在每个参考之间应用 DTW 并进行测试,从而对齐它们。作为 DTW 运行的结果,您可以获得测试样本和每个参考之间的匹配分数。您所做的是不均匀地拉伸每个参考样本以与测试样本相匹配。因为您将每个参考与单个测试进行了比较,所以您可以使用 DTW 分数进行比较。所以你 select 结果是得分最高的参考。

有关 DTW 语音识别的详细信息和想法,请查看此 presentation

如果你想用DTW更接近语音识别的思想,你可以读一本书语音识别基础第1版 作者: Lawrence Rabiner,Biing-Hwang Juang