Отмена акустического эха WebRTC

В настоящее время я работаю над проектом webrtc, и у меня проблема со звуковым эхом, когда я не использую наушники или внешний микрофон, есть ли обходной путь или решение для этого?


person Ihsan    schedule 23.05.2016    source источник
comment
WebRTC — это протокол передачи данных P2P, не имеющий ничего общего со звуком.   -  person polkovnikov.ph    schedule 23.05.2016
comment
@polkovnikov.ph вы думаете о RTCPeerConnection. По историческим причинам WebRTC часто используется как общий термин как для этого, так и для getUserMedia API. Даже одноранговые соединения не зависят от данных и имеют дело конкретно с аудио и видео.   -  person jib    schedule 23.05.2016


Ответы (3)


Подавление эха должно быть включено по умолчанию в WebRTC. Вы можете отключить его, чтобы услышать разницу:

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

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

Технология эхоподавления может существовать на многих уровнях — программное обеспечение в браузере, в ОС, а иногда даже в аппаратном микрофоне — иногда эти технологии могут мешать друг другу.

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

Например, в OSX есть функция использовать шумоподавление в разделе Настройки звука, которая, как мне кажется, лучше работает с WebRTC, когда я отключаю. эм>. Вы хотите, чтобы только один шеф-повар одновременно пытался подавить эхо.

Если вы работаете над веб-сайтом для других клиентов, то вы мало что можете сделать в программном обеспечении, и я ожидаю, что большинство систем будут работать если не идеально, то прилично, хотя гарнитура всегда будет лучше.

person jib    schedule 23.05.2016
comment
да, у меня нет проблем, если я использую гарнитуру, но эхо все еще существует, если я ее не использовал, потому что мой голос возвращается из динамика других людей, и это вызывает эхо или обратную связь, есть ли какое-либо другое решение для этого? - person Ihsan; 23.05.2016
comment
@ShinjiKagehisa какой браузер, система и микрофон? - person jib; 23.05.2016
comment
chrome, firefox с использованием osx, windows, linux и встроенного микрофона - person Ihsan; 24.05.2016
comment
@ShinjiKagehisa на самом деле, если вы слышите свой голос из динамиков других людей, возможно, эхо находится в их системе. Я бы попробовал разных участников изолировать, откуда исходит эхо (я знаю, что вы упомянули, что наушники фиксируют его, что и сбивает с толку). - person jib; 24.05.2016

В настоящее время нет лучшего решения для эхоподавления в webrtc, поэтому лучшим решением, которое я нашел, является использование программного обеспечения AEC или встроенного программного обеспечения для эхоподавления.

person Ihsan    schedule 10.06.2016

У меня была такая же проблема даже с ограничением видео echoCancellation.

Наконец-то я смог удалить эхо/шум, добавив свойство muted="true" к вашему видеоэлементу local и установить громкость на 0 document.getElementById("localVideo").volume = 0

Это не помешает вашему локальному потоку иметь звук, но отменит шум, который у вас есть локально.

person Adrian García    schedule 09.05.2020