JS Audio - audioBuffer getChannelData 到频率

JS Audio - audioBuffer getChannelData to frequency

bsd

我正在尝试实现音高检测,此外还学习了一些基本的音频物理学,实际上我对此很陌生,只是想了解这一切是如何工作的...

我的问题是,audioBuffer 到底是什么以及来自 getChannelData 的数据如何与频率相关。以及如何从 audioBuffer 中提取频率数据...

另外,如果有人能解释一下采样率等,那也很好。

谢谢!

一个AudioBuffer简单地表示一个音频资源,即音频样本和关于音频的附加信息

例如,您可以访问 AudioBuffer 对象的 sampleRate 属性 以了解 AudioBuffer 中包含的音频的 sampling frequency .

使用 getChannelData 将为您提供一系列音频样本。在采样率给定的每个间隔,您都有一个数字(对于 IEEE 32 浮点音频样本,介于 -1.0 和 +1.0 之间)对应于样本的音频幅度。因此,这个样本数组包含时域音频信息。

要进行音高检测,您需要在频率域中工作,而要从时域到频域,您需要使用Fourier transform. If you want to understand underlying DSP (digital signal processing) principles, you can use a pure FFT library (for instance, node-fft). If you just want to achieve a pitch detection, using a turnkey solution such as pitch.js会更容易。