如何将声音输入与预先确定的声音进行比较?

Posted

技术标签:

【中文标题】如何将声音输入与预先确定的声音进行比较?【英文标题】:How to compare a sound input with a pre-determined sound? 【发布时间】:2011-11-07 11:24:55 【问题描述】:

详细说明:

假设我在吉他上弹奏 G 并且我的声卡已经接受了输入。如何让我的电脑识别出它是G? (对编程语言没有限制,虽然更喜欢 Python 或 C)(链接到文章或某些想法会有所帮助。没有代码 sn-ps)

【问题讨论】:

与预先确定的声音进行比较并不是音高识别的完成方式。糟糕的标题。 【参考方案1】:

Goertzel 滤波器和 FFT 都不是好的音高估计器。 FFT 是一种频率估计器,峰值频谱频率不同于心理声学音高(由于感知异常和实际乐器的物理特性,例如缺失或弱基本音)。

在 *** 上搜索音乐音高估计算法。有一堆。

【讨论】:

根据您的经验,哪种算法最能近似您提到的心理声学音高? 您可能想提出另一个更好的问题。这可能取决于您的要求和约束的详细信息。【参考方案2】:

使用快速傅里叶变换。这是一些代码:http://www.codeproject.com/KB/audio-video/FftGuitarTuner.aspx

【讨论】:

基于 FFT 的频率估计器制作出糟糕的吉他调音器。【参考方案3】:

如果您只想检查几个频率,Goertzel algorithm 可能更容易实现。 (并且在运行时更快)

【讨论】:

以上是关于如何将声音输入与预先确定的声音进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

Android比较两个声音以进行语音匹配

iPhone应用声音识别?

如何在Android中比较两个声音? [关闭]

比较Java中的两个声音(有容差)[关闭]

使用AudioKit测量声音(频率加权)的声音水平

在 C++ 中检测小的声音效果