Speech Coding

From LNTwww


Verschiedene Sprachcodierverfahren

Jedem GSM-Teilnehmer steht maximal die Netto–Datenrate 22.8 kbit/s zur Verfügung, während im ISDN–Festnetz mit einer Datenrate von 64 kbit/s (bei 8 Bit Quantisierung) bzw. 104 kbit/s (bei 13 Bit Quantisierung) gearbeitet wird. Aufgabe der Sprachcodierung bei GSM ist die Beschränkung der Datenmenge zur Sprachsignalübertragung auf 22.8 kbit/s und eine bestmögliche Reproduktion des Sprachsignals auf der Empfängerseite. Die Funktionen des GSM–Coders und des GSM–Decoders sind meist in einer Funktionseinheit zusammengefasst, die als Codec bezeichnet wird.

Zur Sprachcodierung und –Decodierung werden verschiedene Signalverarbeitungsverfahren angewandt:

  • Der GSM Fullrate Vocoder (deutsch: GSM–Vollraten–Sprachcodec) wurde 1991 aus einer Kombination von drei Kompressionsmethoden für den GSM–Funkkanal standardisiert. Er basiert auf Linear Predictive Coding (LPC) in Verbindung mit einer Long Term Prediction (LTP) und einer Regular Pulse Excitation (RPE).
  • Der GSM Halfrate Vocoder (deutsch: GSM–Halbraten–Sprachcodec) wurde 1994 eingeführt und bietet die Möglichkeit, Sprache bei nahezu gleicher Qualität in einem halben Verkehrskanal (Datenrate 11.4 kbits/s) zu übertragen.
  • Der Enhanced Fullrate Vocoder (EFR–Codec) wurde 1995 standardisiert und implementiert, ursprünglich für das nordamerikanische DCS1900–Netz. Der EFR–Codec bietet gegenüber dem herkömmlichen Vollraten–Codec eine bessere Sprachqualität.
  • Der Adaptive Multi–Rate Codec (AMR–Codec) ist der neueste Sprachcodec für GSM. Er wurde 1997 standardisiert und 1999 vom Third Generation Partnership Project (3GPP) auch als Standard–Sprachcodec für Mobilfunksysteme der 3. Generation wie UMTS vorgeschrieben.

Sie können sich die Qualität dieser Sprachcodierverfahren bei Sprache und Musik mit dem folgenden Interaktionsmodul verdeutlichen: Qualität verschiedener Sprach–Codecs (Dateigröße: 11.3 MB)

Diese Audio–Animation berücksichtigt auch den Wideband–AMR, der momentan (2007) für UMTS entwickelt und standardisiert wird. Im Gegensatz zum herkömmlichen AMR, bei dem das Sprachsignal auf den Frequenzbereich von 300 Hz bis 3.4 kHz bandbegrenzt wird, geht man beim WB–AMR von einem Wideband–Signal (50 Hz – 7 kHz) aus. Dieser ist somit auch für Musiksignale geeignet.


GSM Fullrate Vocoder – Vollraten–Codec

Beim GSM–Vollraten-Codec (Full Rate Vocoder) wird das analoge Sprachsignal im Frequenzbereich zwischen 300 und 3400 Hz zunächst mit 8 kHz abgetastet und danach mit 13 Bit linear quantisiert (A/D–Wandlung), was eine Datenrate von 104 kbit/s ergibt. Die Sprachcodierung erfolgt bei diesem Verfahren in vier Schritten:

  • die Vorverarbeitung,
  • die Einstellung des Kurzzeitanalyse–Filters

(Linear Predictive Coding, LPC),

  • die Steuerung des Langzeitanalyse–Filters

(Long Term Prediction, LTP) und

  • die Codierung des Restsignals durch eine Folge von Pulsen (Regular Pulse Excitation, RPE).

In obiger Grafik bezeichnet $s(n)$ das im Abstand $T_{\rm A}$ = 125 µs abgetastete und quantisierte Sprachsignal nach der kontinuierlich durchgeführten Vorverarbeitung, wobei

  • das digitalisierte Mikrofonsignal von einem eventuell vorhandenen Gleichsignalanteil (Offset) befreit wird, um bei der Decodierung einen störenden Pfeifton von ca. 2.6 kHz bei der Wiedergewinnung der höheren Frequenzanteile zu vermeiden, und
  • zusätzlich höhere Spektralanteile von $s(n)$ angehoben werden, um die Rechengenauigkeit und Effektivität der nachfolgenden LPC–Analyse zu verbessern.

