-
Die vorliegende Erfindung betrifft die Sprachcodierung
unter Verwendung der Syntheseanalyse.
-
Die Anmelderin hat insbesondere solche Sprachcodierer
beschrieben, wie sie in ihren europäischen
Patentanmeldungen 0 195 487, 0 347 307 und 0 469 997 dargelegt sind.
-
Bei einem Syntheseanalyse-Sprachcodierer wird eine
lineare Prädiktion des Sprachsignals durchgeführt, um die
Koeffizienten eines Kurzzeit-Synthesefilters zu erhalten,
welches ein Modell der Transferfunktion des Stimmtraktes
erstellt. Diese Koeffizienten werden an den Decoder
übertragen, ebenso wie Parameter, die eine auf das Kurzzeit-
Synthesefilter anzuwendende Anregung kennzeichnen. Bei der
Mehrzahl der gegenwärtigen Codierer werden des weiteren die
langfristigsten Korrelationen des Sprachsignals aufgesucht,
um ein Langzeit-Synthesefilter zu charakterisieren, welches
die Tonhöhe der Sprache berücksichtigt. Falls das Signal
stimmhaft ist, weist die Anregung nämlich eine
vorhersagbare Komponente auf, welche durch die um TP Proben des
Sprachsignals verzögerte und mit einer Verstärkung gp
versehene, vergangene Anregung dargestellt werden kann. Das
Langzeit-Synthesefilter, das ebenfalls am Decoder
dargestellt wird, hat somit eine Transferfunktion mit der Form
1/B(z) mit B(z) = 1-gp·zTP. Der übrige, nicht vorhersagbare
Teil der Anregung wird als stochastische Anregung
bezeichnet. Bei den als CELP ("Code Excited Linear Prediction")
bezeichneten Codierern besteht die stochastische Anregung
aus einem Vektor, der in einem vorgegebenen Wörterbuch
aufgesucht wird. Bei den als MPLPC ("Multi-Pulse Linear
Prediction Coding") bezeichneten Codierern weist die
stochastische Anregung eine bestimmte Anzahl von Impulsen auf,
deren Positionen durch den Codierer aufgesucht werden. Im
wesentlichen werden die CELP-Codierer für die niedrigen
Übertragungsraten bevorzugt, sind aber komplexer in der
Anwendung als die MPLFC-Codierer.
-
Um die Langzeit-Prädiktionsverzögerung zu bestimmen,
wird häufig eine Analyse in geschlossener Schleife
angewendet, die unmittelbar zur Minimierung der
wahrnehmungsgewichteten Abweichung zwischen dem Sprachsignal und dem
synthetischen Signal beiträgt. Der Nachteil dieser Analyse
in geschlossener Schleife ist, daß sie einen hohen
Rechenaufwand erfordert, da die Auswahl einer Verzögerung die
Bewertung einer bestimmten Anzahl von potentiellen
Verzögerungen impliziert, und jede Bewertung einer Verzögerung
Berechnungen von Faltungsprodukten zwischen der verzögerten
Anregung und der Impulsantwort des wahrnehmungsgewichteten
Synthesefilters erforderlich macht. Der genannte Nachteil
liegt auch bei der Suche nach der stochastischen Anregung
vor, bei der es sich desgleichen um einen Vorgang in
geschlossener Schleife handelt, bei dem Faltungsprodukte
mit dieser Impulsantwort vorkommen. Die Anregung variiert
schneller als die Spektralparameter, die für das Kurzzeit-
Synthesefilter charakteristisch sind. Die (vorhersagbare
und stochastische) Anregung wird typischerweise einmal pro
Unterblock von 5 ms bestimmt, die Spektralparameter
hingegen einmal pro Block von 20 ms. Die Komplexität und
Frequenz der Suche nach der Anregung in geschlossener
Schleife machen dies im Hinblick auf die die Schnelligkeit
der Berechnungen, die bei einem Sprachcodierer erforderlich
sind, zum kritischsten Arbeitsschritt.
-
Es ist daher eine Hauptaufgabe der Erfindung, ein
Verfahren zur Sprachcodierung mit verringerter Komplexität im
Hinblick auf die Analyse/n in geschlossener Schleife
vorzuschlagen.
-
Die Erfindung schlägt daher ein Verfahren zur
Syntheseanalyse-Codierung eines Sprachsignals vor, das in
aufeinan
derfolgende Blöcke digitalisiert ist, die in Unterblöcke
umfassend eine bestimmte Anzahl von Proben unterteilt sind,
bei welchem man für jeden Block eine Analyse mittels
linearer Prädiktion des Sprachsignals zur Bestimmung der
Koeffizienten eines Kurzzeit-Synthesefilters und eine Analyse in
offener Schleife zur Bestimmung eines Grads der
Stimmhaftigkeit des Blocks durchführt, und man für jeden Unterblock
wenigstens eine Analyse in geschlossener Schleife zur
Bestimmung einer Anregungssequenz durchführt, welche nach
Behandlung durch das Kurzzeit-Synthesefilter ein für das
Sprachsignal repräsentatives synthetisches Signal erzeugt.
Jede Analyse in geschlossener Schleife verwendet die
Impulsantwort eines Filters, das aus dem
Kurzzeit-Synthesefilter und einem Wahrnehmungswichtungsfilter
zusammengesetzt ist. Bei jeder Analyse in geschlossener Schleife
verwendet man die Impulsantwort, indem man sie bei einer
Abbruchlänge abbricht, welche höchstens gleich der Anzahl
von Proben pro Unterblock ist und von der Energieverteilung
der Antwort und vom Grad der Stimmhaftigkeit des Blocks
abhängt.
-
Im allgemeinen ist die Abbruchlänge umso größer, je
stimmhafter der Block ist. So kann die Komplexität der
Analysen in geschlossener Schleife dank einer Anpassung an
die Stimmhaftigkeitsmerkmale des Signals ohne Einbuße an
Qualität der Codierung merklich reduziert werden.
-
Weitere Besonderheiten und Vorteile der Erfindung
ergeben sich aus der nachfolgenden Beschreibung von
bevorzugten, jedoch nicht einschränkenden Ausführungsbeispielen,
unter Bezugnahme auf die beigefügte Zeichnung, in der:
-
- Fig. 1 ein synoptisches Schema einer
Funkkommunikationsstation ist, welche einen Sprachcodierer beinhaltet,
der die Erfindung anwendet;
-
- Fig. 2 ein synoptisches Schema einer
Funkkommunikationsstation ist, die in der Lage ist, ein von derjenigen
in Fig. 1 erzeugtes Signal zu empfangen;
-
- Fig. 3 bis 6 Ablaufdiagramme sind, welche einen
Vorgang der LTP-Analyse in offener Schleife
veranschaulichen, der in dem Sprachcodierer von Fig. 1 angewendet wird;
-
- Fig. 7 ein Ablaufdiagramm ist, welches einen
Vorgang der Bestimmung der Impulsantwort des in dem
Sprachcodierer von Fig. 1 angewendeten gewichteten
Synthesefilters veranschaulicht;
-
- Fig. 8 bis 11 Ablaufdiagramme sind, welche einen
Vorgang der Suche nach der stochastischen Anregung
veranschaulichen, der bei dem Sprachcodierer der Fig. 1
angewendet wird.
-
Ein Sprachcodierer unter Anwendung der Erfindung ist in
unterschiedlichen Typen von Sprachübermittlungs- und/oder -
speichersystemen anwendbar, welche sich eines digitalen
Kompressionsverfahrens bedienen. In dem Beispiel der Fig. 1
bildet der Sprachcodierer 16 Teil einer mobilen
Funkkommunikationsstation. Das Sprachsignal S ist ein digitales
Signal, das bei einer Frequenz abgetastet wird, die
typischerweise gleich 8 kHz ist. Das Signal S wird von einem
Analog-Digital-Umsetzer 18 ausgegeben, welcher das
verstärkte und gefilterte Ausgangssignal eines Mikrophons 20
empfängt. Der Umsetzer 18 bringt das Sprachsignal S in die
Form von aufeinanderfolgenden Blöcken, die wiederum in nst
Unterblöcke von ist Proben unterteilt sind. Ein Block von
20 ms weist typischerweise nst = 4 Unterblöcke von ist = 40
Proben mit 16 Bits mit 8 kHz auf. Vor dem Codierer 16 kann
das Sprachsignal S auch klassischen
Aufbereitungsverarbeitungen wie etwa einer Hamming-Filterung unterzogen werden.
Der Sprachcodierer 16 liefert eine binäre
Übertragungssequenz, die wesentlich schwächer als diejenige des
Sprach
signals S ist, und adressiert diese Sequenz an einen
Kanalcodierer 22, dessen Funktion es ist, Redundanzbits in
das Signal einzubringen, um eine Erkennung und/oder eine
Korrektur eventueller Übertragungsfehler zu gestatten. Das
Ausgangssignal des Kanalcodierers 22 wird anschließend
durch den Modulator 24 einer Trägerfrequenz aufmoduliert,
und das modulierte Signal wird über die Luftschnittstelle
abgegeben.
-
Der Sprachcodierer 16 ist ein Syntheseanalyse-Codierer.
Der Codierer 16 bestimmt einerseits Parameter, welche ein
Kurzzeit-Synthesefilter kennzeichnen, das ein Modell des
Stimmtraktes des Sprechers erstellt, und andererseits eine
Anregungssequenz, die bei Anlegung(?) an das Kurzzeit-
Synthesefilter ein synthetisches Signal liefert, welches
eine Schätzung des Sprachsignals S gemäß einem
Wahrnehmungswichtungs-Kriterium darstellt.
-
Das Kurzzeit-Synthesefilter hat eine Transferfunktion
mit der Form 1/A(z), mit:
-
Die Koeffizienten ai werden durch einen Modul 26 für
die Analyse mittels linearer Kurzzeitprädiktion des
Sprachsignals S bestimmt. Die ai sind die Koeffizienten für die
lineare Prädiktion des Sprachsignals S. Die Größenordnung q
der linearen Prädiktion liegt typischerweise in der
Größenordnung von 10. Die durch den Modul 26 für die lineare
Kurzzeitprädiktion anwendbaren Verfahren sind auf dem
Gebiet der Sprachcodierung gängige Verfahren. Der Modul 26
wendet beispielsweise den Algorithmus von Durbin-Levinson
an (s. J. Makhoul: "Linear Prediction: A tutorial review",
Proc. IEEE, Vol.63, No.4, April 1975, S. 561-580). Die
erhaltenen Koeffizienten ai werden an einen Modul 28
geliefert, welcher sie in Spektrallinien-Parameter (LSP)
konver
tiert. Die Darstellung der Prädiktionskoeffizienten ai
durch LSP-Parameter wird bei
Syntheseanalyse-Sprachcodierern häufig eingesetzt. Die LSP-Parameter sind die in
absteigender Reihenfolge abgespeicherten q Zahlen
cos(2πfi), wobei die q normalisierten
Spektrallinienfrequenzen (LSF) fi(1 ≤ i ≤ q) derart sind, daß die komplexen
Zahlen exp(2πjfi) mit i = 1,3, ..., q-1, q+1 und fq+1 = 0,5 die
Wurzeln des Polynoms Q(z) sind, welches durch
Q(z) = A(z)+z-(q+1)·A(z&supmin;¹) definiert ist, und die komplexen
Zahlen exp(2πjfi) mit i = 0,2,4, ...,q und f&sub0; = 0 die Wurzeln
des Polynoms Q*(z) sind, welches durch
Q*(z) = A(z)-z-(q+1)·A(z&supmin;¹) definiert ist.
-
Die LSP-Parameter können durch den Konversionsmodul 28
mittels des klassischen Verfahrens der Tschebyscheff-
Polynome (s. P. Kabal und R. P. Ramachandran: "The
computation of line spectral frequencies using Chebyshev
polynomials", IEEE Trans. ASSP, Vol.34, No. 6, 1986, Seiten 1419-
1426) erhalten werden. Dies sind mittels eines
Quantisierungsmoduls 30 erhaltene Quantisierungswerte der
LSP-Parameter, die an den Decoder übermittelt werden, damit dieser
die Koeffizienten ai des Kurzzeit-Synthesefilters
auffindet. Die Koeffizienten ai können einfach aufgefunden
werden, gesetzt, daß:
-
Q(Z) = (1+z&supmin;¹) Π (1-2cos(2πfi)z&supmin;¹+z&supmin;²)
-
i = 1,3, ...,q-1
-
Q*(z) = (1-z&supmin;¹) Π (1-2cos(2πfi)z&supmin;¹+z&supmin;²)
-
i = 2,4, ...,q
-
und A(z) [Q(z)+Q*(z)]/2
-
Um abrupte Variationen in der Transferfunktion des
Kurzzeit-Synthesefilters zu vermeiden, bilden die
LSP-Parameter den Gegenstand einer Interpolation, bevor die
Prädiktionskoeffizienten ai davon abgeleitet werden. Diese
Inter
polation wird an dem ersten Unterblock eines jeden Blocks
des Signals durchgeführt. Beispielsweise falls LSPt und
LSPti einen LSP-Parameter bezeichnen, der für den Block t
bzw. für den vorhergehenden Block t-1 berechnet wurde,
nimmt man:
-
LSPt(0) = 0,5·LSPt-1+0,5·LSPt, LSPt(1) = 0,25·LSPt-1+0,75·LSPt und
LSPt(2) = ... = LSTt(nst-1) = LSPt für die Unterblöcke
0,1,2, ..., nst-1 des Blocks t. Die Koeffizienten ai des
Filters 1/A(z) werden dann Unterblock um Unterblock
ausgehend von den interpolierten LSP-Parametern bestimmt.
-
Die nicht quantisierten LSP-Parameter werden von dem
Modul 28 an einen Modul 32 zum Berechnen der Koeffizienten
eines Wahrnehmungswichtungsfilters 34 geliefert. Das
Wahrnehmungswichtungsfilter 34 hat bevorzugt eine
Transferfunktion mit der Form W(z) = A(z/γ&sub1;) /A(z/γ&sub2;), wobei γ&sub1; und γ&sub2;
Koeffizienten mit γ&sub1; > γ&sub2; > 0 (beispielsweise γ&sub1; = 0,9 und γ&sub2; = 0,6)
sind. Die Koeffizienten des Wahrnehmungswichtungsfilters
werden durch den Modul 32 nach der Interpolation der vom
Modul 28 empfangenen LSP-Parameter für jeden Unterblock
berechnet.
-
Das Wahrnehmungswichtungsfilter 34 empfängt das
Sprachsignal S und liefert ein wahrnehmungsgewichtetes Signal SW,
das von Modulen 36, 38, 40 analysiert wird, um die
Anregungssequenz zu bestimmen. Die Anregungssequenz des
Kurzzeitfilters setzt sich aus einer Anregung, die von einem
Langzeit-Synthesefilter vorhersagbar ist, welches ein
Modell der Tonhöhe (pitch) der Sprache erstellt, und einer
nicht vorhersagbaren stochastischen Anregung bzw.
Innovationssequenz zusammen.
-
Der Modul 36 führt eine Langzeitprädiktion (LTP) in
offener Schleife durch, d. h. er trägt nicht unmittelbar zur
Minimierung des gewichteten Fehlers bei. In dem
dargestellten Fall befindet sich das Wichtungsfilter 34 vor dem Modul
für die Analyse in offener Schleife, jedoch könnte dies
auch anders sein: der Modul 36 könnte direkt auf das
Sprachsignal S oder auch auf das durch ein Kurzzeitfilter
mit der Transferfunktion A(z) von seinen Korrelationen
befreite Signal S einwirken. Dagegen arbeiten die Module 38
und 40 in geschlossener Schleife, d. h. sie tragen
unmittelbar zur Minimierung des wahrnehmungsgewichteten Fehlers
bei.
-
Das Langzeit-Synthesefilter hat eine Transferfunktion
mit der Form 1/B (z) mit B (z) = 1-gp·z-TP, wobei gp eine
Langzeitprädiktionsverstärkung bezeichnet und TP eine
Langzeitprädiktionsverzögerung bezeichnet. Die
Langzeitprädiktionsverzögerung kann typischerweise N = 256 Werte annehmen, die
zwischen rmin und rmax Proben liegen. Eine bruchartige
Auflösung ist für die kleinsten Verzögerungswerte vorgesehen,
so daß die hinsichtlich der Stimmhaftigkeitsfrequenz zu
stark wahrnehmbaren Abweichungen vermieden werden. Es wird
beispielsweise eine Auflösung von 1/6 zwischen rmin = 21 und
33+5/6, eine Auflösung von 1/3 zwischen 34 und 47+2/3, eine
Auflösung von 1/2 zwischen 48 und 88+1/2, und eine
ganzzahlige Auflösung zwischen 89 und rmax = 142 verwendet. Jede
mögliche Verzögerung ist somit durch einen zwischen 0 und
N-1 = 255 liegenden ganzzahligen Index quantisiert.
-
Die Langzeitprädiktionsverzögerung wird in zwei
Schritten bestimmt. In dem ersten Schritt erfaßt der Modul 36 für
die LTP-Analyse in offener Schleife die stimmhaften Blöcke
des Sprachsignals und bestimmt für jeden stimmhaften Block
einen Grad der Stimmhaftigkeit MV und ein Suchintervall der
Langzeitprädiktionsverzögerung. Der Grad der
Stimmhaftigkeit MV eines stimmhaften Blocks kann drei Werte annehmen:
1 für die schwach stimmhaften Blöcke, 2 für die moderat
stimmhaften Blöcke, und 3 für die stark stimmhaften Blöcke.
Bei der im nachfolgenden verwendeten Schreibweise wird ein
Grad der Stimmhaftigkeit MV = 0 für die nicht-stimmhaften
Blöcke verwendet. Das Suchintervall ist durch einen
zentralen Wert definiert, der durch seinen Quantisierungsindex ZP
dargestellt ist, und durch eine Breite im Bereich der
Quantisierungsindices, welche von dem Grad der Stimmhaftigkeit
MV abhängt. Bei den schwach oder moderat stimmhaften
Blöcken (MV = 1 oder 2) beträgt die Breite des Suchintervalls
N1 Indices, d. h. der Index der
Langzeitprädiktionsverzögerung wird zwischen ZP-16 und ZP+15 gesucht, falls N1 = 32.
Bei den stark stimmhaften Blöcken (MV = 3) beträgt die Breite
des Suchintervalls N3 Indices, d. h. der Index der
Langzeitprädiktionsverzögerung wird zwischen ZP-8 und ZP+7 gesucht,
falls N3 = 16.
-
Sobald der Grad der Stimmhaftigkeit MV eines Blocks
durch den Modul 36 bestimmt worden ist, führt der Modul 30
die Quantisierung der LSP-Parameter durch, die vorausgehend
für diesen Block bestimmt worden sind. Diese Quantisierung
ist beispielsweise vektoriell, d. h. sie besteht darin, in
einer oder mehreren vorgegebenen Quantisierungstabellen
einen Satz von quantisierten Parametern LSPQ auszuwählen,
der zu dem von dem Modul 28 gelieferten Satz von
LSP-Parametern einen minimalen Abstand aufweist. Auf an sich
bekannte Weise differieren die Quantisierungstabellen nach
dem von dem rückkopplungslosen Analysator 36 an den
Quantisierungsmodul 30 gelieferten Grad der Stimmhaftigkeit MV.
Eine Einheit von Quantisierungstabellen für einen Grad der
Stimmhaftigkeit MV wird bei voraufgehenden Versuchen derart
bestimmt, daß sie statistisch repräsentativ für Blöcke
sind, welche diesen Grad MV aufweisen. Diese Einheiten sind
sowohl in den Codierern als auch den Decodern gespeichert,
welche die Erfindung anwenden. Der Modul 30 liefert den
Satz von quantisierten Parametern LSPQ ebenso wie seinen
Index Q in die anwendbaren Quantisierungstabellen.
-
Der Sprachcodierer 16 weist des weiteren einen Modul 42
zum Berechnen der Impulsantwort des aus dem Kurzzeit-
Synthesefilter und dem Wahrnehmungswichtungsfilter
zusammengesetzten Filters auf. Dieses zusammengesetzte Filter
hat als Transferfunktion W(z)/A(z). Für die Berechnung
sei
ner Impulsantwort h = (h(0), h(1), ...,
h(ist-1)) über die
Dauer eines Unterblocks nimmt der Modul 42 als das
Wahrnehmungswichtungsfilter W(z) dasjenige, welches den
interpolierten, jedoch nicht quantisierten LSP-Parametern
entspricht, d. h. dasjenige, dessen Koeffizienten von dem Modul
32 berechnet worden sind, und als das Synthesefilter 1/A(z)
dasjenige, welches den quantisierten und interpolierten
LSP-Parametern entspricht, d. h. dasjenige, welches im
Endeffekt durch den Decoder dargestellt wird.
-
In dem zweiten Schritt der Bestimmung der Verzögerung
TP der Langzeitprädiktion bestimmt der Modul 38 für die
LTP-Analyse in geschlossener Schleife die Verzögerung TP
für jeden Unterblock der stimmhaften Blöcke (MV = 1, 2 oder
3). Diese Verzögerung TP ist durch einen Differenzwert DP
in dem Bereich der Quantisierungsindices gekennzeichnet,
der mit 5 Bits kodiert ist, falls MV = 1 oder 2 (N1 = 32), und
mit 4 Bits, falls MV = 3 (N3 = 16). Der Index der Verzögerung
TP hat den Wert ZP+DP. Auf an sich bekannte Weise besteht
die LTP-Analyse in geschlossener Schleife darin, in dem
Suchintervall der Verzögerungen T der Langzeitprädiktion
die Verzögerung TP zu bestimmen, die für jeden Unterblock
eines stimmhaften Blocks die normalisierte Korrelation
maximiert:
-
wobei x(i) das gewichtete Sprachsignal SW des
Unterblocks bezeichnet, von dem der Speicherinhalt des
gewichteten Synthesefilters (d. h. die Antwort auf ein Signal Null
infolge der Anfangszustände des Filters, dessen
Impulsantwort h durch den Modul 42 berechnet worden ist) abgezogen
wird, und yT(i) das Faltungsprodukt bezeichnet:
-
yT(i) = u(i - T) · h(i) = u(j - T) · h(i - j) (1)
-
wobei u(j-T) die vorhersagbare Komponente der um T
Proben verzögerten Anregungssequenz bezeichnet, geschätzt
mittels der gängigen Vorgehensweise des adaptiven
Codeverzeichnisses ("adaptive codebook"). Für die Verzögerungen T,
die geringer als die Länge eines Unterblocks sind, können
die fehlenden Werte u(j-T) ausgehend von den vorherigen
Werten extrapoliert werden. Die bruchartigen Verzögerungen
werden durch Überabtastung des Signals u(j-T) in dem
adaptiven Codeverzeichnis berücksichtigt. Eine Überabtastung um
einen Faktor m wird mittels mehrphasiger
Interpolationsfilter erhalten.
-
Die Langzeitprädiktionsverstärkung gp könnte durch den
Modul 38 für jeden Unterblock bestimmt werden, unter
Anwendung der bekannten Formel:
-
Bei einer bevorzugten Version der Erfindung wird die
Verstärkung gP jedoch durch den Modul 40 für die
stochastische Analyse berechnet.
-
Die von dem Modul 40 für jeden Unterblock bestimmte
stochastische Anregung ist vom Mehrimpuls-Typ. Eine
Innovationssequenz von ist Proben umfaßt np Impulse mit
Positionen p(n) und einer Amplitude g(n). Anders ausgedrückt, die
Impulse haben eine Amplitude 1 und sind jeweiligen
Verstärkungen g(n) zugeordnet. In Anbetracht des Umstands, daß die
LTP-Verzögerung für die Unterblöcke der nicht-stimmhaften
Blöcke nicht bestimmt wird, kann eine höhere Anzahl von
Impulsen für die stochastische Anregung bezüglich dieser
Unterblöcke genommen werden, beispielsweise np = 5, falls
MV = 1, 2 oder 3, und np = 6, falls MV = 0. Die durch den Modul
40 für die stochastische Analyse berechneten Positionen und
Verstärkungen werden von einem Modul 44 quantisiert.
-
Ein Modul 46 zum Ordnen der Bits empfängt die
verschiedenen Parameter, die für den Decoder nutzvoll sind, und
bildet die binäre Sequenz, die an den Kanalcodierer 22
übertragen wird. Diese Parameter sind:
-
- der Index Q der quantisierten LSP-Parameter für jeden
Block;
-
- der Grad der Stimmhaftigkeit MV eines jeden Blocks;
-
- der Index ZP der Mitte des Suchintervalls der LTP-
Verzögerungen für jeden stimmhaften Block;
-
- der Differenzindex DP der LTP-Verzögerung für jeden
Unterblock eines stimmhaften Blocks und die zugeordnete
Verstärkung gp;
-
- die Positionen p(n) und die Verstärkungen g(n) der
Impulse der stochastischen Anregung für jeden Unterblock.
-
Bestimmte dieser Parameter können eine besondere
Wichtigkeit für die Qualität der Sprachwiedergabe oder eine
besondere Anfälligkeit gegen Übertragungsfehler aufweisen.
Es wird daher in dem Codierer ein Modul 48 vorgesehen,
welcher die unterschiedlichen Parameter empfängt und
bestimmten unter ihnen Redundanzbits hinzufügt, welche es
gestatten, eventuelle Übertragungsfehler zu erkennen und/oder zu
korrigieren. Beispielsweise da der mit zwei Bits codierte
Grad der Stimmhaftigkeit MV ein Parameter von wesentlicher
Wichtigkeit ist, ist es erwünscht, daß er mit möglichst
wenigen Fehlern am Decoder ankommt. Aus diesem Grund werden
diesem Parameter durch den Modul 48 Redundanzbits
hinzugefügt. Es ist beispielsweise möglich, den beiden Bits,
welche MV codieren, ein Paritätsbit hinzuzufügen und die somit
erhaltenen drei Bits einmal zu wiederholen. Dieses Beispiel
für Redundanz ermöglicht die Erkennung von allen Einbit-
bzw. Zweibitfehlern und die Korrektur aller Einbitfehler
bzw. von 75% der Zweibitfehler.
-
Die Zuweisung der binären Sequenz pro Block von 20 ms
ist beispielsweise die in Tabelle I angegebene.
-
Bei dem hier betrachteten Beispiel ist der
Kanalcodierer 22 derjenige, der in dem gesamteuropäischen
Mobilfunksystem (GSM) eingesetzt wird. Dieser Kanalcodierer, der
ausführlich in der GSM-Empfehlung 05.03 beschrieben ist,
wurde für einen Sprachcodierer mit 13 kbit/s vom Typ
RPE-LTP entwickelt, der ebenfalls 260 Bits pro 20 ms-Block
erzeugt. Die Empfindlichkeit eines jeden der 260 Bits wurde
ausgehend von Hörtests bestimmt. Die vom Quellcodierer
ausgegebenen Bits wurden in drei Kategorien gruppiert. Die
erste dieser Kategorien IA gruppiert 50 Bits, die auf der
Basis eines Generatorpolynoms faltungscodiert sind, das
eine Redundanz von 1/2 mit einer vorgeschriebenen Länge von
5 ergibt. Drei Paritätsbits werden berechnet und vor der
Faltungscodierung zu den 50 Bits der Kategorie IA
hinzugefügt. Die zweite Kategorie (IB) zählt 132 Bits, die durch
das gleiche Polynom wie die vorhergegangene Kategorie mit
einer Rate von 0,5 geschützt sind. Die dritte Kategorie
(II) enthält 78 ungeschützte Bits. Nach der Anwendung des
Faltungscode werden die Bits (456 pro Block) einer
Verschachtelung unterzogen. Der Anordnungsmodul 46 des neuen
Quellcodierers, der die Erfindung anwendet, teilt die Bits
in Abhängigkeit von der subjektiven Wichtigkeit dieser Bits
in die drei Kategorien ein.
TABELLE I
-
Eine für den Empfang des von dem Quellcodierer 16
verarbeiteten Sprachsignals geeignete Mobilfunkstation ist in
Fig. 2 schematisch dargestellt. Das empfangene Funksignal
wird zuerst durch einen Demodulator 50 verarbeitet,
daraufhin durch einen Kanaldecoder 52, welche die zweifachen
Arbeitsgänge von Zellen des Modulators 24 und des
Kanalcodierers 22 durchführen. Der Kanaldecoder 52 liefert an
den Sprachdecoder 54 eine binäre Sequenz, die bei
Abwesenheit von Übertragungsfehlern, bzw. wenn die eventuellen
Fehler durch den Kanaldecoder 52 korrigiert worden sind,
der binären Sequenz entspricht, welche der Anordnungsmodul
46 auf der Höhe des Codierers 16 geliefert hat. Der Decoder
54 weist einen Modul 56 auf, welches diese binäre Sequenz
empfängt und die Parameter bezüglich der verschiedenen
Blöcke und Unterblöcke identifiziert. Der Modul 56 führt
des weiteren einige Überprüfungen an den empfangenen
Parametern durch. Insbesondere untersucht der Modul 56 die von
dem Modul 48 des Codierers eingebrachten Redundanzbits, um
die Fehler, von denen die zu diesen Redundanzbits gehörigen
Parameter betroffen sind, zu erkennen und/oder zu
korrigieren.
-
Für jeden zu synthetisierenden Sprachblock empfängt ein
Modul 58 des Decoders den Grad der Stimmhaftigkeit MV und
den Index Q der Quantisierung der LSP-Parameter. Der Modul
58 findet die quantisierten LSP-Parameter in den Tabellen
entsprechend dem MV-Wert auf und konvertiert sie nach der
Interpolation in Koeffizienten ai für das
Kurzzeit-Synthesefilter 60. Für jeden zu synthetisierenden
Sprachunterblock empfängt ein Impulsgenerator 62 die Positionen p(n)
der np Impulse der stochastischen Anregung. Der Generator
62 liefert Impulse mit einer einheitlichen Amplitude, die
an 64 jeweils mit der zugeordneten Verstärkung g(n)
multipliziert werden. Der Ausgang des Verstärkers 64 wird an das
Langzeit-Synthesefilter 66 adressiert. Das Filter 66 weist
einen Aufbau mit adaptivem Codeverzeichnis auf. Die Proben
u des Ausgangs des Filters 66 werden im dem adaptiven
Codeverzeichnis 68 derart gespeichert, daß sie für die
darauffolgenden Unterblöcke verfügbar sind. Die Verzögerung TP
bezüglich eines Unterblocks, berechnet ausgehend von
Quantisierungsindices ZP und DP, wird an das adaptive
Codeverzeichnis 68 geliefert, um das auf geeignete Weise
verzögerte Signal u herzustellen. Der Verstärker 70
multipliziert das derart verzögerte Signal mit der Verstärkung gp
der Langzeitprädiktion. Das Langzeitfilter 66 weist
schließlich einen Addierer 72 auf, der die Ausgänge der
Verstärker 64 und 70 hinzufügt, um die Anregungssequenz u
zu liefern. Falls die LTP-Analyse nicht im Codierer
durchgeführt wurde, beispielsweise falls MV = 0, wird dem
Verstärker 70 eine Prädiktionsverstärkung gp gleich Null für die
entsprechenden Unterblöcke vorgegeben. Die Anregungssequenz
wird an das Kurzzeit-Synthesefilter 60 adressiert, und das
resultierende Signal kann des weiteren auf an sich bekannte
Weise einem Nachfilter 74 unterzogen werden, dessen
Koeffizienten von den empfangenen Syntheseparametern abhängen, um
das synthetische Sprachsignal S' zu bilden. Das
Ausgangssignal S' des Decoders 54 wird daraufhin durch den Umsetzer
76 analog-umgesetzt, bevor es verstärkt wird, um einen
Lautsprecher 78 anzusteuern.
-
Es folgt nun eine Beschreibung unter Bezugnahme auf
Fig. 3 bis 6 des Vorgangs der LTP-Analyse in offener
Schleife, die durch den Modul 36 des Codierers gemäß einem
ersten Aspekt der Erfindung angewendet wird.
-
In einem ersten Schritt 90 berechnet und speichert der
Modul 36 für jeden Unterblock st = 0,1, ..., nst-1 des
aktuellen Blocks die Autokorrelationen Cst(k) und die verzögerten
Energien Gst(k) des gewichteten Sprachsignals SW für die
zwischen rmin und rmax liegenden ganzzahligen Verzögerungen
k:
-
Cst(k) = SW(i) · SW(i - k)
-
Gst(k) = [SW(i - k)]²
-
Die Energien pro Unterblock R0st werden ebenfalls
berechnet:
-
In dem Schritt 90 bestimmt der Modul 36 des weiteren
für jeden Unterblock st die ganzzahlige Verzögerung Kst,
welche die Schätzung Pst(k) in offener Schleife der
Langzeitprädiktionsverstärkung an dem Unterblock st maximiert,
unter Ausschluß der Verzögerungen k, bei denen die
Autokorrelation Cst(k) negativ oder geringer als ein geringer
Bruchteil ε der Energie R0st des Unterblocks ist. Die
Schätzung Pst(k), ausgedrückt in Dezibel, wird geschrieben
als:
-
Pst(k) = 20·log&sub1;&sub0;[R0st/(R0st-Cst²(k)/Gst(k))]
-
Die Maximierung von Pst(k) läuft somit auf die
Maximierung des Ausdrucks Xst(k) = Cst²(k)/Gst(k) hinaus, wie in
Fig. 6 angegeben ist. Die ganzzahlige Verzögerung Kst ist
die Basisverzögerung in ganzzahliger Auflösung für den
Unterblock st. Der Schritt 90 ist gefolgt von einem
Vergleich 92 zwischen einer ersten Schätzung in offener
Schleife der globalen Prädiktionsverstärkung an dem
aktuellen Block und einem vorausgehend bestimmten Schwellenwert
S0, der typischerweise zwischen 1 und 2 Dezibel liegt
(beispielsweise S0 = 1,5 dB). Die erste Schätzung der
globalen Prädiktionsverstärkung ist gleich:
-
wobei R0 die Gesamtenergie des Blocks (R0 =
R0&sub0;+R0&sub1;+...+R0nst-1) ist, und Xst(Kst) = Cst²(Kst)/Gst(Kst) das
in Schritt 90 bezüglich des Unterblocks st bestimmte
Maximum bezeichnet. Wie in Fig. 6 angegeben ist, kann der
Vergleich 92 durchgeführt werden, ohne daß der Logarithmus
berechnet zu werden braucht.
-
Falls der Vergleich 92 zeigt, daß eine erste Schätzung
der Prädiktionsverstärkung unter dem Schwellenwert S0
liegt, wird angenommen, daß das Sprachsignal zu wenige
Langzeitkorrelationen enthält, um stimmhaft zu sein, und
der Grad der Stimmhaftigkeit MV des aktuellen Blocks wird
in dem Schritt 94 als gleich 0 genommen, was in diesem Fall
die von dem Modul 36 an diesem Block vorgenommenen
Arbeitsgänge beendet. Falls hingegen der Schwellenwert S0 in dem
Schritt 92 überschritten wird, wird der aktuelle Block als
stimmhaft erfaßt, und der Grad MV ist dann gleich 1, 2 oder
3. Der Modul 36 berechnet sodann für jeden Unterblock st
eine Liste Ist, welche potentielle Verzögerungen für die
Bildung der Mitte ZP des Suchintervalls für die
Langzeitprädiktionsverzögerungen enthält.
-
Die durch den Modul 36 für jeden Unterblock st (st in
Schritt 96 auf 0 initialisiert) eines stimmhaften Blocks
vorgenommenen Arbeitsgänge beginnen mit der Bestimmung 98
eines Selektionsschwellenwerts SEst in Dezibel, der gleich
einem bestimmten Bruchteil β der Schätzung Pst(Kst) der
Prädiktionsverstärkung in Dezibel an dem Unterblock ist,
maximiert in Schritt 90 (typischerweise β = 0,75). Für jeden
Unterblock st eines stimmhaften Blocks bestimmt der Modul
36 die Basisverzögerung rbf in ganzzahliger Auflösung für
die nachfolgende Verarbeitung. Diese Basisverzögerung
könnte gleich der in Schritt 90 erhaltenen ganzen Zahl Kst
genommen werden. Der Umstand, daß die Basisverzögerung in
bruchartiger Auflösung um Kst herum gesucht wird,
ermöglicht jedoch einen Zuwachs an Genauigkeit. Der Schritt 100
besteht also darin, um die in Schritt 90 erhaltene
ganzzahlige Verzögerung Kst herum die bruchartige Verzögerung zu
suchen, die den Ausdruck Cst²/Gst maximiert. Diese Suche
kann selbst dann mit der maximalen Auflösung der
bruchartigen Verzögerungen (1/6 in dem hier beschriebenen Beispiel)
durchgeführt werden, wenn die ganzzahlige Verzögerung Kst
nicht in dem Bereich liegt, in dem diese maximale Auflösung
anwendbar ist. Beispielsweise wird die Zahl Δst bestimmt,
die Cst² (Kst+δ/6) /Gst (Kst+δ/6) für -6 < δ < + 6 maximiert,
daraufhin die Basisverzögerung rbf in maximaler Auflösung
gleich Kst+Δst/6 genommen. Für die Bruchwerte T der
Verzögerung werden die Autokorrelationen Cst(T) und die
verzögerten Energien Gst(T) durch Interpolation ausgehend von
den Werten erhalten, die in Schritt 90 für die ganzzahligen
Verzögerungen gespeichert wurden. Wohlgemerkt könnte die
Basisverzögerung bezüglich eines Unterblocks auch in
bruchartiger Auflösung ab dem Schritt 90 bestimmt und bei
der ersten Schätzung der globalen Prädiktionsverstärkung an
dem Block berücksichtigt werden.
-
Sobald die Basisverzögerung rbf für einen Unterblock
bestimmt worden ist, wird zu einer Überprüfung 101 der
Teiler dieser Verzögerung übergegangen, um diejenigen
beizube
halten, bei denen die Prädiktionsverstärkung relativ hoch
ist (Fig. 4), darauhin der Mehrfachen des kleinsten
beibehaltenen Teilers (Fig. 5). In Schritt 102 werden die
Adresse j in der Liste Ist und der Index m des Teilers auf
0 bzw. 1 initialisiert. Ein Vergleich 104 wird zwischen dem
Teiler rbf/m und der Minimalverzögerung rmin durchgeführt.
Der Teiler rbf/m ist daraufhin zu untersuchen, ob er größer
als rmin ist. Daraufhin wird als die ganze Zahl i der zu
rbf/m nächste Wert des Index der quantisierten Verzögerung
ri (Schritt 106) genommen, daraufhin wird in 108 der zu der
quantisierten Verzögerung ri zugeordnete Schätzwert der
Prädiktionsverstärkung Pst(ri) für den betreffenden
Unterblock mit dem in Schritt 98 berechneten
Selektionsschwellenwert SEst verglichen:
-
Pst(Ri) = 20·log&sub1;&sub0;[R0st/R0st-Cst²(ri)/Gst(ri)]]
-
mit, für die bruchartigen Verzögerungen, einer
Interpolation der in Schritt 90 berechneten Werte Cst und Gst für
die ganzzahligen Verzögerungen. Falls Pst(ri)< SEst, wird
die Verzögerung ri nicht berücksichtigt, und direkt zum
Schritt 110 der Inkrementierung des Index m übergegangen,
bevor erneut der Vergleich 104 für den darauffolgenden
Teiler durchgeführt wird. Falls der Test 108 zeigt, daß
Pst(ri) ≥ SEst, wird die Verzögerung ri beibehalten und der
Schritt 112 vor dem Inkrementieren des Index m in Schritt
110 durchgeführt. In dem Schritt 112 wird der Index i unter
der Adresse j in der Liste Ist gespeichert, der ganzen Zahl
m0, die gleich dem Index des kleinsten beibehaltenen
Teilers sein soll, wird der Wert m gegeben, daraufhin die
Adresse j um eine Einheit inkrementiert.
-
Die Untersuchung der Teiler der Basisverzögerung wird
beendet, wenn der Vergleich 104 zeigt, daß rbf/m < rmin.
Sodann werden gemäß dem in Fig. 5 dargestellten Vorgang die
mehrfachen Verzögerungen des kleinsten rbf/m0 der
voraufgehend beibehaltenen Teiler untersucht. Diese Untersuchung
beginnt mit einer Initialisierung 114 des Index n des
Mehrfachen: n = 2. Ein Vergleich 116 wird zwischen dem Mehrfachen
n·rbf/m0
und der Maximalverzögerung rmax durchgeführt.
Falls n·rbf/m0 > rmax, wird der Test 118 durchgeführt, um
zu bestimmen, ob der Index m0 des kleinsten Teilers ein
ganzes Vielfaches von n ist. Falls ja, ist die Verzögerung
n·rbf/m0 bereits bei der Untersuchung der Teiler von rbf
untersucht worden, und es wird direkt zum Schritt 120 der
Inkrementierung des Index n übergegangen vor der erneuten
Durchführung des Vergleichs 116 für das darauffolgende
Vielfache. Falls der Test 118 zeigt, daß m0 kein ganzes.
Vielfaches von n ist, ist das Vielfache n·rbf/m0 zu
untersuchen. Man nimmt also für die ganze Zahl i den zu n·rbf/m0
nächsten Wert des Index der quantisierten Verzögerung ri
(Schritt 122), daraufhin wird in 124 der geschätzte Wert
der Prädiktionsverstärkung Pst(ri) mit dem
Selektionsschwellenwert SEst verglichen. Falls Pst(ri) < SEst, wird die
Verzögerung ri nicht berücksichtigt, und direkt zum Schritt
120 der Inkrementierung des Index n übergegangen. Falls der
Test 124 zeigt, daß Pst(ri) ≥ SEst, wird die Verzögerung ri
beibehalten und der Schritt 126 vor dem Inkrementieren des
Index n in Schritt 120 durchgeführt. In dem Schritt 126
wird der Index i unter der Adresse j in der Liste Ist
gespeichert, daraufhin die Adresse j um eine Einheit
inkrementiert.
-
Die Untersuchung der Mehrfachen des kleinsten Teilers
wird beendet, falls der Vergleich 116 zeigt, daß n·rbf/m0 >
rmax. Zu diesem Zeitpunkt enthält die Liste Ist j Indices
von potentiellen Verzögerungen. Falls gewünscht wird, die
Maximallänge der Liste Ist für die darauffolgenden Schritte
auf jmax zu beschränken, kann die Länge jst dieser Liste
gleich min(j, jmax) genommen werden (Schritt 128), und dann
in Schritt 130 die Liste Ist in der Reihenfolge der
Verstärkungen Cst²(rIst(j)/Gst² (rIst(j)) absteigend für 0 ≤ j < jst
geordnet werden, so daß nur die jst Verzögerungen
aufbewahrt werden, welche die höchsten Verstärkungswerte
liefern. Der Wert von jmax wird in Abhängigkeit von dem
angestrebten Kompromiß zwischen der Effektivität der Suche nach
den LTP-Verzögerungen und der Komplexität dieser Suche
gewählt. Typische Werte von jmax reichen von 3 bis 5.
-
Sobald die Teiler und die Mehrfachen untersucht worden
sind und somit die Liste Ist erhalten worden ist (Fig. 3),
berechnet das Analysemodul 36 eine Größe Ymax, welche eine
zweite Schätzung der Langzeitprädiktionsverstärkung in
offener Schleife an dem gesamten Block bestimmt, sowie
Indices ZP, ZP0 und ZP1 in einer Phase 132, deren Ablauf in
Fig. 6 dargestellt ist. Diese Phase 132 besteht darin,
Suchintervalle mit einer Länge N1 zu testen, um dasjenige
zu bestimmen, das eine zweite Schätzung der globalen
Prädiktionsverstärkung an dem Block maximiert. Die getesteten
Intervalle sind diejenigen, deren Mitten die in der in
Phase 101 berechneten Liste Ist enthaltenen potentiellen
Verzögerungen sind. Die Phase 132 beginnt mit einem Schritt
136, in dem die Adresse j in der Liste Ist auf 0
initialisiert wird. In dem Schritt 138 wird verifiziert, ob der
Index Ist(j) beim Testen eines voraufgegangenen, um
Ist'(j') zentrierten Intervalls mit st' < st und 0 ≤ j' < jst,
bereits angetroffen wurde, um zu vermeiden, daß das gleiche
Intervall zweimal getestet wird. Falls der Test 138 ergibt,
daß Ist(j) bereits in einer Liste Ist' mit st' < st vorkam,
wird die Adresse j in Schritt 140 direkt inkrementiert,
woraufhin sie mit der Länge jst der Liste Ist verglichen
wird. Falls der Vergleich 142 zeigt, daß j < jst, kehrt man
für den neuen Wert der Adresse j zu Schritt 138 zurück.
Falls der Vergleich 142 zeigt, daß j = jst, sind alle
Intervalle bezüglich der Liste Ist getestet worden, und die
Phase 132 ist abgeschlossen. Falls der Test 138 negativ
ist, wird das um Ist(j) zentrierte Intervall getestet,
indem man mit dem Schritt 148 beginnt, in dem für jeden
Unterblock st' der Index ist' der optimalen Verzögerung
bestimmt wird, die über dieses Intervall die Schätzung
Pst(ri) in offener Schleife der
Langzeitprädiktionsverstärkung maximiert, d. h. die die Größe Yst'(i) = Cst'²(ri)/Gst,(ri)
maximiert, wobei ri die quantisierte Verzögerung des Index
i für Ist(j)-N1/2 ≤ i < Ist(j)+N1/2 und 0 ≤ i < N bezeichnet. Bei
der Maximierung 148 bezüglich eines Unterblocks st' werden
von vorneherein diejenigen Indices i entfernt, bei denen
die Autokorrelation Cst'(ri) negativ ist, um eine
Verschlechterung der Codierung zu vermeiden. Falls sich
herausstellt, daß alle in dem überprüften Intervall
[I(j)-N1/2, I(j)+N1/2] enthaltenen Werte von i zu negativen
Autokorrelationen Cst'(ri) führen, wird der Index ist,
ausgewählt, für den diese Autokorrelation dem Absolutwert nach
am kleinsten ist. Daraufhin wird in 150 die Größe Y, welche
die zweite Schätzung der globalen Prädiktionsverstärkung
für das um Ist(j) zentrierte Intervall bestimmt, berechnet
gemäß:
-
Y = Yst·(ist)
-
daraufhin mit Ymax verglichen, wobei Ymax den zu
maximierenden Wert darstellt. Dieser Wert Ymax wird
beispielsweise zum gleichen Zeitpunkt wie der Index st in Schritt 96
auf 0 initialisiert. Falls Y ≤ Ymax, wird unmittelbar zu dem
Schritt 140 der Inkrementierung des Index j übergegangen.
Falls der Vergleich 150 zeigt, daß Y > Ymax, wird der
Schritt 152 vor der Inkrementierung der Adresse j in
Schritt 140 durchgeführt. In diesem Schritt 152 wird der
Index ZP gleich Ist(j) und die Indices ZP0 und ZP1 gleich
dem kleinsten bzw. größten der in Schritt 148 bestimmten
Indices ist, genommen.
-
Am Ende der Phase 132 bezüglich eines Unterblocks st
wird der Index st um eine Einheit inkrementiert (Schritt
154) und daraufhin in Schritt 156 mit der Zahl nst von
Unterblöcken pro Block verglichen. Falls st < nst, kehrt man
zu Schritt 98 zurück, um die Arbeitsschritte bezüglich des
nächsten Unterblocks durchzuführen. Falls der Vergleich 156
zeigt, daß st = nst, bezeichnet der Index ZP die Mitte des
Suchintervalls, die an den Modul 38 für die LTP-Analyse in
geschlossener Schleife geliefert wird, und ZP0 und ZP1 sind
Indices, deren Abstand repräsentativ für die Streuung der
optimalen Verzögerungen pro Unterblock in dem um ZP
zentrierten Intervall ist.
-
In dem Schritt 158 bestimmt der Modul 36 den Grad der
Stimmhaftigkeit MV auf der Basis der in Dezibel
ausgedrückten zweiten Schätzung in offener Schleife der Verstärkung:
Gp = 20·log&sub1;&sub0;(R0/R0-Ymax). Es wird auf zwei weitere
Schwellenwerte S1 und S2 zurückgegriffen. Falls Gp ≤ S1, wird der Grad
der Stimmhaftigkeit MV für den aktuellen Block als gleich 1
genommen. Der Schwellenwert S1 liegt typischerweise
zwischen 3 und 5 dB; beispielsweise S1 = 4 dB. Falls
S1 < Gp < S2, wird der Grad der Stimmhaftigkeit MV für den
aktuellen Block als gleich 2 genommen. Der Schwellenwert 52
liegt typischerweise zwischen S und 8 dB; beispielsweise
S2 = 7 dB. Falls Gp > S2, wird die Streuung der optimalen
Verzögerungen für die verschiedenen Unterblöcke des aktuellen
Blocks untersucht. Falls ZP1-ZP < N3/2 und ZP-ZP0 ≤ N3/2,
reicht ein um ZP zentriertes Intervall mit der Länge N3, um
alle optimalen Verzögerungen zu berücksichtigen, und der
Grad der Stimmhaftigkeit wird als gleich 3 genommen (falls
Gp > S2). Andernfalls, wenn ZP1-ZP ≥ N3/2 oder ZP-ZP0 > N3/2,
wird der Grad der Stimmhaftigkeit als gleich 2 genommen
(falls Gp > S2).
-
Der Index ZP der Mitte des Suchintervalls der
Prädiktionsverzögerung für einen stimmhaften Block kann zwischen 0
und N-1 = 255 liegen, und der für den Modul 38 bestimmte
Differenzindex DP kann sich von -16 bis +15 erstrecken, falls
MV = 1 oder 2, und von -8 bis +7, falls MV = 3 (in den Fällen,
in denen N1 = 32, N3 = 16). Der Index ZP+DP der endgültig
bestimmten Verzögerung TP kann also in bestimmten Fällen
kleiner als 0 oder größer als 255 sein. Dies gestattet es,
daß die LTP-Analyse in geschlossener Schleife sich auch auf
einige Verzögerungen TP bezieht, die kleiner als rmin oder
größer als rmax sind. Hierdurch wird die subjektive
Wieder
gabequalität der als pathologisch bezeichneten Stimmen und
der nicht-vokalen Signale (Stimmfrequenzen DTMF oder von
dem geschalteten Telefonnetz verwendete Signalfrequenzen)
verbessert. Eine weitere Möglichkeit ist es, als das
Suchintervall die 32 ersten oder letzten Quantisierungsindices
der Verzögerungen zu nehmen, falls ZP < 16 oder ZP > 240 bei
MV = 1 oder 2, und die 16 ersten oder letzten Indices, falls
ZP < 8 oder ZP > 248 bei MV = 3.
-
Der Umstand, daß das Suchintervall der Verzögerungen
für die stark stimmhaften Blöcke reduziert ist
(typischerweise 16 Werte bei MV = 3 anstelle der 32 bei MV = 1
oder 2), gestattet eine Verringerung der Komplexität der
durch den Modul 38 durchgeführten LTP-Analyse in
geschlossener Schleife durch eine Reduzierung der Anzahl von
Faltungen yT(i), die gemäß der Formel (1) zu berechnen sind.
Es ist ein weiterer Vorteil, daß ein Bit zum Codieren des
Differenzindex DP eingespart wird. Da die Ausgangsrate
konstant ist, kann dieses Bit zum Codieren von anderen
Parametern neu zugewiesen werden. Insbesondere kann dieses
zusätzliche Bit der Quantisierung der durch den Modul 40
berechneten Langzeitprädiktionsverstärkung gp zugewiesen
werden. In der Tat ist eine bessere Genauigkeit bezüglich
der Verstärkung gp infolge eines zusätzlichen Bit zur
Quantisierung beachtenswert, da dieser Parameter bei den stark
stimmhaften Unterblöcken (MV = 3) bezüglich der Wahrnehmung
wichtig ist. Eine weitere Möglichkeit besteht darin, ein
Paritätsbit für die Verzögerung TP und/oder die Verstärkung
gp vorzusehen, was die Erkennung von eventuellen Fehlern
gestattet, die sich auf diese Parameter auswirken.
-
Es ist möglich, an dem obenstehend unter Bezugnahme auf
Fig. 3 bis 6 beschriebenen Vorgang der LTP-Analyse in
offener Schleife einige Modifikationen vorzunehmen.
-
Gemäß einer ersten Variante dieses Vorgangs werden die
in Schritt 90 bezüglich der verschiedenen Unterblöcke
durchgeführten ersten Optimierungen durch eine einzige
Optimierung ersetzt, die sich auf den gesamten Block
bezieht. Außer den für jeden Unterblock st berechneten
Parametern Cst(k) und Gst(k) werden des weiteren die
Autokorrelationen C(k) und die verzögerten Energien G(k) für
die Gesamtheit des Blocks berechnet:
-
C(k) = Cst(k)
-
G(k) = Gst(k)
-
Man bestimmt somit die Basisverzögerung in ganzzahliger
Auflösung K, die X(k) = C²(k)/G(k) für rmin ≤ k ≤ rmax
maximiert. Die erste Schätzung der Verstärkung, die in Schritt
92 mit S0 verglichen wird, ist also P(K) = 20·log&sub1;&sub0;[R0/[R0-
X(K)]]. Daraufhin wird um K herum eine einzige
Basisverzögerung in bruchartiger Auflösung rbf bestimmt und die
Überprüfung 101 der Teiler und der Mehrfachen ein einziges Mal
durchgeführt, und eine einzige Liste I anstelle von nst
Listen Ist erzeugt. Die Phase 132 wird daraufhin ein
einziges Mal für diese Liste I durchgeführt, wobei die
Unterblöcke nur in den Schritten 148, 150 und 152 unterschieden
werden. Diese Ausführungsvariante hat den Vorteil, daß die
Komplexität der Analyse in offener Schleife verringert
wird.
-
Gemäß einer zweiten Variante des Vorgangs der
LTP-Analyse in offener Schleife wird der Bereich [rmin, rmax] der
möglichen Verzögerungen in nz Unterintervalle unterteilt,
welche beispielsweise die gleiche Länge (typischerweise
nz = 3) besitzen, und die in Schritt 90 durchgeführten ersten
Optimierungen bezüglich der verschiedenen Unterblöcke
werden durch nz Optimierungen in den verschiedenen
Unterintervallen ersetzt, die sich jeweils auf den gesamten Block
beziehen. Man erhält somit nz Basisverzögerungen
K&sub1;',...,Knz'
in ganzzahliger Auflösung. Die Entscheidung
stimmhaft/nicht stimmhaft (Schritt 92) wird auf der Basis
derjenigen unter den Basisverzögerungen Ki' getroffen, die
den größten Wert für die erste Schätzung der
Langzeitprädiktionsverstärkung in offener Schleife liefert.
Daraufhin, falls der Block stimmhaft ist, werden die
Basisverzögerungen in bruchartiger Auflösung durch den gleichen
Vorgang wie in Schritt 100 bestimmt, wobei jedoch nur die
quantisierten Verzögerungswerte zugelassen werden. Die
Untersuchung 101 der Teiler und der Mehrfachen wird nicht
durchgeführt. Für die Phase 132 des Berechnens der zweiten
Schätzung der Prädiktionsverstärkung werden als potentielle
Verzögerungen die vorausgehend bestimmten nz
Basisverzögerungen genommen. Diese zweite Variante gestattet das
Weglassen der systematischen Überprüfung der Teiler und der
Mehrfachen, die allgemein infolge der Unterteilung des
Bereichs der möglichen Verzögerungen berücksichtigt werden.
-
Gemäß einer dritten Variante des Vorgangs der
LTP-Analyse in offener Schleife wird die Phase 132 insofern
modifiziert, als in den Optimierungsschritten 148 einerseits
der Index ist' bestimmt wird, der Cst'²(ri)/Gst'(ri) für
Ist(j)-N1/2 ≤ i < Ist(j)+N1/2 und 0 ≤ i < N maximiert, und
andererseits, im Verlauf der gleichen Maximierungsschleife, der
Index kst', der diese gleiche Größe über ein reduziertes
Intervall Ist(j)-N3/2 ≤ i < Ist(j)+N3/2 und 0 ≤ i < N maximiert.
Der Schritt 152 wird gleichfalls modifiziert: es werden
nicht mehr die Indices ZP0 und ZP1 gespeichert, sondern
eine auf die gleiche Weise wie Ymax definierte Größe Ymax',
jedoch unter Bezugnahme auf das Intervall mit verringerter
Länge:
-
Ymax' = Yst'(kst')
-
Bei dieser dritten Variante führt die Bestimmung 158
des Stimmhaftigkeitsmodus dazu, daß der Grad der
Stimmhaf
tigkeit MV = 3 öfter gewählt wird. Es wird auch, zusätzlich
zu der vorstehend beschriebenen Verstärkung Gp, eine dritte
Schätzung der LTP-Verstärkung in offener Schleife
berücksichtigt, entsprechend Ymax': Gp' = 20·log&sub1;&sub0;[R0/(R0-Ymax')].
Der Grad der Stimmhaftigkeit ist MV = 1, falls Gp ≤ S1, MV = 3,
falls Gp' > S2, und MV = 2, falls keine dieser beiden
Bedingungen verifiziert wird. Indem somit der Anteil von Blöcken
mit dem Grad MV = 3 erhöht wird, wird die mittlere
Komplexität der Analyse in offener Schleife vermindert und die
Unempfindlichkeit gegen Übertragungsfehler verbessert.
-
Eine vierte Variante des Vorgangs der LTP-Analyse in
offener Schleife betrifft insbesondere die schwach
stimmhaften Blöcke (MV = 1). Diese Blöcke entsprechen häufig einem
Anfang oder einem Ende einer Stimmhaftigkeitszone. Oftmals
können diese Blöcke von ein bis drei Unterblöcke aufweisen,
für die der Koeffizient der Verstärkung des Langzeit-
Synthesefilters Null oder sogar negativ ist. Es wird
vorgeschlagen, die LTP-Analyse in geschlossener Schleife für die
betreffenden Unterblöcke nicht durchzuführen, um die
mittlere Komplexität der Codierung zu reduzieren. Dies kann
verwirklicht werden, indem in Schritt 152 der Fig. 6 nst
Pointer gespeichert werden, welche für jeden Unterblock st'
anzeigen, ob die der Verzögerung von Index ist'
entsprechende Autokorrelation Cst' negativ oder auch sehr klein
ist. Sobald alle Intervalle in den Listen Ist
gekennzeichnet sind, können die Unterblöcke, bei denen die
Prädiktionsverstärkung negativ oder vernachlässigbar ist, durch
Bezugnahme auf die nst Pointer identifiziert werden.
Gegebenenfalls wird der Modul 38 für die entsprechenden
Unterblöcke deaktiviert. Dies beeinträchtigt nicht die Qualität
der LTP-Analyse, weil die diesen Unterblöcken entsprechende
Prädiktionsverstärkung jedenfalls quasi Null sein wird.
-
Ein weiterer Aspekt der Erfindung betrifft den Modul 42
zum Berechnen der Impulsantwort des gewichteten
Synthesefilters, Der Modul 38 für die LTP-Analyse in geschlossener
Schleife benötigt diese Impulsantwort h über die Dauer
eines Unterblocks, um die Faltungen yT(i) gemäß Formel (1)
zu berechnen. Der Modul 40 für die stochastische Analyse
benötigt sie ebenfalls, um Faltungen zu berechnen, wie
weiter unten zu sehen sein wird. Der Umstand, daß Faltungen
mit einer Antwort h über die Dauer eines Unterblocks
(typischerweise lst = 40) berechnet werden müssen, impliziert
eine relative Komplexität der Codierung, die zu reduzieren
wünschenswert wäre, insbesondere um die Autonomie der
mobilen Station zu erhöhen. In bestimmten Fällen wurde
vorgeschlagen, die Impulsantwort auf eine Länge abzuschneiden,
die geringer als die Länge eines Unterblocks ist
(beispielsweise auf 20 Proben), jedoch kann dies die
Qualität der Codierung verschlechtern. Erfindungsgemäß wird
vorgeschlagen, die Impulsantwort h abzuschneiden, wobei
einerseits die Energieverteilung dieser Antwort und andererseits
der durch den Modul 36 für die LTP-Analyse in offener
Schleife bestimmte Grad der Stimmhaftigkeit MV des
betreffenden Blocks berücksichtigt wird.
-
Die von dem Modul 42 durchgeführten Arbeitsschritte
stimmen beispielsweise mit dem Ablaufdiagramm der Fig. 7
überein. Die Impulsantwort wird zuerst in Schritt 160 über
eine Länge pst berechnet, die größer als die Länge eines
Unterblocks und ausreichend groß ist, um sicherzugehen, daß
die gesamte Energie der Impulsantwort (beispielsweise
pst = 60 für nst = 4, und ist = 40, falls die lineare
Kurzzeitprädiktion von der Größenordnung q = 10 ist) berücksichtigt
wird. In dem Schritt 160 werden auch die abgeschnittenen
Energien der Impulsantwort berechnet:
-
Eh(i) = [h(i)]²
-
Die Komponenten h(i) der Impulsantwort und die
abgeschnittenen Energien Eh(i) können durch Filtern eines
einheitlichen Impulses mittels eines Filters mit der
Transfer
funktion W(z)/A(z) mit Anfangszuständen Null, oder auch
durch Rekursion erhalten werden:
-
f(i) = δ(i) + ak[γk&sub2; · f(i - k) - γk&sub1; · δ(i - k)] (2)
-
f(i) = f(i) = + ak · h(i - k) (3)
-
Eh(i) = Eh(i - 1) + [h(i)]²
-
für 0 < i < pst, mit f(i) = h(i) = 0 für i < 0, δ(0) = f(0) = h(0)
= Eh(0) = 1, und δ(i) = 0 für i≠0. In dem Ausdruck (2) sind die
Koeffizienten ak diejenigen, die in dem
Wahrnehmungswichtungsfilter vorkommen, d. h. die interpolierten, jedoch
nicht quantisierten Koeffizienten der linearen Prädiktion,
wohingegen in dem Ausdruck (3) die Koeffizienten ak
diejenigen sind, die auf das Synthesefilter angewendet werden,
d. h. die quantisierten und interpolierten Koeffizienten der
linearen Prädiktion.
-
Daraufhin bestimmt der Modul 42 die kleinste Länge Lα
derart, daß die Energie Eh(Lα-1) der abgeschnittenen
Impulsantwort mit Lα Proben mindestens gleich einer
Proportion α seiner über pst Proben geschätzten Gesamtenergie
Eh(pst-1) ist. Ein typischer Wert von α ist 98%. Die Zahl L
α wird in Schritt 162 auf pst initialisiert und in 166 um
eine Einheit dekrementiert, so daß Eh(Lα-2)> α·Eh(pst-1)
(Test 164). Die gesuchte Länge Lα ist erhalten, wenn der
Test 164 zeigt, daß Eh(Lα-2) ≤ α Eh(pst-1).
-
Um den Grad der Stimmhaftigkeit MV zu berücksichtigen,
wird dem erhaltenen Wert Lα ein Korrekturterm Δ(MV)
hinzugefügt (Schritt 168). Dieser Korrekturterm ist bevorzugt
eine mit dem Grad der Stimmhaftigkeit zunehmende Funktion.
Beispielsweise können
Δ(0) = -5, Δ(1) = 0, Δ(2) = +5 und Δ(3) = +7
genommen werden. Auf diese Weise wird die Impulsantwort h
auf umso präzisere Weise bestimmt, je höher die
Stimmhaftigkeit der Sprache ist. Die Abschnittlänge Lh der
Impulsantwort wird als gleich Lα genommen, falls Lα ≤ nst, und
andernfalls nst. Die übrigen Proben der Impulsantwort
(h(i) = 0 mit i ≥ Lh) können annulliert werden.
-
Nach dem Abschneiden der Impulsantwort wird die
Berechnung (1) der Faltungen yT(i) durch den Modul 38 für die
LTP-Analyse in geschlossener Schleife auf die folgende
Weise modifiziert:
-
yT(i) = u(j - T) · h(i - j)
-
Der Erhalt dieser Faltungen, der einen wichtigen Teil
der durchgeführten Berechnungen darstellt, erfordert somit
beträchtlich weniger Multiplikationen, Additionen und
Adressierungen in dem adaptiven Codeverzeichnis, wenn die
Impulsantwort abgeschnitten ist. Das dynamische Abschneiden
der Impulsantwort unter Einbeziehung des Grades der
Stimmhaftigkeit MV ermöglicht es, eine solche Reduzierung der
Komplexität zu erzielen, ohne die Qualität der Codierung zu
beeinträchtigen. Die gleichen Überlegungen treffen auf die
Berechnung von Faltungen zu, die von dem Modul 40 für die
stochastische Analyse durchgeführt werden. Diese Vorteile
sind insbesondere bemerkenswert, wenn das
Wahrnehmungswichtungsfilter eine Transferfunktion mit der Form
W(z) = A(z/γ&sub1;)/A(z/γ&sub2;) mit 0 < γ&sub2; < γ&sub1; < 1 besitzt, die zu
Impulsantworten führt, die im wesentlichen länger sind als
diejenigen mit der Form w(z) = A(z)/A(z/γ), deren Anwendung in
Syntheseanalyse-Codierern üblicher ist.
-
Ein dritter Aspekt der Erfindung betrifft den Modul 40
für die stochastische Analyse, der zum Erstellen eines
Modells des nicht vorhersagbaren Teils der Anregung dient.
-
Die hier betrachtete stochastische Anregung ist vom
Mehrimpulstyp. Die stochastische Anregung bezüglich eines
Unterblocks ist durch np Impulse mit Positionen p(n) und d
Amplituden, oder Verstärkungen, g(n) (1 ≤ n ≤ np) dargestellt.
Die Langzeitprädiktionsverstärkung gp kann ebenso im
Verlauf des gleichen Vorgangs berechnet werden. Allgemein läßt
sich überlegen, daß die Anregungssequenz bezüglich eines
Unterblocks nc Anteile aufweist, die jeweils nc
Verstärkungen zugeordnet sind. Die Anteile sind Vektoren von ist
Proben, die bei Wichtung durch die zugeordneten Verstärkungen
und Summierung der Anregungssequenz des
Kurzzeit-Synthesefilters entsprechen. Einer der Anteile kann vorhersagbar
sein, oder mehrere im Falle eines Langzeit-Synthesefilters
mit mehreren Abgriffen ("multi-tap pitch synthesis
filter"). Die weiteren Anteile sind in dem vorliegenden Fall
np Vektoren, welche nur Nullen aufweisen, außer einem
Impuls mit der Amplitude 1. Somit erhält man nc = np, falls
MV = 0, und nc = np+1, falls MV = 1, 2 oder 3.
-
Die Mehrimpuls-Analyse, welche die Berechnung der
Verstärkung gp = g(0) beinhaltet, besteht auf an sich bekannte
Weise darin, daß für jeden Unterblock Positionen p(n) (1 ≤ n ≤
np) und Verstärkungen g(n) (0 ≤ n ≤ np) aufgefunden werden, die
den wahrnehmungsgewichteten quadratischen Fehler E zwischen
dem Sprachsignal und dem synthetisierten Signal minimieren,
gegeben durch:
-
E = (X - g(n) · Fp(n))²
-
wobei die Verstärkungen die Auflösung des linearen
Systems g·B = b sind.
-
Bei der nachfolgenden Schreibweise:
-
- bezeichnet X einen anfänglichen Zielvektor, der aus
den ist Proben des gewichteten gedächtnislosen
Sprach
signals SW zusammengesetzt ist: X = (x(0),x(1),...,x(lst-1)),
wobei die x(i) gemäß der obenstehenden Beschreibung bei der
LTP-Analyse in geschlossener Schleife berechnet worden
sind;
-
- bezeichnet g den aus den np+1 Verstärkungen
zusammengesetzten Zeilenvektor: g = (g(0) = gp, g(1),...,g(np));
-
- sind die Zeilenvektoren Fp(n) (0 ≤ n < nc) gewichtete
Anteile, deren Komponenten i(0 ≤ i < lst) die Faltungsprodukte
aus dem Anteil n an der Anregungssequenz und der
Impulsantwort h des gewichteten Synthesefilters sind;
-
- bezeichnet b den Zeilenvektor, der aus den nc
Skalarprodukten aus dem Vektor X und den Zeilenvektoren
Fp < n, zusammengesetzt ist;
-
- bezeichnet B eine symmetrische Matrix mit nc Zeilen
und nc Spalten, deren Term Bi,j = Fp(i)·FP(j)T (0 ≤ i, j < nc)
gleich dem Skalarprodukt aus den vorstehend definierten
Vektoren Fp(i), und Fp(j) ist;
-
- bezeichnet (.)T die Matrixtransponierung.
-
Bei den Impulsen der stochastischen Anregung (1 ≤ n (
np = nc-1) bestehen die Vektoren Fp(n) einfach aus dem Vektor
der um p(n) Proben verschobenen Impulsantwort h. Der
Umstand, daß die Impulsantwort gemäß der obenstehenden
Beschreibung abgeschnitten wird, ermöglicht es somit, die
Anzahl von Operationen merklich zu reduzieren, die für die
Berechnung der Skalarprodukte von Nutzen sind und diese
diese Vektoren Fp(n) mit einbeziehen. Bei dem
vorhersagbaren Anteil der Anregung hat der Vektor FP(0) = YTP als
Komponenten Fp(0)(i) (0 ≤ i < lst) die Faltungen yTP(i), welche der
Modul 38 gemäß der Formel (1) oder (1') für die ausgewählte
Langzeitprädiktionsverzögerung TP berechnet hat. Falls
MV = 0,
ist der Anteil n = 0 ebenfalls vom Impulstyp und die
Position p(0) ist zu berechnen.
-
Die Minimierung des oben definierten quadratischen
Fehlers E läuft darauf hinaus, die Gesamtheit der Positionen
p(n) aufzufinden, welche die normalisierte Korrelation b·B&supmin;¹
·bT maximieren, und daraufhin die Verstärkungen gemäß
g = b·B&supmin;¹ zu berechnen.
-
Eine umfassende Suche nach den Impulspositionen würde
jedoch einen übermäßigen Rechenaufwand erfordern. Um dieses
Problem abzumildern, wendet der Mehrimpuls-Ansatz im
wesentlichen einen suboptimalen Vorgang an, welcher darin
besteht, aufeinanderfolgend die Verstärkungen und/oder die
Impulspositionen für jeden Anteil zu berechnen. Für jeden
Anteil n (0 ≤ n < nc) wird zuerst die Position p(n) bestimmt,
die die normalisierte Korrelation (Fp·en-1T)²/(Fp·FpT)
maximiert, die Verstärkungen gn(0) bis gn(n) werden gemäß
gn = bn·Bn&supmin;¹ neu berechnet, wobei gn = (gn(0),...,gn(n),
bn = (b(0),...,b(n)) und Bn = {Bi,j}0 ≤ i, j ≤ n, daraufhin für die
nächste Iteration der Zielvektor en berechnet, der gleich
dem anfänglichen Zielvektor X ist, von δem die Anteile 0
bis n des gewichteten synthetischen Signals multipliziert
mit ihren jeweiligen Verstärkungen abgezogen wurden:
-
en = X - gn (i) · Fp(i)
-
Nach Abschluß der letzten Iteration nc-1 sind die
Verstärkungen gnc-1(i) die gewählten Verstärkungen und der
minimierte quadratische Fehler E ist gleich der Energie des
Zielvektors enc-1
-
Die obenstehende Vorgehensweise liefert
zufriedenstellende Ergebnisse, erfordert aber die Inversion einer Matrix
Bn bei jeder Iteration. In ihrem Artikel "Amplitude
Optimization and Pitch Prediction in Multipulse Coders" (IEEE
Trans. an Acoustics, Speech, and Signal Processing, Vol. 37,
No. 3, März 1989, Seiten 317-327) haben S. Singhal und B. S.
Atal vorgeschlagen, das Problem der Inversion der Matrizen
Bn unter Verwendung der Cholesky-Zerlegung Bn = Mn·MnT zu
vereinfachen, wobei Mn eine absteigend dreiecksförmige
Matrix ist. Diese Zerlegung ist deshalb möglich, weil Bn
eine symmetrische Matrix mit positiven Eigenwerten ist. Der
Vorteil dieses Ansatzes liegt darin, daß die Inversion
einer dreiecksförmigen Matrix relativ wenig kompliziert
ist, da Bn&supmin;¹ über Bn&supmin;¹ = (Mn&supmin;¹)T·Mn&supmin;¹ erhalten werden kann.
-
Die Cholesky-Zerlegung und die Inversion der Matrix Mn
erfordern dennoch die Durchführung der Divisionen und der
Berechnungen von Quadratwurzeln, was im Hinblick auf die
Komplexität der Rechenvorgänge hohe Anforderungen stellt.
Die Erfindung schlägt vor, die Durchführung der Optimierung
durch eine Modifizierung der Zerlegung der Matrizen Bn auf
die folgende Weise beträchtlich zu vereinfachen:
-
Bn = Ln·RnT - Ln·(Ln·Kn&supmin;¹)T
-
wobei Kn eine diagonale Matrix ist und Ln eine
absteigend dreiecksförmige Matrix ist, die auf ihrer
Hauptdiagonale nur Einsen aufweist (Ln = Mn·Kn1/2 in der vorherigen
Schreibweise). In Anbetracht des Aufbaus der Matrix Bn sind
die Matrizen Ln = Rn·Kn, Rn, Kn und Ln&supmin;¹ jeweils durch
einfaches Hinzufügen einer Zeile zu den entsprechenden Matrizen
der voraufgegangenen Iteration aufgebaut:
-
Unter diesen Umständen erfordern die Zerlegung von Bn,
die Inversion von Ln, der Erhalt von Bn&supmin;¹ = Kn·(Ln&supmin;¹)T·Ln-1 und
die Neuberechnung der Verstärkungen nur eine einzige
Division pro Iteration und keinerlei Berechnung von
Quadratwurzeln.
-
Die stochastische Analyse bezüglich eines Unterblocks
eines stimmhaften Blocks (MV = 1, 2 oder 3) kann daher so
ablaufen, wie dies in den Fig. 8 bis 11 angegeben ist. Zur
Berechnung der Langzeitprädiktionsverstärkung wird der
Index von Anteil n in Schritt 180 auf 0 initialisiert, und
der Vektor Fp(0) wird gleich dem von dem Modul 38
gelieferten Langzeitanteil YTP genommen. Falls n > 0, beginnt die
Iteration n mit der Bestimmung 182 der Position p(n) des
Impulses n, der die Größe maximiert:
-
wobei e = (e(0),...,e(lst-1)) ein bei der vorherigen
Iteration berechneter Zielvektor ist. Unterschiedliche
Bedingungen können an den Bereich der Maximierung der
obenstehenden Größe gestellt werden, die in dem Intervall [0,lst[
enthalten sind. Die Erfindung verwendet bevorzugt eine
segmentweise Suche, bei der der Anregungs-Unterblock in ns
Segmente einer gleichen Länge (beispielsweise ns = 10 für
lst = 40) unterteilt wird. Für den ersten Impuls (n = 1) wird
die Maximierung von (Fp·eT)²/(Fp·FpT) an der Gesamtheit der
möglichen Positionen p in dem Unterblock durchgeführt. Bei
der Iteration n > 1 wird die Maximierung in Schritt 182 an
der Gesamtheit der möglichen Positionen unter Ausschluß
derjenigen Segmente durchgeführt, in denen jeweils die
Positionen p(1),...,p(n-1) der Impulse bei den vorherigen
Iterationen gefunden wurden.
-
In dem Fall, in dem der aktuelle Block als nicht
stimmhaft erfaßt wurde, besteht der Anteil n = 0 ebenfalls aus
einem Impuls der Position p(0). Der Schritt 180 umfaßt also
nur die Initialisierung n = 0, und diese ist gefolgt von
einem identischen Maximierungsschritt in Schritt 182 zum
Auffinden von p(0), mit e = e&submin;&sub1; = X als Anfangswert des
Zielvektors.
-
Es wird angemerkt, daß, falls der Anteil n = 0
vorhersagbar ist (MV = 1, 2 oder 3), der Modul 38 für die LTP-Analyse
in geschlossener Schleife einen Arbeitsschritt von einer
Art ähnlich der Maximierung 182 durchgeführt hat, da er den
durch die Verzögerung TP gekennzeichneten Langzeitanteil
durch Maximierung der Größe (YT·eT)²/(YT·YTT) in dem
Suchintervall der Verzögerungen T, mit e = e&submin;&sub1; = X als Anfangswert
des Zielvektors, bestimmt hat. Wenn die Energie des LTP-
Anteils sehr schwach ist, kann dieser Anteil in dem Vorgang
der Neuberechnung der Verstärkungen auch ignoriert werden.
-
Nach dem Schritt 180 oder 182 geht der Modul 40 zur
Berechnung 184 der Zeile n der Matrizen L, R und K über,
welche bei der Zerlegung der Matrix B vorkommt, was es
gestattet, die oben definierten Matrizen Ln, Rn und Kn zu
vervollständigen. Die Zerlegung der Matrix B gestattet die
Schreibweise:
-
B(n,j) = R(n,j) + L(n,k) · R(j,k)
-
für die in der Zeile n und in der Spalte j befindliche
Komponente. Man kann somit schreiben, für j ansteigend von
0 bis n-1:
-
R(n,j) = B(n,j) + L(n,k) · R(j,k)
-
und für j = n:
-
K(n) = 1/R(n,n) = 1/[B(n,n) - L(n,k) · R(n,k)]
-
L(n,n) = 1
-
Diese Beziehungen werden in der in Fig. 9 dargestellten
Berechnung 184 genutzt. Der Index von Spalte j wird in
Schritt 186 zunächst auf 0 initialisiert. Für den Index der
Spalte j wird die Variable tmp zunächst auf den Wert der
Komponente B(n,j) initialisiert, nämlich:
-
tmp = Fp(n) · Fp(j)T
-
= h(k - p(n)) · h(k - p(j))
-
In dem Schritt 188 wird die ganze Zahl k des weiteren
auf 0 initialisiert. Daraufhin wird ein Vergleich 190
zwischen den ganzen Zahlen k und j durchgeführt. Falls k < j,
wird der Term L(n,k)·R(j,k) zu der Variablen tmp
hinzugefügt, daraufhin die ganze Zahl k vor der erneuten
Durchführung des Vergleichs 190 um eine Einheit inkrementiert
(Schritt 192). Wenn der Vergleich 190 zeigt, daß k = j, wird
ein Vergleich 194 zwischen den ganzen Zahlen j und n
durchgeführt. Falls j < n, wird in Schritt 196 die Komponente
R(n,j) als gleich tmp und die Komponente L(n,j) als gleich
tmp·K(j) genommen, daraufhin wird der Index der Spalte j um
eine Einheit inkrementiert, bevor man zum Berechnen der
darauffolgenden Komponenten zum Schritt 188 zurückkehrt.
Wenn der Vergleich 194 zeigt, daß j = n, wird die Komponente
K(n) der Zeile n der Matrix K berechnet, womit die
Berechnung 184 bezüglich der Zeile n abgeschlossen ist. K(n) wird
als gleich 1/tmp genommen, falls tmp≠0 (Schritt 198), und
andernfalls gleich 0. Man stellt fest, daß die Berechnung
184 nur höchstens eine Division 198 erfordert, um K(n) zu
erhalten. Des weiteren bringt eine eventuelle Singularität
der Matrix Bn keine Instabilitäten mit sich, da Divisionen
durch 0 vermieden sind.
-
Unter Bezugnahme auf Fig. 8 folgt auf die Berechnung
184 der Zeilen n von L, R und K die Inversion 200 der
Matrix Ln, welche aus den Zeilen und Spalten 0 bis n der
Matrix L besteht. Der Umstand, daß L dreiecksförmig mit
Einsen auf ihrer Hauptdiagonale ist, vereinfacht stark die
Inversion, wie dies Fig. 10 zeigt. Man kann nämlich
schreiben:
-
L&supmin;¹(n,j') = -L(n,j') - (k',j') · L(n,k') (4)
-
= -L(n,j') - (k',j') · L-1(n,k') (5)
-
für 0 ≤ j' < n und L&supmin;¹(n,n) = 1, d. h. die Inversion kann
durchgeführt werden, ohne daß eine Division durchgeführt
werden muß. Des weiteren, da die Komponenten der Zeile n
von L&supmin;¹ zum Neuberechnen der Verstärkungen ausreichend
sind, gestattet es die Anwendung der Beziehung (5), die
Inversion durchzuführen, ohne daß die gesamte Matrix L&supmin;¹
gespeichert werden muß, sondern nur ein Vektor
Linv = (Linv(0),...,Linv(n-1)), mit Linv(j') = L&supmin;¹(n,j'). Die
inversion 200 beginnt sodann mit einer Initialisierung 202
des Index von Spalte j' auf n-1. In dem Schritt 204 wird
der Term Linv(j') auf -L(n,j') initialisiert und die ganze
Zahl k auf j'+1. Daraufhin wird ein Vergleich 206 zwischen
den ganzen Zahlen k' und n durchgeführt. Falls k' < n, wird
der Term L(k',j')·Linv(k') von Linv(j') abgezogen,
daraufhin die ganze Zahl k' um eine Einheit inkrementiert
(Schritt 208), bevor der Vergleich 206 wieder durchgeführt
wird. Wenn der Vergleich 206 zeigt, daß k' = n, wird j' mit 0
verglichen (Test 210). Falls j' > 0, wird die ganze Zahl j'
um eine Einheit dekrementiert (Schritt 212), und man kehrt
zu Schritt 204 zurück, um die darauffolgende Komponente zu
berechnen. Die Inversion 200 ist abgeschlossen, wenn der
Test 210 zeigt, daß j' = 0.
-
Unter Bezugnahme auf Fig. 8 folgt auf die Inversion 200
die Berechnung 214 der neu optimierten Verstärkungen und
des Zielvektors E für die darauffolgende Iteration. Die
Berechnung der neu optimierten Verstärkungen ist durch die
für die Matrix B beibehaltene Zerlegung ebenfalls sehr
vereinfacht. Man kann nämlich den Vektor gn = (gn(0),...gn(n))
als Auflösung von gn·Bn = bn berechnen gemäß:
-
gn(n) = [b(n) + b(i) · L&supmin;¹(n,i)] · K(n)
-
und gn(i') = gn&submin;&sub1;(i')+L&supmin;¹(n,i')·gn(n) für 0 ≤ 1' < n. Die
Berechnung 214 ist in Fig. 11 dargestellt. Zuerst wird die
Komponente b(n) des Vektors b berechnet:
-
b(n) = Fp(n) · XT = h(k - p(n)) · x(k)
-
b(n) dient als der Initialisierungswert für die
Variable tmq. In dem Schritt 216 wird auch der Index i auf 0
initialisiert. Daraufhin wird der Vergleich 218 zwischen
den ganzen Zahlen i und n durchgeführt. Falls i < n, wird der
Term b(i)·Linv(i) zu der Variablen tmq hinzugefügt und i um
eine Einheit inkrementiert (Schritt 220), bevor man zum
Vergleich 218 zurückkehrt. Wenn der Vergleich 218 zeigt,
daß i = n, wird die Verstärkung bezüglich des Anteils n gemäß
g(n) = tmq·K(n) berechnet, und die Schleife zum Berechnen der
weiteren Verstärkungen und des Zielvektors initialisiert
(Schritt 222), wobei e = X-g(n)·Fp (n) und i' = 0 genommen wird.
Diese Schleife beinhaltet einen Vergleich 224 zwischen den
ganzen Zahlen i' und n. Falls i' < n, wird die Verstärkung
g(i') in Schritt 226 neu berechnet, indem Linv(i')·g(n) zu
ihrem bei der vorausgegangenen Iteration n-1 berechneten
Wert hinzugefügt wird, daraufhin von dem Zielvektor e der
Vektor g(i')·Fp(i') abgezogen. Der Schritt 226 beinhaltet
auch die Inkrementierung des Index i', bevor man zum wieder
zum Vergleich 224 übergeht. Die Berechnung 214 der
Verstärkungen und des Zielvektors ist abgeschlossen, wenn der
Vergleich 224 zeigt, daß i' = n. Es ist ersichtlich, daß die
Verstärkungen aktualisiert werden konnten, indem nur auf
die Zeile n der reziproken Matrix Ln&supmin;¹ zurückgegriffen
wurde.
-
Auf die Berechnung 214 folgt eine Inkrementierung 228
des Index n des Anteils, daraufhin ein Vergleich 230
zwischen dem Index n und der Anzahl von Anteilen nc. Falls
n < nc, geht man wieder zum Schritt 182 für die
darauffolgende Iteration über. Die Optimierung der Positionen und der
Verstärkungen ist abgeschlossen, wenn in dem Test 230 n = nc.
-
Die segmentweise Suche der Impulse verringert merklich
die Anzahl von Impulspositionen, die im Verlauf der
Schritte 182 der Suche nach der stochastischen Anregung zu
bewerten sind. Sie gestattet des weiteren eine effektive
Quantisierung der aufgefundenen Positionen. In dem typischen
Fall, in dem der Unterblock von lst = 40 Proben in ns = 10
Segmente von ls = 4 Proben aufgeteilt wird, kann die Gesamtheit
der möglichen Impulspositionen ns!·lsnp/[np!(ns-np)!] = 258
048 Werte betragen, falls np = 5 (MV = 1, 2 oder 3) oder 860
160 betragen, falls np = 6(MV = 0), anstelle von ist!/[np!
(lstnp)!] = 658 008 Werten, falls np = 5 oder 3 838 380, falls np = 6
in dem Fall, in dem nur vorgegeben ist, daß zwei Impulse
nicht die gleiche Position besitzen können. Anders
ausgedrückt, die Positionen können auf 18 Bits quantisiert
werden anstelle von 20 Bits, falls np = 5, und auf 20 Bits
anstelle von 22, falls np = 6.
-
Der besondere Fall, in dem die Anzahl von Segmenten pro
Unterblock gleich der Anzahl von Impulsen pro
stochastischer Anregung (ns = np) ist, führt zur höchsten Einfachheit
der Suche nach der stochastischen Anregung, sowie zu der
kleinsten Bitfolge (falls ist = 40 und np = 5, gibt es 8&sup5; = 32768
Einheiten von möglichen Positionen, die auf nur 15 Bits
anstelle von 18 quantisierbar sind, falls ns = 10). Infolge
einer Verringerung der Anzahl von möglichen
Innovationssequenzen zu diesem Zeitpunkt kann die Qualität der
Codierung jedoch herabgesetzt werden. Für eine gegebene Anzahl
von Impulsen kann die Anzahl der Segmente gemäß einem
angestrebten Kompromiß zwischen der Qualität der Codierung und
der Einfachheit ihrer Anwendung (wie auch der
erforderlichen Bitfolge) optimiert werden.
-
Der Fall, in dem ns > np, weist des weiteren den Vorteil
auf, daß im Hinblick auf die Positionen der Impulse eine
gute Unempfindlichkeit gegen Übertragungsfehler erhalten
werden kann dank einer separaten Quantisierung der
Ordnungszahlen der besetzten Segmente und der relativen
Positionen der Impulse in jedem besetzten Segment. Für einen
Impuls n sind die Ordnungszahl sn des Segments und die
relative Position prn jeweils der Quotient und der Rest der
euklidischen Division von p(n) durch die Länge ls eines
Segments: p(n) = sn·ls+prn (0 ≤ sn < ns, 0 ≤ prn < ls). Die relativen
Positionen werden jeweils separat mit 2 Bits quantisiert,
falls ls = 4. Für den Fall, daß ein Übertragungsfehler eines
dieser Bits beeinträchtigt, ist der entsprechende Impuls
nur wenig deplaziert, und die Auswirkung des Fehlers auf
die Wahrnehmung hält sich in Grenzen. Die Ordnungszahlen
der besetzten Segmente werden durch ein Binärwort mit ns = 10
Bits bezeichnet, die jeweils den Wert 1 für die besetzten
Segmente und 0 für die Segmente aufweisen, in denen die
stochastische Anregung keinen Impuls besitzt. Die möglichen
binären Wörter sind solche mit einem Hamming-Gewicht np;
ihre Anzahl beträgt ns!/[np!(ns-np)!] = 252, falls np = 5, oder
210, falls np = 6. Dieses Wort ist durch einen Index von nb
Bits quantisierbar, wobei 2nb-1 < ns!/[np!(ns-np)!] ≤ 2nb, d. h.
nb = 8 in dem betrachteten Beispiel. Wenn beispielsweise die
stochastische Analyse np = 5 Impulse mit Positionen 4, 12,
21, 34, 38 geliefert rat, sind die skalar quantisierten
relativen Positionen 0,0,1, 2,2, und das Binärwort, welches
für die besetzten Segmente steht, ist 0101010011, oder 339
in dezimaler Schreibweise.
-
Auf der Höhe des Decoders werden die möglichen binären
Wörter in einer Quantisierungstabelle gespeichert, in der
die Leseadressen die empfangenen Quantisierungsindices
sind. Sobald die Reihenfolge in dieser Tabelle einmal für
alle bestimmt worden ist, kann sie derart optimiert werden,
daß ein Übertragungsfehler, der ein Bit des Index betrifft
(der häufigste Fehlerfall, insbesondere wenn in dem
Kanalcodierer 22 eine Verschachtelung durchgeführt wird),
im Durchschnitt gemäß einem Nachbarschaftskriterium
minimale Konsequenzen hat. Das Nachbarschaftskriterium ist
beispielsweise, daß ein Wort mit ns Bits nur durch
"benachbarte" Wörter ersetzt werden kann, die um eine
Hamming-Distanz von höchstens gleich einem Schwellenwert np-2δ
beabstandet sind, so daß alle Impulse mit Ausnahme von δ
unter ihnen im Fall eines Index-Übertragungsfehlers, der
sich auf ein einziges Bit auswirkt, auf gültigen Positionen
aufbewahrt werden. Weitere Kriterien wären ersatzweise oder
als Ergänzung anwendbar, beispielsweise daß zwei Wörter als
benachbart betrachtet werden, wenn die Ersetzung des einen
durch das andere nicht die Reihenfolge der Zuordnung der zu
den Impulsen gehörigen Verstärkungen verändert.
-
Zum Zweck der Veranschaulichung läßt sich der
vereinfachte Fall in Betracht ziehen, in dem ns = 4 und np = 2, d. h.
6 mögliche binäre Wörter, die mit nb = 3 Bits quantisierbar
sind. In diesem Fall läßt sich verifizieren, daß die in
Tabelle II gezeigte Quantisierungstabelle es gestattet, die
richtige Positionierung von np-1 = 1 Impuls bei jeglichem
Fehler beizubehalten, der sich auf ein Bit des übertragenen
Index auswirkt. Es gibt 4 Fehlerfälle (von insgesamt 18),
bei denen ein Quantisierungsindex empfangen wird, von dem
man weiß, daß er fehlerhaft ist (6 anstelle von 2 oder 4; 7
anstelle von 3 oder 5), jedoch kann der Decoder dann
Maßnahmen ergreifen, welche die Verzerrung begrenzen,
beispielsweise die Wiederholung der Innovationssequenz
bezüglich des vorherigen Unterblocks oder auch die Zuordnung der
akzeptablen binären Wörter zu den "unmöglichen" Indices
(beispielsweise 1001 oder 1010 für den Index 6 und 1100
oder 0110 für den Index 7 führen im Fall des Empfangs von 6
oder 7 bei einem Binärfehler noch zu np-1 = 1 richtig
positionierten Impuls).
-
In einem allgemeinen Fall kann die Reihenfolge in der
Quantisierungstabelle der Wörter ausgehend von
arithmetischen Überlegungen bestimmt werden oder, falls dies nicht
ausreichend ist, mittels Computersimulation der
Fehlerszenarios (umfassend oder mittels einer statistischen
Abtastung vom Type Monte-Carlo je nach der Anzahl von möglichen
Fehlern).
-
Zum Sichern der Übertragung des Quantisierungsindex der
besetzten Segmente kann man sich des weiteren der
verschiedenen Schutzkategorien bedienen, die von dem Kanalcodierer
22 geboten werden, insbesondere falls das
Nachbarschaftskriterium nicht auf ausreichende Weise für alle möglichen
Fehlerfälle verifiziert werden kann, die sich auf ein Bit
der Indices auswirken. Das Anordnungsmodul 46 kann somit
eine bestimmte Anzahl nx der 5 Bits des Index in die
Kategorie des minimalen Schutzes oder in die ungeschützte
Kategorie setzen, die, falls sie von einem Übertragungsfehler
betroffen sind, zu einem fehlerhaften Wort führen, das
dennoch das Nachbarschaftskriterium mit einer als
zufriedenstellend beurteilten Wahrscheinlichkeit verifiziert, und
die weiteren Bits des Index in eine stärker geschützte
Kategorie setzen. Diese Vorgehensweise wendet eine andere
Anordnung der Wörter in der Quantisierungstabelle an. Diese
Anordnung kann auch durch Simulationen optimiert werden,
falls es angestrebt ist, die Anzahl nx derjenigen Bits des
Index, die der am wenigsten geschützten Kategorie
zugeordnet sind, zu maximieren.
TABELLE II
-
Eine Möglichkeit ist es, damit zu beginnen, daß eine
Liste von Wörtern mit ns Bits mittels Zählung in Gray-
Codierung von 0 bis 2ns-1 erstellt wird, und die geordnete
Quantisierungstabelle zu erstellen, indem aus dieser Liste
diejenigen Wörter weggelassen werden, die ein Hamming-
Gewicht von np aufweisen. Bei der solcherart erhaltenen
Tabelle weisen zwei aufeinanderfolgende Wörter eine
Hamming-Distanz von np-2 auf. Falls die Indices in dieser
Tabelle eine binäre Darstellung in Gray-Codierung
aufweisen, verursacht jeglicher Fehler der Bits mit dem
geringsten Gewicht eine Variation des Index um ±1 und führt somit
zu der effektiven Ersetzung des Besetzungswortes durch ein
Wort, das in der Richtung des Schwellenwerts np-2 um die
Hamming-Distanz benachbart ist, und ein Fehler an dem i-ten
Bit mit dem geringsten Gewicht variiert auch den Index um
±1 mit einer Wahrscheinlichkeit von etwa 211. Indem die nx
Bits mit geringem Gewicht des Index in Gray-Codierung in
eine ungeschützte Kategorie gesetzt werden, führt ein
eventueller Übertragungsfehler, der eines dieser Hits betrifft,
mit einer Wahrscheinlichkeit von mindestens gleich
(1+1/2+...+1/2nx-1)/nx zu der Ersetzung des
Besetzungswortes durch ein benachbartes Wort. Diese minimale
Wahrschein
lichkeit verringert sich von 1 auf (2/nb)(1/2nb) für nx
ansteigend von 1 auf nb. Die Fehler, die die nb-nx Bits mit
hohem Stellenwert des Index betreffen, werden dann am
häufigsten korrigiert infolge des Schutzes, den ihnen der
Kanalcodierer verleiht. Der Wert von nx ist in diesem Fall
gemäß einem Kompromiß zwischen der Fehlerunempfindlichkeit
(niedrige Werte) und einem verringerten Umfang der
geschützten Kategorien (hohe Werte) gewählt.
-
Auf Höhe des Codierers werden die für die Darstellung
der Segmente möglichen binären Wörter in ansteigender
Reihenfolge in eine Suchtabelle abgespeichert. Eine
Indizierungstabelle ordnet jeder Adresse in der im Decoder
gespeicherten Quantisierungstabelle die Ordnungszahl des
Binärwortes zu, welches diese Adresse in der Suchtabelle
besitzt. Für das oben angeführte vereinfachte Beispiel ist
der Inhalt der Suchtabelle und der Indizierungstabelle in
Tabelle III (in Dezimalwerten) aufgeführt.
-
Die Quantisierung des Besetzungswortes der Segmente,
das von den np Positionen abgeleitet ist, die von dem Modul
40 für die stochastische Analyse geliefert werden, wird von
dem Quantisierungsmodul 44 in zwei Schritten durchgeführt.
Eine dichotomische Suche wird zuerst in der Suchtabelle
durchgeführt, um die Adresse des zu quantisierenden Wortes
in dieser Tabelle zu bestimmen. Der Quantisierungsindex
wird anschließend an der in der Indizierungstabelle
bestimmten Adresse erhalten und dann an den Modul 46 zum
Ordnen der Bits geliefert.
TABELLE III
-
Der Modul 44 führt des weiteren die Quantisierung der
durch den Modul 40 berechneten Verstärkungen durch. Die
Verstärkung gTP wird beispielsweise in dem Intervall
[0; 1,6], mit 5 Bits quantisiert, falls MV = 1 oder 2, und mit
6 Bits, falls MV = 3, um dem stärkeren Wahrnehmungsgewicht
dieses Parameters bei den stark stimmhaften Blöcken
Rechnung zu tragen. Bei der Codierung der den Impulsen der
stochastischen Anregung zugehörigen Verstärkungen wird der
höchste Absolutwert Gs der Verstärkungen g(1),...,g(np) mit
5 Bits quantisiert, indem beispielsweise 32
Quantisierungswerte in geometrischer Progression in dem Intervall
[0; 32767] genommen werden, und jede der relativen
Verstärkungen g(1)/Gs,...,g(np)/Gs in dem Intervall [-1; +1] mit 4
Bits, falls MV = 1, 2 oder 3, oder mit 5 Bits, falls MV = 0.
-
Die Bits zur Quantisierung von Gs werden von dem
Kanalcodierer 22 in eine geschützte Kategorie gesetzt,
ebenso wie Bits mit hohem Stellenwert des
Quantisierungsindex der relativen Verstärkungen. Die Bits zur
Quartisierung der relativen Verstärkungen werden derart angeordnet,
daß sie ihre Zuordnung zu den jeweiligen Impulsen
ermöglichen, welche zu den durch das Besetzungswort lokalisierten
Segmenten gehören. Die erfindungsgemäße segmentweise Suche
gestattet es des weiteren, auf wirksame Weise die relativen
Positionen der zu den höchsten Verstärkungswerten gehörigen
Impulse zu schützen.
-
In dem Fall, in dem np = 5 und ls = 4, sind zehn Bits pro
Unterblock erforderlich, um die relativen Positionen der
Impulse in den Segmenten zu quantisieren. Es wird der Fall
betrachtet, in dem 5 dieser Bits in eine wenig oder gar
nicht geschützte Kategorie (II) gesetzt sind und in dem die
5 weiteren in eine besser geschützte Kategorie (IB) gesetzt
sind. Die natürlichste Verteilung ist es, das Bit mit hohem
Stellenwert einer jeden relativen Position in die
geschützte Kategorie IB zu setzen, so daß die eventuellen
Übertragungsfehler eher die Bits mit hohem Stellenwert
betreffen und somit nur eine Verschiebung einer Probe für
den entsprechenden Impuls bewirken. Für die Quantisierung
der relativen Positionen ist es dennoch sinnvoll, die
Impulse in der absteigenden Reihenfolge der Absolutwerte
der dazugehörigen Verstärkungen zu betrachten und die zwei
Bits zur Quantisierung einer jeden der beiden ersten
relativen Positionen ebenso wie das Bit mit hohem Stellenwert
der dritten in die Kategorie IB zu setzen. Auf diese Weise
sind die Positionen der Impulse bevorzugt geschützt, wenn
sie hohen Verstärkungen zugehören, was die mittlere
Qualität insbesondere für die am stärksten stimmhaften
Unterblöcke verbessert.
-
Zum Wiederherstellen der Impulsanteile der Anregung
lokalisiert der Decoder 54 zuerst die Segmente mit Hilfe
des empfangenen Besetzungswortes; er ordnet daraufhin die
zugehörigen Verstärkungen zu; anschließend ordnet er die
relativen Positionen auf der Basis der Reihenfolge der Höhe
der Verstärkungen den Impulsen zu.
-
Es ist ersichtlich, daß die verschiedenen Aspekte der
vorausgehend beschriebenen Erfindung jeweils für sich
Verbesserungen zur Verfügung stellen, und daß es daher in
Betracht gezogen werden kann, diese unabhängig voneinander
anzuwenden. Ihre Kombination gestattet die Verwirklichung
eines Codierers mit insbesondere interessanten
Leistungsmerkmalen.
-
Bei dem im vorausgegangenen beschriebenen
Ausführungsbeispiel erfordert der Sprachcodierer mit 13 kbits/s in der
Größenordnung von 15 Millionen Anweisungen pro Sekunde
(Mips) in Festkommaarithmetik. Er wird also typischerweise
durch das Programmieren eines handelsüblichen
Digitalsignal-Prozessors (DSP) verwirklicht, ebenso wie der
Decoder, der nur in der Größenordnung von 5 Mips erfordert.