Play something on your AirPods. Some music, a podcast, a voice recording, just about anything and it will sound quite good. Now compare that to how it sounds while on a call.
Goto Sound settings > "input" > Your AirPods, MacOS will continue playing your audio while also now using the microphone on your AirPods…
You’ll notice two things:
- The "Input level" oscillates as the microphone is active
- The audio you were listening to now sounds terrible
Why is this?
The answer is because of different codecs. A codec is how the computer compresses data to enable it to be sent efficiently over Bluetooth. In short a codec refers to how audio is sent to and from your AirPods. Different codecs compress data differently and as such have different trade-offs.
AirPods use (at least) two different types of codecs:
- AAC - High quality audio
- SCO - "Realtime"
The first codec, AAC, is generally used by AirPods when listening to audio and has much higher bandwidth than SCO. AAC can operate at around 320kb/s or 256kb/s, whereas SCO operates at only 64kbp/s. That means AAC can transfer about 4-5x more data per second. As such AirPods can play audio with much higher quality when using AAC.
Given that it sounds so much worse, why is SCO used at all? The answer is simple, while SCO provides lower audio quality it also allows for multiple channels. This allows your AirPods to be used as both headphones and microphones, at the same time. So AirPods only use SCO when they also need to use the microphones.
In essence when using AirPods as microphones it also degrades the quality of audio that you hear.
There is a benefit though to SCO as it also provides lower delays in audio transmission; this is commonly known as latency. This lower latency means that it’s actually great for phone calls as audio can be sent and received at the same time with minimal delays. In practice your colleagues might sound a lot worse but you can at least hear each other and chat in closer to realtime with minimal delays.
In summary, AirPods can communicate using two different modes. One is high quality and great for listening to audio, AAC. The other, SCO, allows for using your AirPods as headphones and microphones at the same time. Although it provides lower audio quality it also has much less latency, making it great for calls with minimal delay. 😊
There are actually a bunch of different bluetooth-audio codecs with different trade-offs and varying levels of compression. You can read a great guide about them here: https://www.soundguys.com/understanding-bluetooth-codecs-15352/
On macOS, you can check which audio codec your AirPods are currently using by Alt ⌥ + clicking on the Bluetooth icon and then navigating to your AirPods.
If you want to compare the bit-rate difference between AAC and SCO you can use "bluetooth explorer". It’s included in the download "Additional Tools for Xcode 9". More details here: https://www.howtogeek.com/425605/how-to-force-macos-to-use-the-aptx-or-aac-codecs-for-bluetooth-headphones/
Sources and further reading:
- https://discussions.apple.com/thread/7815701 - First got me started on the path of different codecs.
- https://www.soundguys.com/understanding-bluetooth-codecs-15352/ - More info on high quality audio codecs such as AAC
- https://www.howtogeek.com/425605/how-to-force-macos-to-use-the-aptx-or-aac-codecs-for-bluetooth-headphones/ - how to examine your current codec and bluetooth bit-rate
- https://habr.com/en/post/456182/ - More info on codecs and bit-rates
- https://www.sciencedirect.com/topics/engineering/synchronous-connection - More info on SCO
Reviews of AirPods Pro (and sound quality):
(Update: Part 2 - "How can I fix this?")