Записать низкоуровневый ввод с микрофона с помощью API Web Audio - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь выяснить, как использовать API-интерфейс Web Audio для записи звука с низкой громкостью с мирофона. По сути, я рассчитываю записывать на низких частотах или децибелах, которые начинаются от 0 Гц до 100 Гц.

Любая помощь будет принята с благодарностью. Спасибо.

Так вот, что я получил до сих пор:

if (!navigator.getUserMedia) {
        navigator.getUserMedia = navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia;
    }
    navigator.getUserMedia({
        audio: true
    }, function(stream) {
        var ctx = new AudioContext();
        var source = ctx.createMediaStreamSource(stream);
        var gainNode = ctx.createGain();

        source.connect(gainNode);
        gainNode.connect(ctx.destination);
        document.getElementById('volume').onchange = function() {
            gainNode.gain.value = this.value;
        };

        gainNode.gain.value = document.getElementById('volume').value;

        new Audio().play();

    }, function(e) {
        alert(e);
});

    // For the demo only:
    document.getElementById('volume').onchange = function() {
        alert('Please provide access to the microhone before using this.');
    }

Это HTML-контроль:

Volume: <input type=range id=volume min=0 max=100 value=50 step=0.01/>

Из того, что я могу сказать, все, что яЯ делаю с помощью этого кода понижение уровня громкости на выходе из микрофона.

Как я уже сказал, я пытаюсь захватить вход низкой громкости от 0 Гц до 100 Гц.

1 Ответ

0 голосов
/ 13 ноября 2019

Если вы хотите записывать только частоты от 0 до 100 Гц, используйте один или несколько BiquadFilterNodes или IIRFilterNode для реализации фильтра нижних частот с частотой среза 100 Гц или около того.

Как правило, вам нужно определить правильный фильтр, но, возможно, эта страница дизайна фильтра будет вам полезна. Используйте на свой страх и риск!

...