Die Tabelle zeigt die 76 Parameter (260 Bit) der Funktionseinheiten LPC, LTP und RPE. Die Bedeutung der einzelnen Größen wird auf den folgenden Seiten im Detail beschrieben.

Alle Verarbeitungsschritte (LPC, LTP, RPE) erfolgen jeweils in Blöcken von 20 ms Dauer über 160 Abtastwerte des vorverarbeiteten Sprachsignals, die man als GSM–Sprachrahmen bezeichnet. Beim Vollraten–Codec werden pro Sprachrahmen insgesamt 260 Bit erzeugt, woraus sich eine Datenrate von 13 kbit/s ergibt. Dies entspricht einer Kompression des Sprachsignals um den Faktor 8 (104 kbit/s bezogen auf 13 kbit/s).


Linear Predictive Coding – Kurzzeitprädiktion

Der Block Linear Predictive Coding (LPC) führt eine Kurzzeitprädiktion durch, das heißt, es werden die statistischen Abhängigkeiten der Abtastwerte untereinander in einem kurzen Bereich von einer Millisekunde ermittelt. Zunächst wird dazu das zeitlich unbeschränkte Signal $s(n)$ mit $n$ = 1, 2, ... in Intervalle $s_{\rm R}(n)$ von 20 ms Dauer, also 160 Samples, segmentiert. Die Laufvariable innerhalb eines solchen Sprachrahmens kann vereinbarungsgemäß die Werte $n$ = 1, ... , 160 annehmen.

Hier folgt eine Kurzbeschreibung des obigen LPC–Prinzipschaltbildes:

  • Im ersten Schritt der LPC-Analyse werden statistische Abhängigkeiten zwischen den Abtastwerten durch die Autokorrelationskoeffizienten $φ_{\rm s}(k) = \text{E}[s_{\rm R}(n) · s_{\rm R}(n + k)]$ mit 0 ≤ $k$ ≤ 8 quantifiziert. Aus diesen neun AKF–Werten werden mit Hilfe der sog. Schur–Rekursion acht Reflexionskoeffizienten $r_{\rm k}$ berechnet, die als Grundlage für die Einstellung der Koeffizienten des LPC–Analysefilters für den aktuellen Rahmen dienen.
  • Die Koeffizienten $r_{\rm k}$ können Werte zwischen ±1 annehmen. Schon geringe Änderungen der $r_{\rm k}$ am Rand ihres Wertesbereichs bewirken große Änderungen für die Sprachcodierung. Die acht Reflexionswerte $r_{\rm k}$ werden logarithmisch dargestellt ⇒ LAR–Parameter (Log Area Ratio):
  • Anschließend werden diese acht LAR–Parameter entsprechend ihrer subjektiven Bedeutung durch unterschiedlich viele Bits quantisiert, codiert und zur Übertragung bereitgestellt. Die beiden ersten Parameter werden mit je 6 Bit, die beiden nächsten mit je 5 Bit, LAR(5) und LAR(6) mit je 4 Bit und die beiden letzten mit je 3 Bit dargestellt.
  • Bei fehlerfreier Übertragung kann am Empfänger aus den acht LPC–Parametern (insgesamt 36 Bit) mit dem entsprechenden LPC–Synthesefilter das ursprüngliche Signal s(n) wieder vollständig rekonstruiert werden, wenn man von den unvermeidbaren zusätzlichen Quantisierungsfehlern durch die digitale Beschreibung der LAR-Koeffizienten absieht.
  • Weiterhin wird mit Hilfe des LPC–Filters das Prädiktionsfehlersignal $e_{\rm LPC}(n)$ gewonnen. Dieses ist gleichzeitig das Eingangssignal für die nachfolgende Langzeitprädiktion. Das LPC–Filter ist nicht rekursiv und hat nur ein kurzes Gedächtnis von etwa einer Millisekunde.

Die Grafik aus [1] zeigt oben einen Ausschnitt des Sprachsignals $s(n)$ und dessen Zeit–Frequenzdarstellung. Unten ist das LPC–Prädiktionsfehlersignal $e_{\rm LPC}(n)$ dargestellt.

