WebRTC声学回声消除

时间:2016-05-23 12:05:32

标签: javascript webrtc aec

我目前正在开展webrtc项目,并且在不使用耳机或外接麦克风时出现音频回声问题,是否有任何解决方法或修复此问题

3 个答案:

答案 0 :(得分:3)

WebRTC默认启用回声消除功能。您可以将其关闭以听取差异:



navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: false } })
  .then(stream => audio.srcObject = stream)
  .catch(e => log(e));

var log = msg => div.innerHTML += msg + "<br>";
&#13;
<audio id="audio" controls autoplay></audio><br>
<div id="div"></div>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
&#13;
&#13;
&#13;

回声消除技术可以存在于多个层面 - 浏览器,操作系统中的软件,有时甚至是硬件麦克风中的软件 - 有时这些技术会相互干扰。

不了解您的系统,我建议您查看系统的声音设置,以确保您没有太多级别的有用处理。

例如,在OSX上,声音设置下的使用环境降噪功能,当我转向时,对于使用WebRTC的人来说,这对我来说非常有效 即可。您只希望一位厨师同时尝试回音消除。

如果您正在为其他客户开发网站,那么您在软件方面所做的并不多,而且我希望大多数系统能够正常工作,如果不是很完美,那么虽然耳机总会如此更好。

答案 1 :(得分:1)

目前在webrtc中没有最佳的回声消除解决方案,因此我找到的最佳解决方案是使用AEC软件,或内置回声消除软件

答案 2 :(得分:0)

即使有视频 echoCancellation 约束,我也遇到了同样的麻烦

我终于可以删除将属性muted="true"添加到您的 local 视频元素中的回声/噪音,并将音量设置为0 document.getElementById("localVideo").volume = 0

这不会阻止您的localStream发出声音,但会消除您在本地产生的噪音。