我是音频世界的新手,我被分配了一项任务,我不知道如何处理。 我需要显示一个表示WAV文件音高的图表。 WAV文件可以是复音,然后我需要显示显性(读取:具有最强音量)乐器(或人声唱歌)的音高图。 我对.NET很熟悉,在C,C ++,Java方面几乎一无所知。
我开始在网络上进行研究,从我理解的复音WAV文件的音高检测是一个未解决的问题,但我不需要确切的音调,只是为了知道下一个是否更高,并且它的长度是多少。
我的问题是:
我应该从哪里开始学习这项任务背后的理论?有没有推荐的书?
是否有任何API /工具可以做到这一点?
谢谢,
ML
答案 0 :(得分:2)
您可以使用傅立叶分析来提取波的组成频率。这是一个相关的SO问题:Fast Fourier Transform in C#
答案 1 :(得分:1)
我开始使用Digital Signal Processing进行信号处理。您可以购买约30美元的书籍,或免费下载PDF格式。它是为非科学家编写的,包含大量信息,可以帮助您使用各种信号处理技术。
FFT(快速傅里叶变换)将时间与幅度信号转换为频率(频段)与强度(能量)。您可以通过许多网站上的standard charts从频率转到笔记。
答案 2 :(得分:0)
我一直在做一个有点相关的项目。您将要研究快速傅里叶变换。我可以推荐这个project written in C# - 它是作为吉他调音器编写的,但它可以很容易地根据你的目的进行修改。
然而,这不会做多音调。有一种名为“celemony”的产品声称具有使用“Direct Note Access(DNA)”的这种能力。他们的技术可以理解为封闭源,但您可以以合适的价格获得许可。