Уменьшить задержку воспроизведения звука с входа микрофона в JavaScript? - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно захватить некоторые входные данные с микрофона в javascript (из браузера) и воспроизводить звук в режиме реального времени.Но задержка, которую я получаю, действительно ужасна (около 200 мс).

Как я могу уменьшить это?Является ли javascript хорошим вариантом для ожидания задержки, равной 20 мс?

Я просто попытался захватить звук, используя getUserMedia() и AudioContext utils из Web Audio API, и воспроизвести его:

const constraints = {
  video: false,
  audio: {
    echoCancellation: false,
    noiseSuppression: false,
    autoGainControl: false
  }
}

var context = new AudioContext({
  latencyHint: 'interactive',
  sampleRate: 44100,
});

navigator.mediaDevices.getUserMedia(constraints)
  .then((stream) => {
    var source = context.createMediaStreamSource(stream);
    source.connect(context.destination);
  });

Любые предложения приветствуются, чтобы минимизировать задержку.Спасибо

1 Ответ

1 голос
/ 09 мая 2019

Не знаю, поможет ли это, но вам обязательно следует отключить эхоподавление и другую обработку ввода, если вы отправляете аудио в WebAudio. См. ограничение echoCancellation для подробностей. Вы, вероятно, также хотите отключить регулировку усиления и шумоподавления.

...