比较简单的声音 - 什么是最近的频率

时间:2011-03-04 11:06:21

标签: c# audio fft

我有一个相当有趣的问题要解决。

我想拍一个非常简单的声音(在钢琴上弹奏一个音符)并尝试以这样的方式处理它,以便我可以打印出最有可能播放的音符。

通过一些谷歌搜索和搜索,我遇到了快速傅立叶变换,但我不完全确定如何使用它来分析来自wav文件的数据。

我的另一个想法是每次播放时音符应该或多或少相同。如果是这种情况,两个wav文件转换成字节数组的百分比匹配是否有用?

非常感谢思想和想法。

3 个答案:

答案 0 :(得分:2)

与比较两个WAV相比,FFT是一个更好的选择。 FFT将产生一个频谱,由于钢琴产生相对纯净的音调,因此在绘制时会观察到非常明显的尖峰。每个尖峰的位置表示波形的一个组成频率,最大的尖峰代表音符。

答案 1 :(得分:0)

您应该分析正在播放的音符的频率。我有点生疏,但我认为应该这样做,因为它将波形分解为频谱。

您不希望将wav文件与已存储的文件进行比较,因为周期幅度等可能不同。 “百分比匹配”会产生错误的结果。

一旦获得波形的频率,您就可以设计正在播放的音符。

答案 2 :(得分:0)

我将开始阅读数字信号处理(DSP)和频谱分析。听起来你正试图找到钢琴音符的基频

要使用WAV或其他文件格式进行任何有意义的工作,您需要提取和解释音频样本。如果不想手动这样做,我建议你研究一下现有的无数DSP库。我不确定有哪些好的c#库存在。

快速傅立叶变换(FFT)实质上将您在时域上的功率转换为频域,实质上是为您的音频添加z轴。