PatentDe  


Dokumentenidentifikation DE69603755T2 06.07.2000
EP-Veröffentlichungsnummer 0721180
Titel Sprachkodierung mittels Analyse durch Synthese
Anmelder Matra Nortel Communications, Quimper, FR
Erfinder Navarro, William, F-78140 Velizy Villacoublay, FR;
Mauc, Michel, F-91310 Leuville sur Orge, FR
Vertreter WINTER, BRANDL, FÜRNISS, HÜBNER, RÖSS, KAISER, POLTE, Partnerschaft, 85354 Freising
DE-Aktenzeichen 69603755
Vertragsstaaten AT, BE, CH, DE, DK, ES, GB, GR, IE, IT, LI, LU, MC, NL, PT, SE
Sprache des Dokument Fr
EP-Anmeldetag 05.01.1996
EP-Aktenzeichen 964000285
EP-Offenlegungsdatum 10.07.1996
EP date of grant 18.08.1999
Veröffentlichungstag im Patentblatt 06.07.2000
IPC-Hauptklasse G10L 19/00

Beschreibung[de]

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 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 Verzeichnis 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 MPLPC-Codierer. Beispiele für MPLPC- Codierer sind in den europäischen Patentanmeldungen 0 397 628 und 0 195 487 beschrieben.

Eine Aufgabe der vorliegenden Erfindung ist es, einen guten Kompromiß zwischen der Qualität der Codierung und der Komplexität der Suche nach der stochastischen Anregung zu erzielen und gleichzeitig eine gute Robustheit gegen Übertragungsfehler zu erzielen.

Die Erfindung schlägt daher ein Verfahren zur Syntheseanalyse-Codierung eines Sprachsignals vor, das in aufeinanderfolgende Blöcke digitalisiert ist, die in Unterblöcke von ist Proben unterteilt sind, bei dem für jeden Block eine Analyse mittels linearer Prädiktion durchgeführt wird, um die Koeffizienten eines Kurzzeitsynthesefilters zu bestimmen, und für jeden Block eine Anregungssequenz bestimmt wird, welche nach Behandlung durch das Kurzzeitsynthesefilter ein für das Sprachsignal repräsentatives synthetisches Signal erzeugt. Die Anregungssequenz weist eine aus mehreren Impulsen bestehende stochastische Anregung auf, deren jeweilige Positionen im Unterblock sowie jeweils zugeordnete Verstärkungen berechnet werden. Jeder Unterblock wird in ns Segmente unterteilt, wobei ns eine Zahl ist, die mindestens gleich der Anzahl np von Impulsen infolge von stochastischer Anregung ist. Die Positionen der Impulse der stochastischen Anregung relativ zu einem Unterblock werden aufeinanderfolgend bestimmt: man sucht den ersten Impuls an einer beliebigen Position des Unterblocks, und die darauffolgenden Positionen unter Ausschluß eines jeden Segments, dem ein Impuls zugehört, dessen Position vorausgehend bestimmt worden ist. Die Ordnungsnummern derjenigen Segmente, welche von einem Impuls der stochastischen Anregung besetzt sind, werden auf eine andere Weise als die relativen Positionen der Impulse in den besetzten Segmenten quantisiert.

Somit wird die Anzahl von Impulpositionen, die im Verlauf der Suche nach der stochastischen Anregung zu bewerten sind, verringert. Die Suche nach der Mehrimpulsanregung ist somit vereinfacht. Diese Vereinfachung geht nicht einher mit einer merklichen Verringerung der Qualität der Codierung wie bei den sogenannten RPE-LPC-Codierern, bei denen die Impulse gleichmäßig beabstandet sind.

Die segmentweise Suche der Impulse hat des weiteren den Vorteil, daß sie eine gute Robustheit gegen Übertragungsfehler gestattet, insbesondere aufgrund des Umstands, daß die Ordnungsnummern der von einem Impuls der stochastischen Anregung besetzten Segmente und die relativen Positionen der Impulse in dem besetzten Segment auf unterschiedliche Weise quantisiert werden.

