DE69602421T2 - Verfahren zur sprachkodierung mittels analyse durch synthese - Google Patents

Verfahren zur sprachkodierung mittels analyse durch synthese

Info

Publication number
DE69602421T2
DE69602421T2 DE69602421T DE69602421T DE69602421T2 DE 69602421 T2 DE69602421 T2 DE 69602421T2 DE 69602421 T DE69602421 T DE 69602421T DE 69602421 T DE69602421 T DE 69602421T DE 69602421 T2 DE69602421 T2 DE 69602421T2
Authority
DE
Germany
Prior art keywords
block
sub
filter
short
analysis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69602421T
Other languages
English (en)
Other versions
DE69602421D1 (de
Inventor
Michel Mauc
William Navarro
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nortel Networks France SAS
Original Assignee
Matra Nortel Communications SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matra Nortel Communications SAS filed Critical Matra Nortel Communications SAS
Publication of DE69602421D1 publication Critical patent/DE69602421D1/de
Application granted granted Critical
Publication of DE69602421T2 publication Critical patent/DE69602421T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/083Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being an excitation gain
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0003Backward prediction of gain
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0011Long term prediction filters, i.e. pitch estimation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0012Smoothing of parameters of the decoder interpolation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/03Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters
    • G10L25/24Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters the extracted parameters being the cepstrum
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/93Discriminating between voiced and unvoiced parts of speech signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Measurement Of Mechanical Vibrations Or Ultrasonic Waves (AREA)
  • Investigating Or Analysing Materials By The Use Of Chemical Reactions (AREA)

Description

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

Claims (5)

1. Verfahren zur Syntheseanalyse-Codierung eines Sprachsignals, das in aufeinanderfolgende Blöcke digitalisiert ist, die in Unterblöcke umfassend eine bestimmte Anzahl von Proben unterteilt sind, bei welchem man für jeden Block eine Analyse mittels linearer Prädiktion des Sprachsignals zur Bestimmung der Koeffizienten eines Kurzzeit-Synthesefilters (60) und eine Analyse in offener Schleife zur Bestimmung eines Grads der Stimmhaftigkeit des Blocks durchführt, und man für jeden Unterblock wenigstens eine Analyse in geschlossener Schleife zur Bestimmung einer Anregungssequenz durchführt, welche nach Behandlung durch das Kurzzeit- Synthesefilter ein für das Sprachsignal repräsentatives synthetisches Signal erzeugt, wobei jede Analyse in geschlossener Schleife die Impulsantwort eines Filters verwendet, das aus dem Kurzzeit-Synthesefilter und einem Wahrnehmungswichtungsfilter zusammengesetzt ist,
dadurch gekennzeichnet, daß man bei jeder Analyse in geschlossener Schleife die Impulsantwort verwendet, indem man sie bei einer Abbruchlänge (Lh) abbricht, welche höchstens gleich der Anzahl (ist) von Proben pro Unterblock ist und von der Energieverteilung der Antwort und vom Grad der Stimmhaftigkeit des Blocks abhängt.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Impulsantwort des zusammengesetzten Filters auf einer Gesamtlänge (pst) berechnet wird, die größer als die Zahl (lst) der Proben pro Unterblock ist, daß man eine Minimallänge L&alpha; derart bestimmt, daß die durch Abbrechen der Antwort bei L&alpha; Proben berechnete Energie der Impulsantwort mindestens gleich einem bestimmten Bruchteil (&alpha;) der auf der Gesamtlänge (pst) berechneten Energie der Impulsantwort ist, und daß die Abbruchlänge (Lh) gleich der Summe der Minimallänge L&alpha; und eines Korrekturterms (&Delta;(MV)) ist, der vom Grad der Stimmhaftigkeit des Blocks abhängt, wenn die Summe kleiner als die Zahl (ist) der Proben pro Unterblock ist.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß der Korrekturterm (&Delta;(MV)) eine mit dem Grad der Stimmhaftigkeit zunehmende Funktion ist.
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß das Wahrnehmungswichtungsfilter eine Transferfunktion mit der Form W(z) = A(z/&gamma;&sub1;)/A(z/&gamma;&sub2;) hat, worin 1/A(z) die Transferfunktion des Kurzzeit-Synthesefilters bezeichnet und &gamma;&sub1; und &gamma;&sub2; zwei Koeffizienten mit 0 < &gamma;&sub2; < &gamma;&sub1; < 1 sind.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß man die Koeffizienten des Kurzzeit-Synthesefilters durch Spektrallinien-Parameter (LSP) darstellt, dadurch, daß man die Spektrallinien-Parameter quantisiert, daß man zur Bildung des Kurzzeit-Synthesefilters, dem die auf wenigstens einen Unterblock eines Blocks bezogene Anregungssequenz zugeführt wird, eine Interpolation zwischen den auf den Block bezogenen und den auf den vorhergehenden Block bezogenen Spektrallinien-Parametern durchführt, und daß man zur Berechnung der Impulsantwort des zusammengesetzten Filters das Kurzzeit-Synthesefilter auf Grundlage der quantisierten und interpolierten Spektrallinien-Parameter berechnet, wohingegen man das Wahrnehmungswichtungsfilter auf Grundlage der interpolierten, jedoch nicht quantisierten Spektrallinien-Parameter berechnet.
DE69602421T 1995-01-06 1996-01-03 Verfahren zur sprachkodierung mittels analyse durch synthese Expired - Fee Related DE69602421T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9500135A FR2729247A1 (fr) 1995-01-06 1995-01-06 Procede de codage de parole a analyse par synthese
PCT/FR1996/000006 WO1996021220A1 (fr) 1995-01-06 1996-01-03 Procede de codage de parole a analyse par synthese

Publications (2)

Publication Number Publication Date
DE69602421D1 DE69602421D1 (de) 1999-06-17
DE69602421T2 true DE69602421T2 (de) 1999-12-23

Family

ID=9474932

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69602421T Expired - Fee Related DE69602421T2 (de) 1995-01-06 1996-01-03 Verfahren zur sprachkodierung mittels analyse durch synthese

Country Status (10)

Country Link
US (1) US5963898A (de)
EP (1) EP0801790B1 (de)
CN (1) CN1173938A (de)
AT (1) ATE180092T1 (de)
AU (1) AU697892B2 (de)
BR (1) BR9606887A (de)
CA (1) CA2209623A1 (de)
DE (1) DE69602421T2 (de)
FR (1) FR2729247A1 (de)
WO (1) WO1996021220A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3134817B2 (ja) * 1997-07-11 2001-02-13 日本電気株式会社 音声符号化復号装置
JP3998330B2 (ja) * 1998-06-08 2007-10-24 沖電気工業株式会社 符号化装置
US6192335B1 (en) * 1998-09-01 2001-02-20 Telefonaktieboiaget Lm Ericsson (Publ) Adaptive combining of multi-mode coding for voiced speech and noise-like signals
CA2252170A1 (en) 1998-10-27 2000-04-27 Bruno Bessette A method and device for high quality coding of wideband speech and audio signals
FI116992B (fi) * 1999-07-05 2006-04-28 Nokia Corp Menetelmät, järjestelmä ja laitteet audiosignaalin koodauksen ja siirron tehostamiseksi
JP3372908B2 (ja) * 1999-09-17 2003-02-04 エヌイーシーマイクロシステム株式会社 マルチパルス探索処理方法と音声符号化装置
GB2357683A (en) 1999-12-24 2001-06-27 Nokia Mobile Phones Ltd Voiced/unvoiced determination for speech coding
US6760698B2 (en) * 2000-09-15 2004-07-06 Mindspeed Technologies Inc. System for coding speech information using an adaptive codebook with enhanced variable resolution scheme
US7171355B1 (en) * 2000-10-25 2007-01-30 Broadcom Corporation Method and apparatus for one-stage and two-stage noise feedback coding of speech and audio signals
FR2820227B1 (fr) * 2001-01-30 2003-04-18 France Telecom Procede et dispositif de reduction de bruit
FI114770B (fi) * 2001-05-21 2004-12-15 Nokia Corp Matkaviestimen äänidatan kontrollointi solukkojärjestelmässä
US7110942B2 (en) * 2001-08-14 2006-09-19 Broadcom Corporation Efficient excitation quantization in a noise feedback coding system using correlation techniques
US7206740B2 (en) * 2002-01-04 2007-04-17 Broadcom Corporation Efficient excitation quantization in noise feedback coding with general noise shaping
US6751587B2 (en) 2002-01-04 2004-06-15 Broadcom Corporation Efficient excitation quantization in noise feedback coding with general noise shaping
US20030135374A1 (en) * 2002-01-16 2003-07-17 Hardwick John C. Speech synthesizer
US20040098255A1 (en) * 2002-11-14 2004-05-20 France Telecom Generalized analysis-by-synthesis speech coding method, and coder implementing such method
US8473286B2 (en) * 2004-02-26 2013-06-25 Broadcom Corporation Noise feedback coding system and method for providing generalized noise shaping within a simple filter structure
FR2888699A1 (fr) * 2005-07-13 2007-01-19 France Telecom Dispositif de codage/decodage hierachique
US8300849B2 (en) * 2007-11-06 2012-10-30 Microsoft Corporation Perceptually weighted digital audio level compression
US9626982B2 (en) * 2011-02-15 2017-04-18 Voiceage Corporation Device and method for quantizing the gains of the adaptive and fixed contributions of the excitation in a CELP codec
PL2904612T3 (pl) * 2012-10-05 2019-05-31 Fraunhofer Ges Forschung Urządzenie do kodowania sygnału mowy wykorzystujące ACELP w dziedzinie autokorelacji
US9336789B2 (en) * 2013-02-21 2016-05-10 Qualcomm Incorporated Systems and methods for determining an interpolation factor set for synthesizing a speech signal
CN105096958B (zh) 2014-04-29 2017-04-12 华为技术有限公司 音频编码方法及相关装置
EP3483884A1 (de) * 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Signalfiltrierung
EP3483879A1 (de) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Analyse-/synthese-fensterfunktion für modulierte geläppte transformation

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8302985A (nl) * 1983-08-26 1985-03-18 Philips Nv Multipulse excitatie lineair predictieve spraakcodeerder.
CA1223365A (en) * 1984-02-02 1987-06-23 Shigeru Ono Method and apparatus for speech coding
NL8500843A (nl) * 1985-03-22 1986-10-16 Koninkl Philips Electronics Nv Multipuls-excitatie lineair-predictieve spraakcoder.
US4802171A (en) * 1987-06-04 1989-01-31 Motorola, Inc. Method for error correction in digitally encoded speech
US4831624A (en) * 1987-06-04 1989-05-16 Motorola, Inc. Error detection method for sub-band coding
CA1337217C (en) * 1987-08-28 1995-10-03 Daniel Kenneth Freeman Speech coding
US5293448A (en) * 1989-10-02 1994-03-08 Nippon Telegraph And Telephone Corporation Speech analysis-synthesis method and apparatus therefor
SE463691B (sv) * 1989-05-11 1991-01-07 Ericsson Telefon Ab L M Foerfarande att utplacera excitationspulser foer en lineaerprediktiv kodare (lpc) som arbetar enligt multipulsprincipen
US5060269A (en) * 1989-05-18 1991-10-22 General Electric Company Hybrid switched multi-pulse/stochastic speech coding technique
JP2940005B2 (ja) * 1989-07-20 1999-08-25 日本電気株式会社 音声符号化装置
US5097508A (en) * 1989-08-31 1992-03-17 Codex Corporation Digital speech coder having improved long term lag parameter determination
EP0450064B2 (de) * 1989-09-01 2006-08-09 Motorola, Inc. Numerischer sprachkodierer mit verbesserter langzeitvorhersage durch subabtastauflösung
JP3158434B2 (ja) * 1989-10-17 2001-04-23 モトローラ・インコーポレーテッド 低減されたスペクトルひずみを有するポストフィルタを備えたデジタル音声デコーダ
US5073940A (en) * 1989-11-24 1991-12-17 General Electric Company Method for protecting multi-pulse coders from fading and random pattern bit errors
US5097507A (en) * 1989-12-22 1992-03-17 General Electric Company Fading bit error protection for digital cellular multi-pulse speech coder
US5265219A (en) * 1990-06-07 1993-11-23 Motorola, Inc. Speech encoder using a soft interpolation decision for spectral parameters
FI98104C (fi) * 1991-05-20 1997-04-10 Nokia Mobile Phones Ltd Menetelmä herätevektorin generoimiseksi ja digitaalinen puhekooderi
US5253269A (en) * 1991-09-05 1993-10-12 Motorola, Inc. Delta-coded lag information for use in a speech coder
EP1130576A1 (de) * 1991-09-05 2001-09-05 Motorola, Inc. Fehlerschutz für multimodalen Sprachkodierer
TW224191B (de) * 1992-01-28 1994-05-21 Qualcomm Inc
US5765127A (en) * 1992-03-18 1998-06-09 Sony Corp High efficiency encoding method
US5495555A (en) * 1992-06-01 1996-02-27 Hughes Aircraft Company High quality low bit rate celp-based speech codec
US5317595A (en) * 1992-06-30 1994-05-31 Nokia Mobile Phones Ltd. Rapidly adaptable channel equalizer
JP3343965B2 (ja) * 1992-10-31 2002-11-11 ソニー株式会社 音声符号化方法及び復号化方法
IT1264766B1 (it) * 1993-04-09 1996-10-04 Sip Codificatore della voce utilizzante tecniche di analisi con un'eccitazione a impulsi.
CA2137756C (en) * 1993-12-10 2000-02-01 Kazunori Ozawa Voice coder and a method for searching codebooks
FR2720849B1 (fr) * 1994-06-03 1996-08-14 Matra Communication Procédé et dispositif de prétraitement d'un signal acoustique en amont d'un codeur de parole.
FR2720850B1 (fr) * 1994-06-03 1996-08-14 Matra Communication Procédé de codage de parole à prédiction linéaire.
CA2154911C (en) * 1994-08-02 2001-01-02 Kazunori Ozawa Speech coding device
US5699477A (en) * 1994-11-09 1997-12-16 Texas Instruments Incorporated Mixed excitation linear prediction with fractional pitch
US5751903A (en) * 1994-12-19 1998-05-12 Hughes Electronics Low rate multi-mode CELP codec that encodes line SPECTRAL frequencies utilizing an offset
FR2729245B1 (fr) * 1995-01-06 1997-04-11 Lamblin Claude Procede de codage de parole a prediction lineaire et excitation par codes algebriques
US5732389A (en) * 1995-06-07 1998-03-24 Lucent Technologies Inc. Voiced/unvoiced classification of speech for excitation codebook selection in celp speech decoding during frame erasures
JP3680380B2 (ja) * 1995-10-26 2005-08-10 ソニー株式会社 音声符号化方法及び装置
FR2742568B1 (fr) * 1995-12-15 1998-02-13 Catherine Quinquis Procede d'analyse par prediction lineaire d'un signal audiofrequence, et procedes de codage et de decodage d'un signal audiofrequence en comportant application
US5799271A (en) * 1996-06-24 1998-08-25 Electronics And Telecommunications Research Institute Method for reducing pitch search time for vocoder

Also Published As

Publication number Publication date
US5963898A (en) 1999-10-05
EP0801790B1 (de) 1999-05-12
DE69602421D1 (de) 1999-06-17
CA2209623A1 (en) 1996-07-11
FR2729247A1 (fr) 1996-07-12
WO1996021220A1 (fr) 1996-07-11
AU4490396A (en) 1996-07-24
ATE180092T1 (de) 1999-05-15
EP0801790A1 (de) 1997-10-22
BR9606887A (pt) 1997-10-28
CN1173938A (zh) 1998-02-18
FR2729247B1 (de) 1997-03-07
AU697892B2 (en) 1998-10-22

Similar Documents

Publication Publication Date Title
DE69602421T2 (de) Verfahren zur sprachkodierung mittels analyse durch synthese
DE69602822T2 (de) Verfahren zur sprachkodierung mittels analyse durch synthese
DE69603755T2 (de) Sprachkodierung mittels Analyse durch Synthese
DE69522979T2 (de) Erzeugung von linearen Prädiktionskoeffizienten bei Ausfall von Datenrahmen oder Verlust von Datenpaketen
DE69604729T2 (de) Verfahren zur sprachkodierung mittels linearer prädiktion und anregung durch algebraische kodes
DE69609099T2 (de) Verfahren zur Modifikation von LPC-Koeffizienten von akustischen Signalen
DE69132013T2 (de) Verfahren für sprachquantisierung und fehlerkorrektur
DE69608947T2 (de) Verfahren zur Analyse eines Audiofrequenzsignals durch lineare Prädiktion, und Anwendung auf ein Verfahren zur Kodierung und Dekodierung eines Audiofrequenzsignals
DE69604526T2 (de) Verfahren zur Anpassung des Rauschmaskierungspegels in einem Analyse-durch-Synthese-Sprachkodierer mit einem wahrnehmunggebundenen Kurzzeitfilter
DE60006271T2 (de) Celp sprachkodierung mit variabler bitrate mittels phonetischer klassifizierung
DE69518452T2 (de) Verfahren für die Transformationskodierung akustischer Signale
DE69531642T2 (de) Synthese eines Anregungssignals bei Ausfall von Datenrahmen oder Verlust von Datenpaketen
DE69529356T2 (de) Wellenforminterpolation mittels Zerlegung in Rauschen und periodische Signalanteile
DE4492048C2 (de) Vektorquantisierungs-Verfahren
DE69227401T2 (de) Verfahren zum Kodieren und Dekodieren von Sprachsignalen
DE69322313T2 (de) C.E.L.P. - Vocoder
DE3874427T2 (de) Linearer praediktionsvocoder mit code-anregung.
DE3853916T2 (de) Digitaler-sprachkodierer mit verbesserter vertoranregungsquelle.
DE69023402T2 (de) Verfahren zur Sprachkodierung und -dekodierung.
DE69613360T2 (de) Linear-prädiktiver analyse-durch-synthese sprachkodierer
DE602004006211T2 (de) Verfahren zur Maskierung von Paketverlusten und/oder Rahmenausfall in einem Kommunikationssystem
DE69232892T2 (de) Sprachkodierungssystem
DE69815650T2 (de) Sprachkodierer
DE69029232T2 (de) System und Methode zur Sprachkodierung
DE69523498T2 (de) Verminderung der Rechenkomplexität bei Ausfall von Datenrahmen oder Verlust von Datenpaketen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee