MFCC 和 BFCC 有什么区别?

发布于 2024-11-13 12:14:23 字数 615 浏览 6 评论 0原文

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

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

I have implemented MFCC algorithm and want to implement BFCC. What are the differences between them and is it enough just to use another function instead of frequency to mel (2595 * Math.log10(1 + frequency / 700) ) and mel to frequency functions (700 * (Math.pow(10, mel / 2595) - 1) ) I follow that code: MFCC

PS: Does it need to change the code for triangular filters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

開玄 2024-11-20 12:14:23

这些只是表示滤波器频率间隔的不同尺度。 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:滤波器的中心频率是带通/带阻滤波器的上限截止频率和下限截止频率之间的算术/几何平均值。
此外,在给定 Bark 频率的情况下求解 f 的逆方程也并非微不足道。这将是一个需要求解的二次方程。一种方法是为 f 和 Bark 的不同值构建一个表,然后进行表查找。但我一直没能找到任何反向方程的链接。

[1]: http://148.204.64.201/paginas%20anexas/voz/articulos%20interesantes/front%20end/MFCC/a-comparative-study-of.pdf

These are just different scales of representing the frequency spacings of the filters. MFCC uses filters whose center frequencies are spaced along the mel scale, while BFCC will use filters with center frequencies spaced along the bark scale.

The bark scale would simply be represented as:

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

where f is the frequency in Hz.
Though you can use the bark scale to represent the center frequency spacings, research shows that using either mfcc or bfcc to represent feature vectors of an input speech sample has very little effect on ASR systems performance. The industry standard remains MFCC. In fact, I have not heard much of the BFCC.

If the code for the computation of filter coefficients is relatively generic and it takes in center frequencies as an input parameter, then I would say that you are OK. But, it is always best to double-check. Use MATLAB and plot frequency responses and check! You can check the [following paper][1] out for a comparison between MFCC, BFCC and uniform scale frequency spacings.

Update 1: The center frequency of a filter is either the arithmetic/geometric mean between the upper and lower cutoff frequencies of a band-pass/band-stop filter.
Also, the reverse equation to solve for f given the Bark frequencies is not trivial. It will be a quadratic equation that will need to be solved. One way would be to have a table constructed for different values of f and Bark and then do a table lookup. But I have not been able to find any links to the reverse equation.

[1]: http://148.204.64.201/paginas%20anexas/voz/articulos%20interesantes/front%20end/MFCC/a-comparative-study-of.pdf
倾城泪 2024-11-20 12:14:23

您可以直接选择每个树皮临界频带(一堆 if 和 else 的频率)的频率,因为树皮临界频带没有精确的方程(对于梅尔也是如此,但有一个非常接近的方程),然后得到每个波段的值的对数,然后应用 dct,记住这是针对每个帧的,mel 标度也使用对数标度,因此在执行 mfcc 或 bfcc 之间没有太大意义。

You could just instead select the frequencies by hand of each bark critical band (a bounch of if's and else's), since there is no exact equation for bark critical bands (for mel's either, but there is a pretty close one), then get the logarithm of the value for each band, and then apply dct, remember this is for each frame, mel scale uses also logarithmic scale, so there is not much point between doing mfcc or bfcc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文