Bevorzugt bestimmt man für jeden Unterblock eine Anregungssequenz mit nc Anteilen, die jeweils einer jeweiligen Verstärkung zugeordnet sind, derart, daß die Anregungssequenz nach Behandlung durch das Kurzzeitsysynthesefilter ein für das Sprachsignal repräsentatives synthetisches Signal erzeugt, wobei die nc Anteile zumindest die np Impulsanteile der stochastischen Anregung aufweisen, und wobei die nc Anteile der Anregungssequenz und die zugeordneten Verstärkungen mittels eines iterativen Vorgangs bestimmt werden, bei dem die Iteration n (0 ≤ n < nc) die Schritte aufweist:

- die Bestimmung des Anteils n, der die Größe (Fp·en-1T)²/(Fp·FpT) maximiert, wobei Fp einen Zeilenvektor mit ist Komponenten bezeichnet, die gleich den Faltungsprodukten aus einem möglichen Wert des Anteils n und der Impulsantwort eines aus dem Kurzzeitsynthesefilter und einem Wahrnehmungswichtungsfilter zusammengesetzten Filters sind, und en-1 einen Zielvektor bezeichnet, der bei der Iteration n-1 bestimmt wird, wenn n ≥ 1 ist und e-1 = X ein anfänglicher Zielvektor ist; und

- die Berechnung von n+1 Verstärkungen, die einen Zeilenvektor gn = (gn(0), ..., gn(n)) bilden, durch Lösen des linearen Systems gn·Bn = bn, bei dem Bn eine symmetrische Matrix mit n+1 Zeilen und n+1 Spalten ist, deren Komponente Bn(i,j) (0 ≤ i, j ≤ n) gleich dem Skalarprodukt Fp(i)·Fp(j)T ist, wobei Fp(i) und Fp(j) jeweils die Zeilenvektoren bezeichnen, die gleich den Faltungsprodukten aus den vorausgehend bestimmten Anteilen i und j und der Impulsantwort des zusammengesetzten Filters sind, und bn ein Zeilenvektor mit n+1 Komponenten bn(i) (0 ≤ i ≤ n) ist, die jeweils gleich den Skalarprodukten aus den Vektoren Fp(i) und dem anfänglichen Zielvektor X sind,

wobei die den nc Anteilen der Anregungssequenz zugeordneten nc Verstärkungen diejenigen sind, die bei der Iteration nc-1 berechnet wurden. Bei jeder Iteration n (0 ≤ n < nc) werden die Zeilen n von drei Matrizen L, R und K mit nc Zeilen und nc Spalten wie Bn = Ln·RnT und Ln = Rn·Kn berechnet, wobei Ln, Rn und Kn Matrizen mit n+1 Zeilen und n+1 Spalten bezeichnen, die jeweils den n+1 ersten Zeilen bzw. den n+1 ersten Spalten der Matrizen L, R und K entsprechen, wobei die Matrizen L und R absteigend dreiecksförmig sind, die Matrix K diagonal ist, und die Matrix L auf ihrer Hauptdiagonale nur Einsen aufweist, die Zeile n der zur Matrix L reziproken Matrix L&supmin;¹ berechnet wird, und die n+1 Verstärkungen gemäß der Beziehung gn = bn·Kn ·(Ln&supmin;¹)T·Ln&supmin;¹ berechnet werden, wobei Ln&supmin;¹ die Matrix mit n+1 Zeilen und n+1 Spalten bezeichnet, die jeweils den n+1 ersten Zeilen bzw. den n+1 ersten Spalten der reziproken Matrix L&supmin;¹ entsprechen.

