SlideShare una empresa de Scribd logo
1 de 19
Muaz Khan

Echo is a distortion of voice that occurs either
when you receive your own voice; or something
unusual sound!
Echo is one of the biggest issues in current WebRTC
implementations!
Echo occurs if input output audio devices are placed
close together!

In old days; usage of the “headsets” was the only
“suggested” solution to overcome the echo!
Sometimes,
44.1 kHz and non-441.1 kHz simple rate mismatches
causes echo!
The "ambient noise reduction" which can be enabled
on the built-in mic on Mac appears to cause a very
small amount of echo.
Ensure both capture and render devices are set to
either 44.1 or 48 kHz. You can do this through the
"Audio MIDI Setup" application
Disable "ambient noise reduction“ on Mac.
Make sure there is distance between input and output
audio devices.
(Old guys suggested that) always prefer headphones
over built-in speakers!
Suggest users to install third party software(s) to mimic
echo.
E.g. Toshiba Echo Cancellation Utility
etc.

Acoustic Echo Cancellation (AEC) is a preferred solution!
High volume can produce sound noise on some audio
devices. The value may not be significant if audio
device volume is controlled externally.

HTMLAudioElement.volume = 0.9;
HTMLAudioElement.play();
Acoustic Echo is what happens when sound from your
speakers enters your microphone.
You may not hear it, but the people you are talking to will find it extremely irritating
Don’t use “autoplay:true” for local streams.
Manually set “muted:false” and “volume:0”:
HTMLVideoElement.volume = 0;
HTMLVideoElement.muted = 0;
The GainNode is a simple element that lets us control
the volume of the audio that’s coming into it.
var context = new webkitAudioContext(),
var sineWave = context.createOscillator();
var gainNode = context.createGainNode();
sineWave.connect(gainNode);
gainNode.connect(context.destination);
sineWave.noteOn(0);
gainNode.gain.value = 0.9;

Try this demo locally to control volume using GainNode.
No concrete solution!
Browser vendors landed some patches; however, still
echo issues occur on Firefox, Chrome and Opera!
Patches (getUserMedia constraints API):
googEchoCancellation
googAutoGainControl
googNoiseSuppression
googHighpassFilter

googNoiseReduction
googLeakyBucket

Ref: mediaconstraintsinterface.h
Acoustic Echo Cancellation (AEC) solves echo/noise
issues by analyzing the sound being played out from
your speakers and removes it from the sound captured
by your microphone.

Current AEC implementation in chromium uses less
CPU and improves voice quality.
Echo Controller works with 8k/16k sampling rate
however there are special processes in chromium to
make Echo Controller work for iSAC codec i.e. 32k
sampling audio; and opus codec i.e. 48k.
AEC may not work for mobile platforms with complex
implementations; only AECM could work which has
performance issues.
AECM provides poor quality; causes very loud background noise.
However, unfortunately, it seems that 40% of android devices are
unable to handle AEC.
AECM is unable to handle double talk.
AEC may fail to handle distorted input due to linear
algorithms.
AECM is limited to 8k/16k sampling rate; so skip opus
usage on android devices until AEC gets improved in
chromium!
Should mobile users compromise?
Hmm, unfortunately!
It is said that echo occurs when sound from the
speakers is picked up by the audio input devices i.e.
microphones. You need to place both devices away
from each other.
 People usually suggest to mute participants' audio
while they're idle. Remember, voice-activitydetection is "already" enabled by default on chrome.
RTP packets are streamed accordingly. So, there are
less chances of echo in such scenario.
 You either need to install echo cancellation software
according to your platform and devices; or try to use
microphone/headphone.







WebRTC Eco Cancellation
WebRTC improvement optimized aecacoustic echo
cancellation
mediaconstraintsinterface.h
https://github.com/muaz-khan/WebRTCExperiment/issues/95#issuecomment-24562690
https://code.google.com/p/webrtc/issues/detail?id=
2580
Muaz Khan
www.WebRTC-Experiment.com

