Audio codecs

Uit Help
Ga naar:navigatie, zoeken

Wat is een audio codec

Een codec zorgt voor het converteren en comprimeren van geluid om het zo te kunnen opslaan of versturen. Deze compressie heeft gevolgen voor de audiokwaliteit en gebruikte bandbreedte.

Er zijn grofweg 3 eigenschappen waar codecs van elkaar in verschillen.

  • Bitrate / bitsnelheid:

De hoeveelheid bits die per seconde nodig zijn. Hoe hoger de bitrate hoe meer bandbreedte er nodig is. Sommige verbindingen hebben een beperkte capaciteit, zoals een gsm verbinding in een afgelegen gebied of een groot bedrijf over een beperkte ADSL lijn.

  • Kwaliteit:

Hoe veel van het originele signaal overblijft na het verwerken met de codec. Er is geen eenduidige eenheid voor, het heeft te maken met de ervaring die iemand heeft bij het beluisteren. Spraak codecs worden vaak zo gemaakt dat stemmen goed verstaanbaar zijn, maar overige geluiden worden minder goed overgebracht. Dit is vooral te merken in wachtmuziek (los van de soms vreselijke keuze).

  • Complexiteit:

Het omzetten van het geluid heeft rekenkracht nodig van het apparaat, de hoeveelheid is afhankelijk van hoe complex de codec is. Oudere codecs zijn relatief simpel, en kunnen dus met weinig rekenkracht omgezet worden. Nieuwere codecs zijn erg complex, maar met de enorme toename in rekencapaciteit is het toch geen probleem om de signalen te verwerken.

Op https://codecs.hafkenscheid.net/ kan je luisteren naar de verschillen tussen de meest gebruikte codecs.

Welke zijn er

Codec Bitrate in bits/seconde Sample rate in kHz Introductie jaar
A-law (PCMA / G.711) 64 kb/s 8 kHz 1972
G.722 64 kb/s 16 kHz 1988
G.729 8 kb/s 8 kHz 1996
GSM 13 kb/s 8 kHz 1992
iLBC 13.33 kb/s 8 kHz 2004
Opus NB (narrowband) 15 kb/s 8 kHz 2012
Opus WB (wideband) 64 kb/s 16 kHz 2012


  • A-law (PCMA / G.711)

Oude, simpele codec die geoptimaliseerd is voor spraak. De verbindingen tussen telecom operators ondersteunen vaak alleen deze codec.

  • G.722

Een relatief oude codec die een merkbaar beter kwaliteit oplevert, vaak ook als HD audio aangegeven op toestellen. Het grote verschil is de dubbele sample-rate, waardoor hoge tonen beter worden overgedragen.

  • G.729

Een codec die zeer weinig bandbreedte gebruikt, tegenwoordig niet meer zo noodzakelijk aangezien internet snelheden tegenwoordig bijna altijd in mbps worden uitgedrukt. Over een 1mbps verbinding zijn al 60 gesprekken tegelijk mogelijk met deze codec.

  • GSM

De klassieke codec voor mobiele telefonie, gebruikt weinig bandbreedte en kan redelijk omgaan met het ontbreken van enkele pakketjes. De codec is niet geheel vrij van patenten en licenties, daarom niet altijd te gebruiken in open source software.

  • iLBC

Een codec die geoptimaliseerd is voor lage bandbreedte, vergelijkbaar met de GSM codec. De codec is wel vrij om te gebruiken in open source software. De Vialer mobiele app heeft deze codec veel gebruikt, omdat mobiele netwerken niet altijd genoeg bandbreedte en stabiliteit hebben om andere codecs te ondersteunen.

  • Opus

Een relatief nieuwe codec maar in heel veel systemen in gebruik. Zo is hij in gebruik in Discord, Slack en ook YouTube. De complexiteit is iets hoger dan andere codecs, maar geeft dan ook veel voordelen zoals variabele bitrate en packet-loss concealment (het verbergen van missende pakketjes door gepast geluid te produceren).


Audiocodecs.png


Welke gebruiken

Bij het opzetten van een gesprek sturen beide partijen de lijst met codecs die ze onder steunen, de volgorde geeft de voorkeur aan. De eerste codec die beide partijen ondersteunen wordt gebruikt.

De keuze van een codec is niet triviaal omdat er rekening gehouden moet worden met het transcoderen van signalen. Dit is nodig om signalen te vertalen in het geval beide systemen niet de zelfde codec ondersteunen. Je kunt het zien als een tolk die tussen 2 talen vertaald. Net zoals de tolk niet perfect de gevoelens en intonatie van het originele bericht overbrengt zal ook bij het transcoderen van de geluidsgolven wat kwaliteit verloren gaan.

De beste kwaliteit zal zijn wanneer er voldoende bandbreedte is, en beide partijen in het gesprek de zelfde moderne codec gebruiken.

Helaas blijkt in de praktijk dat de meeste gesprekken niet binnen ons platform zijn, maar via andere telecom operators gaan. De verbindingen lopen over systemen die minder flexibel zijn in welke codecs ondersteund worden. Daarom gebruiken nagenoeg alle gesprekken naar andere telecom operators de G.711 codec.

Vooral wanneer er gebruikt wordt gemaakt van een minder stabiel netwerk, zoals een druk gebuikt Wifi netwerk of 3G in een omgeving met weinig bereik, is het nuttig om nieuwere codec te gebruiken. Zo is er minder bandbreedte nodig, en kunnen eventuele ontbrekende pakketjes beter verwerkt worden.

;