G.729

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

G.729 bezeichnet einen von der ITU-T beschriebenen Codec (eigentlich Vocoder, Voice Coder, siehe Parametrische Audiokodierung) zur Komprimierung von Sprache in digitale Signale. Die technische Bezeichnung lautet auch „Conjugate Structure Algebraic Code Excited Linear Prediction (CS-ACELP). G.729 wird beispielsweise bei IP-Telefonie-Verbindungen (Internet-Telefonie) eingesetzt.

Technische Daten[Bearbeiten]

G.729 ist ein hybrides Kompressionsverfahren, das sich auf die Untersuchung und Übertragung von Sprachparametern, mit einem so genannten Vocoder, sowie Differenzinformationen und anschließende Sprachsynthese stützt. Dabei zerlegt der Codec das Audiosignal in Frames von 10 Millisekunden Länge, die er auf sprachtypische Eigenschaften untersucht. Diese werden in Parameter für eine spätere Synthese gefasst. Zudem überträgt der Codec Differenzinformationen, die sich aus dem künstlich generierten und dem tatsächlichen Signal ergeben. In einem Sprachpaket werden typischerweise je zwei Frames zu 10 Millisekunden zusammen übertragen, wodurch die Verzögerung bei ca. 25 Millisekunden liegt.

Audiosignale, welche als Quelle nicht menschliche Sprache darstellen, kann dieser Codec nur schlecht verarbeiten. So kann er beispielsweise die in der Analogtelefonie genutzten Multifrequenztöne nur unzureichend verarbeiten. Hier kann man sich behelfen, indem die Multifrequenztöne aus dem Signal herausgefiltert werden und nach RFC 2833 im Informationskanal übertragen werden („outband“).

Weiterhin unterdrückt G.729 Sprachpausen. Damit dies bei dem Zuhörer nicht wie ein Verbindungsabbruch klingt, besitzt der Decoder die Fähigkeit zum Auffüllen von Sprachpausen mit so genanntem Komfortrauschen. Der Standard umfasst mögliche Implementierungen sowohl im Festkomma- als auch im technisch aufwendigeren Gleitkommaformat, was den Einsatz in verschieden komplexen DSP-Plattformen erleichtert. Aus diesen Gründen ist G.729 je nach verwendeter Variante vergleichsweise rechenaufwändig; er benötigt je nach Implementierung und den darin enthaltenen Optionen etwa 50 MIPS. Die Varianten G.729A und G.729B haben eine geringe Rechenkomplexität und benötigen beispielsweise in der nicht optimierten Referenzimplementierung der ITU-T auf dem Mikrocontroller MicroBlaze rund 10,3 Millionen Taktzyklen für 80 Audioabtastwerte.[1] Die MIPS-Angaben können allerdings je nach verwendeter Architektur und Art der Optimierung von den angegebenen Werten abweichen und stellen nur grobe Richtwerte dar.

Varianten[Bearbeiten]

G.729 ist in verschiedene Varianten, im Standard als Anhänge (englisch Annexes), unterteilt. Diese Anhänge sind mit unterschiedlichen Buchstaben und weiteren Symbolen zur Unterscheidung gekennzeichnet.[2] Jeder Anhang beschreibt verschiedene mögliche Kombinationen, die sich im Implementierungsaufwand, der benötigen Rechenleistung und dem funktionellen Umfang des Codecs unterscheiden. Für eine korrekte Decodierung müssen der Encoder und Decoder aufeinander abgestimmt sein.

Folgende Varianten stehen im Rahmen von G.729 zur Verfügung:

  Anhang (Annex)
Funktionalität - A B C D E F G H I C+ J
Niedrige Komplexität   X X                  
Festkommaarithmetik X X X   X X X X X X   X
Gleitkommaarithmetik       X             X  
Datenrate 8 kbit/s X X X X X X X X X X X X
Datenrate 6,4 kbit/s         X   X   X X X  
Datenrate 11,8 kbit/s           X   X X X X  
DTX     X       X X   X X  
Variable Bitrate                       X

Die Option DTX steht für Discontinuous transmission, auf Deutsch etwa unterbrochene Verbindung, die Fähigkeit zum Auffüllen von Sprachpausen mit so genanntem Komfortrauschen. Beim Mean Opinion Score (MOS) erreicht G.729 eine empfundene Qualität von 3,98 von 5 Punkten, wobei die Variante G.729A nur 3,7 von 5 Punkten erreicht.

Der Codec verwendet für das codierte Sprachsignal üblicherweise eine fixe Bitrate von 8 kbit/s, jedoch sind in manchen Varianten auch fixe Bitraten von 6,4 kbit/s und 11,8 kbit/s möglich. Das Frequenzspektrum umfasst dabei 300 bis 3400 Hz, wobei durch das Kodierungskonzept nur Sprachdaten akkurat übertragen werden.

G.729.1 (G.729J)[Bearbeiten]

