Значение децибела в веб-аудио
Я использую https://github.com/edimuj/cordova-plugin-audioinput для приложения JavaScript, которое я разрабатываю. Я пытаюсь получить разные значения децибел на разных частотах в режиме реального времени, используя этот код:
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);
Хотя я указываю maxDecibels
в 0
, dataArray
наполняется положительными ценностями, которые не имеют никакого смысла для меня. Мне нужно, чтобы конечный результат был в децибелах, и хотя значения, которые вставляются в dataArray
реагировать соответственно на громкость в реальном времени, они не в децибелах.
1 ответ
Значения, возвращаемые getByteFrequencyData()
всегда находятся в диапазоне от 0 до 255. И эти значения отображаются линейно из minDecibels
в maxDecibels
, Смотрите getByteFrequencyData.