2

我已经实现了 MFCC 算法并想实现 BFCC。它们之间有什么区别,仅使用另一个函数而不是频率来 mel (2595 * Math.log10(1 + frequency / 700) ) 和 mel 到频率函数 (700 * (Math.pow(10, mel / 2595) - 1) ) 我遵循该代码:MFCC

PS:三角滤镜需要改代码吗?

4

2 回答 2

5

这些只是表示滤波器频率间隔的不同尺度。MFCC使用中心频率沿梅尔刻度间隔的滤波器,而BFCC将使用中心频率沿树皮刻度间隔的滤波器。

树皮比例可以简单地表示为:

  Bark(f)=13*arctan(0.00076*f)+3.5*arctan((f/(7500))*(f/(7500)))   

其中f是频率,单位为 Hz。
尽管您可以使用树皮标度来表示中心频率间隔,但研究表明,使用 mfcc 或 bfcc 来表示输入语音样本的特征向量对 ASR 系统性能的影响非常小。行业标准仍然是 MFCC。事实上,我对 BFCC 的了解并不多。

如果计算滤波器系数的代码相对通用,并且将中心频率作为输入参数,那么我会说你没问题。但是,最好仔细检查。使用 MATLAB 绘制频率响应并检查!您可以查看 [以下论文][1] 以比较 MFCC、BFCC 和统一比例频率间隔。

更新 1:滤波器的中心频率是带通/带阻滤波器的上限和下限截止频率之间的算术/几何平均值。此外,求解给f定 Bark 频率的逆方程并非易事。这将是一个需要求解的二次方程。一种方法是为 f 和 Bark 的不同值构建一个表,然后进行表查找。但是我找不到任何指向反向方程式的链接。

[1]: http://148.204.64.201/paginas%20anexas/voz/articulos%20interesantes/front%20end/MFCC/a-comparative-study-of.pdf
于 2011-06-02T18:50:32.127 回答
0

您可以改为手动选择每个树皮临界带的频率(一堆 if 和 else),因为树皮临界带没有精确的等式(对于 mel 也没有,但有一个非常接近的),然后得到每个波段的值的对数,然后应用dct,记住这是针对每一帧的,mel scale也使用对数比例,所以在做mfcc或bfcc之间没有太大意义。

于 2011-07-15T03:37:15.907 回答