【问题标题】:JS Audio - audioBuffer getChannelData to frequencyJS Audio - audioBuffer getChannelData 到频率
【发布时间】:2017-07-30 07:13:52
【问题描述】:

bsd

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

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

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

谢谢!

【问题讨论】:

    标签: javascript audio html5-audio getusermedia audiobuffer


    【解决方案1】:

    AudioBuffer 仅表示音频资源,即音频样本和关于音频的附加信息

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

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

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

    【讨论】:

    • 附加信息:WebAudio API 通过Analyzer node 内置了对 FFT 的支持。
    猜你喜欢
    • 2017-03-11
    • 2011-11-10
    • 2018-04-02
    • 2014-05-29
    • 2014-05-07
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多