【发布时间】:2011-11-07 11:24:55
【问题描述】:
详细说明:
假设我在吉他上弹奏 G 并且我的声卡已经接受了输入。如何让我的电脑识别出它是G? (对编程语言没有限制,虽然更喜欢 Python 或 C)(链接到文章或某些想法会有所帮助。没有代码 sn-ps)
【问题讨论】:
-
与预先确定的声音进行比较并不是音高识别的完成方式。糟糕的标题。
详细说明:
假设我在吉他上弹奏 G 并且我的声卡已经接受了输入。如何让我的电脑识别出它是G? (对编程语言没有限制,虽然更喜欢 Python 或 C)(链接到文章或某些想法会有所帮助。没有代码 sn-ps)
【问题讨论】:
Goertzel 滤波器和 FFT 都不是好的音高估计器。 FFT 是一种频率估计器,峰值频谱频率不同于心理声学音高(由于感知异常和实际乐器的物理特性,例如缺失或弱基本音)。
在 stackoverflow 上搜索音乐音高估计算法。有一堆。
【讨论】:
使用快速傅里叶变换。这是一些代码:http://www.codeproject.com/KB/audio-video/FftGuitarTuner.aspx
【讨论】:
如果您只想检查几个频率,Goertzel algorithm 可能更容易实现。 (并且在运行时更快)
【讨论】: