所以,我试图检测从麦克风录制的声音的平均频率。可以假设这种声音将是mp3或wav形式。我的最终目标是实时(或足够接近),但现在只需找到mp3或wav的平均频率即可。
我在动作脚本3.0中找到任何可以帮助我完成这项任务的课程时遇到了难以置信的困难。任何人都可以通过建议AS3.0中的类或算法帮助我来查看这个特定的任务吗?
提前感谢所有人。
答案 0 :(得分:0)
最佳方法取决于您正在分析的音频。对于单声道输入,例如歌手,长笛或小号,自相关方法可以很好地工作。这里的想法是,你试图找到波形的周期,通过在不同的时间间隔与自身进行比较来找到最佳匹配。想象一下,你有一个声波,其周期从每400个样本开始。如果要迭代一定数量的样本,总是将索引i处的样本与索引处的样本(i + 400)进行比较,可能通过从另一个中减去一个并将此结果添加到运行总计中,您会发现如果波在400这个间隔内与自身完美匹配,则总数将为0.当然,您不知道400是您的幻数,因此您需要检查在您的可能范围内的各种间隔。您可以排除导致频率不可能低或高的时间间隔。你显然也不希望找到一个完美的匹配,但一般来说,匹配最接近的间隔是单声道音高的频率。
对于复音音源,或具有非常丰富的谐波(如小提琴或吉他)的音色的乐器,您可能需要使用不同的方法。基于FFT的方法被广泛用于此,以便将音频段分解成它们的谐波音调内容。然后,应用一些规则来决定从FFT出来的哪些频率是你最好的选择。