Die letzte Erweiterung G.729J – diese Variante entspricht der Arbeitsbezeichnung G.729.1 – besitzt die Fähigkeit zur breitbandigen Sprach- und Audiocodierung: Die übertragene Frequenzbandbreite wurde auf den Bereich 50 Hz bis 7 kHz vergrößert. Der G.729J-Codec ist hierarchisch organisiert und die konkrete Bitrate und damit auch die Sprach-/Audioqualität lassen sich durch einfache „Beschneidung“ des Bitstroms auf variable Bitraten einstellen.

Sprachqualität im Vergleich[Bearbeiten]

Für den Vergleich der Übertragungsqualität kann das Verfahren des Mean Opinion Score (MOS) angewendet werden, welches das subjektive Empfinden der Sprachqualität eines Benutzers (in einer Hörsituation) erfasst. Die MOS-Skala ist keine absolute Skala, sondern von der jeweiligen Fragestellung und von den im sogenannten Hörtest angebotenen Hörbeispielen abhängig. In verschiedenen Tests kann der gleiche Codec daher verschiedene Werte erreichen. Wichtig ist jedoch die Differenz des zu testenden Codecs zu bekannten Referenzcodecs (z. B. G.711). In typischen Tests erreicht G.729 einen Wert von ca. 3,9 (auf einer fünfstufigen MOS-Skala). Damit erreicht G.729 eine höhere subjektive Sprachqualität als andere Codecs (z. B. G.728 und G.723), unterliegt jedoch dem Referenzcodec G.711 (ISDN). G.711 erreicht einen leicht höheren MOS-Wert von ca. 4,1, benötigt dafür jedoch mit 64 kbit/s eine um ein Achtfaches höhere Datenübertragungsrate als G.729, welches nur 8 kbit/s erfordert.

Overhead bei Verwendung mit RTP in einem IPv4-Netzwerk[Bearbeiten]

Die genannte Datenrate von 8 kbit/s ist nominell, sie bezieht sich ausschließlich auf die Audiodaten selbst. Wird nun ein Datenstrom durch ein Netzwerk verschickt, kommt noch der Overhead der Vermittlungsdaten für die Datenpakete, in die der Datenstrom verpackt ist, hinzu. Bei der Verwendung von RTP in einem IPv4-Netzwerk sind das 40 Bytes pro IPv4-Datenpaket (60 Bytes bei IPv6). Die Framelänge bei G.729 beträgt 10 ms und ein solcher Frame wird mit 10 Bytes kodiert. Typischerweise werden 2 Frames pro IPv4-Datenpaket verschickt. Folglich braucht man mit dieser Einstellung für 20 ms Sprachdaten effektiv 60 Bytes (40 + 10 + 10 Bytes). Pro Sekunde sind das 3000 Bytes, also 24 kbit/s (3000 Bytes * 8 / 1000 = 24 kbit). Packt man nun mehr als 2 Frames in ein Paket, dann sinkt der relative Anteil der IP-Daten und der Overhead wird kleiner. Mit 3 Frames pro Paket würde man nur mehr 18,7 kbit/s brauchen. Der Nachteil ist allerdings eine größere Verzögerung: Beträgt diese bei 2 Frames pro Paket noch 25 ms (10 ms pro Frame + 5 ms Verarbeitungszeit), so sind das bei drei Frames schon 35 ms. Wird die Verzögerung zu groß, kann diese von den Anwendern als störend empfunden werden.

Frames/IPv4 Paket ms/Paket Bytes/Paket nominell Bytes/Paket effektiv Pakete/Sekunde kbit/s nominell kbit/s effektiv Overhead % Verzögerung ms
1 10 10 50 100,0 8 40,0 400,00 15
2 20 20 60 50,0 8 24,0 200,00 25
3 30 30 70 33,3 8 18,7 133,33 35
4 40 40 80 25,0 8 16,0 100,00 45
5 50 50 90 20,0 8 14,4 80,00 55
6 60 60 100 16,7 8 13,3 66,67 65
7 70 70 110 14,3 8 12,6 57,14 75
8 80 80 120 12,5 8 12,0 50,00 85
9 90 90 130 11,1 8 11,6 44,44 95
10 100 100 140 10,0 8 11,2 40,00 105

Quellen[Bearbeiten]

  • ITU-T G.729 – Der Standard umfasst eine komplette Referenzimplementierung der ITU-T in C für alle G.729-Varianten.

Einzelnachweise[Bearbeiten]

  1.  Russell Klein, Rajat Moona: Migrating Software to Hardware on FPGAs. Indian Institute of Technology Kanpur, 2005 (http://www.cse.iitk.ac.in/~moona/papers/icfpt04.pdf).
  2.  Recommendation G.729, Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear prediction (CS-ACELP). ITU-T, 2007 (SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS – Digital terminal equipments – Coding of analogue signals by methods other than PCM).