我有以下问题:我使用 javascript 和 FFT 分析音频数据。我已经可以将 FFT 数据写入数组:
audioCtx = new AudioContext();
analyser = audioCtx.createAnalyser();
source = audioCtx.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(audioCtx.destination);
analyser.fftSize = 64;
var frequencyData = new Uint8Array(analyser.frequencyBinCount);
每次我想获得新数据时,我都会调用:
analyser.getByteFrequencyData(frequencyData);
变量“audio”是一个用 HTML 定义的 mp3 文件:
<audio id="audio" src="test.mp3"></audio>
到目前为止,一切都很好。
我现在的问题是我想检查当前数组“frequencyData”是否包含特定频率。例如:我在 mp3 文件中的某处放置了一个 1000 Hz 信号,并且希望在 mp3 文件的这部分当前位于数组“frequencyData”中时得到通知。
第一步,当 mp3 文件的重要部分仅包含 1000 Hz 信号时,它将帮助我解决问题。在第二步中,如果有音乐覆盖,我还想找到该部分。