-
Die vorliegende Erfindung bezieht
sich auf ein Übertragungssystem
mit einem Sender mit einem Signalcodierer mit einem Eingang für ein zu
codierendes Signal, wobei der genannte Signalcodierer einen Codebucheingangsselektor
aufweist zum Selektieren eines Codebucheingangs zum Erhalten eines
synthetischen Signals, das eine optimale Annäherung eines Signals ergibt,
das für
das Eingangssignal repräsentativ
ist, wobei der Codebucheingang eine Anzahl Abtastwerte aufweist,
die mehr als zwei Werte annehmen können; wobei der genannte Codebucheingang
mit einer Sequenz von Symbolen identifiziert ist, wobei der Sender
vorgesehen ist zum Übertragen
der Sequenz von Symbolen zu einem Empfänger, wobei der Empfänger einen
Decoder mit einem Codebuch aufweist zum Herleiten des Codebucheingangs
aus der empfangenen Sequenz von Symbolen.
-
Ein bekanntes Übertragungssystem ist aus den
Konferenzdokumenten "An
algorithm for assigning binary indices to the code vectors of a
multi-dimensional quatizer" von
J. De Marca und N. Jayant, veröffentlicht in
den "Proceedings
of the IEEE International Conference on Communications '87(ICC-87)" Heft 2, Seiten 1128–1132 bekannt.
-
Solche Übertragungssysteme werden beispielsweise
verwendet in Applikationen, in denen Sprach- oder Videosignale über ein Übertragungsmedium
mit einer begrenzten Übertragungskapazität übertragen
werden sollen oder auf Speichermedien mit einer begrenzten Kapazität gespeichert
werden sollen. Beispiele solcher Applikationen sind die Übertragung
von Sprachsignalen über
das Internet, die Übertragung
von Sprachsignalen von einem Mobiltelephon zu einer Basisstation
und umgekehrt und Speicherung von Sprachsignalen auf einem CD-ROM,
in einem Festwertspeicher oder auf einer Festplatte.
-
In einem Übertragungssystem der eingangs
beschriebenen Art wird das zu codierende Signal mit einer Anzahl
synthetischer Signalsegmente verglichen. Jedes der synthetischen
Signalsegmente wird von einem der Codebucheingänge hergeleitet. Die synthetischen
Signalsegmente können
beispielsweise durch Filterung der Sequenz von Abtastwerten in dem
Codebucheingang mit Hilfe eines Synthesefilters erhalten werden.
Der Codebucheingang entsprechend dem synthetischen Signalsegment,
das zu dem Eingangssignal am besten Passt, wird codiert und zu dem
Empfänger übertragen.
-
Eine alternative Möglichkeit
ist, mit Hilfe eines Analysenfilters von dem Eingangssignal ein
Restsignal herzuleiten und das Restsignal mit jedem der Codebucheingänge zu vergleichen.
Der am besten zu dem Restsignal passende Codebucheingang wird codiert
und zu dem Empfänger übertragen.
Es ist ebenfalls bequem, dass das Eingangssignal unmittelbar mit
den Codebucheingängen
verglichen Wird und dass der am besten passende Codebucheingang
codiert und übertragen
wird.
-
In dem Empfänger wird der mit dem Codebucheingang
assoziierte empfangene Code decodiert und es wird eine Replik des
Eingangssignals konstruiert. Dies kann dadurch erfolgen, dass die
Anzahl Abtastwerte einem Synthesefilter zugeführt wird, das eine gleiche Übertragungsfunktion
hat wie das Synthesefilter, das in dem Codierer verwendet wird.
Wenn ein Analysenfilter in dem Codierer verwendet wird, wird ein
Synthesefilter verwendet, das eine Übertragungsfunktion hat, die
eine Inverse der Übertragungsfunktion
des Analysenfilters ist.
-
Wenn kein Analysen- oder Synthesefilter
in dem Codierer verwendet wird, wird das rekonstruierte Signal unmittelbar
von dem decodierten Codebucheingang hergeleitet. Das Dokument US-A-5621852
beschreibt ein ternäres
Codebuch, das als die Summe zweier binärer Codebücher gebildet ist.
-
Es kann passieren, dass durch Übertragungsbeeinträchtigungen
der codierte Codebucheingang fehlerhaft empfangen wird. Folglich
wird in dem Empfänger
ein Codebucheingang, der anders ist als der Codebucheingang, der
in dem Codierer selektiert wurde, zum Rekonstruieren des Eingangssignals
benutzt wird. Unter Verwendung des falschen Codebucheingangs zum
Rekonstruieren wird das Eingangssignal im Allgemeinen zu einem hörbaren/sichtbaren
Fehler in dem rekonstruierten Signal führen.
-
In dem Übertragungssystem nach den
oben genannten Confernezdokumenten wird versucht, den Effekt von Übertragungsfehlern
dadurch zu minimieren, dass gleichen Codebucheingängen gleiche
Sequenzen von Symbolen derart zugeordnet werden, dass wenn ein Übertragungsfehler
in einem der Symbole Auftritt, der Codebucheingang entsprechend
der genannten fehlerhaften empfangenen Sequenz von Symbolen nur
einigermaßen
von dem Codebucheingang entsprechend der ursprünglich übertragenen Sequenz von Symbolen abweicht.
Auf diese Weise wird erhalten, dass der Perzeptionseffekt eines Übertragungsfehlers
im Wesentlichen reduziert wird.
-
Es ist nun u. a. eine Aufgabe der
vorliegenden Erfindung ein Übertragungssystem
zu schaffen, bei dem der Perzeptionseffekt von Übertragungsfehlern noch weiter
reduziert wird als bei dem vorhergehenden System.
-
Um diese Aufgabe zu erfüllen weist
die vorliegende Erfindung das Kennzeichen auf, dass die Codebucheingänge, die
Sequenzen von Symbolen entsprechen, die in einem speziellen Symbolwert
voneinander abweichen, in einem einzigen Abtastwert voneinander
abweichen. Dieser spezielle Symbolwert kann das am wenigsten signifikante
Symbol sein, aber es ist ebenfalls möglich, dass es ein Symbol an
einer anderen Stelle in der Sequenz von Symbolen ist.
-
Zum Entwerfen der Zuordnung von Sequenzen
von Symbolen zu Codebucheingängen
bei dem bekannten System wird vorausgesetzt, dass jedes Symbol in
der Sequenz Symbolen fehlerhaft sein kann. Diese Voraussetzung führt zu einer
nicht optimalen Zuordnung von Codebucheingängen zu Sequenzen von Symbolen,
wenn berücksichtigt
wird, dass die Möglichkeit
eines Übertragungsfehlers
für verschiedene
Symbole oft abweicht. Es ist möglich,
dass ein einen Fehler korrigierender Code verwendet wird für einen
Teil der Sequenz von Symbolen. Es ist ebenfalls möglich, dass
hierarchische Modulation benutzt wird, was zu verschiedenen Fehlerwahrscheinlichkeiten
führt.
Durch Begrenzung der Anzahl Symbole, die fehlerhaft sein können, wird
es möglich,
die Differenz zwischen den Codebucheingängen zu reduzieren.
-
Dadurch, dass Codebucheingänge, die
in nur einem einzigen Abtastwert verschieden sind, Sequenzen von
Symbolen entsprechend gemacht werden, die in nur einem einzigen
Symbolwert abweichen (meistens dem verletzlichsten Wert) wird ein
nahezu optimales Codebuch erhalten.
-
Eine Ausführungsform der vorliegenden
Erfindung weist das Kennzeichen auf, dass die Differenz zwischen
den genannten Abtastwerten der Codebucheingänge, die den Sequenzen von
Symbolen entsprechend, die in einem bestimmten Symbolwert abweichen,
einem kleinsten Quantisierungsschritt des genannten Abtastwertes
entspricht.
-
Dadurch, dass die Differenz zwischen
den Abtastwerten entsprechend "benachbarten" Sequenzen von Symbolen
dem kleinsten Quantisierungsschritt entsprechend gemacht wird, wird
in Bezug auf den Perzeptionseffekt eines einzigen Übertragungsfehlers
ein optimales Codebuch erhalten.
-
Eine weitere Ausführungsform der vorliegenden
Erfindung weist das Kennzeichen auf, dass die Anzahl möglicher
Abtastwerte ungerade ist. Es hat sich herausgestellt, dass es im
Falle einer ungeraden Anzahl möglicher
Werte möglich
wird, die Abbildung zwischen Sequenzen von Symbolen und der entsprechenden
Anzahl Abtastwerte und dem invertierten Wert mit demselben Algorithmus
zu berechnen. Dies führt
zu einem reduzierten Betrag an Hilfsquellen, erforderlich zum Implementieren
einer Kombination eines Codierers und eine Decoders, weil die Hilfsquellen
zum Durchführen
der Codebuch-relatierten Berechnung geteilt werden können.
-
Wenn die Kombination eines Codierers
und eines Decoders durch ein Programm verwirklicht wird, das in
einem programmierbaren Prozessor läuft, wird der Betrag an Speicherraum
zum festhalten des Programms reduziert. Wenn die Kombination aus
Codierer und Decoder in Hardware verwirklicht wird, wird der Betrag
an Chipraum reduziert, weil der Teil zum Ermitteln der Sequenz von
Symbolen aus der Anzahl Abtastwerte ebenfalls benutzt werden kann
zum Ermitteln der Anzahl Abtastwerte aus der Sequenz von Symbolen.
-
Noch eine andere Ausführungsform
der vorliegenden Erfindung weist das Kennzeichen auf, dass ein numerischer
Wert, assoziiert mit einem ersten Codebucheingang, dem numerischen
Wert der Sequenz von Symbolen eines zweiten Codebucheingangs entspricht,
und dass der numerische Wert, der mit dem zweiten Codebucheingang
assoziiert ist, dem numerischen Wert der Sequenz von Symbolen, der
mit dem ersten Codebucheingang assoziiert ist, entspricht.
-
Nach diesem Aspekt der vorliegenden
Erfindung wird es möglich,
den Index eines bestimmten Codebucheingangs dadurch zu bestimmen,
dass zunächst
der genannte bestimmte Codebucheingang als Index benutzt wird zum
Bestimmen eines Codebucheingangs, der den Index eines bestimmten
Codebucheingangs darstellt.
-
Ausführungsbeispiele der Erfindung
sind in der Zeichnung dargestellt und werden im vorliegenden Fall näher beschrieben.
Es zeigen:
-
1 ein Übertragungssystem,
wobei die vorliegende Erfindung benutzt werden kann,
-
2 einen
Sprachcodierer nach der vorliegenden Erfindung,
-
3 einen
Sprachdecoder nach der vorliegenden Erfindung,
-
4 ein
Flussdiagramm eines Programms für
einen programmierbaren Prozessor zum Umwandeln einer Sequenz von
Symbolen, die den Codebuchindex angeben, in die entsprechende Anzahl
Abtastwerte.
-
In dem Übertragungssystem nach 1 wird das zu übertragende
Signal einem Quellencodierer 4 in einem Sender 2 zugeführt. Dieser
Quellencodierer 4 codiert die Eingangssignale unter Anwendung
der vorliegenden Erfindung, wie nachher noch näher erläutert wird. Das an dem Ausgang
des Quellencodierers 4 verfügbare codierte Signal wird
einem Eingang eines Kanalcodierers 6 zugeführt. Der
Kanalcodierer 6 codiert einen Teil des Ausgangssignals
des Quellencodierers.
-
Zur Anwendung der vorliegenden Erfindung
ist es möglich,
dass alle Bits bis auf eines der Sequenz von Symbolen, die den Codebucheingang
angeben, durch den Kanalcodierer 6 codiert werden. Für mobile Funkübertragungssysteme
werden oft Faltungscodes in dem Kanalcodierer 6 verwendet.
-
Der Ausgang des Kanalcodierers 6 wird
mit dem Eingang eines Modulators 8 verbunden, der das Ausgangssignal
des Kanalcodierers 6 einem Träger aufmoduliert. Daraufhin
wird das modulierte Signal verstärkt und
eine Antenne 10 zugeführt.
-
Es sei bemerkt, dass es möglich ist,
eine hierarchische Modulation anzuwenden zum Übertragen der Sequenz von Symbolen
entsprechend den Codebucheingängen.
Das Symbol, das, wenn fehlerhaft übertragen, den geringsten Perzeptionseffekt
ergibt, wird auf einer Subkonstellation moduliert, die einer Hauptkonstellation überlagert
wird. Die restlichen Symbole der Sequenz von Symbolen werden auf
der Hauptkonstellation moduliert.
-
Die Subkonstellation hat einen kleineren
Abstand zwischen den Punkten als der Abstand zwischen den Punkten
der Hauptkonstellation. Folglich sind die in der Hauptkonstellation übertragenen
Symbole weniger empfindlich für
Fehler als Symbole, die auf der Subkonstellation moduliert sind.
-
In einer Situation, in der hierarchische
Modulation angewandt wird, ist es denkbar, dass auf den Kanalcodierer
verzichtet werden kann.
-
Das von der Antenne 10 übertragene
Signal wird von der Antenne 12 empfangen und wird zu dem Empfänger 14 weitergeleitet.
In dem Empfänger 14 wird
das Antennensignal in einem Demodulator 16 demoduliert.
Der Demodulator 16 leitet das demodulierte Signal weiter
zu dem Kanaldecoder 18. Der Kanaldecoder 18 decodiert
die emp fangenen Signale und korrigiert Fehler darin, wo möglich. Es
zeigt sich, dass es möglich ist,
dass einige Symbole in dem empfangenen Signal überhaupt nicht codiert sind
und dass sie folglich ungeändert
zu dem Ausgang des Kanaldecoders weitergeleitet werden. In dem Fall,
dass hierarchische Modulation angewandt wird, ist es ebenfalls denkbar,
dass auf den Kanalcodierer 18 verzichtet werden kann. In
dem Quellendecoder 20 wird das Eingangssignal des Senders 2 rekonstruiert.
-
In dem Quellencodierer 4 nach 2 wird das zu codierende
Signal einem Eingang eines LPC-Koeffizientenberechnungsblock 34 sowie
einem Eingang eines Perzeptionsgewichtungsfilters 36 zugeführt. Der Ausgang
des Perzeptionsgewichtungsfilters 36 ist mit einem ersten
Eingang eines Subtrahierers 40 verbunden.
-
Ein Erregungssignalgenerator 22 umfasst
ein festes Codebuch, das als ein ternärer Generator 26 implementiert
ist und ein adaptives Codebuch 24, in dem die neulich verwendeten
Erregungssignale gespeichert werden. Das Ausgangssignal des ternären Generators 26 stellt
eine Anzahl ternärer
Abtastwerte dar, wobei jede Stelle der ternären Zahl einen ternären Abtastwert
darstellt.
-
Der Ausgang des ternären Generators 26 ist
mit einem Eingang eines Codewandlers 29 verbunden, der
vorgesehen ist um den ternären
Wert an dem Ausgang des ternären
Generators 26 in eine Sequenz (binärer) Symbole zur Übertragung
umzuwandeln. Der Ausgang des ternären Generators 26 ist
ebenfalls mit einem ersten Eingang eines Multiplizierers 30 verbunden,
eventuell über
einen Nulleinfüger 27.
Ein Signal GO wird einem zweiten Eingang
des Multiplizierers 30 zugeführt. Der Ausgang des Multiplizierers 30 ist
mit einem ersten Eingang eines Addierers 32 verbunden.
-
Der Ausgang des adaptiven Codebuchs 24 ist
mit einem ersten Eingang eines Multiplizierers 28 verbunden
und ein Signal GA wird einem zweiten Eingang
des Multiplizierers 28 zugeführt. Der Ausgang des Multiplizierers 28 ist
mit einem zweiten Eingangssignal des Addierers 32 verbunden.
Das Ausgangssignal des Addierers 32, der ebenfalls den
Ausgang des Erregungssignalgenerator 28 bildet, wird einem
Perzeptionsgewichtungssynthesefilter 38 zugeführt, der
die Filterkoeffizienten von dem LPC-Koeffizientenberechnungsblock 34 empfängt. Ein
Ausgang des Perzeptionsgewichtungssynthesefilters 38 ist
mit einem zweiten Eingang des Subtrahierers 40 verbunden.
-
Der Ausgang des Subtrahierers 40 ist
mit einem Eingang eines Controllers 42 verbunden. Der Controller 42 ist
dazu vorgesehen, ein Erregungssignal zu finden, das zu einer besten
Deckung zwischen dem Perzeptionsgewichtungssprachsignal, das an
dem Ausgang des Perzeptionsgewichtungsfilters 36 verfügbar ist, und
dem Perzeptionsgewichtungssynthesesprachsignal, das an dem Ausgang
des Perzeptionsgewichtungssynthesefilters 38 vorhanden
ist, führt.
Der Controller 42 bestimmt zunächst den Codebuchindex IA und die Codebuchverstärkung GA für das adaptive
Codebuch. Das adaptive Codebuch enthält die Erregungsabtastwerte, die
dem Synthesefilter 38 aus vorhergehenden Erregungsintervallen
zugeführt
worden sind. Durch die Periodizität von (stimmhaften) Sprachsignalen
ist es wahrscheinlich, dass die beste Sequenz von Erregungsabtastwerten
einer Sequenz von Erregungsabtastwerten entspricht, die in dem adaptiven
Codebuch vorhanden sind. Nachdem die optimalen Parameter IA und GA gefunden
worden sind, fahren die Steuermittel 42 fort mit der Suche
nach den optimalen Erregungsparametern des festen Codebuchs. Die
Erregungsparameter des festen Codebuchs sind der feste Codebuchindex
IF und die feste Codebuchverstärkung GF. Es ist ebenfalls möglich, dass das von dem festen
Codebuch hergeleitete Erregungssignal durch ein Gitter von Erregungsimpulsen
mit einer Anzahl Erregungssignalabtastwerte gebildet wird, die durch
einen vorbestimmten Betrag an Nullen getrennt sind. In einem derartigen
Fall soll ebenfalls die Position PH der Erregungsabtastwerte in
dem Gitter bestimmt werden.
-
Die Suche nach den Erregungsparametern
IF und GF wird für jeden
der möglichen
Werte der Position PH durchgeführt.
Die möglichen
Sequenzen von Erregungsabtastwerten werden gefunden durch Verwendung eines
ternären
Generators 26, der die genannte ternäre Sequenz von Abtastwerten
erzeugt. Für
jede Sequenz von (ternären)
Abtastwerten wird die optimale Verstärkung bestimmt. Diese Verstärkung kann
dadurch bestimmt werden, dass alle möglichen Verstärkungswerte
versucht werden und derjenige Wert GF selektiert
wird, der zu einem minimalen Fehler zwischen dem Perzeptionsgewichtungssprachsignal
und Perzeptionsgewichtungssynthesesprachsignal führt. Es ist ebenfalls möglich, den
Verstärkungsfaktor
GF dadurch zu bestimmen, dass zunächst ein
Hilfssignal bestimmt wird, indem von dem Perzeptionsgewichtungssprachsignal
den Beitrag des adaptiven Codebuchs zu dem Perzeptionsgewichtungssynthesesprachsignal
subtrahiert wird. Das Quadrat des Verstärkungsfaktors GF kann
dadurch gefunden werden, dass der Kreuzkorrelationskoeffizient des Hilfssignals
und des Perzeptionsgewichtungssynthesesprachsignals, der einer Verstärkung von
1 ausgesetzt wird, durch die Potenz des genannten Perzeptionsgewichtungssynthesesprachsignal
geteilt wird.
-
Diese An und Weise der Bestimmung
des Verstärkungsfaktors
GF ist in dem Stand der Technik durchaus
beschrieben und ist an sich dem Fachmann bekannt.
-
In der nachstehenden Tafel ist ein
erstes Beispiel eines festen Codebuchs gegeben. In der Tafel ist
die binäre
Sequenz von Symbolen und die entsprechende Anzahl Abtastwerte gegeben.
G(i) stellt den Abtastwert als eine ternäre Zahl dar und E(i) stellt
die Abtastwerte dar, wie sie dem Synthesefilter zugeführt werden.
In dem Codebuch nach der Tafel 1 ist die Anzahl Abtastwerte in einem
einzigen Codebucheingang gleich 3.
-
-
In dem Fall, dass vier Phasen PH
möglich
sind, kann das Erregungssignal durch die Tafel 2 dargestellt werden,
wie nachstehend angegeben.
-
-
In der Tafel 2 stellt der Buchstabe
T einen ternären
Wert (–1,
0, +1) entsprechend der Tafel 1 dar. Wie oben erwähnt, werden
die Erregungssignale nacheinander von einem ternären Generator erzeugt. Wenn
der statistische Gesamtfehler für
einen bestimmten Codebucheingang, erzeugt von dem ternären Generator
niedriger ist als der statistische Ge samtfehler, versucht vor diesem
Codebucheingang, wird der ternäre
Zählwert vorübergehend
in einem Pufferspeicher gespeichert. Wenn alle Codebucheingänge versucht
worden sind, hält der
Pufferspeicher den besten ternären
Zählwert
fest.
-
Aus diesem Zählwert leitet der Codebuchinverter 29 die
zur Übertragung
zu verwendende binäre
Darstellung her. Es zeigt sich, dass das rechteste Bit der binären Darstellung
nach der Tafel 1 das am wenigsten verletzliche ist weil ein Fehler
darin verursacht, dass der ternäre
Wert nur um +1 oder –1
an ein und derselben Stelle sich ändert.
-
Das Codebuch nach der Tafel 1 hat
die Eigenschaft nach einem Aspekt der vorliegenden Erfindung, dass
die binäre
Darstellung eines ersten Codebucheingangs G(i1)
einer binären
Sequenz von Symbolen B(i2) entspricht, die
einen zweiten Codebucheingang G(i2) darstellen,
und dass die binäre
Darstellung des genannten zweiten Codebucheingangs G(i2)
der binären
Sequenz von Symbolen B(i1) assoziiert mit
dem ersten Codebucheingang G(i1) entspricht.
Diese Eigenschaft kann angewandt werden um die Verwendung derselben
Tafel (oder desselben Algorithmus) zum Codieren und Decodieren des
Codebucheingangs zu ermöglichen.
-
Wenn beispielsweise der ternäre Wert
G(i1) = 122 in der Tafel 1 der beste Codebucheingang
ist, ist der dezimale Wert, der damit assoziiert ist, 1·32 + 2·31 + 2·30 = 17 (dezimal). Die binäre Darstellung von 17 (Dezimal)
ist 10001. Unter Verwendung dieses binären Wertes B(i2)
zum Adressieren der Tafel 1 wird ein entsprechender ternärer Wert
G(i2) von 100 gefunden. Der binäre Wert
entsprechend 100 (ternär)
ist 010001, entsprechend dem Binärwert
B(i1) entsprechend dem Codebucheingang mit
dem ternären
Wert 122.
-
Der Codebuchinverter benutzt die
oben genannte Eigenschaft zum Ermitteln der Sequenz zu übertragender
Symbole. Dabei wird nur die Funktion B(i) → G(i) gebraucht, eine Funktion,
die auch in dem Decoder gebraucht wird. Folglich kann diese Funktion
zwischen einem Codierer und einem Decoder in einem Voll-DuplexAnschluss
mit einem Sender und einem Empfänger
geteilt werden.
-
-
-
Tafel 3 umfasst 243 Codebucheingänge, die
durch 8 Bits Indices adressiert werden. Sie hat dieselben Eigenschaften
in Bezug auf inverse Darstellung wie das Codebuch nach der Tafel
1.
-
Es hat sich herausgestellt, dass
feste Codebuchsequenzen dadurch erhalten werden können, dass
die Sequenzen nach der Tafel 1 und der Tafel 3 einmal oder mehr
als nur einmal zusammengefügt
werden. Auf diese An und Weise können
Codebucheingänge
mit einer beliebigen Anzahl Abtastwerte, ausgenommen 1, 2, 4 und
4 Abtastwerte, verwirklicht werden. Dies ist besonders vorteilhaft
für Multirate-Codierer.
Die Darstellung dieser Codebucheingänge wird auf einfache Weise
durch die Zusammenfügung
der entsprechenden 5 Bit und 8 Bit Indices gebildet.
-
Die Erregungsparameter IA,
GA, IF, dargestellt
durch B(i) und GF werden durch einen Multiplexer 44 gemultiplext.
An dem Ausgang des Multiplexers 44 ist das gemultiplexte
Signal zur weiteren Codierung durch den Kanalcodierer 6 nach 1 verfügbar.
-
In dem Quellendecoder 20 nach 3 wird das von dem Kanaldecoder 18 empfangene
Signal (1) einem Demultiplexer 46 zugeführt. Der
Demultiplexer 46 extrahiert die Prädiktionsparameter LPC und die
Extraktionsparameter GA, GF,
IA und IF, wobei
dieser letztere durch die Sequenz von Symbolen B(i) dargestellt wird.
-
Der adaptive Codebuchindex IA wird einem Eingang eines adaptiven Codebuchs 50 zugeführt. Der Ausgang
des adaptiven Codebuchs 50 wird einem ersten Eingang eines
Multiplizierers 54 zugeführt. Die adaptive Codebuchverstärkung GA wird einem zweiten Eingang des Multiplizierers 54 zugeführt. Der
Ausgang des Multiplizierers 54 ist mit einem ersten Eingang
eines Addierers 58 verbunden.
-
Der feste Codebuchindex IF, dargestellt durch die Sequenz von Symbolen
B(i), wird einem Eingang eines festen Codebuchs 52 zugeführt, der
Codebucheingänge
entsprechend der vorliegenden Erfindung hat. Der Ausgang des Codebuchs 52 ist
mit einem ersten Eingang eines Multiplizierers 56 verbunden.
Die feste Codebuchverstärkung
GA wird einem zweiten Eingang des Multiplizierers 56 zugeführt. Der
Ausgang des festen Codebuchverstärkung
GA wird einem zweiten Eingang des Multiplizierers 56 zugeführt. Der
Ausgang des Multiplizierers 56 ist mit einem zweiten Eingang
des Addierers 58 verbunden. An dem Ausgang des Addierers 58 ist
das Erregungssignal für
das Synthesefilter 60 verfügbar. Das Erregungssignal wird
ebenfalls einem Eingang des adaptiven Codebuchs zugeführt, in
das die jüngsten
Erregungsabtastwerte eingeschrieben sind und aus dem die ältesten
Abtastwerte entfernt werden.
-
Das Synthesefilter 60 leitet
ein synthetisches Sprachsignal von dem Erregungssignal her, das
an dem Ausgang des Addierers 58 verfügbar ist. Dazu empfängt das
Synthesefilter 60 die LPC-Parameter LPC von dem Demultiplexer 46.
-
In einem Flussdiagramm nach 4 haben die nummerierten
Instruktionen die nachfolgende Bedeutung:
-
-
-
Das Programm nach dem Flussdiagramm
nach 4 ist vorgesehen
zum Berechnen der Anzahl Erregungsabtastwerte für einen bestimmten Wert des
Indixes i. Es hat sich herausgestellt, dass die binäre Darstellung
von i übertragen
wird. Die Anzahl Erregungsabtastwerte wird durch eine Speichernummer
G(i,N) dargestellt, deren Digits die Erregungsabtastwerte darstellen.
N ist die Anzahl Abtastwerte und folglich die Anzahl Digits in der
Speichernummer.
-
Die Berechnung von G(i,N) basiert
auf einer rekursiven Definition von G(i,N). Wenn jeder Codebucheingang
N Abtastwerte enthält,
kann das Codebuch als einen Satz von L = MN Vaktorsequenzen
von Abtastwerten x0, x1,
x2, ...., xL–2,
xL–1 dargestellt
werden. Das Codebuch kann um einen Abtastwert zu N + 1 Abtastwerten
erweitert werden, indem Digits zu den verschiedenen Vektoren hinzugefügt werden,
und zwar entsprechend: 0x0, 0x1,
.., 0xL–2,
0xL–1,
1XL–1,
1XL–2,
.., 1x1, 1x0, 2x0, 2x0, 2x1, .., 2xL–2,
2xL–1 (im
Falle eines ternären
Codebuchs). Für
N ist gleich 1 ist die Funktion G(i,N) gleich i. Für i größer als
N wird i in die Summe eines Quotienten q von i und des Wertes MN–1 des
N. Digits von G, und einen Rest r zerlegt. Diese Zerlegung erfolgt
für alle
Werte von N, für
die i kleiner ist als oder gleich MN – 1. Aus
q wird der Wert G(i,N) berechnet, und zwar entsprechend:
-
-
Das Programm nach 4 bestimmt den Wert von G(i,N) auf umgekehrte
Weise aus i. Das Programm startet bei der Instruktion 62.
In der Instruktion 64 wird eine Variable L auf N eingestellt.
Der Wert des signifikantesten Digits MSD wird dem Wert MN–1 entsprechend
gemacht. Der Wert der Variable K wird auf den Wert des Indexes i
der zu berechnenden Funktion G(i,N) eingestellt. Die Variable G
wird auf Null eingestellt.
-
In der Instruktion 66 wird überprüft, ob L
ungleich 1 ist. Wenn L ungleich 1 ist, werden die Berechnungen mit
der Instruktion 68 fortgesetzt. In der Instruktion 68 wird
zunächst
der Quotient QOUT von K und MSD bestimmt. Dies entspricht der Bestimmung
des signifikantesten Digits von K. Danach wird der Rest REM der Teilung
von K durch MSD bestimmt. Dies entspricht der Bestimmung des Wertes,
der durch die restlichen Digits von K dargestellt wird. Zum Schluss
wird ein Zwischenwert von G bestimmt durch Multiplikation des vorhergehenden
Wertes von G mit M und durch Addierung des Wertes von QUOT zu G.
-
In der Instruktion 70 wird überprüft, ob der
Quotient QUOD gerade oder ungerade ist. In dem Fall, dass QOUD gerade
ist, wird der Wert von K gleich dem Rest REM gemacht. In dem Fall,
dass QUOD ungerade ist, wird der Wert von K gleich MSD-1-REM gemacht. Diese
andere Art und Weise, wie K für
gerade und ungerade Werte von QUOD berechnet wird, wird verursacht
durch die Ordnung der Werte von G als Funktion des Indexes i. Aus
der Tafel 1 ist ersichtlich, dass der Wert des signifikantesten
Digits von G auf einen zunimmt als Funktion von i für gerade
Werte des signifikantesten Digits von G. Der Wert des signifikantesten
Digits von G auf einen nimmt ab als Funktion von i für ungerade
Werte des signifikantesten Digits von G.
-
In der Instruktion 76 wird
zunächst
der Wert von MSD durch M geteilt, damit er für die Wiederholung der vorhergehenden
Berechnungen für
das signifikanteste Digit von auf eines vorbereitet wird. Daraufhin
wird der Wert von L verringert und das Programm wird mit der Instruktion 66 fortgesetzt.
Auf diese Art und Weise werden alle Digits I zu dem Codebucheingang,
dargestellt durch G verwandelt. Wenn L gleich 1 ist, wird der Prozess
der Umwandlung beendet und in der Instruktion 78 wird der
Endwert von G berechnet durch Multiplikation des Wertes G, gefunden
durch die vorhergehenden Berechnungen, mit M und durch Addierung
des Wertes K. In der Instruktion 80 wird das Programm beendet.
-
Bevor der Codebucheingang, berechnet
entsprechend dem oben stehenden Programm, einem Synthesefilter zugeführt wird,
soll er in eine M-artige Darstellung umgewandelt werden. Wie oben
bereits erwähnt, kann
der Algorithmus entsprechend dem in
-
4 dargestellten
Programm ebenfalls verwendet werden zum Finden des Indexes i aus
einem bestimmten Codebucheingang. Dazu soll zunächst das Programm mit dem Codebucheingang
aufgerufen werden. Daraufhin soll das Programm wieder aufgerufen
werden, aber nun unter Anwendung des Ergebnisses des ersten Aufrufs
des Programms als Eingang. Der Index i wird nun dadurch gefunden,
dass das Ergebnis des zweiten Aufrufs des Programms in eine binäre Zahl
umgewandelt wird.
-
Text in der Zeichnung
-
2
- 26
- ternärer Generator
-
4
- 62
- Anfang
- 70
- ungerade
- 80
- Ende