首页 > 解决方案 > 减少javascript中麦克风输入的音频播放延迟?

问题描述

我需要在javascript(来自浏览器)中从麦克风捕获一些输入并实时播放音频。但是我得到的延迟真的很难看(大约 200 毫秒)。

我怎样才能减少这个?javascript 是一个不错的选择,可以预期像 20 毫秒这样的延迟吗?

我只是尝试使用getUserMedia()AudioContextutils捕获音频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);
  });

欢迎提出任何建议以最大程度地减少延迟。谢谢

标签: javascriptaudiostreamweb-audio-apiplayback

解决方案


不知道这是否会有所帮助,但如果您将音频发送到 WebAudio,则绝对应该关闭回声消除和其他输入处理。有关详细信息,请参阅echoCancellation 约束。您可能还想关闭增益控制和噪声抑制。


推荐阅读