muazkh@gmail.com

Más contenido relacionado

La actualidad más candente

Lecture 8 audio compression
Lecture 8 audio compressionLecture 8 audio compression
Lecture 8 audio compression
Mr SMAK
 
PCI Express Verification using Reference Modeling
PCI Express Verification using Reference ModelingPCI Express Verification using Reference Modeling
PCI Express Verification using Reference Modeling
DVClub
 

La actualidad más candente (20)

Lecture 8 audio compression
Lecture 8 audio compressionLecture 8 audio compression
Lecture 8 audio compression
 
An Overview of High Efficiency Video Codec HEVC (H.265)
An Overview of High Efficiency Video Codec HEVC (H.265)An Overview of High Efficiency Video Codec HEVC (H.265)
An Overview of High Efficiency Video Codec HEVC (H.265)
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
HEVC intra coding
HEVC intra codingHEVC intra coding
HEVC intra coding
 
Jtagppt
JtagpptJtagppt
Jtagppt
 
Embedded Systems Overview
Embedded Systems OverviewEmbedded Systems Overview
Embedded Systems Overview
 
Introduction to OpenCL
Introduction to OpenCLIntroduction to OpenCL
Introduction to OpenCL
 
FPGA Configuration
FPGA ConfigurationFPGA Configuration
FPGA Configuration
 
Audio compression
Audio compressionAudio compression
Audio compression
 
Tutorial High Efficiency Video Coding Coding - Tools and Specification.pdf
Tutorial High Efficiency Video Coding Coding - Tools and Specification.pdfTutorial High Efficiency Video Coding Coding - Tools and Specification.pdf
Tutorial High Efficiency Video Coding Coding - Tools and Specification.pdf
 
Understanding a kernel oops and a kernel panic
Understanding a kernel oops and a kernel panicUnderstanding a kernel oops and a kernel panic
Understanding a kernel oops and a kernel panic
 
How shit works: the CPU
How shit works: the CPUHow shit works: the CPU
How shit works: the CPU
 
HDR and WCG Video Broadcasting Considerations
HDR and WCG Video Broadcasting ConsiderationsHDR and WCG Video Broadcasting Considerations
HDR and WCG Video Broadcasting Considerations
 
PCI Express Verification using Reference Modeling
PCI Express Verification using Reference ModelingPCI Express Verification using Reference Modeling
PCI Express Verification using Reference Modeling
 
The Linux Scheduler: a Decade of Wasted Cores
The Linux Scheduler: a Decade of Wasted CoresThe Linux Scheduler: a Decade of Wasted Cores
The Linux Scheduler: a Decade of Wasted Cores
 
H.264 vs HEVC
H.264 vs HEVCH.264 vs HEVC
H.264 vs HEVC
 
Building a Cyber Range - Kevin Cardwell
Building a Cyber Range - Kevin CardwellBuilding a Cyber Range - Kevin Cardwell
Building a Cyber Range - Kevin Cardwell
 
An Introduction to AV1 - The Next-Gen Royalty-Free Codec From the Alliance fo...
An Introduction to AV1 - The Next-Gen Royalty-Free Codec From the Alliance fo...An Introduction to AV1 - The Next-Gen Royalty-Free Codec From the Alliance fo...
An Introduction to AV1 - The Next-Gen Royalty-Free Codec From the Alliance fo...
 
Video coding standards ppt
Video coding standards pptVideo coding standards ppt
Video coding standards ppt
 
IBC 2022 IP Showcase - Timestamps in ST 2110: What They Mean and How to Measu...
IBC 2022 IP Showcase - Timestamps in ST 2110: What They Mean and How to Measu...IBC 2022 IP Showcase - Timestamps in ST 2110: What They Mean and How to Measu...
IBC 2022 IP Showcase - Timestamps in ST 2110: What They Mean and How to Measu...
 

