【问题标题】:Microphone Pitch/Freq Detection (actionscript 3.0 in particular)麦克风音高/频率检测(特别是 actionscript 3.0)
【发布时间】:2012-03-05 07:32:59
【问题描述】:
所以,我正在尝试检测从麦克风录制的声音的平均频率。可以假设这个声音将是 mp3 或 wav 形式。我的最终目标是现场直播(或足够接近),但现在只需找到 mp3 或 wav 的平均频率就足够了。
我很难在 actionscript 3.0 中找到任何可以帮助我完成这项任务的类。任何人都可以通过建议 AS3.0 中的类或算法让我看看这个特定任务来帮助我吗?
在此先感谢大家。
【问题讨论】:
标签:
actionscript-3
mp3
detection
frequency
pitch
【解决方案1】:
最佳方法因您正在分析的音频而异。对于单声道输入,例如歌手、长笛或小号,自相关方法可以很好地工作。这里的想法是,您试图通过在不同的时间间隔将其与自身进行比较来找到波形的周期,以找到最佳匹配。想象一下,您有一个声波,其周期在每 400 个样本后重新开始。如果您要迭代一些样本,总是将索引 i 处的样本与索引 (i + 400) 处的样本进行比较,也许通过从另一个中减去并将此结果添加到运行总数中,您会发现您的如果波浪在 400 的区间内完美匹配,则总计将为 0。当然,您不知道 400 是您的幻数,因此您需要检查可能范围内的各种区间.您可以排除可能导致频率低或高的间隔。你显然也不会期望找到一个完美的匹配,但一般来说,匹配最接近的间隔就是你的单音音高频率。
对于复音源,或音色非常丰富的乐器(如小提琴或吉他),您可能需要使用不同的方法。基于 FFT 的方法被广泛用于此,以便将音频片段分解为其谐波音高内容。然后就是应用您想出的一些规则来决定从 FFT 中出来的哪些频率是您的最佳选择。