将 MFCC 用于 ANN 语音识别系统

信息处理 语音识别 mfcc 机器学习
2022-01-26 22:21:42

我正在使用 MFCC 开发基于人工神经网络的语音识别系统。

假设我在 ANN 中有 260 个输入节点,并且这个节点数对应于我将使用的 MFCC 的数量。在特征提取期间,总系数的数量随声音文件的持续时间而变化。如果 ANN 仅针对 260 个系数进行训练,则会出现问题。

因此,如果使用产生更少或更多系数的不同声音持续时间来测试神经网络,系统很可能会失败。我的问题是我该如何解决这个问题?我在网上看到了几篇关于使用 ANN 进行语音识别的论文,但我还没有看到关于这个问题的内容

3个回答

您应该一次以几毫秒为单位处理语音。每个块的长度相同。然后您可以将您的 ANN 应用于这些功能。

您将使用“enframe”操作,例如这个: http ://my.fit.edu/~vkepuska/ece5526/TIMIT_Corpus/MATLAB/voicebox/enframe.m

这会将您的信号与某些重叠分开。您将从这些特征中提取某些特征 (MFCC),并将这些特征作为音素(或任何其他语音指示符)的一部分进行训练。

您将在运行时做同样的事情,并将 enframe 获得的每个块分类为音素。最后你会得到一个结果,你的语音间隔被映射到关键语音块。统一它们将允许识别所说的内容。

如果您不想这样做,则可以使用 HMM,它可以处理长度变化的语音信号。

简单的神经网络没有输入长度不变性,也不允许分析时间序列。

对于像一系列 MFCC 帧这样的时间序列的分类,您可以使用具有时间不变性的分类器。例如,您可以使用结合隐马尔可夫模型 (ANN-HMM) 的神经网络、具有隐马尔可夫模型的高斯混合模型 (GMM-HMM) 或递归神经网络 (RNN)。RNN 的 Matlab 实现在这里Theano 实现也可用您可以在 Google 中找到这些结构的详细说明。

语音识别实现不是一件简单的事情,最好使用现有的软件比如CMUSphinx