MFCC - 13系数

时间:2012-12-10 23:08:26

标签: signal-processing speech-recognition mfcc

我正在尝试根据我发现的这篇论文(http://arxiv.org/pdf/1003.4083.pdf)来计算MFCC算法,所以到目前为止我所做的是:

步骤1)预先强调

步骤2)框架

步骤3)汉明窗口

步骤4)快速傅立叶变换

步骤5)Mel过滤银行处理

步骤6):离散余弦变换

基本上,我使用Mel Bank过滤器并将它们乘以实际的原始信号。然后,我对这些结果执行了FFT,如下所示:

第1帧的

FFT:

enter image description here

然后我计算了FFT的DCT,其结果如下:

第1帧的DCT:

enter image description here

到目前为止,这看起来是否正确?有没有办法让我检查一下,以便我知道我正朝着正确的方向前进?

另外,我需要获得13个系数,但我不知道如何确定这些系数。我得到256个值,所以我采取前13个值吗?或者,我能获得总能量吗?

我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:8)

经过几天搜索类似的东西,我偶然发现了一个非常有用的教程,如何获得MFC Coeficients: Mel Frequency Cepstral Coefficient (MFCC) tutorial

(虽然线程陈旧,但我希望答案可能有助于未来的读者)

答案 1 :(得分:4)

  

我对你刚写的东西很困惑。我唯一需要知道的是   我把信号分成帧,n = 100,m = 256(我相信)   它产生大约390个块,因此有13个系数   每个块或整个声音只有13?

答案是每个块有13个系数,而不是整个声音文件。

并且你计算mfcc系数的方法是错误的,你应该遵循你提到的1-6步。

步骤1)预先强调整个声音文件。

步骤2)构建整个声音文件以获得许多块

步骤3)每个块的汉明窗口

步骤4)每个块的快速傅里叶变换

步骤5)每个块的Mel过滤器库处理

步骤6):每个块的离散余弦变换

答案 2 :(得分:2)

不,你错了。

您需要在FFT之后计算梅尔滤波器组能量的对数,然后才应用DCT。滤波器组的能量数量应该是20或40左右,在DCT之后你应该得到20或40个数字并且先取13个。

你用FFT做的事情都错了。

您可能想要阅读一些MFCC代码而不是从头开始做某些事情,那里有很多实现,例如在sphinxbase中:

http://cmusphinx.sourceforge.net