我有一个相当有趣的问题要解决。
我想要取一个非常简单的声音(在钢琴上演奏的一个音符),并尝试以这样一种方式对其进行处理,以便我可以打印出最可能正在演奏的音符。
通过一些谷歌和搜索,我遇到了快速傅立叶变换,但我不完全确定如何使用它来分析来自wav文件的数据。
我的另一个想法是,音符在每次演奏时都应该或多或少是相同的。如果是这样,那么将两个wav文件转换为字节数组的百分比匹配会有什么用处吗?
我们将非常感谢您的想法和想法。
发布于 2011-03-04 11:13:22
与比较两个WAV相比,FFT是一个更好的选择。FFT将产生一个频谱,由于钢琴产生的是相对纯净的音调,当你绘制它时,你会观察到非常明显的尖峰。每个尖峰的位置表示波形的组成频率之一,其中最大的尖峰代表音符。
发布于 2011-03-04 11:13:27
您应该分析正在播放的音符的频率。我有点生疏了,但我认为FFT应该这样做,因为它将波形分解成频谱。
您不希望将wav文件与已存储的文件进行比较,因为周期振幅等可能不同。“百分比匹配”会产生错误的结果。
一旦你有了波形的频率,你就可以设计出正在演奏的音符。
发布于 2011-03-04 11:18:23
我会开始学习数字信号处理(DSP)和频谱分析。听起来像是你在试图找到你的钢琴音符的基频。
要使用WAV或其他文件格式执行任何有意义的工作,您需要提取和解释音频样本。如果不想手动完成此操作,我建议您查看大量现有的DSP库。我不确定有哪些好的c#库存在。
快速傅立叶变换(FFT)本质上是将时域上的功率转换到频域,实质上是在音频中添加一个z轴。
https://stackoverflow.com/questions/5192908
复制