我正在使用 MFCC 开发基于人工神经网络的语音识别系统。
假设我在 ANN 中有 260 个输入节点,并且这个节点数对应于我将使用的 MFCC 的数量。在特征提取期间,总系数的数量随声音文件的持续时间而变化。如果 ANN 仅针对 260 个系数进行训练,则会出现问题。
因此,如果使用产生更少或更多系数的不同声音持续时间来测试神经网络,系统很可能会失败。我的问题是我该如何解决这个问题?我在网上看到了几篇关于使用 ANN 进行语音识别的论文,但我还没有看到关于这个问题的内容
我正在使用 MFCC 开发基于人工神经网络的语音识别系统。
假设我在 ANN 中有 260 个输入节点,并且这个节点数对应于我将使用的 MFCC 的数量。在特征提取期间,总系数的数量随声音文件的持续时间而变化。如果 ANN 仅针对 260 个系数进行训练,则会出现问题。
因此,如果使用产生更少或更多系数的不同声音持续时间来测试神经网络,系统很可能会失败。我的问题是我该如何解决这个问题?我在网上看到了几篇关于使用 ANN 进行语音识别的论文,但我还没有看到关于这个问题的内容
您应该一次以几毫秒为单位处理语音。每个块的长度相同。然后您可以将您的 ANN 应用于这些功能。
您将使用“enframe”操作,例如这个: http ://my.fit.edu/~vkepuska/ece5526/TIMIT_Corpus/MATLAB/voicebox/enframe.m
这会将您的信号与某些重叠分开。您将从这些特征中提取某些特征 (MFCC),并将这些特征作为音素(或任何其他语音指示符)的一部分进行训练。
您将在运行时做同样的事情,并将 enframe 获得的每个块分类为音素。最后你会得到一个结果,你的语音间隔被映射到关键语音块。统一它们将允许识别所说的内容。
如果您不想这样做,则可以使用 HMM,它可以处理长度变化的语音信号。