Warning: fopen(111data/log202008090830.log): failed to open stream: No space left on device in /home/pde321/public_html/header.php on line 107

Warning: flock() expects parameter 1 to be resource, boolean given in /home/pde321/public_html/header.php on line 108

Warning: fclose() expects parameter 1 to be resource, boolean given in /home/pde321/public_html/header.php on line 113
Veränderte Grundfrequenzverzögerung bei Verlust von Datenrahmen - Dokument DE69613907T2
 
PatentDe  


Dokumentenidentifikation DE69613907T2 04.04.2002
EP-Veröffentlichungsnummer 0747882
Titel Veränderte Grundfrequenzverzögerung bei Verlust von Datenrahmen
Anmelder AT&T IPM Corp., Coral Gables, Fla., US
Erfinder Shoham, Yair, Watchung, New Jersey 07060, US
Vertreter derzeit kein Vertreter bestellt
DE-Aktenzeichen 69613907
Vertragsstaaten DE, ES, FR, GB, IT
Sprache des Dokument EN
EP-Anmeldetag 29.05.1996
EP-Aktenzeichen 963037965
EP-Offenlegungsdatum 11.12.1996
EP date of grant 18.07.2001
Veröffentlichungstag im Patentblatt 04.04.2002
IPC-Hauptklasse G10L 19/00

Beschreibung[de]

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


Anspruch[de]

1. Verfahren zur Verwendung in einem Sprachdecodierer (740), der mindestens einen Teil jeweils eines ersten und zweiten aufeinanderfolgenden Rahmens komprimierter Sprachinformationen nicht zuverlässig empfängt, wobei der Sprachdecodierer einen Codelexikonspeicher (95) enthält, um als Reaktion auf ein Signal, das Tonhöhenperiodeninformationen darstellt, ein Vektorsignal zu liefern, das bei dem Erzeugen eines decodierten Sprachsignals verwendet wird, wobei das Verfahren beinhaltet, ein Signal mit einem Wert zu speichern, der dem ersten Rahmen entsprechende Tonhöhenperiodeninformationen darstellt; dadurch gekennzeichnet, daß:

falls der gespeicherte Wert einen Schwellwert nicht übersteigt, der Wert des Signals zur Verwendung in dem zweiten Rahmen derart inkrementiert wird, daß der Codelexikonspeicher als Reaktion auf den inkrementierten Wert des Signals ein Vektorsignal liefert.

2. Verfahren nach Anspruch 1, bei dem der Wert des Tonhöhenperiodeninformationen darstellenden Signals in Einheiten von Abtastwerten eines Signals angegeben wird, das Sprachinformationen darstellt.

3. Verfahren nach Anspruch 2, bei dem der Schritt des Inkrementierens umfaßt, eine Reihe von eine Tonhöhenperiode darstellenden Abtastwerten zu inkrementieren.

4. Verfahren nach Anspruch 1, bei dem der Signalwert, der dem ersten Rahmen entsprechende Tonhöhenperiodeninformationen darstellt, gleich einem Wert von Tonhöhenperiodeninformationen ist, die in einem Rahmen empfangen werden, in dem es zu keinem Ausfall bei dem Empfang von Informationen gekommen ist.







IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com