首页 > 解决方案 > 网络音频中的分贝值

问题描述

我正在为我正在开发的 JavaScript 应用程序使用cordova-plugin-audioinput插件。我正在尝试使用以下代码实时获取不同频率的不同分贝值:

function startCapture() {
    audioinput.start({
        audioSourceType: 9,
        sampleRate: 44100,
        streamToWebAudio: true
    });

    audioCtx = audioinput.getAudioContext();
    analyser = audioCtx.createAnalyser();
    analyser.fftSize = 8192;
    analyser.maxDecibels = 0;
    audioinput.connect(analyser)

    bufferLength = analyser.frequencyBinCount;
    dataArray = new Uint8Array(bufferLength);
}

数据被保存到dataArray使用中analyser.getByteFrequencyData(dataArray);

即使我指定maxDecibelsto 0,也会dataArray充满正值,这对我来说没有任何意义。我需要最终结果以分贝为单位,即使被推入的值会dataArray实时对音量做出相应反应,但它们不是以分贝为单位的。

标签: javascriptaudiocordova-pluginsweb-audio-apidecibel

解决方案


返回的值getByteFrequencyData()始终在 0 到 255 的范围内。这些值从minDecibels到线性映射maxDecibels。请参阅getByteFrequencyData


推荐阅读