JS Audio - audioBuffer getChannelData到频率

时间:2017-07-30 07:13:52

标签: javascript audio html5-audio getusermedia audiobuffer

BSD

我正在尝试实现音高检测,而且在途中学习一些基本的音频物理,我实际上是新手,只是想了解整个事情是如何工作的......

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

另外,如果有人可以解释一些关于采样率等的话,这也会很棒。

谢谢!

1 个答案:

答案 0 :(得分:1)

AudioBuffer只代表音频资源,即音频样本以及有关音频的其他信息

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

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

要进行音高检测,您需要在频率域中工作,并且从时域到频域,您需要使用Fourier transform。如果您想了解基础DSP(数字信号处理)原理,可以使用纯FFT库(例如,node-fft)。如果您只想实现音高检测,使用pitch.js等交钥匙解决方案会更容易。

相关问题