Similar a Echo in WebRTC; Why?

[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing
Alive Kuo
 
Presentation rme babyface - eng
Presentation rme babyface - engPresentation rme babyface - eng
Presentation rme babyface - eng
LOISEAU
 
Sound recording glossary improved
Sound recording glossary improvedSound recording glossary improved
Sound recording glossary improved
davidhall1415
 
Sound recording glossary improved version11111111111
Sound recording glossary improved version11111111111 Sound recording glossary improved version11111111111
Sound recording glossary improved version11111111111
Kieran Owens
 
Producing Quality How-To Videos for Social Media Publication
Producing Quality How-To Videos for Social Media PublicationProducing Quality How-To Videos for Social Media Publication
Producing Quality How-To Videos for Social Media Publication
Bonni Graham Gonzalez
 
Ig2 task 1 work sheet (glossary) steph hawkins
Ig2 task 1 work sheet (glossary) steph hawkinsIg2 task 1 work sheet (glossary) steph hawkins
Ig2 task 1 work sheet (glossary) steph hawkins
stephlizahawkins123
 
Ben ce sound recording glossary
Ben ce sound recording glossaryBen ce sound recording glossary
Ben ce sound recording glossary
BenCom1
 

Similar a Echo in WebRTC; Why? (20)

Building your digital podcast workstation
Building your digital podcast workstationBuilding your digital podcast workstation
Building your digital podcast workstation
 
[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing
 
Presentation rme babyface - eng
Presentation rme babyface - engPresentation rme babyface - eng
Presentation rme babyface - eng
 
Videoconference introduction
Videoconference introductionVideoconference introduction
Videoconference introduction
 
Audio noise reduction techniques
Audio  noise  reduction  techniquesAudio  noise  reduction  techniques
Audio noise reduction techniques
 
Chap67
Chap67Chap67
Chap67
 
Interactive Voice Con
Interactive Voice ConInteractive Voice Con
Interactive Voice Con
 
Sound recording glossary
Sound recording glossarySound recording glossary
Sound recording glossary
 
Sound recording glossary
Sound recording glossarySound recording glossary
Sound recording glossary
 
Sound recording glossary improved
Sound recording glossary improvedSound recording glossary improved
Sound recording glossary improved
 
10 Great Reasons to use a Mixer
10 Great Reasons to use a Mixer10 Great Reasons to use a Mixer
10 Great Reasons to use a Mixer
 
Sound recording glossary improved version11111111111
Sound recording glossary improved version11111111111 Sound recording glossary improved version11111111111
Sound recording glossary improved version11111111111
 
Digital vs analogue recording processes
Digital vs analogue recording processesDigital vs analogue recording processes
Digital vs analogue recording processes
 
Hands-Free NVH Analysis
Hands-Free NVH AnalysisHands-Free NVH Analysis
Hands-Free NVH Analysis
 
How To Record Music
How To Record MusicHow To Record Music
How To Record Music
 
Producing Quality How-To Videos for Social Media Publication
Producing Quality How-To Videos for Social Media PublicationProducing Quality How-To Videos for Social Media Publication
Producing Quality How-To Videos for Social Media Publication
 
Ig2 task 1 work sheet (glossary) steph hawkins
Ig2 task 1 work sheet (glossary) steph hawkinsIg2 task 1 work sheet (glossary) steph hawkins
Ig2 task 1 work sheet (glossary) steph hawkins
 
The secerts to great sounding samples.txt
The secerts to great sounding samples.txtThe secerts to great sounding samples.txt
The secerts to great sounding samples.txt
 
The secerts to great sounding samples.txt
The secerts to great sounding samples.txtThe secerts to great sounding samples.txt
The secerts to great sounding samples.txt
 
Ben ce sound recording glossary
Ben ce sound recording glossaryBen ce sound recording glossary
Ben ce sound recording glossary
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Echo in WebRTC; Why?

  • 1. Muaz Khan Echo is a distortion of voice that occurs either when you receive your own voice; or something unusual sound! Echo is one of the biggest issues in current WebRTC implementations!
  • 2. Echo occurs if input output audio devices are placed close together! In old days; usage of the “headsets” was the only “suggested” solution to overcome the echo!
  • 3. Sometimes, 44.1 kHz and non-441.1 kHz simple rate mismatches causes echo!
  • 4. The "ambient noise reduction" which can be enabled on the built-in mic on Mac appears to cause a very small amount of echo.
  • 5. Ensure both capture and render devices are set to either 44.1 or 48 kHz. You can do this through the "Audio MIDI Setup" application
  • 6. Disable "ambient noise reduction“ on Mac.
  • 7. Make sure there is distance between input and output audio devices. (Old guys suggested that) always prefer headphones over built-in speakers!
  • 8. Suggest users to install third party software(s) to mimic echo. E.g. Toshiba Echo Cancellation Utility etc. Acoustic Echo Cancellation (AEC) is a preferred solution!
  • 9. High volume can produce sound noise on some audio devices. The value may not be significant if audio device volume is controlled externally. HTMLAudioElement.volume = 0.9; HTMLAudioElement.play(); Acoustic Echo is what happens when sound from your speakers enters your microphone. You may not hear it, but the people you are talking to will find it extremely irritating
  • 10. Don’t use “autoplay:true” for local streams. Manually set “muted:false” and “volume:0”: HTMLVideoElement.volume = 0; HTMLVideoElement.muted = 0;
  • 11. The GainNode is a simple element that lets us control the volume of the audio that’s coming into it. var context = new webkitAudioContext(), var sineWave = context.createOscillator(); var gainNode = context.createGainNode(); sineWave.connect(gainNode); gainNode.connect(context.destination); sineWave.noteOn(0); gainNode.gain.value = 0.9; Try this demo locally to control volume using GainNode.
  • 12. No concrete solution! Browser vendors landed some patches; however, still echo issues occur on Firefox, Chrome and Opera!
  • 13. Patches (getUserMedia constraints API): googEchoCancellation googAutoGainControl googNoiseSuppression googHighpassFilter googNoiseReduction googLeakyBucket Ref: mediaconstraintsinterface.h
  • 14. Acoustic Echo Cancellation (AEC) solves echo/noise issues by analyzing the sound being played out from your speakers and removes it from the sound captured by your microphone. Current AEC implementation in chromium uses less CPU and improves voice quality.
  • 15. Echo Controller works with 8k/16k sampling rate however there are special processes in chromium to make Echo Controller work for iSAC codec i.e. 32k sampling audio; and opus codec i.e. 48k. AEC may not work for mobile platforms with complex implementations; only AECM could work which has performance issues. AECM provides poor quality; causes very loud background noise. However, unfortunately, it seems that 40% of android devices are unable to handle AEC.
  • 16. AECM is unable to handle double talk. AEC may fail to handle distorted input due to linear algorithms. AECM is limited to 8k/16k sampling rate; so skip opus usage on android devices until AEC gets improved in chromium! Should mobile users compromise? Hmm, unfortunately!
  • 17. It is said that echo occurs when sound from the speakers is picked up by the audio input devices i.e. microphones. You need to place both devices away from each other.  People usually suggest to mute participants' audio while they're idle. Remember, voice-activitydetection is "already" enabled by default on chrome. RTP packets are streamed accordingly. So, there are less chances of echo in such scenario.  You either need to install echo cancellation software according to your platform and devices; or try to use microphone/headphone. 
  • 18.      WebRTC Eco Cancellation WebRTC improvement optimized aecacoustic echo cancellation mediaconstraintsinterface.h https://github.com/muaz-khan/WebRTCExperiment/issues/95#issuecomment-24562690 https://code.google.com/p/webrtc/issues/detail?id= 2580