BSD
我正在尝试实现音高检测,而且在途中学习一些基本的音频物理,我实际上是新手,只是想了解整个事情是如何工作的......
我的问题是,什么是audioBuffer以及来自getChannelData的数据如何与频率相关。以及如何从audioBuffer中提取频率数据...
另外,如果有人可以解释一些关于采样率等的话,这也会很棒。
谢谢!
答案 0 :(得分:1)
AudioBuffer
只代表音频资源,即音频样本以及有关音频的其他信息。
例如,您可以访问sampleRate
对象的AudioBuffer
属性,以了解AudioBuffer
中包含的sampling frequency音频。
使用getChannelData
会返回一组音频样本。在采样率给定的每个间隔,您都有一个与样本的音频幅度对应的数字(对于IEEE 32浮点音频采样,介于-1.0和+1.0之间)。因此,此样本数组包含时域音频信息。
要进行音高检测,您需要在频率域中工作,并且从时域到频域,您需要使用Fourier transform。如果您想了解基础DSP(数字信号处理)原理,可以使用纯FFT库(例如,node-fft)。如果您只想实现音高检测,使用pitch.js等交钥匙解决方案会更容易。