Diese Art der Suche nach der stochastischen Anregung ist unter anderem dann vorteilhaft anwendbar, wenn man die oben dargelegte segmentweise Suche nicht anwendet, und ist darüber hinaus nicht ausschließlich auf MPLPC-Codierer anwendbar. Sie läßt sich insbesondere auf die sogenannten VSELP-Codierer anwenden, bei denen die Anteile der stochastischen Anregung in einem vorgegebenen Verzeichnis ausgewählte Vektoren sind (s. I. Gerson und M. Jasiuk: "Vector Sum Excited Linear Preduction (VSELP) Speech Coding at 8 kb/s", Proc. Int. Conf. on Acoustics, Speech and Signal Processing, Albuquerque 1990, Vol. 1, Seiten 461- 464).

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 lst Proben unterteilt sind. Ein Block von 20 ms weist typischerweise nst = 4 Unterblöcke von lst = 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 Sprachsignals 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) konvertiert. 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-Para meter, 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ß:

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 Interpolation wird an dem ersten Unterblock eines jeden Blocks des Signals durchgeführt. Beispielsweise falls LSPt und LSPt-1 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-Para metern 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 seiner Impulsantwort h = (h(0), h(1), ..., h(lst-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.

TABELLE I

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.

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är ker 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:

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 s 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 Arbeits gä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 beizubehalten, bei denen die Prädiktionsverstärkung relativ hoch ist (Fig. 4), daraufhin 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 max 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 > max. 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äß:

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 S2 liegt typischerweise zwischen 5 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 Dif ferenzindex 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 Wiedergabequalitä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:

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 50 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:

Bei dieser dritten Variante führt die Bestimmung 158 des Stimmhaftigkeitsmodus dazu, daß der Grad der Stimmhaftigkeit 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 lst = 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:

Die Komponenten h(i) der Impulsantwort und die abgeschnittenen Energien Eh(i) können durch Filtern eines einheitlichen Impulses mittels eines Filters mit der Transferfunktion W(z)/A(z) mit Anfangszuständen Null, oder auch durch Rekursion erhalten werden:

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 140. 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 Lx derart, daß die Energie Eh(Lα-1) der abgeschnittenen Impulsantwort mit Lx 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:

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; ≤ y&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:

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 Sprachsignals 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 dem die Anteile 0 bis n des gewichteten synthetischen Signals multipliziert mit ihren jeweiligen Verstärkungen abgezogen wurden:

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. on 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&supmin;¹ 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 erden 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:

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:

L(n,j) = R(n,j) · K(j)

und für j = n:

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:

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:

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äß:

und gn(i') = gn-1(i')+L&supmin;¹(n,i')·gn(n) für 0 ≤ i' < n. Die Berechnung 214 ist in Fig. 11 dargestellt. Zuerst wird die Komponente b(n) des Vektors b berechnet:

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 (14 V = 1, 2 oder 3) oder 860 160 betragen, falls np = 6(MV = 0), anstelle von ist!/[np!(lst- np)!] = 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 lst = 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 hat, 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):

TABELLE II

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 Typ 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.

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 21-i. 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 Bits 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 Wahrscheinlichkeit verringert sich von 1 auf (2/nb)(1-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 Quantisierung 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.


Anspruch[de]

1. Verfahren zur Syntheseanalyse-Codierung eines Sprachsignals, das in aufeinanderfolgende Blöcke digitalisiert ist, die in Unterblöcke von ist Proben unterteilt sind, bei dem für jeden Block eine Analyse mittels linearer Prädiktion durchgeführt wird, um die Koeffizienten eines Kurzzeitsynthesefilters (60) zu bestimmen, für jeden Block eine Anregungssequenz bestimmt wird, welche nach Behandlung durch das Kurzzeitsynthesefilter ein für das Sprachsignal repräsentatives synthetisches Signal erzeugt, wobei die Anregungssequenz eine aus mehreren Impulsen bestehende stochastische Anregung aufweist, deren jeweilige Positionen (p(n)) im Unterblock sowie jeweils zugeordnete Verstärkungen (g(n)) berechnet werden, wobei die Positionen (p(n)) der Impulse der stochastischen Anregung relativ zu einem Unterblock aufeinanderfolgend bestimmt werden, jeder Unterblock in ns Segmente unterteilt wird, und der erste Impuls an einer beliebigen Position des Unterblocks gesucht wird, dadurch gekennzeichnet, daß ns eine Zahl ist, die mindestens gleich der Anzahl np von Impulsen infolge von stochastischer Anregung ist; daß die darauffolgenden Positionen unter Ausschluß eines jeden Segments gesucht werden, dem ein Impuls zugehört, dessen Position vorausgehend bestimmt worden ist; sowie daß die Ordnungsnummern derjenigen Segmente, welche von einem Impuls der stochastischen Anregung besetzt sind, und die relativen Positionen der Impulse in den besetzten Segmenten auf unterschiedliche Weise quantisiert werden.

2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Besetzung der Segmente durch ein Wort mit ns Bits dargestellt wird, bei dem die Einerbits diejenigen sind, welche die gleiche Ordnungsnummer wie die besetzten Segmente aufweisen, wobei die möglichen Besetzungswörter in eine mittels Indices von nb Bits indizierte Quantisierungstabelle eingeordnet sind, wobei 2nb-1 < ns!/[np!(ns-np)!] ≤ 2nb ist, derart, daß zwei Wörter, deren jeweiliger Index sich in binärer Darstellung durch ein einziges Bit unterscheidet, gemäß einem vorherbestimmten Kriterium benachbart sind; sowie daß für jeden Unterblock der Index in der Quantisierungstabelle des entsprechenden Besetzungswortes ausgegeben wird, welches den np Impulsen der stochastischen Anregung entspricht.

3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Besetzung der Segmente durch ein Wort mit ns Bits dargestellt wird, bei dem die Einerbits diejenigen sind, welche die gleiche Ordnungsnummer wie die besetzten Segmente aufweisen, wobei die möglichen Besetzungswörter in eine mittels Indices von nb Bits indizierte Quantisierungstabelle eingeordnet sind, wobei 2nb-1 < ns!/[np!(ns-np)!] ≤ 2nb ist, derart, daß zwei Wörter, deren jeweiliger Index sich in binärer Darstellung durch ein einziges Bit unterscheidet, welches nx bestimmten Rangbits angehört, gemäß einem vorherbestimmten Kriterium benachbart sind; sowie daß für jeden Unterblock der Index in der Quantisierungstabelle des entsprechenden Besetzungswortes ausgegeben wird, welches den np Impulsen der stochastischen Anregung entspricht, wobei die nb-nx Bits des Index anders als die bestimmten nx Rangbits selektiv gegen Übertragungsfehler geschützt werden.

4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, daß eine Analyse in offener Schleife des Sprachsignals durchgeführt wird, um die stimmhaften Blöcke des Signals zu entdecken; daß für die Unterblöcke der stimmhaften Blöcke eine erste Anzahl von Impulsen durch stochastische Anregung und eine erste Quantisierungstabelle der Besetzungswörter der Segmente vorgesehen werden; sowie daß für die Unterblöcke der nichtstimmhaften Blöcke eine zweite Anzahl von Impulsen durch stochastische Anregung und eine zweite Quantisierungstabelle der Besetzungswörter der Segmente vorgesehen werden.

5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Quantisierungsbits der relativen Positionen der np Impulse in Abhängigkeit von der Größe der den Impulsen zugeordneten Verstärkungen in eine erste, gegen Übertragungsfehler geschützte Gruppe und eine zweite, minder geschützte Gruppe aufgeteilt werden.

6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß zumindest ein Impuls mit einer hinsichtlich ihres Absolutwertes großen relativen Verstärkung eher Bits zur Quantisierung seiner relativen Position in der ersten Gruppe aufweist als Impulse mit einer hinsichtlich des Absolutwertes geringeren relativen Verstärkung.

7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß für jeden Unterblock eine Anregungssequenz mit nc Anteilen bestimmt wird, die jeweils einer jeweiligen Verstärkung (gp, g(n)) zugeordnet sind, derart, daß die Anregungssequenz nach Behandlung durch das Kurzzeitsynthesefilter ein für das Sprachsignal repräsentatives synthetisches Signal erzeugt, wobei die nc Anteile zumindest die np Impulsanteile der stochastischen Anregung aufweisen; daß die nc Anteile der Anregungssequenz und die zugeordneten Verstärkungen mittels eines iterativen Vorgangs bestimmt werden, bei dem die Iteration n (0 ≤ n < nc) die Schritte aufweist:

- die Bestimmung des Anteils n, der die Größe (Fp·en-1T)²/(Fp·FpT) maximiert, wobei Fp einen Zeilenvektor mit ist Komponenten bezeichnet, die gleich den Faltungsprodukten aus einem möglichen Wert des Anteils n und der Impulsantwort eines aus dem Kurzzeitsynthesefilter und einem Wahrnehmungswichtungsfilter zusammengesetzten Filters sind, und en-1 einen Zielvektor bezeichnet, der bei der Iteration n-1 bestimmt wird, wenn n ≥ 1 ist und e&submin;&sub1; = X ein anfänglicher Zielvektor ist; und

- die Berechnung von n+1 Verstärkungen, die einen Zeilenvektor gn = (gn(0), ..., gn(n)) bilden, durch Lösen des linearen Systems gn·Bn = bn, bei dem Bn eine symmetrische Matrix mit n+1 Zeilen und n+1 Spalten ist, deren Komponente Bn(i,j) (0 ≤ i, j ≤ n) gleich dem Skalarprodukt Fp(i) Fp(j)T ist, wobei Fp(i) und Fp(j) jeweils die Zeilenvektoren bezeichnen, die gleich den Faltungsprodukten aus den vorausgehend bestimmten Anteilen i und j und der Impulsantwort des zusammengesetzten Filters sind, und bn ein Zeilenvektor mit n+1 Komponenten bn(i) (0 ≤ i ≤ n) ist, die jeweils gleich den Skalarprodukten aus den Vektoren Fp(i) und dem anfänglichen Zielvektor X sind, wobei die den nc Anteilen der Anregungssequenz zugeordneten nc Verstärkungen diejenigen sind, die bei der Iteration nc-1 berechnet wurden;

sowie daß bei jeder Iteration n (0 ≤ n < nc) die Zeilen n von drei Matrizen L, R und K mit nc Zeilen und nc Spalten wie Bn = Ln·RnT und Ln = Rn·Kn berechnet werden, wobei Ln, Rn und Kn Matrizen mit n+1 Zeilen und n+1 Spalten bezeichnen, die jeweils den n+1 ersten Zeilen bzw. den n+1 ersten Spalten der Matrizen L, R und K entsprechen, wobei die Matrizen L und R absteigend dreiecksförmig sind, die Matrix K diagonal ist, und die Matrix L auf ihrer Hauptdiagonale nur Einsen aufweist, die Zeile n der zur Matrix L reziproken Matrix L&supmin;¹ berechnet wird, und die n+1 Verstärkungen gemäß der Beziehung gn = bn·Kn· (Ln&supmin;¹)T·Ln&supmin;¹ berechnet werden, wobei Ln&supmin;¹ die Matrix mit n+1 Zeilen und n+1 Spalten bezeichnet, die jeweils den n+1 ersten Zeilen bzw. den n+1 ersten Spalten der reziproken Matrix L&supmin;¹ entsprechen.

8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß bei jeder Iteration n (0 ≤ n < nc) aufeinanderfolgend die jeweils in der Zeile n und in der Spalte j der Matrizen R bzw. L befindlichen Ausdrücke R(n, j) und L(n, j) für j aufsteigend von 0 bis n-1 berechnet werden, gemäß:

R(n, j) = B(m, j) - L(n, k) · R(j, k)

L(n, j) = R(n, j)·K(j)

und daraufhin der in der Zeile n und in der Spalte n der Matrix K befindliche Ausdruck K(n) berechnet wird, gemäß:

9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß bei jeder Iteration n (0 ≤ n < nc) aufeinanderfolgend die jeweils in der Zeile n und den Spalten j' der reziproken Matrix L&supmin;¹ befindlichen Ausdrücke L&supmin;¹(n, j') für j' absteigend von n-1 bis 0 berechnet werden, gemäß

10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß bei jeder Iteration n (0 ≤ n < nc) die dem Anteil n zugeordnete Verstärkung gn(n) berechnet wird, gemäß:

und daraufhin die den Anteilen i' zugeordneten Verstärkungen für i' zwischen 0 und n-1 berechnet werden, gemäß:

gn(i') = gn-1(i') + L&supmin;¹(n, i')·gn(n)







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

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

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