0

bsd

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

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

此外,如果有人可以解释一下采样率等,这也很棒。

谢谢!

4

1 回答 1

0

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

例如,您可以访问对象sampleRate属性AudioBuffer以了解.AudioBuffer

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

要进行音高检测,您需要在域中工作,从时域到频域,您需要使用傅里叶变换。如果您想了解底层 DSP(数字信号处理)原理,可以使用纯 FFT 库(例如node-fft)。如果你只是想实现一个音高检测,使用像pitch.js这样的交钥匙解决方案会更容易。

于 2017-07-31T15:36:11.993 回答