我正在尝试根据我找到的这篇论文(http://arxiv.org/pdf/1003.4083.pdf)来计算MFCC算法,所以到目前为止我所做的是:
步骤1)预强调
第2步)成帧
步骤3)汉明加窗
步骤4)快速傅立叶变换
步骤5) Mel滤波器组处理
步骤6):离散余弦变换
基本上,我使用Mel组滤波器并将它们与实际的原始信号相乘。然后,我对这些结果执行了FFT,如下所示:
帧1上的FFT:

然后我计算了FFT的DCT,结果如下所示:
第1帧上的DCT:

到目前为止,这看起来正确吗?有没有办法让我检查一下,这样我就知道我走的方向是对的?
此外,我需要获得13个系数,但我不知道如何确定这些系数中的哪一个。我得到了256个值,那么我要取前13个值吗?或者,我得到的是总能量?
我希望有人能帮助我。
发布于 2012-12-11 14:28:31
不,你错了。
你需要计算快速傅立叶变换后的mel滤波器组能量的对数,然后才能应用离散余弦变换。滤波器组的能量数应该是20或40,经过DCT后,你应该得到20或40个数字,并取前13个数字。
你对FFT所做的一切都是错误的。
你可能想要阅读一些MFCC代码,而不是从头开始做一些事情,有很多实现,例如在sphinxbase中:
http://cmusphinx.sourceforge.net
发布于 2013-03-13 20:12:59
经过几天的类似搜索,我偶然发现了一个非常有用的关于如何获得MFC Coeficients的教程:Mel Frequency Cepstral Coefficient (MFCC) tutorial
(虽然这个帖子很老,但我希望答案能对未来的读者有所帮助)
发布于 2013-12-27 23:52:24
我对你刚刚写的东西感到困惑。我唯一需要知道的是我已经将信号分割成帧,n= 100,m= 256 (我相信),这产生了大约390个块,那么,每个块有13个系数,还是整个声音fle只有13个系数?
答案是每个块有13个系数,而不是整个声音文件。
并且你计算mfcc系数的方法是错误的,你应该遵循你提到的1-6个步骤。
步骤1)对整个声音文件进行预加重。
步骤2)对整个声音文件进行分帧,得到多个分块
步骤3)对每个块进行汉明加窗
步骤4)每个块的快速傅立叶变换
步骤5)每个块的Mel滤波器组处理
步骤6):每个块的离散余弦变换
https://stackoverflow.com/questions/13810873
复制相似问题