-
Die vorliegende Erfindung betrifft allgemein
Sprachcodieranordnungen zur Verwendung in
Kommunikationssystemen und insbesondere, wie derartige Sprachcodierer
bei burstartigen Fehlern bei der Übertragung
funktionieren.
-
Viele Kommunikationssysteme, wie etwa zellulare
Telefon- und persönliche Kommunikationssysteme,
basieren zum Weiterleiten von Informationen auf
Funkkanälen. Im Verlauf der Weiterleitung derartiger
Informationen kann es bei Funkkommunikationskanälen zu
verschiedenen Fehlerquellen kommen, wie etwa zum
Mehrwegeschwund. Durch diese Fehler kann es unter anderem
zu dem Problem der Rahmenlöschung kommen. Löschung
bezieht sich auf den Gesamtverlust oder die komplette
oder teilweise Verfälschung eines an einen Empfänger
weitergeleiteten Satzes von Bit. Ein Rahmen ist eine
vorbestimmte festgelegte Anzahl von Bit, die als Block
durch einen Kommunikationskanal weitergeleitet werden
können. Somit kann ein Rahmen ein Zeitsegment eines
Sprachsignals darstellen.
-
Falls ein Rahmen von Bit völlig verlorengeht, dann kann
der Empfänger keine Bit auslegen. Unter derartigen
Umständen kann der Empfänger möglicherweise ein
sinnloses Ergebnis erzeugen. Falls ein Rahmen
empfangener Bit verfälscht und deshalb unzuverlässig
ist, erzeugt der Empfänger möglicherweise ein stark
verzerrtes Ergebnis. In beiden Fällen kann man sich den
Rahmen von Bit dahingehend als "gelöscht" vorstellen,
da der Rahmen für den Empfänger nicht zur Verfügung
steht oder von ihm nicht verwendet werden kann.
-
Mit dem Anstieg der Nachfrage nach Funksystemkapazität
ist auch der Bedarf gestiegen, die zur Verfügung
stehende Funksystembandbreite so gut wie möglich
auszunutzen. Die effiziente Verwendung von
Systembandbreite kann beispielsweise durch den Einsatz einer
Signalkompressionstechnik verbessert werden. Zu diesem
Zweck können für Funksysteme, die Sprachsignale führen,
Sprachkompressionstechniken (oder
Sprachcodiertechniken) zum Einsatz kommen. Zu derartigen
Sprachcodiertechniken zählen
Anaylse-durch-Synthese-Sprachcodierer, wie etwa der wohlbekannte CELP-Sprachcodierer
(CELP = Code-Excited Linear Prediction).
-
Das Problem des Paketverlustes bei paketvermittelten
Netzen mit Sprachcodieranordnungen hat große
Ähnlichkeit mit der Rahmenlöschung im Kontext mit
Funkbetrieb. Das bedeutet, daß aufgrund eines
Paketverlustes ein Sprachcodierer einen Rahmen
möglicherweise nicht empfängt oder einen Rahmen empfängt,
bei dem eine wesentliche Anzahl von Bit fehlen. In
beiden Fällen steht der Sprachcodierer vor demselben
wesentlichen Problem, nämlich der Notwendigkeit, trotz
des Verlustes komprimierter Sprachinformationen Sprache
zu synthetisieren. Sowohl die "Rahmenlöschung" als auch
der "Paketverlust" betreffen ein
Kommunikationskanalproblem (oder Netzproblem), das zu dem Verlust
übertragener Bit führt. Für die vorliegende Beschreibung kann
unter dem Begriff "Rahmenlöschung" auch der Begriff
"Paketverlust" verstanden werden.
-
Bei CELP-Sprachcodierern kommt unter anderem ein
Codelexikon von Anregungssignalen zum Codieren eines
ursprünglichen Sprachsignals zum Einsatz. Diese
Anregungssignale werden nach Skalierung durch einen
Anregungsverstärkungsfaktor zum "Anregen" von Filtern
verwendet, die als Reaktion auf die Anregung ein
Sprachsignal (oder einen gewissen Vorläufer zu einem
Sprachsignal) synthetisieren. Das synthetisierte
Sprachsignal wird mit dem ursprünglichen Sprachsignal
verglichen. Es wird das Codelexikonanregungssignal
identifiziert, das ein synthetisiertes Sprachsignal
liefert, das dem ursprünglichen Signal am ehesten
entspricht. Dann werden die Codelexikonindex- und
Verstärkungsfaktor-Darstellungen (die oftmals selbst
ein Verstärkungsfaktorcodelexikonindex sind) des
identifizierten Anregungssignals an einen CELP-
Decodierer weitergeleitet (je nach der Art des CELP-
Systems können auch andere Arten von Informationen, wie
etwa LPC-Filterkoeffizienten (LPC = linear prediction)
weitergeleitet werden). Der Decodierer enthält
Codelexika, die mit denen des CELP-Codierers identisch
sind. Der Decodierer wählt mit den übertragenen Indizes
einen Anregungssignal- und Verstärkungsfaktorwert aus.
Mit diesem ausgewählten skalierten Anregungssignal wird
dann das LPC-Filter des Decodierers angeregt. Das LPC-
Filter des Decodierers erzeugt nach derartiger Anregung
ein decodiertes (oder quantisiertes) Sprachsignal,
nämlich das gleiche Sprachsignal, von dem zuvor
festgestellt wurde, daß es dem ursprünglichen
Sprachsignal am ehesten entsprach.
-
Bei einigen CELP-Systemen kommen auch andere
Komponenten zum Einsatz, wie etwa ein
Periodizitätsmodell (z.B. ein tonhöhenprädiktives Filter oder ein
adaptives Codelexikon). Ein derartiges Modell simuliert
die Periodizität stimmhafter Sprache. Bei derartigen
CELP-Systemen müssen außerdem diese Komponenten
betreffende Parameter an den Decodierer geschickt werden. Bei
einem adaptiven Codelexikon müssen Signale, die eine
Tonhöhenperiode (Verzögerung) und einen adaptiven
Codelexikonverstärkungsfaktor darstellen, ebenfalls zu
dem Decodierer geschickt werden, so daß der Decodierer
die Operation des adaptiven Codelexikons bei dem
Sprachsyntheseprozeß nachvollziehen kann.
-
Funk- und andere Systeme, bei denen Sprachcodierer zum
Einsatz kommen, sind möglicherweise gegenüber dem
Problem der Rahmenlöschung empfindlicher als solche
Systeme, die Sprache nicht komprimieren. Diese
Empfindlichkeit ist auf die reduzierte Redundanz codierter
Sprache (im Vergleich zu nichtcodierter Sprache)
zurückzuführen, was den möglichen Verlust jedes
übertragenen Bit noch wesentlicher macht. In dem
Kontext eines CELP-Sprachcodierers, der eine
Rahmenlöschung erfährt, können
Anregungssignalcodelexikonindizes und andere Signale, die Sprache in dem
Rahmen darstellen, entweder verloren gehen oder
wesentlich verfälscht werden, was die ordnungsgemäße
Synthese von Sprache beim Decodierer verhindert. So ist
beispielsweise wegen des einen oder der mehreren
gelöschten Rahmen der CELP-Decodierer nicht in der
Lage, zuverlässig zu identifizieren, mit welcher
Eintragung in seinem Codelexikon Sprache synthetisiert
werden sollte. Dadurch kann die Leistung des
Sprachcodiersystems eine erhebliche Verschlechterung
erfahren.
-
Da die Rahmenlöschung zu dem Verlust von
Anregungssignalcodelexikonindizes, LPC-Koeffizienten, adaptiven
Codelexikonverzögerungsinformationen und adaptiven und
festen Codelexikonverstärkungsfaktorinformationen
führt, sind normale Techniken zum Synthetisieren eines
Anregungssignals in einem Sprachdecodierer unwirksam.
Diese üblichen Techniken müssen deshalb durch
alternative Maßnahmen ersetzt werden.
-
Ein Verfahren zur Lösung von Rahmenlöschungen wird von
M.M. Lara-Barron et al. in "Selective Discarding
Procedure For Improved Tolerance to Missing Voice
Packets", Electronic Letters, Band 25, Nr. 19,
14. September 1989, Seiten 1269-1271, XP000073722
gelehrt, aus dem eine selektive, Pakete verwerfende
Vorgehensweise für die Sprachkommunikation hervorgeht,
bei dem Pakete beim Sender gekennzeichnet werden und
gegebenenfalls von Netzknoten gemäß ihrer Bedeutung für
die Qualität rekonstruierter Sprache verworfen werden.
Simulation und subjektive Tests zeigen eine verbesserte
Toleranz gegenüber fehlenden Paketen im Vergleich mit
nichtselektiven Verfahren, wo Pakete zufällig verworfen
werden.
-
Eine weitere Technik zur Lösung von Rahmenlöschungen
wird von A.W. Choi et al. in "Effects of Packet Loss an
3 Toll Quality Speech Coders", IEE National Conference
an Telecommunications, York, 2. - 5. April 1989,
Institution of Electrical Engineers, Seiten 380-385,
XP000041214 gelehrt, aus der hervorgeht, daß die
Integrierung der Sprach- und Datenvermittlung unter
Verwendung eines Ansatzes auf Paketbasis in vielen
Formen vorgeschlagen worden ist. Falls die
Sprachcodierung in einem derartigen Netz verwendet
wird, beeinflussen Güteabfälle, wie etwa verlorene
Pakete, die Leistung des Codierers. In dieser
Literaturstelle wird die Wirkung des Paketverlustes auf
3 Sprachcodierer mit Fernübertragungsgüte erörtert:
ADPCM (Adaptive Differential Pulse Code Modulation),
SBC (Sub-band Coding) und APC (Adaptive Predictive
Coding); und ihre bei den Simulationen angenommenen
Konfigurationen werden beschrieben. Aus der
Literaturstelle geht weiterhin hervor, daß der sich aus dem
Verlust eines Sprachpakets ergebende Schaden zweierlei
Art ist: Zunächst wird ein fehlendes Sprachsegment für
die verlorengegangene Zeitdauer eingesetzt; und
zweitens wird die Adaptationslogik nach dem verlorenen
Segment unterbrochen. Eine etwaige Kompensationstechnik
sollte deshalb darauf hinarbeiten, das fehlende Segment
auszufüllen und auch die Adaptation nach dem Verlust
wiederherzustellen.
-
Die vorliegende Erfindung setzt sich mit dem Problem
des Mangels an
Codelexikonverstärkungsfaktorinformationen während einer Rahmenlöschung auseinander.
Gemäß der vorliegenden Erfindung verwendet ein
Sprachdecodierer auf Codelexikonbasis, der mindestens
einen Teil eines aktuellen Rahmens komprimierter
Sprachinformationen nicht zuverlässig empfängt, einen
Codelexikonverstärkungsfaktor, der eine gedämpfte
Version eines Verstärkungsfaktors aus einem
vorausgegangenen Sprachrahmen ist.
-
Ein Ausführungsbeispiel der vorliegenden Erfindung ist
ein Sprachdecodierer, der einen Codelexikonspeicher und
einen Signalverstärker enthält. Der Speicher und der
Verstärker werden zum Erzeugen eines decodierten
Sprachsignals auf der Grundlage von Informationen über
die komprimierte Sprache verwendet. Die Informationen
über die komprimierte Sprache beinhalten einen
Skalierfaktor zur Verwendung durch den Verstärker beim
Skalieren eines Codelexikonvektors. Wenn es zu einer
Rahmenlöschung kommt, wird ein einem vorausgegangenen
Sprachrahmen entsprechender Skalierfaktor gedämpft, und
mit dem gedämpften Skalierfaktor wird der
Codelexikonvektor entsprechend dem aktuellen gelöschten
Sprachrahmen verstärkt. Spezifische Einzelheiten einer
Ausführungsform der vorliegenden Erfindung werden in
Abschnitt II.D. der Ausführlichen Beschreibung weiter
unten vorgestellt.
-
Die vorliegende Erfindung läßt sich auf die
Verarbeitung sowohl mit einem festen als auch mit einem
adaptiven Codelexikon und auch auf Systeme anwenden,
die Decodierersysteme oder andere Elemente (wie etwa
ein tonhöhenprädiktives Filter) zwischen einem
Codelexikon und seinem Verstärker einfügen.
-
Fig. 1 stellt ein Blockschaltbild eines gemäß der
vorliegenden Erfindung modifizierten Decodierers nach
dem Entwurf G.729 dar.
-
Fig. 2 stellt ein beispielhaftes
Funkkommunikationssystem dar, das die in Fig. 1 dargestellte
Ausführungsform der vorliegenden Erfindung verwendet.
I. Einführung
-
Die vorliegende Erfindung betrifft den Betrieb eines
Sprachcodiersystems, das eine Rahmenlöschung erfährt,
das heißt den Verlust einer Gruppe aufeinanderfolgender
Bit in dem komprimierten Bitstrom, wobei mit dieser
Gruppe üblicherweise Sprache synthetisiert wird. Die
folgende Beschreibung betrifft Merkmale der
vorliegenden Erfindung, die beispielhaft auf ein
8 kBit/s CELP-Sprachcodiersystem angewendet werden, das
der ITU zur Annahme als internationaler Standard G.729
vorgeschlagen wurde. Für den Leser ist dem vorliegenden
Dokument eine vorläufige Entwurfsempfehlung für den
Standard G.729 als Anlage beigefügt (der Entwurf wird
hier als der "Entwurf G.729" bezeichnet). Der Entwurf
G.729 enthält ausführliche Beschreibungen des
Sprachcodierers und -decodierers (siehe Entwurf G.729,
Abschnitt 3 beziehungsweise 4). Das Ausführungsbeispiel
der vorliegenden Erfindung befaßt sich mit
Modifikationen an dem normalen G.729-Decodiererbetrieb,
wie er in dem Entwurf G.729 Abschnitt 4.3 ausführlich
dargelegt ist. Zur Implementierung der vorliegenden
Erfindung sind keine Modifikationen an dem Codierer
erforderlich.
-
Ungeachtet der Anwendbarkeit der vorliegenden Erfindung
auf den vorgeschlagenen Standard G.729 wird der
Durchschnittsfachmann erkennen, daß sich Merkmale der
vorliegenden Erfindung auf andere Sprachcodiersysteme
anwenden lassen.
-
Das Wissen um die Löschung von einem oder mehreren
Rahmen ist ein Eingangssignal e für das
Ausführungsbeispiel der vorliegenden Erfindung. Ein
derartiges Wissen kann auf eine beliebige der in der
Technik wohlbekannten Weisen erhalten werden. So können
zum Beispiel ganz oder teilweise verfälschte Rahmen mit
einem herkömmlichen Fehlererfassungscode erfaßt werden.
Wenn von einem Rahmen festgestellt worden ist, daß er
gelöscht ist, dann ist e = 1 und spezielle
Vorgehensweisen werden wie unten beschrieben eingeleitet. Im
anderen Fall werden bei keiner Löschung (e = 0) normale
Vorgehensweisen verwendet. Herkömmliche
Fehlerschutzcodes könnten als Teil eines herkömmlichen Funkübertragungs-/Empfangsteilsystems
eines
Funkkommunikationssystems implementiert werden.
-
Zusätzlich zu der Anwendung des vollen Satzes von
Gegenmaßnahmen, die als das Ergebnis einer Löschung
(e = 1) angewendet werden, setzt der Decodierer einen
Teilsatz dieser Maßnahmen ein, wenn ein Paritätsfehler
erfaßt wird. Ein Paritätsbit wird auf der Grundlage des
Tonhöhenverzögerungsindexes des ersten von zwei
Teilrahmen eines Rahmens codierter Sprache berechnet,
siehe Entwurf G.729 Abschnitt 3.7.1. Dieses Paritätsbit
wird durch den Decodierer berechnet und mit dem von dem
Codierer empfangenen Paritätsbit verglichen. Falls die
beiden Paritätsbit nicht gleich sind, wird davon
gesprochen, daß der Verzögerungsindex verfälscht ist
(PE = 1 bei der Ausführungsform), und es wird eine
spezielle Verarbeitung der Tonhöhenverzögerung
aufgerufen.
-
Zur einfacheren Erklärung wird das Ausführungsbeispiel
der vorliegenden Erfindung in Form einzelner
Funktionsblöcke dargestellt. Die Funktionen dieser Blöcke können
durch die Verwendung entweder gemeinsamer oder
spezieller Hardware bereitgestellt werden,
einschließlich beispielsweise Hardware, die Software
ausführen kann. So können beispielsweise die in Fig. 1
dargestellten Blöcke durch einen einzelnen gemeinsamen
Prozessor bereitgestellt werden. (Die Verwendung des
Ausdrucks "Prozessor" sollte nicht so ausgelegt werden,
daß sie sich ausschließlich auf Hardware bezieht, die
Software ausführen kann.)
-
Ausführungsbeispiele können Hardware in Form eines
digitalen Signalprozessors (DSP), wie etwa den AT&T
DSP16 oder DSP32C, einen Festwertspeicher (ROM) zum
Speichern von Software, die die unten erörterten
Operationen durchführt, und einen
Direktzugriffsspeicher (RAM) zum Speichern von DSP-Ergebnissen umfassen.
Ausführungsformen mit VLSI-Hardware (VLSI = very large
scale integration) sowie kundenspezifische VLSI-
Schaltungen in Kombinationen mit einer Allzweck-DSP-
Schaltung können ebenfalls bereitgestellt werden.
II. Ein Ausführungsbeispiel
-
Fig. 1 stellt ein Blockschaltbild eines gemäß der
vorliegenden Erfindung modifizierten Decodierers nach
Entwurf G.729 dar (Fig. 1 ist eine Version von Fig. 3
des Entwurfs von Standard G.728, die vergrößert worden
ist, um Merkmale der beanspruchten Erfindung deutlicher
darzustellen). Bei normalem Betrieb (d.h. ohne
Rahmenlöschung) funktioniert der Decodierer gemäß dem
Entwurf G.729 wie in den Abschnitten 4.1-4.2
beschrieben. Während einer Rahmenlöschung wird der
Betrieb der Ausführungsform von Fig. 1 durch spezielle
Verarbeitung vermehrt, um die Löschung von
Informationen von dem Codierer zu kompensieren.
A. Normaler Decodiererbetrieb
-
Der in dem Entwurf G.729 beschriebene Codierer liefert
alle 10 ms einen Rahmen von Daten, die komprimierte
Sprache darstellen. Der Rahmen besteht aus 80 Bit und
ist in den Tabellen 1 und 9 des Entwurfs G.729
ausführlich dargestellt. Jeder 80 Bit-Rahmen komprimierter
Sprache wird über ein Kommunikationssignal zu einem
Decodierer geschickt, der eine Sprache (die zwei
Teilrahmen darstellt) Signale auf der Grundlage des von dem
Codierer erzeugten Rahmen synthetisiert. Der Kanal,
über den die Rahmen weitergeleitet werden (nicht
gezeigt), kann beliebiger Art sein (wie etwa
herkömmliche Telefonienetze, Netze auf Paketbasis,
zellulare oder Funknetze, ATM-Netze usw.) und/oder kann
ein Speichermedium umfassen (wie etwa magnetische
Speicherung, Halbleiter-RAM oder -ROM, optische
Speicherung wie etwa CD-ROM, usw.).
-
Der beispielhafte Decodierer von Fig. 1 enthält sowohl
einen Teil mit einem adaptiven Codelexikon (ACB) als
auch einen Teil mit einem festen Codelexikon (FCB). Der
ACB-Teil enthält das ACB 50 und einen Verstärker 55 mit
Verstärkungsregelung. Der FCB-Teil enthält ein FCB 10,
ein tonhöhenprädiktives Filter (PPF) 20 und einen
Verstärker 30 mit Verstärkungsregelung. Der Decodierer
decodiert übertragene Parameter (siehe Entwurf G.729
Abschnitt 4.1) und führt eine Synthese durch, um
wiederhergestellte Sprache zu erhalten.
-
Das FCB 10 arbeitet als Reaktion auf einen von dem
Codierer gesendeten Index I. Der Index I wird durch
einen Schalter 40 empfangen. Das FCB 10 erzeugt einen
Vektor c(n), der genauso lang ist wie ein Teilrahmen.
Siehe Entwurf G.729 Abschnitt 4.1.2. Dieser Vektor wird
an das PPF 20 angelegt. Das PPF 20 erzeugt einen Vektor
zur Anlegung an den FCB-Verstärker 30 mit
Verstärkungsregelung. Siehe Entwurf G.729 Abschnitte 3.8 und 4.1.3.
Der einen Verstärkungsfaktor c von dem Kanal anlegende
Verstärker erzeugt eine skalierte Version des von dem
PPF 20 erzeugten Vektors. Siehe Entwurf G.729 Abschnitt
4.1.3. Das Ausgangssignal des Verstärkers 30 wird
(durch einen Schalter 42) einem Summierer 85 zugeführt.
-
Der durch das PPF 20 an den Vektor angelegte
Verstärkungsfaktor wird aufgrund von von dem Codierer
gelieferten Informationen bestimmt. Diese Informationen
werden als Codelexikonindizes weitergeleitet. Der
Decodierer empfängt diese Indizes und synthetisiert
einen Verstärkungskorrekturfaktor . Siehe Entwurf
G.729 Abschnitt 4.1.4. Dieser
Verstärkungskorrekturfaktor wird an einen
Codevektorprädiktionsenergieprozessor (E-Prozessor) geliefert. Der E-Prozessor 120
bestimmt einen Wert der codevektorprädiktierten
Fehlerenergie gemäß dem folgenden Ausdruck:
-
Der Wert von wird in einem Prozessorpuffer
gespeichert, der die fünf jüngsten
(aufeinanderfolgenden) Werte von speichert. (n) stellt die
vorhergesagte Fehlerenergie des Festcodevektors bei
Teilrahmen n dar. Die vorhergesagte mittlere entfernte
Energie des Codevektors wird als eine gewichtete Summe
vergangener Werte von gebildet:
-
wobei b = [0,68 0,58 0,34 0,19] und wobei die
vergangenen Werte von R aus dem Puffer erhalten werden.
Diese vorhergesagte Energie wird dann von dem Prozessor
120 an einen Prozessor 125 mit vorhergesagter
Verstärkung ausgegeben.
-
Der Prozessor 125 bestimmt die tatsächliche Energie des
von dem Codelexikon 10 gelieferten Codevektors. Dies
geschieht gemäß dem folgenden Ausdruck:
-
E = 10 log (1/40 ci²)
-
wobei i die Proben des Vektors indiziert. Die
vorhergesagte Verstärkung wird dann wie folgt berechnet:
-
wobei E die mittlere Energie des FCB ist (z. B. 30 dB).
-
Schließlich wird der tatsächliche Skalierfaktor
(beziehungsweise tatsächliche Verstärkungsfaktor)
berechnet, indem der empfangene
Verstärkungskorrekturfaktor γ bei dem Multiplizierer 130 mit der
vorhergesagten Verstärkung g'c multipliziert wird.
Dieser Wert wird dann dem Verstärker 30 zum Skalieren
des von dem PPF 20 gelieferten festen
Codelexikonbeitrags zugeführt.
-
Dem Summierer 85 wird außerdem das durch den ACB-Teil
des Decodierers erzeugte Ausgangssignal zugeführt. Der
ACB-Teil umfaßt das ACB 50, das ein Anregungssignal
(n) erzeugt, das genauso lang ist wie ein Teilrahmen,
und zwar auf der Grundlage vergangener Anregungssignale
und der ACB-Tonhöhenperiode M, die von dem Codierer
über den Kanal (durch den Schalter 43) erhalten wurde.
Siehe Entwurf G.729 Abschnitt 4.1.1. Dieser Vektor wird
von dem Verstärker 250 auf der Grundlage des
Verstärkungsfaktors p, der über den Kanal empfangen
wurde, skaliert. Dieser skalierte Vektor ist die
Ausgabe des ACB-Teils.
-
Der Summierer 85 erzeugt als Reaktion auf Signale von
dem FCB-Teil und dem ACB-Teil des Decodierers ein
Anregungssignal u(n). Das Anregungssignal u(n) wird an
das LPC-Synthesefilter 90 angelegt, das auf der
Grundlage von über den Kanal empfangenen LPC-
Koeffizienten ai ein Sprachsignal synthetisiert. Siehe
Entwurf G.729 Abschnitt 4.1.6.
-
Die Ausgabe des LPC-Synthesefilters 90 wird schließlich
an einen Postprozessor 100 angelegt, der eine adaptive
Nachfilterung (siehe Entwurf G.729 Abschnitte 4.2.1 -
4.2.4), eine Hochpaßfilterung (siehe Entwurf G.729
Abschnitt 4.2.5) und eine Hochskalierung (siehe Entwurf
G.729 Abschnitt 4.2.5) durchführt.
B. Anregungssignalsynthese während der Rahmenlöschung
-
Beim Vorliegen von Rahmenlöschungen empfängt der
Decodierer von Fig. 1 keine zuverlässigen
Informationen (falls er überhaupt irgendetwas empfängt)
aus denen ein Anregungssignal u(n) synthetisiert werden
kann. Der Decodierer wird als solcher nicht wissen,
welcher Vektor von Signalabtastwerten aus dem
Codelexikon 10 gewonnen werden sollte oder welcher der
richtige Verzögerungswert zur Verwendung für das
adaptive Codelexikon 50 ist. In diesem Fall muß der
Decodierer ein Ersatz-Anregungssignal zur Verwendung
bei der Synthetisierung eines Sprachsignals erhalten.
Die Erzeugung eines Ersatzanregungssignals während
Perioden der Rahmenlöschung hängt davon ab, ob der
gelöschte Rahmen als stimmhaft (periodisch) oder
stimmlos (aperiodisch) klassifiziert ist. Von dem
Postprozessor 100 wird eine Angabe über die
Periodizität für den gelöschten Rahmen erhalten, wobei
der Postprozessor jeden ordnungsgemäß erhaltenen Rahmen
als periodisch oder aperiodisch klassifiziert. Siehe
Entwurf G.729 Abschnitt 4.2.1. Es wird davon
ausgegangen, daß der gelöschte Rahmen die gleiche
Periodizitätsklassifikation wie der vorausgegangene,
von dem Postfilter verarbeitete Rahmen aufweist. Das
eine Periodizität darstellende binäre Signal v wird
gemäß der Postfiltervariablen gpit bestimmt. Das Signal
= 1, falls gpit > 0; ansonsten = 0. Als solches
beispielsweise, falls der letzte gute Rahmen als
periodisch klassifiziert wurde, ist = 1; ansonsten
= 0.
1. Löschung von Rahmen, die periodische Sprache
darstellen
-
Für einen gelöschten Rahmen (e = 1), von dem angenommen
wird, daß er periodische Sprache ( = 1) dargestellt
hat, wird der Beitrag des festen Codelexikons auf Null
gesetzt. Dies geschieht durch den Schalter 42, der
Zustände (in Richtung des Pfeils) aus ihrer normalen
(voreingestellten) Betriebsposition, in der der
Verstärker 30 an den Summierer 85 angekoppelt ist, in
eine Position umschaltet, die den festen
Codelexikonbeitrag von dem Anregungssignal u(n)
entkoppelt. Diese Zustandsumschaltung erfolgt gemäß dem
Steuersignal, das von einem AND-Gatter 110 erzeugt wird
(das prüft, ob der Rahmen gelöscht ist, e = 1, und daß
er ein periodischer Rahmen war, = 1). Andererseits
wird der Beitrag des adaptiven Codelexikons durch den
Schalter 45 in seiner normalen Betriebsposition
gehalten (da e = 1, aber not_ = 0).
-
Die von dem adaptiven Codelexikon während eines
gelöschten Rahmens verwendete Tonhöhenverzögerung M
wird durch einen Verzögerungsprozessor 60 bestimmt. Der
Verzögerungsprozessor 60 speichert die in jüngster Zeit
empfangene Tonhöhenverzögerung von dem Codierer. Dieser
Wert wird mit jeder nachfolgenden empfangenen
Tonhöhenverzögerung überschrieben. Für den ersten gelöschten
Rahmen nach einem "guten" (korrekt empfangenen) Rahmen
erzeugt der Verzögerungsprozessor 60 einen Wert für M,
der gleich der Tonhöhenverzögerung des letzten guten
Rahmens (d.h. des vorausgegangenen Rahmens) ist. Zur
Vermeidung einer übermäßigen Periodizität inkrementiert
der Prozessor 60 den Wert von M für jeden nachfolgenden
gelöschten Rahmen um Eins (1). Der Prozessor 60
schränkt den Wert von M so ein, daß er gleich oder
kleiner als 143 Abtastwerte ist. Der Schalter 43
bewirkt die Anlegung der Tonhöhenverzögerung von dem
Prozessor 60 an das adaptive Codelexikon 50 durch
Zustandsänderung aus seiner normalen Betriebsposition
in seine "stimmhafte Rahmenlöschungs"-Position als
Reaktion auf eine Angabe einer Löschung eines
stimmhaften Rahmens (da e = 1 und = 1).
-
Die Verstärkung des adaptiven Codelexikons wird
außerdem in dem Fall einer Löschung eines stimmhaften
Rahmens gemäß der unten in Abschnitt C erörterten
Vorgehensweise synthetisiert. Man beachte, daß Schalter
44 identisch mit Schalter 43 arbeitet, da er die
Anlegung einer synthetisierten Verstärkung des
adaptiven Codelexikons durch Zustandsänderung von
seiner normalen Betriebsposition in seine "stimmhafte
Rahmenlöschungs"-Position bewirkt.
2. Löschung von Rahmen, die aperiodische Sprache
darstellen.
-
Für einen gelöschten Rahmen (e = 1), von dem angenommen
wird, daß er aperiodische Sprache ( = 0) dargestellt
hat, wird der Beitrag des adaptiven Codelexikons auf
Null gesetzt. Dies geschieht durch den Schalter 45, der
Zustände (in Richtung des Pfeils) aus ihrer normalen
(voreingestellten) Betriebsposition, in der der
Verstärker 55 an den Summierer 85 angekoppelt ist, in
eine Position umschaltet, die den adaptiven
Codelexikonbeitrag von dem Anregungssignal u(n)
entkoppelt. Diese Zustandsumschaltung erfolgt gemäß dem
Steuersignal, das von einem AND-Gatter 75 erzeugt wird
(das prüft, ob der Rahmen gelöscht ist, e = 1, und daß
er ein aperiodischer Rahmen war, not_ = 1).
Andererseits wird der Beitrag des festen Codelexikons durch
den Schalter 42 in seiner normalen Betriebsposition
gehalten (da e = 1, aber = 0).
-
Der Index I des festen Codelexikons und das
Codelexikonvektorvorzeichen stehen wegen der Löschung
nicht zur Verfügung. Um einen Index des festen
Codelexikons und einen Vorzeichenindex zu
synthetisieren, aus dem ein Codelexikonvektor c(n)
bestimmt werden könnte, wird ein Zufallszahlengenerator
45 verwendet. Der Ausgang des Zufallszahlengenerators
45 ist durch den Schalter 40 an das feste Codelexikon
10 gekoppelt. Der Schalter 40 befindet sich
normalerweise in einem Zustand, der Index I- und
Vorzeicheninformationen an das feste Codelexikon
ankoppelt. Das Gatter 47 legt jedoch ein Steuersignal an
den Schalter an, das eine Zustandsänderung des
Schalters bewirkt, wenn ein aperiodischer Rahmen (e = 1
und not_ = 1) gelöscht wird.
-
Der Zufallszahlengenerator 45 verwendet die Funktion:
-
Startparameter = Startparameter * 31821 + 13849
-
zum Erzeugen des Indexes und Vorzeichens des festen
Codelexikons. Der anfängliche Startparameterwert für
den Generator 45 ist gleich 21845. Bei einem gegebenen
Codiererteilrahmen handelt es sich bei dem
Codelexikonindex um die 13 niederwertigsten Bit der Zufallszahl.
Das Zufallsvorzeichen sind die 4 niederwertigsten Bit
der nächsten Zufallszahl. Somit läuft der
Zufallszahlengenerator für jeden benötigten Vektor des festen
Codelexikons zweimal. Man beachte, daß ein Rauschvektor
auf einer Basis Probe für Probe hätte erzeugt werden
können, anstatt unter Verwendung des
Zufallszahlengenerators in Kombination mit dem FCB.
-
Außerdem wird die Verstärkung des festen Codelexikons
im Fall einer Löschung eines aperiodischen Rahmens
gemäß der unten in Abschnitt D erörterten
Vorgehensweise synthetisiert. Man beachte, daß der
Schalter 41 identisch mit Schalter 40 arbeitet, da er
die Anlegung einer synthetisierten Verstärkung des
festen Codelexikons durch Zustandsänderung aus seiner
normalen Betriebsposition in seine "stimmhafte
Rahmenlöschungs"-Position bewirkt.
-
Da das PPF 20 bei einer Verzögerung um weniger als
einen Teilrahmen Periodizität hinzufügt, sollte das PPF
20 im Fall einer Löschung eines aperiodischen Rahmens
nicht verwendet werden. Der Schalter 21 wählt deshalb
entweder die Ausgabe von FCB 10 aus, wenn e = 0, oder
die Ausgabe von PPF 20, wenn e = 1.
C. LPC-Filterkoeffizienten für gelöschte Rahmen
-
Das während eines gelöschten Rahmens synthetisierte
Anregungssignal u(n) wird an das LPC-Synthesefilter 90
angelegt. Wie bei anderen Komponenten des Decodierers,
die von Daten von dem Codierer abhängen, muß das LPC-
Synthesefilter 90 während gelöschten Rahmen Ersatz-LPC-
Koeffizienten ai haben. Dies geschieht durch Wiederholen
der LPC-Koeffizienten des letzten guten Rahmens. Von
dem Codierer in einem nichtgelöschten Rahmen empfangene
LPC-Koeffizienten werden vom Speicher 95 gespeichert.
Neu empfangene LPC-Koeffizienten überschreiben zuvor
empfangen e Koeffizienten im Speicher 95. Wenn es zu
einer Rahmenlöschung kommt, werden die im Speicher 95
gespeicherten Koeffizienten über den Schalter 46 dem
LPC-Synthesefilter zugeführt. Der Schalter 46 ist
normalerweise so voreingestellt, daß er in einem guten
Rahmen empfangene LPC-Koeffizienten an das Filter 90
ankoppelt. Im Fall eines gelöschten Rahmens (e = 1)
verändert der Schalter jedoch seinen Zustand (in
Richtung des Pfeils), wodurch der Speicher 95 an das
Filter 90 angekoppelt wird.
D. Dämpfung der Verstärkungen des adaptiven und
festen Codelexikons
-
Wie oben erörtert, weisen sowohl das adaptive als auch
das feste Codelexikon 50, 10 einen entsprechenden
Verstärker 55, 30 mit Verstärkungsregelung auf, der an
das Codelexikonausgangssignal einen Skalierfaktor
anlegt. Die Werte der Skalierfaktoren für diese
Verstärker wird üblicherweise durch den Codierer
geliefert. Bei einer Rahmenlöschung stehen die
Skalierfaktorinformationen jedoch nicht von dem Codierer zur
Verfügung. Deshalb müssen die
Skalierfaktorinformationen synthetisiert werden.
-
Sowohl für das feste als auch für das adaptive
Codelexikon erfolgt die Synthese des Skalierfaktors
durch Dämpfungsprozessoren 65 und 115, die den Wert des
in dem vorausgegangenen Teilrahmen verwendeten
Skalierfaktors skalieren (oder dämpfen). Bei einer
Rahmenlöschung nach einem guten Rahmen ist somit der Wert des
Skalierfaktors des ersten Teilrahmens des gelöschten
Rahmens zur Verwendung durch den Verstärker der zweite
Skalierfaktor von dem guten Rahmen multipliziert mit
einem Dämpfungsfaktor. Im Fall aufeinanderfolgender
gelöschter Teilrahmen verwendet der später gelöschte
Teilrahmen (Teilrahmen n) den Wert des Skalierfaktors
von dem früher gelöschten Teilrahmen (Teilrahmen n-1)
multipliziert mit dem Dämpfungsfaktor. Diese Technik
wird ungeachtet der Anzahl aufeinanderfolgender
gelöschter Rahmen (und Teilrahmen) verwendet. Die
Dämpfungsprozessoren 65, 115 speichern jeden neuen
Skalierfaktor unabhängig davon, ob er in einem guten
Rahmen empfangen wurde oder für einen gelöschten Rahmen
synthetisiert wurde, für den Fall, daß es sich bei dem
nächsten Teilrahmen um einen gelöschten Teilrahmen
handelt.
-
Insbesondere synthetisiert der Dämpfungsprozessor 115
die Verstärkung gc des festen Codelexikons für einen
gelöschten Teilrahmen n gemäß:
-
gc(n) = 0,98gc(n-1).
-
Der Dämpfungsprozessor 65 synthetisiert die Verstärkung
gp des adaptiven Codelexikons für einen gelöschten
Teilrahmen n gemäß:
-
gp(n) = 0,9 gp(n-1).
-
Außerdem begrenzt (oder beschneidet) der Prozessor 65
den Wert der synthetisierten Verstärkung derart, daß er
unter 0,9 liegt. Der Prozeß des Dämpfens von
Verstärkungen wird durchgeführt, um unerwünschte
Wahrnehmungseffekte zu vermeiden.
E. Dämpfung des Verstärkungsprädiktorspeichers
-
Wie oben erörtert liegt ein Puffer vor, der einen Teil
des E-Prozessors 120 bildet, der die fünf jüngsten
Werte der Prädiktionsfehlerenergie speichert. Mit
diesem Puffer wird ein Wert für die vorhergesagte
Energie des Codevektors aus dem festen Codelexikon
vorhergesagt.
-
Wegen einer Rahmenlöschung werden jedoch keine
Informationen zu dem Decodierer von dem Codierer übermittelt,
von dem neue Werte der Prädiktionsfehlerenergie.
Derartige Werte müssen deshalb synthetisiert werden.
Diese Synthese geschieht durch den E-Prozessor 120
gemäß dem folgenden Ausdruck:
-
Ein neuer Wert für wird deshalb als der Mittelwert
der vier vorausgegangenen Werte von minus 4 dB
berechnet. Der Wert wird deshalb gedämpft, um
sicherzustellen, daß nach dem Empfang eines guten
Rahmens keine unerwünschte Sprachverzerrung erzeugt
wird. Der Wert des synthetisierten R ist so begrenzt,
daß er nicht unter -14 dE abfällt.
F. Ein beispielhaftes Funksystem
-
Wie oben erwähnt, läßt sich die vorliegende Erfindung
auf drahtlose Sprachkommunikationssysteme anwenden.
Fig. 2 stellt ein beispielhaftes
Funkkommunikationssystem dar, bei dem eine Ausführungsform der
vorliegenden Erfindung zum Einsatz kommt. Fig. 2
enthält einen Sender 600 und einen Empfänger 700. Ein
Ausführungsbeispiel des Senders 600 ist eine
Funkbasisstation. Ein Ausführungsbeispiel des Empfängers 700 ist
ein mobiles Benutzerterminal, wie etwa ein
Zellentelefon oder Funktelefon oder eine andere
Einrichtung aus einem persönlichen
Kommunikationssystem. (Eine Funkbasisstation und ein Benutzerterminal
können natürlich auch Empfänger- und Senderschaltungen
enthalten.) Der Sender 600 enthält einen Sprachcodierer
610, bei dem es sich beispielsweise um einen Codierer
gemäß dem Entwurf G.729 handeln kann. Der Sender
enthält zudem einen herkömmlichen Kanalcodierer 620 zur
Bereitstellung von Fehlererfassungskapazität (oder
Erfassungs- und Korrekturkapazität); einen
herkömmlichen Modulator 630; und herkömmliche
Funkübertragungsschaltungen; wie in der Technik wohlbekannt.
Von dem Sender 600 übertragene Funksignale werden über
einen Übertragungskanal durch den Empfänger 700
empfangen. Der Empfänger 700 befindet sich
möglicherweise wegen beispielsweise möglicher destruktiver
Interferenz von verschiedenen Mehrwegekomponenten des
übertragenen Signals in einem tiefen Schwund, was den
klaren Empfang übertragener Bit verhindert. Unter
derartigen Umständen kann eine Rahmenlöschung
eintreten.
-
Der Empfänger 700 enthält herkömmliche
Funkempfängerschaltungen 710, einen herkömmlichen Demodulator 720,
einen Kanaldecodierer 730 und einen Sprachdecodierer
740 gemäß der vorliegenden Erfindung. Man beachte, daß
der Kanaldecodierer immer dann ein Rahmenlöschsignal
erzeugt, wenn der Kanaldecodierer feststellt, daß eine
wesentliche Anzahl von Bitfehlern (oder nicht
empfangenen Bit) vorliegt. Alternativ (oder zusätzlich
zu einem Rahmenlöschsignal von dem Kanaldecodierer)
kann der Demodulator 720 ein Rahmenlöschsignal an den
Decodierer 740 liefern.
G. Erörterung
-
Obwohl hier spezifische Ausführungsformen der
vorliegenden Erfindung gezeigt und beschrieben worden
sind, ist zu verstehen, daß diese Ausführungsformen für
die vielen möglichen spezifischen Anordnungen, die bei
der Anwendung der Grundlagen der Erfindung erdacht
werden können, lediglich beispielhaft sind. Gemäß
diesen Grundlagen können vom Durchschnittsfachmann
zahlreiche und verschiedenartige andere Anordnungen
konzipiert werden, ohne von dem Schutzbereich der
Erfindung, wie durch die beigefügten Ansprüche
definiert, abzuweichen.
-
Obwohl sich das Ausführungsbeispiel der vorliegenden
Erfindung auf Codelexikon-"Verstärker" bezieht, so
versteht der Durchschnittsfachmann außerdem, daß dieser
Ausdruck das Skalieren digitaler Signale beinhaltet.
Zudem kann eine derartige Skalierung mit
Skalierfaktoren (oder Verstärkungen) erreicht werden, die
kleiner oder gleich Eins (einschließlich negativer
Werte) und auch größer als Eins sind.
INTERNATIONAL TELECOMMUNICATIONS
UNION
TELECOMMUNICATIONS STANDARDIZATION
SECTOR
-
Datum: Juni 1995
-
Original: E
STUDIENGRUPPE 15 - BEITRAG - Q. 12/15
Entwurfsempfehlung G.729
-
Codierung von Sprache mit 8 kBit/s
unter Verwendung von CS-ACELP-Codierung
(Conjugate-Structure-Algebraic-Code-Excited
Linear-Predictive)
-
7. Juni 1995,
-
Version 4.0
-
Anmerkung: Bis zur Genehmigung dieser Empfehlung durch
die ITU werden von der. ITU weder der C-Code noch die
Testvektoren verfügbar sein. Um den C-Quellcode zu
erhalten, wende man sich an:
-
Herrn Gerhard Schröder, Berichterstatter SG15/Q.12
Deutsche Telekom AG, Postfach 100003, 64276 Darmstadt,
Deutschland
-
Telefon: +49 6151 83 3973, Fax: +49 6151 837828,
-
Email: gerhard.schroeder@fz13.fz.dbp.de
Inhalt
-
1 Einleitung 26
-
2 Allgemeine Beschreibung des Codierers 27
-
2.1 Codierer 29
-
2.2 Decodierer 31
-
2.3 Verzögerung 32
-
2.4 Beschreibung des Sprachcodierers 33
-
2.5 Notationskonventionen 33
-
3 Beschreibung der Funktion des Codierers 39
-
3,1 Vorverarbeitung 39
-
3.2 Linearprädiktionsanalyse und
-quantisierung 40
-
3.2.1 Fensterbildung und
Autokorrelationsberechnung 40
-
3.2.2 Levinson-Durbin-Algorithmus 42
-
3.2.3 LP-LSP-Konversion 43
-
3.2.4 Quantisierung der
LSP-Koefftzienten 45
-
3.2.5 Interpolation der
LSP-Koefftzienten. 49
-
3.2.6 LSP-LP-Konversion 50
-
3.3 Perzeptuale Gewichtung 51
-
3.4 Regelkreis-Tonhöhenanalyse 53
-
3.5 Berechnung der Pulsantwort 55
-
3.6 Berechnung des Zielsignals 55
-
3.7 Suche im adaptiven Codelexikon 56
-
3.7.1 Erzeugung des adaptiven
Codelexikon-Vektors 59
-
3.7.2 Codewortberechnung für
adaptive
Codelexikon-Verzögerungen 59
-
3.7.3 Berechnung der adaptiven
-
Codelexikon-Verstärkung 61
-
3.8 Festes Codelexikon: Struktur und
Suche 61
-
3.8.1 Festes Codelexikon:
Suchprozedur 63
-
3.8.2 Codewortberechnung des festen
Codelexikons 67
-
3.9 Quantisierung der
Verstärkungsfaktoren 67
-
3.9.1 Verstärkungsvorhersage 68
-
3.9.2 Codelexikonsuche nach
Verstärkungsquantisierung 70
-
3.9.3 Codewortberechnung für
Verstärkungsquantisierer 71
-
3.10 Speicheraktualisierung 71
-
3.11 Codierer- und
Decodierer-Initialisierung 72
-
4 Beschreibung der Funktion des Decodierers 74
-
4.1 Parameterdecodierprozedur 74
-
4.1.1 Decodieren der
LP-Filterparameter 76
-
4.1.2 Decodieren des adaptiven
Codelexikon-Vektors 76
-
4.1.3 Decodieren des festen
Codelexikon-Vektors 77
-
4.1.4 Decodieren der adaptiven und
festen Codelexikon-Verstär
kung 78
-
4.1.5 Berechnung des Paritätsbit 78
-
4.1.6 Berechnen der rekonstruierten
Sprache 78
-
4.2 Nachverarbeitung 79
-
4.2.1 Tonhöhen-Postfilter 80
-
4.2.2 Kurzzeit-Postfilter 81
-
4.2.3 Neigungskompensation 82
-
4.2.4 Adaptive
Verstärkungssteuerung 83
-
4.2.5 Hochpaßfilterung und
Hochskalierung 83
-
4.3 Verdecken von Rahmenlöschungen und
Paritätsfehlern 84
-
4.3.1 Wiederholung der
LP-Filterparameter 85
-
4.3.2 Dämpfung der adaptiven und
festen
Codelexikon-Verstärkungen 86
-
4.3.3 Dämpfung des Speichers des
Verstärkungsprädiktors 86
-
4.3.4 Erzeugung der Ersatzanregung 87
-
5 Bitgenaue Beschreibung des CS-ACELP-Codierers 88
-
5.1 Einsatz der Simulationssoftware 88
-
5.2 Organisation der Simulationssoftware 88
1 Einleitung
-
Die vorliegende Empfehlung enthält die Beschreibung
eines Algorithmus für die Codierung von Sprachsignalen
mit 8 kBit/s unter Verwendung von CS-ACELP-Codierung
(Conjugate-Structure-Algebraic-Code-Excited Linear-
Predictive)
-
Dieser Codierer ist ausgelegt, mit einem digitalen
Signal zu arbeiten, das erhalten wurde, indem zuerst
eine Telefonbandbreitenfilterung (ITU-Empfehlung G. 710)
des analogen Eingangssignals durchgeführt wurde, es
dann mit 8000 Hz abgetastet wurde, worauf eine
Konversion in 16 Bit Linear-PCM für die Eingabe in den
Codierer folgt. Die Ausgabe des Decodierers sollte
durch ähnliche Mittel zurück in ein analoges Signal
konvertiert werden. Andere
Eingabe/Ausgabe-Charakteristiken, wie etwa diejenigen, die durch die ITU-
Empfehlung G.711 für 64 kBit/s PCM-Daten spezifiziert
werden, sollten vor der Codierung in 16 Bit Linear-PCM
konvertiert werden oder nach der Decodierung von 16 Bit
Linear-PCM in das entsprechende Format konvertiert
werden. Der Bitstrom von dem Codierer zu dem Decodierer
ist in diesem Standard definiert.
-
Diese Empfehlung ist wie folgt organisiert: Abschnitt 2
gibt einen allgemeinen Überblick über den CS-ACELP-
Algorithmus. In den Abschnitten 3 und 4 werden die
Grundlagen des CS-ACELP-Codierers beziehungsweise
-Decodierers erörtert. In Abschnitt 5 wird die Software
beschrieben, die diesen Codierer in 16 Bit Festkomma-
Arithmetik definiert.
2 Allgemeine Beschreibung des Codierers
-
Der CS-ACELP-Codierer basiert auf dem CELP-Codiermodell
(code-excited linear-predictive). Der Codierer arbeitet
an Sprachrahmen von 10 ms entsprechend 80 Abtastwerten
bei einer Abtastrate von 8000 Abtastwerten/s. Bei jedem
10 ms-Rahmen wird das Sprachsignal analysiert, um die
Parameter des CELP-Modells (LP-Filterkoeffizienten,
adaptive und feste Codelexikon-Indizes und
-Verstärkungen) zu extrahieren. Diese Parameter werden
codiert und übertragen. Die Bitzuweisung der
Codiererparameter ist in Tabelle 1 gezeigt. Bei dem
Decodierer werden mit diesen Parametern die Anregungs-
und Synthesefilterparameter gewonnen.
Tabelle 1: Bitzuweisung des 8
kBit/s-CS-ACELP-Algorithmus (10 ms-Rahmen).
-
Die Sprache wird durch Filterung dieser Anregung durch
das LP-Synthesefilter wie in Fig. 1 gezeigt
wiederhergestellt. Das Kurzzeit-Synthesefilter basiert auf
einem Linearprädiktionsfilter (LP-Filter) 10ter
Ordnung. Das Langzeit- bzw. Tonhöhensynthesefilter wird
mit dem sogenannten Ansatz des adaptiven Codelexikons
für Verzögerungen implementiert, die kürzer sind als
der Teilrahmen. Die rekonstruierte Sprache wird nach
der Berechnung durch einen Postfilter weiter
verbessert.
Fig. 1: Blockschaltbild eines konzeptuellen CELP-
Synthesemodells.
2.1. Codierer
-
Der Signalfluß bei dem Codierer ist in Fig. 2 gezeigt.
Das Eingangssignal wird in dem Vorverarbeitungsblock
hochpaßgefiltert und skaliert.
Fig. 2: Signalfluß bei dem CS-ACELP-Codierer.
-
Das vorverarbeitete Signal dient als das Eingangssignal
für die gesamte nachfolgende Analyse. Die LP-Analyse
geschieht einmal pro 10 ms-Rahmen, um die
LP-Filterkoeffizienten zu berechnen. Diese Koeffizienten werden
in Linienspektrums-Paare (LSP) konvertiert und mit
prädiktiver zweistufiger Vektorquantisierung (VQ) mit
18 Bit quantisiert. Die Anregungssequenz wird mit einer
Analyse-durch-Synthese-Suchprozedur gewählt, in der der
Fehler zwischen der Ausgangssprache und der
synthetisierten Sprache gemäß einem perzeptual
gewichteten Verzerrungsmaß minimiert wird. Dies
geschieht, indem das Fehlersignal mit einem perzeptual
gewichteten Filter gefiltert wird, dessen Koeffizienten
von dem nichtquantisierten LP-Filter abgeleitet sind.
Das Ausmaß der perzeptualen Gewichtung wird adaptiv
gemacht, um die Leistung für Eingangssignale mit einem
flachen Frequenzgang zu verbessern.
-
Die Anregungsparameter (feste und adaptive Codelexikon-
Parameter) werden jeweils pro Teilrahmen von 5 ms (40
Abtastwerte) bestimmt. Die quantisierten und
nichtquantisierten LP-Filterkoeffizienten werden für
den zweiten Teilrahmen verwendet, während in dem ersten
Teilrahmen interpolierte LP-Filterkoeffizienten
verwendet werden (sowohl quantisierte als auch
nichtquantisierte). Eine Regelkreis-Tonhöhenverzögerung
wird einmal pro 10 ms-Rahmen auf der Grundlage des
perzeptual gewichteten Sprachsignals geschätzt. Die
folgenden Operationen werden dann für jeden Teilrahmen
wiederholt. Das Zielsignal x(n) wird durch Filtern des
LP-Restes durch das gewichtete Synthesefilter W (z) /A (z)
berechnet. Die Anfangszustände dieser Filter werden
durch Filtern des Fehlers zwischen LP-Rest und Anregung
aktualisiert. Dies entspricht dem üblichen Ansatz, die
Nulleingabeantwort des gewichteten Synthesefilters von
dem gewichteten Sprachsignal zu subtrahieren. Die
Pulsantwort h(n) des gewichteten Synthesefilters wird
berechnet. Dann erfolgt eine Regelkreis-Tonhöhenanalyse
(um die Verzögerung und die Verstärkung des adaptiven
Codelexikons zu finden), wobei das Ziel x(n) und die
Pulsantwort h(n) verwendet werden, indem um den Wert
der Regelkreis-Tonhöhenverzögerung herum gesucht wird.
Es wird eine gebrochene Tonhöhenverzögerung mit
Auflösung 1/3 verwendet. Die Tonhöhenverzögerung wird
in dem ersten Teilrahmen mit 8 Bit codiert und in dem
zweiten Teilrahmen differentiell mit 5 Bit codiert. Das
Zielsignal x(n) wird durch Entfernen des Beitrags des
adaptiven Codelexikons (des gefilterten adaptiven
Codevektors) aktualisiert, und dieses neue Ziel x2(n)
wird in der festen algebraischen Codelexikonsuche
verwendet (um die optimale Anregung zu finden). Ein
algebraisches Codelexikon mit 17 Bit wird für die feste
Codelexikon-Anregung verwendet. Die
Verstärkungsfaktoren des adaptiven und festen Codelexikons werden
mit 7 Bit vektorquantisiert (bei an die feste
Codelexikon-Verstärkung angelegter MA-Prädiktion).
Schließlich werden die Filterspeicher mit dem
bestimmten Anregungssignal aktualisiert.
2.2. Decodierer
-
Der Signalfluß bei dem Decodierer ist in Fig. 3
gezeigt. Zunächst werden die Parameterindizes aus dem
empfangenen Bitstrom extrahiert. Diese Indizes werden
decodiert, um die einem 10 ms-Sprachrahmen
entsprechenden Codiererparameter zu erhalten. Diese Parameter sind
die LSP-Koeffizienten, die 2 gebrochenen
Tonhöhenverzögerungen, die 2 festen Codelexikon-Vektoren und die 2
Sätze von adaptiven und festen Codelexikon-
Verstärkungen. Die LSP-Koeffizienten werden
interpoliert und für jeden Teilrahmen in LP-
Filterkoeffizienten konvertiert. Dann werden für jeden
40-Abtastwert-Teilrahmen die folgenden Schritte
durchgeführt:
-
- Die Anregung wird dadurch aufgebaut, daß die mit
ihren jeweiligen Verstärkungen skalierten adaptiven
und φesten Codelexikon-Vektoren addiert werden,
Fig. 3: Signalfluß bei dem CS-ACELP-Decodierer.
-
- die Sprache durch Filtern der Anregung durch das
LP-Synthesefilter gefiltert wird,
-
- das rekonstruierte Sprachsignal durch eine
Nachverarbeitungsstufe geschickt wird, die aus
einem adaptiven Postfilter auf der Grundlage des
Langzeit- und Kurzzeit-Synthesefilters besteht,
gefolgt von einer Hochpaßfilterung und Skalierung.
2.3. Verzögerung
-
Dieser Codierer codiert Sprache und andere Audiosignale
mit 10 ms-Rahmen. Außerdem wird 5 ms vorausgeschaut,
was zu einer algorithmischen Gesamtverzögerung von
15 ms führt. Alle zusätzlichen Verzögerungen bei einer
praktischen Implementierung dieses Codierers sind auf
folgendes zurückzuführen:
-
- die für die Codierung und Decodierung benötigte
Verarbeitungszeit,
-
- die Übertragungszeit auf der Kommunikationsstrecke,
-
die Multiplexierverzögerung, wenn Audiodaten mit
anderen Daten verknüpft werden.
2.4. Beschreibung des Sprachcodierers
-
Die Beschreibung des Sprachcodieralgorithmus dieser
Empfehlung erfolgt durch bitgenaue mathematische
Festkommaoperationen. Der in Abschnitt 5 angegebene
ANSI-C-Code, der Bestandteil dieser Empfehlung ist,
gibt diesen bitgenauen beschreibenden Festkommaansatz
wieder. Die mathematischen Beschreibungen des Codierers
(Abschnitt 3) und Decodierers (Abschnitt 4) können auf
verschiedene andere Art und Weise implementiert werden,
die möglicherweise zu einer Codec-Implementierung
führt, die dieser Empfehlung nicht entspricht. Die
Algorithmusbeschreibung des C-Codes von Abschnitt 5 hat
deshalb immer dann Vorrang vor den mathematischen
Beschreibungen der Abschnitte 3 und 4, wenn
Diskrepanzen gefunden werden. Ein nicht erschöpfender
Satz von Testsequenzen, die in Verbindung mit dem C-
Code verwendet werden können, ist von der ITU
erhältlich.
2.5. Notationskonventionen
-
Es wird versucht, in dem vorliegenden Dokument
durchwegs die folgenden Notationskonventionen zu
verwenden.
-
- Codelexika werden durch Schönschreibzeichen (z. B.
C) bezeichnet.
-
- Zeitsignale werden durch das Symbol und den
Abtastzeitindex zwischen Klammern bezeichnet (z. B.
s(n)). Das Symbol n wird als ein
Abtastzeitpunktindex verwendet.
-
- Hochgestellte Zeitindizes (z.B. g(m)) beziehen sich
auf die einem Teilrahmen m entsprechende Variable.
-
- Tiefgestellte Zeichen identifizieren ein bestimmtes
Element in einer Koeffizientenmatrix.
-
- Ein ^ identifiziert eine quantisierte Version eines
Parameters.
-
- Bereichsnotationen erfolgen mit eckigen Klammern,
wobei die Grenzen enthalten sind (z. B. [0,6, 0,9]).
-
- log bezeichnet einen Logarithmus zur Basis 10.
-
In Tabelle 2 sind die in diesem Dokument verwendeten
relevantesten Symbole aufgeführt.
Tabelle 2: Erläuterung der Symbole.
-
Eine Erläuterung der relevantesten Signale findet man
in Tabelle 3. In Tabelle 4 sind relevante Variablen und
ihre Dimension zusammengefaßt.
Tabelle 3: Erläuterung der Signale
Name Beschreibung
-
h(n) Pulsantwort auf Gewichtungs- und
Synthesefilter
-
r(k) Autokorrelationssequenz
-
r'(k) Modifizierte Autokorrelationssequenz
-
R(k) Korrelationssequenz
-
sw(n) Gewichtetes Sprachsignal
-
s(n) Sprachsignal
-
s'(n) Sprachsignal nach Fensterbildung
-
sf(n) Nachgefilterte Ausgabe
-
sf'(n) Verstärkungsskalierte nachgefilterte
Ausgabe
-
(n) Rekonstruiertes Sprachsignal
-
r(n) Restsignal
-
x(n) Zielsignal
-
x&sub2;(n) Zweites Zielsignal
-
(n) Adaptiver Codelexikon-Beitrag
-
c(n) Fester Codelexikon-Beitrag
-
y(n) (n) * h(n)
-
z(n) c(n) * h(n)
-
u(n) Anregung zu LP-Synthesefilter
-
d(n) Korrelation zwischen Zielsignal und h(n)
-
ew(n) Fehlersignal
Tabelle 4: Erläuterung der Variablen
-
Konstante Parameter sind in Tabelle 5 angeführt.
Tabelle 5: Erläuterung der Konstanten
-
Die in dieser Empfehlung verwendeten Abkürzungen sind
in Tabelle 6 zusammengefaßt.
Tabelle 6: Erläuterung der Abkürzungen.
Abkürzung Beschreibung
-
CELP Code-angeregte Linearprädiktion
-
MA Bewegliches Mittel
-
MSB Höchstwertiges Bit
-
LP Linearprädiktion
-
LSP Linienspektrums-Paar
-
LSF Linienspektrums-Frequenz
-
VQ Vektorquantisierung
3 Beschreibung der Funktion des Codierers
-
In diesem Abschnitt werden die verschiedenen, in den
Blöcken von Fig. 1 dargestellten Funktionen des
Codierers beschrieben.
3.1 Vorverarbeitung
-
Wie in Abschnitt 2 erwähnt, soll es sich bei der
Eingabe in den Sprachcodierer um ein 16 Bit PCM-Signal
handeln. Vor der Codierung werden zwei
Vorverarbeitungsfunktionen angewendet: 1) Signalskalierung und 2)
Hochpaßfilterung.
-
Die Skalierung besteht aus dem Dividieren der Eingabe
durch einen Faktor 2 zum Reduzieren der Möglichkeit von
Überläufen bei der Festkommaimplementierung. Das
Hochpaßfilter dient als Vorkehrung gegen unerwünschte
niederfrequente Komponenten. Es wird ein Pol-/Null-
Filter zweiter Ordnung mit einer Grenzfrequenz von
140 Hz verwendet. Sowohl die Skalierung als auch die
Hochpaßfilterung werden mit dem Dividieren der
Koeffizienten im Zähler dieses Filters durch 2
verknüpft. Das resultierende Filter ergibt sich durch
-
Das durch Hh1(z) gefilterte Eingangssignal wird als s(n)
bezeichnet und wird in allen nachfolgenden
Codiereroperationen verwendet.
3.2 Linearprädiktionsanalyse und -quantisierung
-
Die Kurzzeit-Analyse- und Synthesefilter basieren auf
Linearprädiktionsfiltern (LP-Filtern) 10ter Ordnung.
Das LP-Synthesefilter ist definiert als
-
wobei âi, 1 = 1, ..., 10 die (quantisierten)
Linearprädiktionskoeffizienten (LP-Koeffizienten) sind. Die
Kurzzeit-Prädiktion oder Linearprädiktionsanalyse wird
unter Verwendung des Autokorrelationsansatzes mit einem
30 ms asymmetrischen Fenster einmal pro Sprachrahmen
durchgeführt. Alle 80 Abtastwerte (10 ms) werden die
Autokorrelationskoeffizienten der Sprache nach
Fensterbildung berechnet und mit dem Levinson-
Algorithmus in die LP-Koeffizienten konvertiert. Dann
werden die LP-Koeffizienten zur Quantisierung und
Interpolation in den LSP-Bereich transformiert. Die
interpolierten quantisierten und nichtquantisierten
Filter werden zurück zu den LP-Filterkoeffizienten
konvertiert (um die Synthese- und Gewichtungsfilter bei
jedem Teilrahmen zu konstruieren).
3.2.1 Fensterbildung und Autokorrelationsberechnung
-
Das LP-Analysefenster besteht aus zwei Teilen: der
erste Teil ist die Hälfte eines Hamming-Fensters und
der zweite Teil ist ein Viertel einer
Kosinusfunktionsperiode. Das Fenster ist gegeben durch:
-
In der LP-Analyse gibt es eine 5 ms-Vorausschau, was
bedeutet, daß 40 Abtastwerte aus dem zukünftigen
Sprachrahmen benötigt werden. Dies entspricht bei der
Codiererstufe einer zusätzlichen Verzögerung von 5 ms.
Das LP-Analysefenster gilt für 120 Abtastwerte von
vergangenen Sprachrahmen, 80 Abtastwerte von dem
vorliegenden Sprachrahmen und 40 Abtastwerte von dem
zukünftigen Sprachrahmen. Die Fensterbildung bei der
LP-Analyse ist in Fig. 4 dargestellt.
-
Fig. 4: Fensterbildung in der LP-Analyse. Von den
Mustern mit verschiedenen Schattierungen werden
entsprechende Anregungs- und LP-Analyse-Rahmen
identifiziert.
-
Die Autokorrelationskoeffizienten der Sprache nach
Fensterbildung
-
s'(n) = ωlp(n) s(n), n = 0, ..., 239, (4)
-
werden berechnet durch
-
r(k) = s'(n)s'(n - k), k = 0, ..., 10, (5)
-
Um arithmetische Probleme für Eingangssignale mit einem
niedrigen Pegel zu vermeiden, weist der Wert r(0) eine
Untergrenze von r(0) = 1,0 auf. Es wird eine 60 Hz-
Bandbreitenaufweitung angewendet, indem die
Autokorrelationskoeffizienten mit
-
multipliziert werden, wobei &sub0; = 60 Hz die
Bandbreitenaufweitung und s = 8000 Hz die Abtastfrequenz ist.
Außerdem wird r(0) mit dem Korrekturfaktor 1,0001 für
weißes Rauschen multipliziert, was dem Addieren einer
Rauschuntergrenze bei -40 dE entspricht.
3.2.2 Levinson-Durbin-Algoritbxnus
-
Mit den modifizierten Autokorrelationskoeffizienten
-
r'(0) = 1,0001 r(0)
-
r'(k) = ωlog(k)r(k), k = 1,..., (7)
-
werden die LP-Filterkoeffizienten ai, i = 1, ..., 10
erhalten, indem der Gleichungssatz
-
air'( - k ) = -r'(k), k = 1,..., 10
-
gelöst wird. Der Gleichungssatz in (8) wird mit dem
Levinson-Durbin-Algorithmus gelöst. Bei diesem
Algorithmus wird die folgende Rekursion verwendet:
-
Die Endlösung ist gegeben als aj - aj(10), j = 1,..., 10
3.2.3 LP-LSP-Konversion
-
Die LP-Filterkoeffizienten ai, i = 1, ..., 10, werden in
die Linienspektrums-Paar-Darstellung (LSP-Darstellung)
zur Quantisierung und Interpolation konvertiert. Für
ein LP-Filter lOter Ordnung werden die
LSP-Koeffizienten als die Wurzeln der Summen- und
Differenzpolynome
-
= A(z) + z&supmin;¹¹A(z&supmin;¹), (9)
-
beziehungsweise
-
(z) = A(z) - z&supmin;¹¹A(z&supmin;¹), (10)
-
definiert. Das Polynom (z) ist symmetrisch, und (z)
ist antisymmetrisch. Es kann bewiesen werden, daß alle
Wurzeln dieser Polynome auf dem Einheitskreis liegen
und einander abwechseln. Die Wurzel von (z) ist
z = -1 (ω = π), und die Wurzel von (z) ist
z = 1(ω = 0). Zur Eliminierung dieser beiden Wurzeln
werden die neuen Polynome
-
F1(z) = (z)/(1 + z&supmin;¹)(11)
-
und
-
F&sub2;(z) = (z)/(1 - z&supmin;¹) (12)
-
definiert.
-
Jedes Polynom weist 5 konjugierte Wurzeln auf dem
Einheitskreis (e≠jωi) auf, weshalb die Polynome als
-
F&sub1;(z) = (1 - 2qiz&supmin;¹ + z&supmin;²) (13)
-
und
-
F&sub2;(z) = (1 - 2qiz&supmin;¹ + z&supmin;²) (13)
-
geschrieben werden können, wobei qi = cos(ωi) ist, wobei
ωi die Linienspektrums-Frequenzen (LSF) darstellen und
sie der ordnenden Eigenschaft 0 < w&sub1; < ω&sub2; < ... < ω&sub1;&sub0; < π
genügen. qi wird als die LSP-Koeffizienten in dem
Kosinusbereich bezeichnet.
-
Da die beiden Polynome F&sub1;(z) und F&sub2;(z) symmetrisch sind,
brauchen nur die ersten 5 Koeffizienten jedes Polynoms
berechnet zu werden. Die Koeffizienten dieser Polynome
werden durch die rekursiven Beziehungen
-
f&sub1;(i + 1) = ai + 1 + a10-i - f&sub1;(i) = 0,...,4
-
f&sub2;(i + 1) = ai + 1 + a10-i - f&sub2;(i) = 0,...,4 (15)
-
gefunden, wobei &sub1; (0) = &sub2;(0) (0) = 1,0. Die LSP-
Koeffizienten werden gefunden, indem die Polynome F&sub1;(z)
und F&sub2;(z) an zwischen 0 und π gleichmäßig beabstandeten
60 Punkten ausgewertet werden und auf
Vorzeichenänderungen geprüft werden. Eine Vorzeichenänderung weist
auf das Vorliegen einer Wurzel hin, und das
Vorzeichenänderungsintervall wird dann 4 Mal dividiert, um die
Wurzel besser zu verfolgen. Mit den Tschebyscheff-
Polynomen werden F&sub1;(z) und E&sub2;(z) ausgewertet. Bei diesem
Verfahren werden die Wurzeln direkt in dem
Kosinusbereich {qi} gefunden. Die bei z = ejω ausgewerteten
Polynome F&sub1;(z) oder F&sub2;(z) können geschrieben werden als
-
F(ω) = 2e-j5wC(x), (16)
-
wobei
-
C(x) = T&sub5;(x) + (1)T&sub4;(x) + (2)T&sub3;(x) + (3)T&sub2;(x) + (4)T&sub1;)(x) + (5)/2(17)
-
wobei Tm(x) = cos(mω) das Tschebyscheff-Polynom m-ter
Ordnung ist und (i), i = 1, ..., 5 die Koeffizienten
entweder von F&sub1;(z) oder F&sub2;(z) sind, die mit den
Gleichungen in (15) berechnet wurden. Das Polynom C(x)
wird bei einem bestimmten Wert von x = cos(ω)
ausgewertet, wobei die folgende rekursive Relation verwendet
wird:
-
mit den Anfangswerten b&sub5; = 1 und b&sub6; = 0.
3.2.4 Quantisierung der LSP-Koeffizienten
-
Die LP-Filterkoeffizienten werden mit der LSP-
Darstellung in den Frequenzbereich quantisiert, das
heißt:
-
wobei ωi die Linienspektrums-Frequenzen (LSF) in dem
normierten Frequenzbereich [0, π] sind. Eine
geschaltete MA-Prädiktion 4ter Ordnung wird verwendet,
um den aktuellen Satz von LSF-Koeffizienten
vorherzusagen. Die Differenz zwischen dem berechneten und
vorhergesagten Satz von Koeffizienten wird mit einem
zweistufigen Vektorquantisierer quantisiert. Die erste
Stufe ist ein 10-dimensionaler VQ mit einem Codelexikon
L1 mit 128 Einträgen (7 Bit). Die zweite Stufe ist ein
10-Bit-VQ, der als ein geteilter VQ mit zwei
5-dimensionalen Codelexika L2 und L3 mit jeweils 32 Einträgen
(5 Bit) implementiert worden ist.
-
Zur Erläuterung des Quantisierungsprozesses wird
zweckmäßigerweise zunächst der Decodierprozeß beschrieben.
Jeder Koeffizient wird aus der Summe von 2 Codelexika
erhalten:
-
wobei L1, L2 und L3 die Codelexikaindizes sind. Um in
den quantisierten LP-Synthesefiltern scharfe Resonanzen
zu vermeiden, sind die Koeffizienten 11 derart
angeordnet, daß benachbarte Koeffizienten einen Mindestabstand
von J aufweisen. Die Umordnungsroutine ist unten
gezeigt:
-
Der Umordnungsprozeß wird zweimal ausgeführt, zunächst
mit einem Wert von J = 0, 0001, dann mit einem Wert von
J = 0,000095.
-
Nach diesem Umordnungsprozeß werden die quantisierten
LSF-Koeffizienten für den aktuellen Rahmen n aus
der gewichteten Summe vorheriger Quantisiererausgaben
1(m-k) und der aktuellen Quantisiererausgabe 1(m) erhalten
-
wobei die Koeffizienten des geschalteten MA-
Prädiktors sind. Welcher MA-Prädiktor verwendet werden
soll, wird durch ein eigenes Bit L0 definiert. Zu
Beginn sind die Anfangswerte von gegeben durch
1i = 1π/11 für alle k < 0.
-
Nach der Berechnung von i wird das entsprechende
Filter auf Stabilität hin geprüft. Dies geschieht wie
folgt:
-
1. Ordnen des Koeffizienten ( ) mit aufsteigendem
Wert,
-
2. falls < 0,005, dann = 0,005,
-
3. falls - < 0,0001, dann = + 0,0001
i = 1, ..., 9,
-
4. falls > 3,135, dann = 3,135.
-
Die Prozedur zum Codieren der LSF-Parameter kann wie
folgt umrissen werden. Für jeden der zwei MA-
Prädiktoren muß die beste Annäherung an den aktuellen
LSF-Vektor gefunden werden. Die beste Annäherung ist
als die Annäherung definiert, die ein gewichtetes
mittleres Fehlerquadrat
-
ELPC = ωi(ωi - )² (21)
-
minimiert.
-
Die Gewichte wi werden als Funktion der
nichtquantisierten LSF-Koeffizienten
-
adaptiv gemacht. Außerdem werden die Gewichte w&sub5; und w&sub6;
jeweils mit 1, 2 multipliziert.
-
Der für den aktuellen Rahmen zu quantisierende Vektor
wird erhalten aus
-
Das erste Codelexikon L1 wird durchsucht und derjenige
Eintrag L1 wird ausgewählt, der das (ungewichtete)
mittlere Fehlerquadrat minimiert. Darauf folgt eine
Suche in dem zweiten Codelexikon L2, das den unteren
Teil der zweiten Stufe definiert. Für jeden möglichen
Kandidaten wird der Teilvektor , i = 1, ..., 5, mit
Gleichung (20) rekonstruiert und umgeordnet, um eine
Mindestentfernung von 0,0001 zu garantieren. Der Vektor
mit Index L2, der nach Addition zu dem Kandidaten der
ersten Stufe und Umordnung dem unteren Teil des
entsprechenden Ziels in dem Sinne eines gewichteten MSE
am besten nahekommt wird ausgewählt. Mit dem
ausgewählten Vektor L1 der ersten Stufe und dem unteren
Teil der zweiten Stufe (L2) wird der höhere Teil der
zweiten Stufe in dem Codelexikon L3 durchsucht. Wieder
wird, um eine Mindestentfernung von 0,0001 zu
garantieren, die Umordnungsprozedur verwendet. Der
Vektor L3, der den insgesamt gewichteten MSE minimiert,
wird ausgewählt.
-
Dieser Prozeß wird für jeden der beiden durch L0
definierten MA-Prädiktoren durchgeführt, und der MA-
Prädiktor L0, der den niedrigsten gewichteten MSE
erzeugt, wird ausgewählt.
3.2.5 Interpolation der LSP-Koeffizienten
-
Die quantisierten (und nichtquantisierten) LP-
Koeffizienten werden für den zweiten Teilrahmen
verwendet. Für den ersten Teilrahmen werden die quantisierten
(und nichtquantisierten) LP-Koeffizienten aus der
linearen Interpolation der entsprechenden Parameter in
dem benachbarten Teilrahmen erhalten. Die Interpolation
erfolgt an den LSP-Koeffizienten in dem q-Bereich. Es
seien die LSP-Koeffizienten bei dem zweiten
Teilrahmen des Rahmens m und die LSP-
Koeffizienten bei dem zweiten Teilrahmen des
vergangenen Rahmens (m-1). Die (nichtquantisierten)
interpolierten LSP-Koeffizienten in jedem der zwei
Teilrahmen sind gegeben durch
-
Die gleiche Interpolationsprozedur wird für die
Interpolation der quantisierten LSP-Koeffizienten
verwendet, indem in Gleichung (24) qi durch ersetzt
wird.
3.2.6 LSP-LP-Konversion
-
Nach der Quantisierung und Interpolation der LSP-
Koeffizienten werden sie in LP-Koeffizienten {ai}
zurückkonvertiert. Die Konversion in dem LP-Bereich
geschieht wie folgt. Die Koeffizienten von F&sub1;(z) und
F&sub2;(z) werden durch Entwicklung der Gleichungen (13) und
(14) gefunden, wobei die quantisierten und
interpolierten LSP-Koeffizienten bekannt sind. Mit der
folgenden rekursiven Beziehung wird &sub1;(i), i = 1, ...,5,
aus qi berechnet
-
und zwar mit den Anfangswerten (0) = 1 und &sub1;(-1) = 0.
Die Koeffizienten &sub2;(i) werden analog berechnet, indem
q2i-1 durch q2i ersetzt wird.
-
Nachdem die Koeffizienten &sub1;(i) und &sub2;(i) gefunden worden
sind, werden F&sub1;(z) und F&sub2;(z) mit 1 + z-1 beziehungsweise
1-z&supmin;¹ multipliziert, um (z) und (z) zu erhalten, das
heißt
-
Schließlich werden die LP-Koeffizienten gefunden durch
-
Dies ist direkt von der Beziehung A(z) =
( (z) + (z)) /2 abgeleitet und weil (z) und (z)
symmetrische beziehungsweise antisymmetrische Polynome
sind.
3.3. Perzeptuale Gewichtung
-
Das perzeptuale Gewichtungsfilter basiert auf den
nichtquantisierten LP-Filterkoeffizienten und ist
gegeben durch
-
Die Werte γ&sub1; und γ&sub2; bestimmen das Frequenzverhalten des
Filters W(z). Durch richtige Einstellung dieser
Variablen kann die Gewichtung effektiver gestaltet
werden. Dies geschieht, indem γ&sub1; und γ&sub2; zu einer Funktion
der spektralen Form des Eingangssignals gemacht werden.
Diese Adaptation geschieht einmal pro 10 ms-Rahmen,
doch wird mit einer Interpolation für jeden ersten
Teilrahmen dieser Adaptationsprozeß geglättet. Die
spektrale Form wird von einem Linearprädiktionsfilter
2ter Ordnung erhalten, das als ein Nebenprodukt aus der
Levinson-Durbin-Rekursion (Abschnitt 3.2.2) erhalten
wurde. Die Reflexionskoeffizienten ki werden in Log-
Area-Ratio-Koeffizienten (LAR-Koeffizienten) o1
konvertiert durch
-
Diese LAR-Koeffizienten werden für den zweiten
Teilrahmen verwendet. Die LAR-Koeffizienten für den
ersten Teilrahmen werden durch lineare Interpolation
mit den LAR-Parametern von den vorausgegangenen Rahmen
erhalten und sind gegeben durch
-
Die spektrale Hüllkurve ist dadurch gekennzeichnet, daß
sie entweder flach ist (flat = 1) oder geneigt ist
(flat = 0). Diese Charakterisierung wird für jeden
Teilrahmen dadurch erhalten, daß auf die LAR-
Koeffizienten eine Schwellwertfunktion angewendet wird.
Zur Vermeidung schneller Veränderungen wird eine
Hysterese verwendet, indem der Wert von flat in dem
vorausgegangenen Teilrahmen (m-1) berücksichtigt wird
-
Falls das interpolierte Spektrum für einen Teilrahmen
als flach (flat(m) = 1) klassifiziert wird, werden die
Gewichtungsfaktoren auf γ&sub1; - 0, 94 und γ&sub2; = 0, 6 gesetzt.
Falls das Spektrum als geneigt (flat(m) - 0)
klassifiziert wird, wird der Wert von γ&sub1; auf 0,98 gesetzt und
der Wert von γ&sub2; wird auf die Stärke der Resonanzen in
dem LP-Synthesefilter adaptiert, ist aber zwischen 0,4
und 0,7 begrenzt. Falls eine starke Resonanz vorliegt,
wird der Wert von γ&sub2; näher an die Obergrenze
eingestellt. Diese Adaptation wird durch ein Kriterium
auf der Basis der Mindestentfernung zwischen 2
aufeinanderfolgenden LSP-Koeffizienten für den
aktuellen Teilrahmen erreicht. Die Mindestentfernung
ist gegeben durch
-
Mit der folgenden linearen Relation wird γ&sub2; berechnet:
-
γ&sub2; = -6,0 * dmin + 1,0, und 0,4 ≤ γ&sub2; ≤ 0,7 (32)
-
Das gewichtete Sprachsignal in einem Teilrahmen ist
gegeben durch
-
Mit dem gewichteten Sprachsignal sw(n) wird eine
Abschätzung der Tonhöhenverzögerung in dem Sprachrahmen
gefunden.
3.4 Regelkreis-Tonhöhenanalyse
-
Um die Komplexität der Suche nach der besten adaptiven
Codelexikon-Verzögerung zu reduzieren, wird der
Suchbereich um eine aus einer Regelkreis-Tonhöhenanalyse
erhaltene mögliche Verzögerung Top eingegrenzt. Diese
Regelkreis-Tonhöhenanalyse erfolgt einmal pro Rahmen
(10 ms). Bei der Regelkreis-Tonhöhenabschätzung wird
das gewichtete Sprachsignal sw(n) von Gleichung (33)
verwendet, und sie wird wie folgt durchgeführt: in dem
ersten Schritt werden 3 Maxima der Korrelation
-
R(k) = sω(n)sω(n - k) (34)
-
in den folgenden drei Bereichen gefunden
-
i = 1: 80, ..., 143,
-
i = 2: 40, ..., 79,
-
i = 3: 20, ..., 39.
-
Die beibehaltenen Maxima R (ti), 1 = 1,..., 3, werden
normiert durch
-
Der Gewinner unter den drei normierten Korrelationen
wird gewählt, indem die Verzögerungen mit den Werten in
dem unteren Bereich bevorzugt werden. Dies geschieht
durch Gewichten der normierten Korrelationen
entsprechend den längeren Verzögerungen. Die beste
Regelkreisverzögerung Top wird wie folgt bestimmt:
-
Durch diese Prozedur des Dividierens des
Verzögerungsbereichs in 3 Abschnitte und Bevorzugen der unteren
Abschnitte wird die Wahl von Tonhöhenvielfachen
verhindert.
3.5 Berechnung der Pulsantwort
-
Die Pulsantwort h(n) des gewichteten Synthesefilters
W (z) / (z) wird für jeden Teilrahmen berechnet. Diese
Pulsantwort wird für die Suche in adaptiven und festen
Codelexika benötigt. Die Pulsantwort h(n) wird durch
Filtern des Vektors von Koeffizienten des Filters
A (z/γ&sub1;), erweitert durch Nullen durch die beiden Filter
1/ (z) und 1/A (z/γ&sub2;) berechnet.
3.6. Berechnung des Zielsignals
-
Das Zielsignal x(n) für die Suche im adaptiven
Codelexikon wird üblicherweise durch Subtrahieren der
Nulleingabe-Antwort des gewichteten Synthesefilters
W(z)/ (z) = /A(z/γ&sub1;)/[ (z)A(z/γ&sub2;)] aus dem gewichteten
Sprachsignal sw(n) von Gleichung (33) berechnet. Dies
geschieht auf einer Teilrahmenbasis.
-
Eine gleichwertige Vorgehensweise für das Berechnen des
Zielsignals, die in dieser Empfehlung verwendet wird,
ist die Filterung des LP-Restsignals r(n) durch die
Kombination aus Synthesefilter 1/ (z) und dem
Gewichtungsfilter A(z/γ&sub1;)/A(z/γ&sub2;). Nach der Bestimmung der
Anregung für den Teilrahmen werden die Anfangszustände
dieser Filter durch Filtern der Differenz zwischen LP-
Rest und Anregung aktualisiert. Die
Speicheraktualisierung dieser Filter ist in Abschnitt 3.10 erläutert.
-
Das Restsignal r(n), das zum Finden des Zielvektors
benötigt wird, wird auch bei der Suche im adaptiven
Codelexikon zur Erweiterung des
Vergangenheitsanregungspuffers verwendet. Dies vereinfacht den Vorgang
der Suche im adaptiven Codelexikon für Verzögerungen,
die kleiner sind als die Teilrahmengröße von 40, wie im
nächsten Abschnitt erläutert wird. Der LP-Rest ist
gegeben durch
-
r(n) - s(n) + âis(n - i), n = 0,..., 39 (36)
3.7 Suche im adaptiven Codelexikon
-
Die adaptiven Codelexikon-Parameter (oder
Tonhöhenparameter) sind die Verzögerung und die Verstärkung. Bei
dem Ansatz mit dem adaptiven Codelexikon zum
Implementieren des Tonhöhenfilters wird die Anregung für unter
der Länge des Teilrahmens liegende Verzögerungen
wiederholt. Bei der Suchstufe wird die Anregung durch
den LP-Rest zum Vereinfachen der Regelkreissuche
erweitert. Die Suche im adaptiven Codelexikon geschieht
bei jedem (5 ms) Teilrahmen. Bei dem ersten Teilrahmen
wird eine gebrochene Tonhöhenverzögerung T&sub1; mit einer
Auflösung von 1/3 im Bereich [19¹/&sub3;, 84²/&sub3;] und ganzen
Zahlen nur in dem Bereich [85, 143] verwendet. Für den
zweiten Teilrahmen wird eine Verzögerung T&sub2; mit einer
Auflösung von 1/3 immer in dem Bereich [(int) T&sub1; - 5²/&sub3;,
(int) T&sub1; + 4²/&sub3; verwendet, wobei (int) T&sub1; die nächste
ganze Zahl zu der gebrochenen Tonhöhenverzögerung T&sub1; des
ersten Teilrahmens ist. Dieser Bereich wird in
denjenigen Fällen angepaßt, wenn T&sub1; sich über die Grenzen des
Verzögerungsbereichs hinweg erstreckt.
-
Für jeden Teilrahmen wird die optimale Verzögerung
unter Verwendung einer Regelkreisanalyse bestimmt, die
das gewichtete mittlere Fehlerquadrat minimiert. In dem
ersten Teilrahmen wird die Verzögerung T&sub1; gefunden,
indem in einem kleinen Bereich (6 Abtastwerte) von
Verzögerungswerten um die Regelkreisverzögerung Top
herum gesucht wird (siehe Abschnitt 3.4). Die
Suchgrenzen tmin und tmax sind definiert durch
-
Für den zweiten Teilrahmen erfolgt die
Regelkreis-Tonhöhenanalyse um die in dem ersten Teilrahmen herum
ausgewählte Tonhöhe, um die optimale Verzögerung T&sub2; zu
finden. Die Suchgrenzen liegen zwischen tmin - ²/&sub3; und
tmax + ²/&sub3;, wobei tmin und tmax aus T&sub1; wie folgt abgeleitet
sind:
-
Durch die Regelkreis-Tonhöhensuche wird das gewichtete
mittlere Fehlerquadrat zwischen der ursprünglichen
Sprache und der synthetisierten Sprache minimiert. Dies
geschieht durch Maximieren des Ausdrucks
-
wobei x(n) das Zielsignal und yk(n) die zurückliegende
gefilterte Anregung bei der Verzögerung k ist (mit h(n)
gefaltete zurückliegende Anregung). Man beachte, daß
der Suchbereich um einen vorgewählten Wert herum
begrenzt ist, der die Regelkreistonhöhe Top für den
ersten Teilrahmen und T&sub1; für den zweiten Teilrahmen ist.
-
Die Faltung yk (n) wird für die Verzögerung tmin berechnet
und für die anderen ganzzahligen Verzögerungen in dem
Suchbereich k = tmin + 1, ..., tmax mit der rekursiven
Beziehung
-
yk(n) = yk-1(n - 1) + u(-k)h(n), n = 39,..., 0, (38)
-
aktualisiert, wobei u(n), n = -143, ..., 39, der
Anregungspuffer ist und yk 1(-1) = 0. Man beachte, daß bei
der Suchstufe die Abtastwerte u(n), n = 0, ..., 39,
unbekannt sind und sie für unter 40 liegende
Tonhöhenverzögerungen benötigt werden. Zur Vereinfachung der
Suche wird der LP-Rest zu u(n) kopiert, damit die
Beziehung in Gleichung (38) für alle Verzögerungen
gültig ist.
-
Für die Bestimmung von T&sub2; und T&sub1;, falls die optimale
ganzzahlige Regelkreisverzögerung unter 84 liegt,
müssen die Brüche um die optimale ganzzahlige
Verzögerung herum getestet werden. Die Suche nach
gebrochenen Tonhöhen erfolgt durch Interpolieren der
normierten Korrelation in Gleichung (37) und die Suche
nach ihrem Maximum. Die Interpolation erfolgt mit einem
FIR-Filter b&sub1;&sub2; basierend auf einer Sinc-Funktion mit
Hamming-Fenstern, wobei der Sinc bei ±11 abgeschnitten
ist und mit Nullen bei ±12 (b&sub1;&sub2;(12) = 0) aufgefüllt ist.
Die Grenzfrequenz (-3 dE) des Filters liegt in dem
überabgetasteten Bereich bei 3600 Hz. Die
interpolierten Werte von R (k) für die Brüche - ²/&sub3;, - ¹/&sub3;, 0, ¹/&sub3; und
werden mit der Interpolationsformel
-
R(k) = R(k - i)b&sub1;&sub2;(t + i.3) + R(k - 1 + i)b&sub1;&sub2;(3 - t + i.3), t = 0, 1, 2, (39)
-
erhalten, wobei t = 0, 1, 2 den Brüchen 0,
¹/&sub3; beziehungsweise ²/&sub3; entspricht. Man beachte, daß
Korrelationsterme in Gleichung (37) zur richtigen
Interpolation mit einem Bereich tmin - 4, tmax + 4 berechnet
werden müssen.
3.7.1 Erzeugung des adaptiven Codelexikon-Vektors
-
Nach der Bestimmung der unganzzahligen
Tonhöhenverzögerung wird der adaptive Codelexikon-Vektor v(n) durch
Interpolieren des Vergangenheitsanregungssignals u(n)
mit der gegebenen ganzzahligen Verzögerung k und
Bruchteil t
-
v(n) = u(n - k + i)b&sub3;&sub0;(t + i.3) + u(n - k + 1 + i)b&sub3;&sub0;(3 - t + i.3), n = 0,...,39, t = 0, 1, 2. (40)
-
Das Interpolationsfilter b&sub3;&sub0; basiert auf Sinc-Funktionen
mit Hamming-Fenstern, wobei Sinc bei ±29 abgeschnitten
und mit Nullen bei ±30 gestopft ist (b&sub3;&sub0;(30) - 0). Die
Filter weisen in dem überabgetasteten Bereich eine
Grenzfrequenz (-3 dB) bei 3600 Hz auf.
3.7.2 Codewortberechnung für adaptive Codelexikon-
Verzögerungen
-
Die Tonhöhenverzögerung T&sub1; wird mit 8 Bit in dem ersten
Teilrahmen codiert, und die relative Verzögerung in dem
zweiten Teilrahmen wird mit 5 Bit codiert. Eine
gebrochene Verzögerung T wird durch ihren ganzzahligen
Teil (int)T und einen Bruchteil frac/3, frac = -1, 0,
1, dargestellt. Der Tonhöhenindex P1 ist nun codiert
als
-
Der Wert der Tonhöhenverzögerung T&sub2; ist relativ zu dem
Wert von T&sub1; codiert. Mit der gleichen Interpretation wie
oben, wird die gebrochene Verzögerung T&sub2;, die durch
ihren ganzzahligen Teil (int)T&sub2; und einen Bruchteil
frac/3, frac = -1, 0, 1, dargestellt wird, codiert als
-
P2 = ((int)T&sub2; - tmin) = 3 + rac + 2 (42)
-
wobei tmin wie oben von T&sub1; abgeleitet ist.
-
Um den Codierer gegenüber Zufallsbitfehlern robuster zu
machen, wird an dem Verzögerungsindex des ersten
Teilrahmens ein Paritätsbit P0 berechnet. Das Paritätsbit
wird durch eine XOR-Operation an den 6 höchstwertigen
Bit von P1 erzeugt. Bei dem Decodierer wird dieses
Paritätsbit wieder berechnet, und falls der
wiederberechnete Wert nicht mit dem übertragenen Wert
übereinstimmt, wird eine Fehlerverdeckungsprozedur
angewendet.
3.7.3 Berechnung der adaptiven Codelexikon-
Verstärkung
-
Nach der Bestimmung der adaptiven
Codelexikon-Verzögerung wird die adaptive Codelexikon-Verstärkung gp
berechnet als
-
wobei y(n) der gefilterte adaptive Codelexikon-Vektor
ist (Nullzustandsantwort von W (z) / (z) auf v(n)).
Dieser Vektor wird durch Falten von v(n) mit h(n)
erhalten
-
y(n) = (i)h(n - i) n = 0, .... 39. (44)
-
Man beachte, daß in den meisten Fällen durch Maximieren
des Ausdrucks in Gleichung (37) gp > 0. Falls das Signal
nur negative Korrelationen enthält, wird der Wert von gp
auf 0 gesetzt.
3.8. Festes Codelexikon: Struktur und Suche
-
Das feste Codelexikon basiert auf einer algebraischen
Codelexikonstruktur, die ein ISPP-Design (interleaved
single-pulse permutation) verwendet. In diesem
Codelexikon enthält jeder Codelexikon-Vektor 4 von Null
verschiedene Pulse. Jeder Puls kann entweder die
Amplituden +1 oder -1 aufweisen und kann die in Tabelle
7 angegebenen Positionen einnehmen.
-
Der Codelexikon-Vektor c(n) wird konstruiert, indem ein
Nullvektor genommen wird und die 4 Einheitspulse mit
ihrem entsprechenden Vorzeichen multipliziert an die
gefundenen Stellen gesetzt werden.
-
c(n) = s0δ(n - i0) + s1δ(n - i1)+ s2δ(n - i2) + s3δ(n - i3), n = 0,..., 39 (45)
-
wobei 5(0) ein Einheitspuls ist. Ein in das Codelexikon
integriertes spezielles Merkmal besteht darin, daß der
ausgewählte Codelexikon-Vektor durch ein adaptives
Vorfilter P(z) gefiltert wird, was die harmonischen
Anteile zur Verbesserung der Qualität der
synthetisierten Sprache verstärkt. Hier wird das Filter
-
P(z) = 1/(1 - δz-T)
-
der ganzzahlige Anteil der
Tonhöhenverzögerung des aktuellen Teilrahmens und β eine
Tonhöhenverstärkung ist.
Tabelle 7: Struktur des festen Codelexikons C.
-
Der Wert von β wird adaptiv gemacht, indem die
quantisierte adaptive Codelexikon-Verstärkung von dem durch
0,2 und 0,8 begrenzten vorausgeganenen Teilrahmen
verwendet wird.
-
β = , 0,2 ≤ 3 ≤ 0,8 (47)
-
Durch dieses Filter wird die harmonische Struktur für
unter der Teilrahmengröße von 40 liegende Verzögerungen
verstärkt. Diese Modifikation wird in die Suche im
festen Codelexikon integriert, indem die Pulsantwort
h (n) gemäß
-
h(n) = h(n) + βh(n -T), n = T,.., 39. (48)
-
modifiziert wird.
3.8.1 Festes Codelexikon: Suchprozedur
-
In dem festen Codelexikon wird gesucht, indem das
mittlere Fehlerquadrat zwischen der gewichteten
eingegebenen Sprache sw(n) von Gleichung (33) und der
gewichteten rekonstruierten Sprache minimiert wird. Das
bei der Regelkreis-Tonhöhensuche verwendete Zielsignal
wird durch Subtrahieren des adaptiven
Codelexikon-Beitrags aktualisiert, das heißt
-
x&sub2;(n) = x(n) - gpy(n), n = 0, ..., 39 (49)
-
wobei y(n) der gefilterte adaptive Codelexikon-Vektor
von Gleichung (44) ist.
-
Die Matrix H ist als die untere dreieckige Toeplitz-
Faltungsmatrix mit einer Diagonalen h(0) und unteren
Diagonalen h(1), ..., h(39) definiert. Falls ck der
algebraische Codevektor beim Index k ist, dann wird in
dem Codelexikon gesucht durch Maximieren des Ausdrucks
-
wobei d(n) die Korrelation zwischen dem Zielsignal x&sub2;(n)
und der Pulsantwort h (n) ist und φ = HtH die Matrix der
Korrelationen von h(n) ist. Das Signal d(n) und die
Matrix φ werden vor der Codelexikonsuche berechnet. Die
Elemente von d(n) werden berechnet aus
-
d(n) = x(i)h(i - n), n = 0,...39 (51)
-
und die Elemente der symmetrischen Matrix φ werden
berechnet durch
-
φ(i,j) = h(n - i)h(n - j), (j ≥ i) (52)
-
Man beachte, daß nur die tatsächlich benötigten
Elemente berechnet werden, und eine effiziente
Speicherprozedur ist zur Beschleunigung der
Suchprozedur entworfen worden.
-
Die algebraische Struktur des Codelexikons C gestattet
eine schnelle Suchprozedur, da der Codelexikon-Vektor ck
nur vier von Null verschiedene Pulse enthält. Die
Korrelation in dem Zähler von Gleichung (50) ist für
einen gegebenen Vektor ck gegeben durch
-
C = aid(mi),
-
wobei mi die Position des i-ten Pulses und ai seine
Amplitude ist. Die Energie in dem Nenner von Gleichung
(50) ist gegeben durch
-
Zur Vereinfachung der Suchprozedur werden die
Pulsamplituden durch Quantisieren des Signals d(n) im
voraus bestimmt, und zwar durch Setzen der Amplitude
eines Pulses an einer bestimmten Position gleich dem
Vorzeichen von d(n) an dieser Position. Vor der
Codelexikonsuche werden die folgenden Schritte
durchgeführt. Zunächst wird das Signal d(n) in zwei
Signale zerlegt: das absolute Signal d'(n)I = d(n)
und das Vorzeichensignal sign[d(n)]. Als zweites wird
die Matrix φ durch Aufnahme der Vorzeicheninformationen
modifiziert, das heißt
-
φ'(i,j) = sign[d(i)] sign[d(j)] φ(i,j), i = 0,...,39, j = i,...,39 (55)
-
Zum Entfernen des Faktors 2 in Gleichung (54)
-
φ'(i, i) = 0,5φ(i,i), i = 0,...,39 (56)
-
Die Korrelation in Gleichung (53) ist nun gegeben durch
-
C = d'(m&sub0;) + d'(m&sub1;) + d'(m&sub2;) + d'(m&sub3;), (57)
-
und die Energie in Gleichung (54) ist gegeben durch
-
Mit einem fokussierten Suchansatz wird die Suchprozedur
weiter vereinfacht. Bei diesem Ansatz wird ein im
voraus berechneter Schwellwert getestet, bevor in die
letzte Schleife eingestiegen wird, und in die Schleife
wird nur dann eingestiegen, falls dieser Schwellwert
überschritten wird. Die größte Anzahl, wie oft in die
Schleife eingestiegen werden kann, ist festgelegt, so
daß in einem geringen Prozentsatz des Codelexikons
gesucht wird. Der Schwellwert wird auf der Basis der
Korrelation C berechnet. Die größte absolute
Korrelation und die durchschnittliche Korrelation
aufgrund des Beitrags der ersten drei Pulse, max&sub3; und
av&sub3;, werden vor der Codelexikonsuche gefunden. Der
Schwellwert ist gegeben durch
-
thr&sub3; = a &sub3; + K&sub3;(max3 - a &sub3;). (59)
-
In die vierte Schleife wird nur dann eingestiegen,
falls die absolute Korrelation (aufgrund von drei
Pulsen) thr&sub3; übersteigt, wobei 0 ≤ T&sub3; < 1. Der Wert von
K&sub3;
steuert den Prozentsatz der Codelexikasuche und ist
hier auf 0,4 gesetzt. Man beachte, daß dies zu einer
variablen Suchzeit führt, und zur weiteren Steuerung
der Suche kann die Häufigkeit, mit der (für die 2
Teilrahmen) in die letzte Schleife eingestiegen werden
kann, ein bestimmtes Maximum nicht übersteigen, das
hier auf 180 gesetzt ist (der durchschnittliche
schlechteste Fall pro Teilrahmen ist 90 Mal).
3.8.2 Codewortberechnung des festen Codelexikons
-
Die Pulspositionen der Pulse 10, 11 und 12 werden mit
jeweils 3 Bit codiert, während die Position von 13 mit
4 Bit codiert wird. Jede Pulsamplitude wird mit einem
Bit codiert. Dies ergibt für die 4 Pulse insgesamt
17 Bit. Indem bei positivem Vorzeichen s = 1 und bei
negativem Vorzeichen s = 0 definiert wird, wird das
Vorzeichencodewort erhalten aus
-
S = s0 + 2 * s1 + 4 * s2 + 8 * s3 (60)
-
und das feste Codelexikon-Codewort wird erhalten aus
-
C = (i0/5) + 8 * (il/5 + 64 * (i2/5 + 512 * (2 * (i3/5) + jx) (61)
-
wobei jx = 0, falls 13 = 3, 8, ..., und jx = 1, falls
13 = 4, 9, ...
3.9 Quantisierung der Verstärkungsfaktoren
-
Die adaptive Codelexikon-Verstärkung
(Tonhöhenverstärkung) und die feste (algebraische)
Codelexikon-Verstärkung werden mit 7 Bit vektorquantisiert. Die
Verstärkungs-Codelexikonsuche geschieht durch
Minimieren des gewichteten mittleren Fehlerquadrats
zwischen der ursprünglichen und rekonstruierten
Sprache, das gegeben ist durch
-
E = xtx = y'y + ztz - 2gpxty - 2gcx'z + 2gpgcy'z, (62)
-
wobei x der Zielvektor (siehe Abschnitt 3.6), y der
gefilterte adaptive Codelexikon-Vektor von Gleichung
(94) und z der mit h(n) gefaltete feste Codelexikon-
Vektor ist,
-
z(n) = c(i)h(n - i) n = 0,..., 39 (63)
3.9.1 Verstärkungsvorhersage
-
Die feste Codelexikon-Verstärkung gc kann ausgedrückt
werden als
-
9c = γg'c(64)
-
wobei g'c eine vorhergesagte Verstärkung basierend auf
vorausgegangenen festen Codelexikon-Energien und γ ein
Korrekturfaktor ist.
-
Die mittlere Energie des festen Codelexikon-Beitrags
ist gegeben durch
-
E = 10log(¹/&sub4;&sub0; ). (65)
-
Nach dem Skalieren des Vektors ci mit der festen
Codelexikon-Verstärkung gc ist die Energie des
skalierten festen Codelexikons gegeben durch 20 log
gc + E. Es sei E(m) (in dE) die mittlere entfernte
Energie des (skalierten) festen Codelexikon-Beitrags
beim Teilrahmen m, die gegeben ist durch
-
E(m) = 20 loggc + E - (66)
-
wobei = 30 dB die mittlere Energie der festen
Codelexikon-Anregung ist. Die Verstärkung ge kann als
Funktion von E(m), E und durch
-
gc = 10(E(m) + - E)/20 (67)
-
ausgedrückt werden.
-
Die vorhergesagte Verstärkung g'c wird gefunden, indem
die logarithmische Energie des aktuellen festen
Codelexikon-Beitrags aus der logarithmischen Energie
von vorausgegangenen festen Codelexikon-Beiträgen
vorhergesagt wird. Die MA-Prädiktion 4ter Ordnung
geschieht wie folgt. Die vorhergesagte Energie ist
gegeben durch
-
wobei [b&sub1; b&sub2; b&sub3; b&sub4;] = [0, 68 0, 58, 0, 34 0, 19] die NA-
Prädiktionskoeffizienten sind und die quantisierte
Version des Prädiktionsfehlers R(m) beim Teilrahmen m
ist, die definiert ist durch
-
R(m), Em - (m), (69)
-
Die vorhergesagte Verstärkung g'c wird gefunden, indem
E(m) in Gleichung (67) durch seinen vorhergesagten Wert
ersetzt wird.
-
g'c = 10t (m) + - E)/20 (70)
-
Der Korrekturfaktor γ steht durch
-
R(m) = E(m) - (m) = 20 log(γ)
-
zu dem Verstärkungs-Prädiktions-Fehler in Beziehung.
3.9.2 Codelexikonsuche nach Verstärkungsquantisierung
-
Die adaptive Codelexikon-Verstärkung gp und der Faktor γ
werden mit einem zweistufigen konjugiert-strukturierten
Codelexikon vektorquantisiert. Die erste Stufe besteht
aus einem zweidimensionalen 3 Bit-Codelexikon GA, und
die zweite Stufe besteht aus einem zweidimensionalen
4 Bit-Codelexikon GB. Das erste Element in jedem
Codelexikon stellt die quantisierte adaptive
Codelexikon-Verstärkung dar, und das zweite Element
stellt den quantisierten festen
Codelexikon-Verstärkungskorrekturfaktor dar. Wenn für GA und GB die
Codelexikaindizes m bzw. n gegeben sind, dann ist die
quantisierte adaptive Codelexikon-Verstärkung gegeben
durch
-
= GA&sub1;(m) + GB&sub1;(n) (72)
-
und die quantisierte feste Codelexikon-Verstärkung ist
gegeben durch
-
= g'c(GA&sub2;(m) + GB&sub2;(n)). (73)
-
Diese konjugierte Struktur vereinfacht die
Codelexikonsuche durch Anwendung eines Vorauswahlprozesses. Die
optimale Tonhöhenverstärkung gp und feste Codelexikon-
Verstärkung gc werden aus Gleichung (62) abgeleitet und
für die Vorauswahl verwendet. Das Codelexikon GA
enthält 8 Einträge, bei denen das (gc entsprechende)
zweite Element im allgemeinen größere Werte als das (gp
entsprechende) erste Element aufweist. Diese
Voreinstellung gestattet eine Vorauswahl mit dem Wert
gc. Bei diesem Vorauswahlprozeß ist eine Gruppe aus 4
Vektoren, deren zweites Element nahe bei gxc liegen,
wobei gxc von gc und gp abgeleitet ist. Analog enthält
das Codelexikon GB 16 Einträge, in denen eine
Voreinstellung zu dem (gp entsprechenden) ersten Element
haben. Eine Gruppe aus 8 Vektoren, deren erste Elemente
nahe bei gp liegen, wird ausgewählt. Somit werden für
jedes Codelexikon die besten 50% infragekommenden
Vektoren ausgewählt. Darauf folgt eine intensive Suche
über die verbleibenden 4 * 8 = 32 Möglichkeiten hinweg
derart, daß durch die Kombination aus den zwei Indizes
das gewichtete mittlere Fehlerquadrat von Gleichung
(62) minimiert wird.
3.9.3 Codewortberechnung für Verstärkungsquantisierer
-
Die Codewörter GA und GB für den
Verstärkungsquantisierer werden aus den der besten Wahl entsprechenden
Indizes erhalten. Zur Reduzierung der Auswirkung von
Einbitfehlern werden die Codelexikaindizes abgebildet.
3.10 Speicheraktualisierung
-
Zur Berechnung des Zielsignals in dem nächsten
Teilrahmen wird eine Aktualisierung der Zustände des
Synthese- und Gewichtungsfilters benötigt. Nachdem die
beiden Verstärkungsfaktoren quantisiert worden sind,
wird das Anregungssignal u(n) in dem aktuellen
Teilrahmen gefunden durch
-
u(n) = (n) + c(n), n = 0,...,39 (74)
-
wobei und die quantisierten adaptiven
beziehungsweise festen Codelexikon-Verstärkungen sind,
v(n) der adaptive Codelexikon-Vektor (interpolierte
vergangene Anregung) ist und c(n) der feste
Codelexikon-Vektor ist (algebraischer Codevektor mit
Höhenverschärfung). Die Zustände der Filter können
aktualisiert werden, indem das Signal r(n) - u(n)
(Differenz zwischen Rest und Anregung) durch die Filter
1/ (z) und A(z/γ&sub1;) /A (z/γ&sub2;) für den 40 Abtastwert-
Teilrahmen gefiltert und die Zustände der Filter
gespeichert werden. Dies würde 3 Filteroperationen
erfordern. Folgendes ist ein einfacherer Ansatz, der
nur eine Filterung erfordert. Die lokale
Synthesesprache (n) wird durch Filtern des Anregungssignals durch
1/ (z) berechnet. Die auf die Eingabe r(n) - u(n)
zurückzuführende Ausgabe des Filters entspricht
e(n) = s(n) - (n) - (n). Somit sind die Zustände des
Synthesefilters 1/ (z) gegeben durch e (n), n = 30, ...,
39. Die Zustände des Filters A (z/γ&sub1;/A/(z/γ&sub2;) können durch
Filtern des Fehlersignals e(n) durch dieses Filter
aktualisiert werden, um den perzeptual gewichteten
Fehler ew(n) zu finden. Das Signal ew(n) kann aber auch
gefunden werden durch
-
eω(n) = x(n) - y(n) + z(n). (75)
-
Da die Signale x (n), y (n) und z (n) zur Verfügung
stehen, werden die Zustände des Gewichtungsfilters
durch Berechnen von ew(n) wie in Gleichung (75) für
n = 30, ..., 39 aktualisiert. Dadurch werden zwei
Filteroperationen eingespart.
3.11 Codierer- und Decodierer-Initialisierung
-
Alle statischen Codierervariablen sollten mit Ausnahme
der in Tabelle 8 aufgeführten Variablen auf 0
initialisiert werden. Diese Variablen müssen auch für
den Decodierer initialisiert werden.
Tabelle 8: Beschreibung von Parametern mit einer von
Null verschiedenen Initialisierung.
4. Beschreibung der Funktion des Decodierers
-
Der Signalfluß bei dem Decodierer wurde in Abschnitt 2
(Fig. 3) gezeigt. Zunächst werden die Parameter
decodiert (LP-Koeffizienten, adaptiver Codelexikon-
Vektor, fester Codelexikon-Vektor und
Verstärkungsfaktoren). Mit diesen decodierten Parametern wird das
rekonstruierte Sprachsignal berechnet. Dieser Prozeß
ist in Abschnitt 4.1 beschrieben. Dieses rekonstruierte
Signal wird durch eine aus einem Postfilter und einem
Hochpaßfilter bestehende Nachverarbeitungsoperation
verbessert (Abschnitt 4.2). In Abschnitt 4.3 wird die
Fehlerverdeckungsprozedur beschrieben, die verwendet
wird, wenn entweder ein Paritätsfehler aufgetreten ist
oder wenn das Rahmenlöschungsflag gesetzt worden ist.
4.1 Parameterdecodierprozedur
-
Die übertragenen Parameter sind in Tabelle 9
aufgeführt. Zu Beginn sollten alle statischen
Codierervariablen mit Ausnahme der in Tabelle 8 aufgeführten
Variablen auf 0 initialisiert werden.
Tabelle 9: Beschreibung übertragener Parameterindizes.
Die Bitstromordnung wird durch die Reihenfolge in der
Tabelle dargestellt. Bei jedem Parameter wird das
höchstwertige Bit (MSB - most significant bit) zuerst
übertragen.
-
Der Decodierprozeß erfolgt in der folgenden
Reihenfolge:
4.1.1 Decodieren der LP-Filterparameter
-
Mit den empfangenen Indizes L0, L1, L2 und L3 des LSP-
Quantisierers werden die quantisierten LSP-
Koeffizienten unter Verwendung der in Abschnitt 3.2.4
beschriebenen Prozedur rekonstruiert. Mit der in
Abschnitt 3.2.5 beschriebenen Interpolationsprozedur
werden 2 interpolierte LSP-Vektoren (entsprechend 2
Teilrahmen) erhalten. Für jeden Teilrahmen wird der
interpolierte LSP-Vektor in LP-Filterkoeffizienten ai
konvertiert, mit denen die rekonstruierte Sprache in
dem Teilrahmen synthetisiert wird.
-
Die folgenden Schritte werden für jeden Teilrahmen
wiederholt:
-
1. Decodieren des adaptiven Codelexikon-Vektors,
-
2. Decodieren des festen Codelexikon-Vektors,
-
3. Decodieren der adaptiven und festen Codelexikon-
Verstärkungen,
-
4. Berechnung der rekonstruierten Sprache.
4.1.2 Decodieren des adaptiven Codelexikon-Vektors
-
Der empfangene adaptive Codelexikon-Index wird
verwendet, um die ganzzahligen und gebrochenen Teile
der Tonhöhenverzögerung zu finden. Der ganzzahlige Teil
(int)T&sub1; und der gebrochene Teil frac von T&sub1; werden wie
folgt aus P1 erhalten:
-
Der ganzzahlige und gebrochene Teil von T&sub2; werden aus P2
und tmin erhalten, wobei tmin aus P1 wie folgt abgeleitet
ist
-
Nun wird T&sub2; erhalten aus
-
Der adaptive Codelexikon-Vektor v(n) wird durch
Interpolieren der zurückliegenden Anregung u(n) (bei
der Tonhöhenverzögerung) unter Verwendung von Gleichung
(40) gefunden.
4.1.3 Decodieren des festen Codelexikon-Vektors
-
Mit dem empfangenen festen Codelexikon-Index C werden
die Positionen der Anregungspulse extrahiert. Die
Pulsvorzeichen werden aus S erhalten. Nach der
Decodierung der Pulspositionen und -vorzeichen kann der
feste Codelexikon-Vektor c(n) konstruiert werden. Falls
der ganzzahlige Teil der Tonhöhenverzögerung T unter
der Teilrahmengröße 40 liegt, wird die
Tonhöhenverbesserungsprozedur angewendet, die c(n) gemäß Gleichung
(48) modifiziert.
4.1.4 Decodieren der adaptiven und festen
Codelexikon-Verstärkung
-
Der empfangene Verstärkungs-Codelexikonindex ergibt die
adaptive Codelexikon-Verstärkung und den festen
Codelexikon-Verstärkungskorrekturfaktor . Diese
Vorgehensweise ist in Abschnitt 3.9 ausführlich beschrieben.
Die geschätzte feste Codelexikon-Verstärkung g'c wird
mit Gleichung (70) gefunden. Der feste Codelexikon-
Vektor wird aus dem Produkt des quantisierten
Verstärkungskorrekturfaktors mit dieser vorhergesagten
Verstärkung erhalten (Gleichung (64)). Die adaptive
Codelexikon-Verstärkung wird mit Gleichung (72)
rekonstruiert.
4.1.5 Berechnung des Paritätsbit
-
Vor der Rekonstruktion der Sprache wird das Paritätsbit
aus der adaptiven Codelexikon-Verzögerung neu berechnet
(Abschnitt 3.7.2). Falls dieses Bit nicht mit dem
übertragenen Paritätsbit P0 identisch ist, dann sind
aller Wahrscheinlichkeit nach während der Übertragung
Bitfehler aufgetreten, und die
Fehlerverdeckungsprozedur von Abschnitt 4.3 wird verwendet.
4.1.6 Berechnen der rekonstruierten Sprache
-
Die Anregung u(n) am Eingang des Synthesefilters (siehe
Gleichung (74)) wird in das LP-Synthesefilter
eingegeben. Die rekonstruierte Sprache für den
Teilrahmen ist gegeben durch
-
wobei die interpolierten LP-Filterkoeffizienten
sind.
-
Die rekonstruierte Sprache (n) wird dann durch einen in
dem nächsten Abschnitt beschriebenen Nachprozessor
verarbeitet.
4.2 Nachverarbeitung
-
Die Nachverarbeitung besteht aus drei Funktionen:
adaptive Nachfilterung, Hochpaßfilterung und
Signalhochskalierung. Das adaptive Postfilter ist die Kaskade
aus drei Filtern: einem Tonhöhen-Postfilter Hp(z), einem
Kurzzeit-Postfilter Hf(z) und einem
Neigungskompensationsfilter Ht(z), gefolgt von einer adaptiven
Verstärkungssteuerprozedur, Das Postfilter wird bei
jedem Teilrahmen von 5 ms aktualisiert. Der
Nachfilterungsprozeß ist wie folgt organisiert.
Zunächst wird die Synthesesprache (n) durch (z /γn)
invers gefiltert, um das Restsignal (n) zu erzeugen.
Mit dem Signal (n) werden dann die Tonhöhenverzögerung
T und die Verstärkung gpit berechnet. Das Signal (n)
wird durch das Tonhöhen-Postfilter Hp(z) gefiltert, um
das Signal r'(n) zu erzeugen, das wiederum durch das
Synthesefilter 1/[gf (z/γd)] gefiltert wird. Schließlich
wird das Signal an dem Ausgang des Synthesefilters
1/[gf (z/γd)] an das Neigungskompensationsfilter Ht (z)
weitergeleitet, was zu dem nachgefilterten
Synthesesprachsignal sf(n) führt. Dann wird eine adaptive
Verstärkungssteuerung zwischen sf(n) und s(n)
angewendet, was das Signal sf'(n) ergibt. Die
Hochpaßfilterung und die Skalierung arbeiten an dem
nachgefilterten Signal sf'(n).
4.2.1 Tonhöhen-Postfilter
-
Das Tonhöhen- oder harmonische Postfilter ist gegeben
durch
-
wobei T die Tonhöhenverzögerung ist und g&sub0; ein
Verstärkungsfaktor ist, der gegeben ist durch
-
g&sub0; = γpgpit, (78)
-
wobei gpit die Tonhöhenverstärkung ist. Sowohl die
Tonhöhenverzögerung als auch -verstärkung werden aus
dem Decodiererausgangssignal bestimmt. Man beachte, daß
gpit durch Ziffer 1 begrenzt ist und auf Null gesetzt
wird, falls die Tonhöhenprädiktionsverstärkung unter
3 dB liegt. Durch den Faktor γp wird das Ausmaß an
harmonischer Nachfilterung gesteuert, und er hat den
Wert γp - 0,5. Die Tonhöhenverzögerung und -verstärkung
werden aus dem Restsignal (n) berechnet, das durch
Filtern der Sprache (n) durch (z/γn) erhalten wird,
was der Zähler des Kurzzeit-Postfilters ist (siehe
Abschnitt 4.2.2)
-
Die Tonhöhenverzögerung wird mit einer Prozedur mit
zwei Durchgängen berechnet. Bei dem ersten Durchgang
wird die beste ganze Zahl T&sub0; in dem Bereich
[T&sub1; - 1, T&sub1; + 1], wobei T&sub1; der ganzzahlige Teil der
(übertragenen) Tonhöhenverzögerung in dem ersten
Teilrahmen ist, ausgewählt. Die beste ganzzahlige
Verzögerung ist diejenige, die die Korrelation
-
maximiert. In dem zweiten Durchgang wird die beste
gebrochene Verzögerung T mit einer Auflösung 1/8 um T&sub0;
herum ausgewählt, und zwar durch Finden der Verzögerung
mit der höchsten normierten Korrelation
-
wobei (n) das Restsignal bei Verzögerung k ist.
Nachdem die optimale Verzögerung T gefunden worden ist,
wird der entsprechende Korrelationswert mit einem
Schwellwert verglichen. Falls R'(T) < 0,5, wird das
harmonische Postfilter deaktiviert, indem gpit = 0
gesetzt wird. Ansonsten wird der Wert von gpit berechnet
aus
-
Das nichtganzzahlige verzögerte Signal (n) wird
zunächst mit einem Interpolationsfilter der Länge 33
berechnet. Nach der Auswahl von T wird (n) mit einem
längeren Interpolationsfilter der Länge 129 neu
berechnet. Das neue Signal ersetzt das vorausgegangene
nur dann, falls das längere Filter den Wert R'(T)
erhöht.
4.2.2 Kurzzeit-Postfilter
-
Das Kurzzeit-Postfilter ist gegeben durch
-
wobei (z) das empfangene quantisierte LP-Inversfilter
(bei dem Decodierer wird keine LP-Analyse durchgeführt)
ist und die Faktoren γn und γd das Ausmaß an Kurzzeit-
Nachfilterung steuern und auf γn = 0,55 und γd = 0,7
gesetzt sind. Der Verstärkungsausdruck gf wird aus der
abgeschnittenen Pulsantwort hf(n) des Filters
(z /γn)/ (z/γd) berechnet und ist gegeben durch
4.2.3 Neigungskompensation
-
Schließlich kompensiert das Filter Ht (z) die Neigung in
dem Kurzzeit-Postfilter Hf(z) und ist gegeben durch
-
Ht(z) = 1/gt(1 + γtk&sub1;z-1),
-
wobei γtk&sub1; ein Neigungsfaktor ist, wobei k&sub1; der auf der
Basis von hf(n) berechnete erste Reflexionskoeffizient
ist, wobei
-
Der Verstärkungsausdruck gt = 1 - γtk&sub1; kompensiert den
abnehmenden Effekt von gf in Hf(z). Weiterhin ist
gezeigt worden, daß das Produktfilter Hf (z) Ht(z) im
allgemeinen keine Verstärkung aufweist.
-
Je nach dem Vorzeichen von k&sub1; werden für γt zwei Werte
verwendet. Falls k&sub1; negativ ist, ist γt = 0,9, und falls
k&sub1; positiv ist, ist γt 0,2.
4.2.4 Adaptive Verstärkungssteuerung
-
Mit der adaptiven Verstärkungssteuerung werden
Verstärkungsdifferenzen zwischen dem rekonstruierten
Sprachsignal (n) und dem nachgefilterten Signal sf (n)
kompensiert. Der Verstärkungsskalierfaktor G für den
vorliegenden Teilrahmen wird berechnet durch
-
Das verstärkungsskalierte nachgefilterte Signal sf'(n)
ist gegeben durch
-
s '(n) = g(n)s (n), n = 0, ...,39, (88)
-
wobei g(n) auf einer Basis Abtastwert für Abtastwert
aktualisiert wird und gegeben ist durch
-
g(n) = 0,85g(n - 1) + 0,15G, n = 0,..., )89)
-
Der Anfangswert von g(-1) = 1,0.
4.2.5 Hochpaßfilterung und Hochskalierung
-
Ein Hochpaßfilter bei einer Grenzfrequenz von 100 Hz
wird auf die rekonstruierte und nachgefilterte Sprache
sf'(n) angewendet. Das Filter ist gegeben durch
-
Die Hochskalierung besteht aus dem Multiplizieren der
hochpaßgefilterten Ausgabe mit einem Faktor 2, um den
Eingangssignalpegel wiederzugewinnen.
4.3 Verdecken von Rahmenlöschungen und Paritätsfehlern
-
In den Decodierer ist eine Fehlerverdeckungsprozedur
integriert worden, um die Verschlechterungen in der
rekonstruierten Sprache aufgrund von Rahmenlöschungen
oder Zufallsfehlern in dem Bitstrom zu reduzieren.
Dieser Fehlerverdeckungsprozeß tritt in Aktion, wenn
entweder i) der Rahmen von Codiererparametern
(entsprechend einem 10 ms-Rahmen) als gelöscht
identifiziert worden ist oder 11) an dem Paritätsbit für den
Tonhöhenverzögerungsindex P1 ein Prüfsummenfehler
auftaucht. Letzteres könnte eintreten, wenn der
Bitstrom durch Zufallsbitfehler verfälscht worden ist.
-
Wenn an P1 ein Paritätsfehler auftritt, wird der
Verzögerungswert T&sub1; auf den Wert der Verzögerung des
vorausgegangenen Rahmens gesetzt. Der Wert von T&sub2; wird
mit der in Abschnitt 4.1.2 umrissenen Prozedur
abgeleitet, wobei dieser neue Wert von T&sub1; verwendet
wird. Falls weitere Paritätsfehler auftreten, wird der
um Ziffer 1 erhöhte vorausgegangene Wert von T&sub1;
verwendet.
-
Der Mechanismus zum Erfassen von Rahmenlöschungen wird
in der Empfehlung nicht definiert und hängt von der
Anwendung ab. Die Verdeckungsstrategie muß den
aktuellen Rahmen auf der Grundlage von zuvor
empfangenen Informationen rekonstruieren. Das
verwendete Verfahren ersetzt das fehlende
Anregungssignal durch eines mit ähnlichen Charakteristiken,
wobei seine Energie allmählich verringert wird. Dies
geschieht durch Verwendung eines Stimmhaft-/Stimmlos-
Klassifizierers auf der Grundlage der Langzeit-
Prädiktionsverstärkung, die als Teil der Langzeit-
Postfilteranalyse berechnet wird. Das
Tonhöhen-Postfilter (siehe Abschnitt 4.2.1) findet den
Langzeitprädiktor, bei dem die Prädiktionsverstärkung über 3 dB
liegt, und zwar durch Setzen eines Schwellwerts von 0,5
für die normierte Korrelation R'(k) (Gleichung (81)).
Für den Fehlerverdeckungsprozeß werden diese Rahmen als
periodisch klassifiziert. Der Rahmen wird ansonsten als
nichtperiodisch bezeichnet. Ein gelöschter Rahmen erbt
seine Klasse von dem vorausgegangenen (rekonstruierten)
Sprachrahmen. Man beachte, daß die Stimmhaft-/Stimmlos-
Klassifizierung auf der Basis dieses rekonstruierten
Sprachsignals ständig aktualisiert wird. Für viele
aufeinanderfolgende gelöschte Rahmen könnte sich die
Klassifizierung somit möglicherweise ändern. In der
Regel geschieht dies nur dann, wenn die ursprüngliche
Klassifizierung periodisch war.
-
Folgende sind die für einen gelöschten Rahmen
ergriffenen spezifischen Schritte:
-
1. Wiederholung der LP-Filterparameter,
-
2. Dämpfung der adaptiven und festen Codelexikon-
Verstärkung,
-
3. Dämpfung des Speichers des Verstärkungsprädiktors,
-
4. Erzeugung der Ersatzanregung.
4.3.1 Wiederholung der LP-Filterparameter
-
Die LP-Parameter des letzten guten Rahmens werden
verwendet. Die Zustände des LSF-Prädiktors enthalten
die Werte der empfangenen Codewörter 11. Da das aktuelle
Codewort nicht verfügbar ist, wird es aus den
wiederholten LSF-Parametern und dem
Prädiktorspeicher berechnet aus
4.3.2 Dämpfung der adaptiven und festen Codelexikon-
Verstärkung
-
Es wird eine gedämpfte Version des vorherigen festen
Codelexikon-Verstärkungsfaktors verwendet.
-
Gleiches geschieht mit dem adaptiven Codelexikon-
Verstärkungsfaktor. Außerdem wird eine
Begrenzungsoperation verwendet, um seinen Wert unter 0,9 zu halten.
4.3.3 Dämpfung des Speichers des
Verstärkungsprädiktors
-
Der Verstärkungsprädiktor verwendet die Energie von im
voraus ausgewählten Codelexika. Zur Ermöglichung einer
stetigen Fortsetzung des Codierers, nachdem gute Rahmen
empfangen worden sind, wird der Speicher des
Verstärkungsprädiktors mit einer gedämpften Version der
Codelexikonenergie aktualisiert. Der Wert von für
den aktuellen Teilrahmen n ist auf den um 4 dM
gedämpften durchschnittlichen quantisierten
Verstärkungsprädiktionsfehler gesetzt.
4.3.4 Erzeugung der Ersatzanregung
-
Die verwendete Anregung hängt von der
Periodizitätsklassifikation ab. Falls der letzte richtig empfangene
Rahmen als periodisch klassifiziert wurde, wird der
aktuelle Rahmen ebenfalls als periodisch betrachtet. In
diesem Fall wird nur das adaptive Codelexikon
verwendet, und der feste Codelexikon-Beitrag wird auf
Null gesetzt. Die Tonhöhenverzögerung basiert auf der
letzten richtig empfangenen Tonhöhenverzögerung und
wird für jeden nachfolgenden Rahmen wiederholt. Um eine
übermäßige Periodizität zu vermeiden, wird die
Verzögerung für jeden nächsten Teilrahmen um Eins
erhöht, aber durch 143 begrenzt. Die adaptive
Codelexikon-Verstärkung basiert auf einem gedämpften
Wert gemäß Gleichung (93).
-
Falls der letzte richtig empfangene Rahmen als
nichtperiodisch klassifiziert war, wird der aktuelle Rahmen
ebenfalls als nichtperiodisch angesehen und der
adaptive Codelexikon-Beitrag wird auf Null gesetzt. Der
feste Codelexikon-Beitrag wird durch eine
Zufallsauswahl eines Codelexikonindex und Vorzeichenindex
erzeugt. Der Zufallsgenerator basiert auf der Funktion
-
Startparameter = Startparameter * 31821 + 13849 (95)
-
mit dem Anfangsstartparameterwert von 21845. Der
Zufallscodelexikonindex wird aus den 13
niederwertigsten Bit der nächsten Zufallszahl abgeleitet. Das
Zufallsvorzeichen wird aus den 4 niederwertigsten Bit
der nächsten Zufallszahl abgeleitet. Die feste
Codelexikon-Verstärkung wird gemäß Gleichung (92)
gedämpft.
5 Bitgenaue Beschreibung des CS-ACELP-Codierers
-
Ein den CS-ACELP-Codierer mit 16 Bit Festkomma
simulierender ANSI-C-Code ist von der ITU-T erhältlich. In den
folgenden Abschnitten wird die Verwendung dieses
Simulationscodes zusammengefaßt und gezeigt, wie die
Software organisiert ist.
5.1 Einsatz der Simulationssoftware
-
Der C-Code besteht aus zwei Hauptprogrammen, coder.c,
das den Codierer simuliert, und decoder.c, das den
Decodierer simuliert. Der Codierer läuft wie folgt:
-
coder inputfile bstreamfile
-
Die Eingangsdatei (inputfile) und Ausgangsdatei
(outputfile) sind abgetastete Datendateien, die 16 Bit-
PCM-Signale enthalten. Die Bitstromdatei enthält 81
16-Bit-Wörter, wobei mit dem ersten Wort eine
Rahmenlöschung angegeben werden kann und die übrigen 80
Wörter jeweils ein Bit enthalten. Der Decodierer
erzeugt aus dieser Bitstromdatei eine nachgefilterte
Ausgabedatei, die ein 16 Bit-PCM-Signal enthält.
-
decoder bstreamfile outputfile
5.2 Organisation der Simulationssoftware
-
Bei einer Festkomma-ANSI-C-Simulation werden, wie in
Tabelle 10 gezeigt, nur zwei Arten von Festkommadaten
verwendet. Zur Erleichterung der Implementierung des
Simulationscodes verwenden Schleifenindizes Boolesche
Werte und Flags den Typ Flag, der je nach der
Zielplattform entweder 16 Bit oder 32 Bit wäre.
Tabelle 10: In der ANSI-C-Simulation verwendete
Datenarten
-
Alle diese Berechnungen erfolgen mit einem
vordefinierten Satz von grundlegenden Operatoren. Die
Beschreibung dieser Operatoren erfolgt in Tabelle 11.
Die von dem Simulationscodierer verwendeten Tabellen
sind in Tabelle 12 zusammengefaßt. Diese Hauptprogramme
verwenden eine Bibliothek von Routinen, die in den
Tabellen 13, 14 und 15 zusammengefaßt sind.
Tabelle 11: In ANSI-C-Simulation verwendete grundlegende Operationen
Tabelle 12: Zusammenfassung der Tabellen
Tabelle 13: Zusammenfassung der codiererspezifischen
Routinen.
Tabelle 14: Zusammenfassung der decodiererspezifischen
Routinen.
Tabelle 15: Zusammenfassung allgemeiner Routinen