Man erkennt aus diesen Bildern

  • die kleinere Amplitude von $e_{\rm LPC}(n)$ gegenüber $s(n)$,
  • den deutlich reduzierten Dynamikumfang und
  • das flachere Spektrum des verbleibenden Signals.


Long Term Prediction – Langzeitprädiktion

Bei der Long Term Prediction (LTP) wird die Eigenschaft des Sprachsignals ausgenutzt, dass es auch periodische Strukturen (stimmhafte Abschnitte) besitzt. Dieser Umstand wird dazu verwendet, um die im Signal vorhandene Redundanz zu reduzieren. Die Langzeitprädiktion (LTP–Analyse und –Filterung) wird viermal pro Sprachrahmen, also alle 5 ms durchgeführt. Die Subblöcke bestehen aus jeweils 40 Abtastwerten und werden mit i = 1, ..., 4 nummeriert.

Es folgt eine Kurzbeschreibung der Langzeitprädiktion gemäß dem obigen Prinzipschaltbild – siehe [2]. Das Eingangssignal ist das Ausgangssignal $e_{\rm LPC}(n)$ der Kurzzeitprädiktion. Die Signale nach der Segmentierung in vier Subblöcken werden mit $e_i(l)$ bezeichnet, wobei jeweils $l$ = 1, 2, ... , 40 gilt.

  • Zu dieser Analyse wird die Kreuzkorrelationsfunktion $φ_{ee',i}(k)$ des aktuellen Subblocks $i$ des LPC–Prädiktionsfehlersignals $e_i(l)$ mit dem rekonstruierten LPC–Restsignal $e'_i(l)$ aus den drei vorherigen Teilrahmen berechnet. Das Gedächtnis dieses LTP–Prädiktors beträgt zwischen 5 und 15 ms und ist somit deutlich länger als das des LPC–Prädiktors (1 ms).
  • $e'_i(l)$ ist die Summe aus dem LTP–Filter–Ausgangssignal $y_i(l)$ und dem Korrektursignal $e_{\rm RPE,i}(l)$, das von der folgenden Komponente (Regular Pulse Excitation) für den $i$–ten Subblock bereitgestellt wird.
  • Der Wert von $k$, für den die Kreuzkorrelationsfunktion $φ_{ee',i}(k)$ maximal wird, bestimmt die für jeden Subblock $i$ optimale LTP–Verzögerung $N(i)$. Die Verzögerungen $N(1)$ bis $N(4)$ werden jeweils mit 7 Bit quantisiert und zur Übertragung bereitgestellt.
  • Der zu $N(i)$ gehörige Verstärkungsfaktor $G(i)$ – auch LTP–Gain genannt – wird so bestimmt, dass der an der Stelle $N(i)$ gefundene Subblock nach Multiplikation mit $G(i)$ am besten zum aktuellen Teilrahmen $e_i(l)$ passt. Die Verstärkungsfaktoren $G(1)$ bis $G(4)$ werden jeweils mit 2 Bit quantisiert und ergeben zusammen mit $N(1)$, ..., $N(4)$ die 36 Bit für die acht LTP–Parameter.
  • Das Signal $y_i(l)$ nach LTP–Analyse und –Filterung ist ein Schätzsignal für das LPC–Signal $e_i(l)$ im $i$–ten Subblock. Die Differenz zwischen beiden ergibt das LTP–Restsignal $e_{\rm LTP,i}(l)$, das an die nächste Funktionseinheit „RPE” weitergegeben wird.


Regular Pulse Excitation – RPE–Codierung

Halfrate Vocoder und Enhanced Fullrate Codec

Adaptive Multi–Rate Codec

Algebraic Code Excited Linear Prediction

Aufgaben zu Kapitel 3.3

  1. Kaindl, M.: Kanalcodierung für Sprache und Daten in GSM-Systemen. Dissertation. Lehrstuhl für Nachrichtentechnik, TU München. VDI Fortschritt-Berichte, Reihe 10, Nr. 764, 2005.
  2. Kaindl, M.: Kanalcodierung für Sprache und Daten in GSM-Systemen. Dissertation. Lehrstuhl für Nachrichtentechnik, TU München. VDI Fortschritt-Berichte, Reihe 10, Nr. 764, 2005.