首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用梳状滤波器检测基频?

如何用梳状滤波器检测基频?
EN

Stack Overflow用户
提问于 2020-06-09 07:31:47
回答 2查看 73关注 0票数 0

我必须使用梳状滤波器来检测声音文件的主频,如果是声音序列,则检测频率。我搜索了这个问题的任何实现或解释,但不幸的是没有找到任何东西。

到目前为止,我得到的是:我正在将一个wav文件加载到我的java应用程序中,然后使用FFT将其转换到频域。

我接下来该怎么办?如何实现这种用于频率检测的梳状滤波器?我不是要代码,只要告诉我该如何解决这个问题。我不允许使用外部库。谢谢你的建议。

EN

回答 2

Stack Overflow用户

发布于 2020-06-10 00:25:27

查找“谐波乘积谱”算法或方法。

您可以使用固定的梳子模板,并将其与FFT频谱宽度的变化重新缩放进行匹配,以获得最佳匹配,或者您也可以将固定频谱与频率间隔变化的梳子的范围进行匹配。插值或过滤可用于重新缩放(重采样的一种形式)。逐次逼近可以改善最佳滤波器匹配,从而改善频率估计。最佳匹配应该是基音高或周期性频率的良好估计,或者可能是次谐波。

票数 0
EN

Stack Overflow用户

发布于 2020-06-22 21:52:19

在我的频率检测方法中,我生成了N个梳状滤波器,方案如下:

代码语言:javascript
复制
filter1 -> 10-1010-1 ...
filter2 -> 100-100100-100...
filter3 -> 1000-10001000-1000...
filterN -> 1N0-1N0

我在计算fft后的步骤:

如果当前result

  • Calculate大于前一个,则
  1. 从每个梳状滤波器的环路和中取fft结果的幅度部分
  2. ,将sumMax设置为当前和,并将每个梳子之间的间隔与采样率的商和窗口大小

相乘来计算频率

这种方法并不完美,但适用于基本声音的频率检测。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62272757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档