Я использую Web Audio API для создания простого анализатора спектра с использованием компьютерного микрофона в качестве входного сигнала.Базовая функциональность моей текущей реализации работает нормально, с использованием частоты дискретизации по умолчанию (обычно 48 кГц, но может быть 44,1 кГц в зависимости от браузера).
В некоторых приложениях я хотел бы использовать более низкую частоту дискретизации (~ 8 кГц) для FFT.
Похоже, что API Web Audio добавляет поддержку для настройки частоты дискретизации, которая в настоящее время доступна только в FireFox (https://developer.mozilla.org/en-US/docs/Web/API/AudioContextOptions/sampleRate).
Добавление частоты дискретизации в контекстКонструктор:
// create AudioContext object named 'audioCtx'
var audioCtx = new (AudioContext || webkitAudioContext)({sampleRate: 8000,});
console.log(audioCtx.sampleRate)
Консоль выводит «8000» (в FireFox), поэтому она работает до этого момента.
Микрофон включается пользователем при помощи нажатияВ раскрывающемся меню. Это функция, обслуживающая выпадающий список:
var microphone;
function getMicInputState()
{
let selectedValue = document.getElementById("micOffOn").value;
if (selectedValue === "on") {
navigator.mediaDevices.getUserMedia({audio: true})
.then(stream => {
microphone = audioCtx.createMediaStreamSource(stream);
microphone.connect(analyserNode);
})
.catch(err => { alert("Microphone is required."); });
} else {
microphone.disconnect();
}
}
В FireFox при использовании раскрывающегося меню для активации микрофона отображается всплывающее окно, запрашивающее доступ к микрофону (как обычно ожидается).разрешить микрофон, на консоли отобразится: «Подключение AudioNodes из AudioContexts с другой частотой дискретизации в настоящее время не поддерживается».дисплей анализатора спектра остается пустым.
Есть идеи, как преодолеть эту ошибку?Если мы сможем обойти это, какие-либо указания о том, как указать sampleRate, когда частота дискретизации звуковой карты пользователя неизвестна?