关于 WORLD 中 code_spectral_envelope 和 MFCC 关系的理解

参考:

  1. https://github.com/mmorise/World/issues/90 (有人提问 WORLD 提取得到的 mel spectrum 梅尔谱和传统概念上 经过一系列stft之后还要经过“三角滤波器组”的过程区别?)
  2. https://github.com/mmorise/World/issues/33 (r9y9 在mmorise/World 下提问关于 编码/解码后音色变化问题;代码bug已解决;学习一下画图和使用特点)

总结:

  1. image-20200723190240435

  2. 简言之,传统论文 Mel-cepstral analysis 提到的方法,也就是正常思路的经过 FFT 后再经过三角滤波器组 得到的 mel 谱,之所以需要三角滤波,可以理解为是,因为MFCC是在 频谱图 上进行的操作,所以是未经过 平滑 操作的,所以需要滤波器;

  3. 而WORLD,是在频谱包络上进行的操作,本身已经是顺滑过的,所以得到的 sp 特征,看似流程上没有三角滤波,但是它在使用的时候,效果和SPTK、librosa、merlin之类工具得到的 MFCC 来处理的音频效果是差不多的。

  4. 所以,就可以理解,很多论文的实现上,作者们在遇到:MFCC 这个特征需要时,若非论文着重强调,是可以用 code_spectral_envelope ,并取维度参数为 36 等,来表示36维度(bin)的MFCC特征的。


以上,解决了一直没人能帮我说清楚的问题疑惑。

还是要多看看源码和 issue,和大佬们交流才进步的多。


这行里,可能大佬很多,但是能真正带领小白入门的系统专家真的少。sigh。我可能适合做老师,喜欢把大家难懂的东西,娓娓道来,教会孩子们。😁