DE69928288T2 - Kodierung periodischer sprache - Google Patents

Kodierung periodischer sprache Download PDF

Info

Publication number
DE69928288T2
DE69928288T2 DE69928288T DE69928288T DE69928288T2 DE 69928288 T2 DE69928288 T2 DE 69928288T2 DE 69928288 T DE69928288 T DE 69928288T DE 69928288 T DE69928288 T DE 69928288T DE 69928288 T2 DE69928288 T2 DE 69928288T2
Authority
DE
Germany
Prior art keywords
prototype
previous
reconstructed
current
mentioned
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 - Lifetime
Application number
DE69928288T
Other languages
English (en)
Other versions
DE69928288D1 (de
Inventor
Sharath Manjunath
William Gardner
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of DE69928288D1 publication Critical patent/DE69928288D1/de
Application granted granted Critical
Publication of DE69928288T2 publication Critical patent/DE69928288T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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/097Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters using prototype waveform decomposition or prototype waveform interpolative [PWI] coders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • G10L19/125Pitch excitation, e.g. pitch synchronous innovation CELP [PSI-CELP]
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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/27Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft die Codierung von Sprachsignalen. Insbesondere betrifft die vorliegende Erfindung die Codierung von quasiperiodischen Sprachsignalen durch Quantisierung von nun einem prototypischen Teil des Signals.
  • II. Beschreibung verwandter Techniken
  • Viele Kommunikationssysteme übertragen heutzutage Sprache als ein digitales Signal, insbesondere weit reichende und digitale Funktelefonanwendungen. Die Performance von diesen Systemen hängt teilweise von der genauen Repräsentierung des Sprachsignals mit einer minimalen Anzahl von Bits ab. Die Sendung von Sprache einfach durch Sampling bzw. Abtasten und Digitalisierung benötigt eine Datenrate von der Größenordnung von 64 Kilobits pro Sekunde (kbps), um die Sprachqualität von einem konventionellen analogen Telefon zu erreichen. Jedoch sind Codiertechniken verfügbar, welche die Datenrate, welche zur zufriedenstellenden Sprachwiedergabe benötigt wird, signifikant reduzieren.
  • Der Ausdruck „Vocoder" bzw. „Sprachcodierer" bezeichnet typischerweise Vorrichtungen, welche stimmhafte Sprache durch Extrahierung von Parametern basierend auf einem Modell der menschlichen Spracherzeugung komprimieren. Vocoder weisen einen Codierer und einen Decodierer auf. Der Codierer analysiert die ankommende Sprache und extrahiert die relevanten Parameter. Der Decodierer synthetisiert die Sprache unter Verwendung der Parameter, welche von dem Codierer über einen Übertragungskanal empfangen wurde. Das Sprachsignal wird oftmals in Datenrahmen und Blöcke geteilt, welche durch den Vocoder verarbeitet werden.
  • Vocoder, welche um Codierschemata mit linear auf Voraussagen basierenden Zeitdomänen herum gebaut sind, übertreffen in der Anzahl alle anderen Typen von Codierern. Diese Techniken extrahieren korrelierte Elemente von dem Sprachsignal und codieren nur die unkorrelierten Elemente. Der einfache lineare Voraussagefilter (Linear Predictive Filter) sagt den vorliegenden Sample als eine Linearkombination von vorhergehenden Samples voraus. Ein Beispiel für einen Codieralgorithmus von dieser speziellen Klasse ist in der Veröffentlichung „A 4.8 kbps Code Excited Linear Predictive Coder", von Thomas E. Tremain et. al, Proceedings of the Mobile Satellite Conference, 1988, beschrieben.
  • Die Codierschemata komprimieren die digitalisierten Sprachsignale in ein Signal mit einer geringen Bitrate, durch Entfernung von all den natürlichen Redundanzen (das heißt korrelierten Elementen), welche der Sprache inne wohnen. Sprache zeigt typischer Weise kurzzeitige Redundanzen, welche von der mechanischen Wirkung der Lippen und der Zunge resultieren und langzeitige Redundanzen, welche von der Vibration der Stimmbänder resultieren. Lineare Vorhersageschemata modellieren diese Funktionen als Filter, entfernen die Redundanzen, und modellieren dann das resultierende Restsignal als ein weißes gaußsches Rauschen. Lineare Vorhersagecodierer erreichen deshalb eine reduzierte Bitrate durch Sendung von Filterkoeffizienten und quantisiertem Rauschen, anstatt eines Sprachsignals mit einer vollen Bandbreite.
  • Jedoch überschreiten sogar diese reduzierten Bitraten häufig die verfügbare Bandbreite, wenn das Sprachsignal entweder eine lange Strecke propagieren muss (zum Beispiel Boden zu Satellit) oder mit vielen anderen Signalen in einem überfüllten Kanal koexistieren muss. Es gibt deshalb einen Bedarf für ein verbessertes Codierschema, welches eine geringere Bitrate als lineare Vorhersageschemata erreicht.
  • EP-A-0 666 557 (AT & T) offenbart die Codierung von stimmhafren und nicht stimmhaften Rahmen mit dem gleichen Schema. Die Eingangssprache wird mit LPC Analyse gefiltert, und eine Wellenform eines Restprototyps wird bei gleichmäßigen Zeitintervallen extrahiert. In einer Fourierreihendomäne werden die Prototypwellenformen in eine sich glatt entwickelnde Wellenform (SEW = smoothly evolving waveform) und eine sich schnell entwickelnde Wellenform (REW = rapidly evolving waveform) zerlegt.
  • Der Artikel „A mixed prototype waveform/CELP coder for sub 3 kb/s" (Burnett et. al, ICASSP 1993) offenbart einen Codierer für eine Prototypwellenform für mit Sprache versehene Rahmen, wobei die Ableitung des Prototyps in der Sprachdomäne ausgeführt wird. Ein Eingangssprachrahmen wird herauf gesampelt, ein Prototyp wird extrahiert, und der Prototyp mit LPC Analyse gefiltert, um eine Anregung eines Prototyps zu erhalten, welche verschieden quantisiert ist in einem impulsiven Quantisierer.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung ist ein neues und verbessertes Verfahren und eine Vorrichtung zum Codieren eines quasi-periodischen Sprachsignals. Das Sprachsignal wird durch ein Restsignal repräsentiert, welches durch Filterung des Sprachsignals mit einem linearen Voraussagen-Codier-Analyse (LPC = Linear Predictive Coding) Filter erzeugt wurde. Das Restsignal wird durch Extrahierung einer Prototypperiode von einem laufenden Rahmen des Restsignals extrahiert. Ein erster Satz von Parametern wird berechnet, welcher beschreibt, wie eine vorhergehende Prototypperiode modifiziert wird, um die laufende Prototypperiode zu approximieren. Einer oder mehrere Codevektoren werden ausgewählt, welche, wenn sie summiert werden, die Differenz zwischen der laufenden Prototypperiode und der modifizierten vorhergehenden Prototypperiode approximieren. Ein zweiter Satz von Parametern beschreibt die ausgewählten Codevektoren. Der Decodierer synthetisiert ein Ausgangssprachsignal durch Rekonstruktion einer laufenden Prototypperiode basierend auf dem ersten und zweiten Satz von Parametern. Das Restsignal wird dann über den Bereich zwischen der laufenden rekonstruierten Prototypperiode und der vorhergehenden rekonstruierten Prototypperiode interpoliert. Der Decodierer synthetisiert Ausgangssprache basierend auf dem interpolierten Restsignal.
  • Ein Merkmal der vorliegenden Erfindung ist, dass Prototypperioden verwendet werden, um das Sprachsignal zu repräsentieren und zu rekonstruieren. Die Codierung der Prototypperiode anstatt des gesamten Sprachsignals reduziert die benötigte Bitrate, was eine höher Kapazität, eine größere Reichweite und geringe Leistungsanforderungen ergibt.
  • Ein weiteres Merkmal der vorliegenden Erfindung ist, dass eine vorhergehende Prototypperiode als ein Prediktor der laufenden Prototypperiode verwendet wird. Die Differenz der derzeitigen Prototypperiode und einer optimalen rotierten und skalierten vorhergehenden Prototypperiode wird codiert und gesendet, was die benötigte Bitrate weiter reduziert.
  • Ein weiteres Merkmal der vorliegenden Erfindung ist, dass das Restsignal bei dem Decodierer rekonstruiert wird durch Interpolation zwischen aufeinanderfolgenden rekonstruierten Prototypperioden, basierend auf einem gewichteten Durchschnitt der aufeinanderfolgenden Prototypperioden und einer durchschnittlichen Verzögerung (lag).
  • Ein weiteres Merkmal der vorliegenden Erfindung ist, dass ein mehrstufiges Codebuch verwendet wird, um den gesendeten Zählervektor zu codieren. Dieses Codebuch sieht die effiziente Speicherung und das Suchen von Codedaten vor. Zusätzliche Stufen können hinzugefügt werden, um einen gewünschten Grad an Genauigkeit zu erreichen.
  • Ein weiteres Merkmal der vorliegenden Erfindung ist, dass ein Verzerrungs- bzw. Warpingfilter verwendet wird, um effizient die Länge eines ersten Signals zu verändern, um sie an diejenige des zweiten Signals anzupassen, wobei der Codierbetrieb erfordert, dass die zwei Signale von der gleichen Länge sind.
  • Noch ein weiteres Merkmal der vorliegenden Erfindung ist, dass Prototypperioden entsprechend einem freigeschnitten Bereich („cut-free region") extrahiert werden, wodurch Diskontinuitäten in dem Ausgang aufgrund der Auftrennung von Hochenergiebereichen entlang von Rahmengrenzen verhindert werden.
  • Die Merkmale, Ziele und Vorteile der vorliegenden Erfindung werden offensichtlicher werden von der detaillierten Beschreibung, welche unten gegeben wird, wenn sie zusammen mit den Zeichnungen genommen wird, in welchem gleiche Bezugszeichen identische oder funktionell ähnliche Elemente bezeichnen. Zusätzlich identifiziert die am weitesten links stehende Zahl eines Bezugszeichens die Zeichnung, in welchem das Bezugszeichen zum ersten Mal auftritt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Diagramm, welches eine Signalübertragungsumgebung illustriert;
  • 2 ist ein Diagramm, welches einen Codierer 102 und einen Decodierer 104 detaillierter illustriert;
  • 3 ist ein Flussdiagramm, welches Sprachcodierung mit einer variablen Rate gemäß der vorliegenden Erfindung illustriert;
  • 4A ist ein Diagramm, welches einen Rahmen von stimmhafter Sprache illustriert, welcher in Unterrahmen aufgeteilt ist;
  • 4B ist ein Diagramm, welches einen Rahmen von nicht stimmhafter Sprache illustriert, welcher in Unterrahmen aufgeteilt ist;
  • 4C ist ein Diagramm, welches einen Rahmen von transienter Sprache illustriert, welcher in Unterrahmen aufgeteilt ist;
  • 5 ist ein Flussdiagramm, welches die Berechnung von anfänglichen Parametern beschreibt;
  • 6 ist ein Flussdiagramm, welches die Klassifikation von Sprache entweder als aktiv oder inaktiv beschreibt;
  • 7A beschreibt einen CELP Codierer;
  • 7B beschreibt einen CELP Decodierer;
  • 8 beschreibt ein Pitch- bzw. Tonhöhenfiltermodul;
  • 9A beschreibt einen PPP Codierer;
  • 9B beschreibt einen PPP Decodierer;
  • 10 ist ein Flussdiagramm, welches die Schritte von PPP Codierung beschreibt, einschließlich Codierung und Decodierung;
  • 11 ist ein Flussdiagramm, welches die Extrahierung einer Prototyprestperiode beschreibt;
  • 12 beschreibt eine Prototyprestperiode, welche von dem laufenden Rahmen eines Restsignals und der Prototyprestperiode eines vorhergehenden Rahmens extrahiert wurde;
  • 13 ist ein Flussdiagramm, welches die Berechnung von Rotationsparametern beschreibt;
  • 14 ist ein Flussdiagramm, welches den Betrieb des Codiercodebuchs beschreibt;
  • 15A beschreibt ein erstes Ausführungsbeispiel eines Filteraktualisierungsmoduls;
  • 15B beschreibt ein erstes Ausführungsbeispiel eines Periodeninterpolationsmoduls;
  • 16A beschreibt ein zweites Ausführungsbeispiel eines Filteraktualisierungsmoduls;
  • 16B beschreibt ein zweites Ausführungsbeispiel eines Filterinterpolationsmoduls;
  • 17 ist ein Flussdiagramm, welches den Betrieb des ersten Ausführungsbeispiels des Filteraktualisierungsmoduls beschreibt;
  • 18 ist ein Flussdiagramm, welches den Betrieb des zweiten Ausführungsbeispiels des Filteraktualisierungsmoduls beschreibt;
  • 19 ist ein Flussdiagramm, welches die Ausrichtung und Interpolation von Prototyprestperioden beschreibt;
  • 20 ist ein Flussdiagramm, welches die Rekonstruktion eines Sprachsignals basierend auf Prototyprestperioden gemäß einem ersten Ausführungsbeispiel beschreibt;
  • 21 ist ein Flussdiagramm, welches die Rekonstruktion eines Sprachsignals basierend auf Prototyprestperioden gemäß einem zweiten Ausführungsbeispiel beschreibt;
  • 22A beschreibt einen NELP Codierer
  • 22B beschreibt einen NELP Decodierer; und
  • 23 ist ein Flussdiagramm, welches NELP Codierung beschreibt.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
    • I. Überblick über die Umgebung
    • II. Überblick über die Erfindung
    • III. Anfangsparameterbestimmung
    • A. Berechnung der LPC Koeffizienten
    • B. LSI Berechnung
    • C. NACF Berechnung
    • D. Pitchverfolgung und Verzögerungsberechnung
    • E. Berechnung von Bandenergie und Nulldurchgangsrate
    • F. Berechnung des Formant Rests
    • IV. Sprachklassifikation aktiv/inaktiv
    • A. Überhangrahmen
    • V. Klassifikation von aktiven Sprachrahmen
    • VI. Modusauswahl Codierer/Decodierer
    • VII. Codeangeregte lineare Voraussage(CELP = Code Excited Linear Prediction)-Codiermodus
    • A. Pitchcodiermodul
    • B. Codiercodebuch
    • C. CELP Decodierer
    • D. Filteraktualisierungsmodul
    • VIII. Prototyppitchperioden(PPP)-Codiermodus
    • A. Extraktionsmodul
    • B. Rotationskorrelator
    • C. Codiercodebuch
    • D. Filteraktualisierungsmodul
    • E. PPP Decodierer
    • F. Periodeninterpolierer
    • IX. Rausch angeregte lineare Voraussage(NELP = Noise Excited Linear Prediction)-Codiermodus
    • X. Schlussfolgerung
  • I. Überblick über das Gebiet
  • Die vorliegende Erfindung ist auf neue und verbesserte Verfahren und Vorrichtungen zur Sprachcodierung mit einer variablen Rate gerichtet. 1 zeigt eine Signalübertragungsumgebung 100 einschließlich eines Codierers 102, eines Decodierers 104 und eines Übertragungsmediums 106. Der Codierer 102 codiert ein Sprachsignal s(n), welches ein codiertes Sprachsignal senc(n) bildet, zur Sendung über das Übertragungsmedium 106 zu dem Decodierer 104. Der Decodierer 104 decodiert senc(n), wobei ein synthetisiertes Sprachsignal s ^(n) erzeugt wird.
  • Der Ausdruck „Codierung", wie hierin verwendet, bezieht sich allgemein auf Verfahren, welche sowohl Codierung und wie auch Decodierung umfassen. Im Allgemeinen zielen Codierverfahren und -vorrichtungen darauf ab, die Anzahl von gesendeten Bits über das Übertragungsmedium 106 zu minimieren (das heißt Minimierung der Bandbreite von senc(n)), wobei eine akzeptable Sprachwiedergabe aufrecht erhalten wird (das heißt s ^(n) ≈ s(n)). Die Zusammensetzung des codierten Sprachsignals wird entsprechend dem speziellen Sprachcodierverfahren variieren. Verschiedene Codierer 102, Decodierer 104 und Codierverfahren, gemäß welchen sie funktionieren, werden untenstehend beschrieben.
  • Die Komponenten des Codierers 102 und des Decodierers 104, welche untenstehend beschrieben sind, können als elektronische Hardware, als Computersoftware oder Kombination von beidem implementiert werden. Diese Komponenten werden untenstehend mit Bezug auf ihre Funktionalität beschrieben. Ob die Funktionalität als Hardware oder Software implementiert wird, wird von der jeweiligen Anwendung und Designbedingungen, welche dem Gesamtsystem auferlegt sind, abhängen. Der Fachmann wird die Austauschbarkeit von Hardware und Software unter diesen Umständen erkennen, und wie die beschriebene Funktionalität am besten für jede spezielle Anwendung zu implementieren ist.
  • Der Fachmann wird erkennen, dass das Übertragungsmedium 106 viele verschiedene Übertragungsmedien repräsentieren kann, einschließlich, aber nicht eingeschränkt auf eine landbasierte Kommunikationsleitung, eine Verbindung zwischen einer Basisstation und einem Satelliten, drahtlose Kommunikation zwischen einem zellularen Telefon und einer Basisstation, oder zwischen einem zellularen Telefon und einem Satelliten. Der Fachmann wird auch erkennen, dass oftmals jeder Teilnehmer einer Kommunikation sowohl sendet wir auch empfängt. Jeder Teilnehmer würde deshalb einen Codierer 102 und einen Decodierer 104 benötigen. Jedoch wird die Signalübertragungsumgebung 100 beschrieben als einen Codierer 102 an einem Ende des Übertragungsmediums 106 und einen Decodierer 104 an dem anderen aufweisend. Der Fachmann wird auch leicht erkennen, wie diese Ideen auf Zweiwegekommunikation erweitert werden können.
  • Zum Zweck der Beschreibung wird angenommen, dass s(n) ein digitales Sprachsignal ist, welches durch eine typische Konversation einschließlich verschiedener Vokalklänge und Ruhe- bzw. Stilleperioden erhalten wurde. Das Sprachsignal s(n) wird bevorzugter Weise in Rahmen eingeteilt, und jeder Rahmen wird weiter eingeteilt in Unterrahmen (bevorzugter Weise vier). Diese willkürlich gewählten Rahmen/Unterrahmen-Grenzen werden gewöhnlicherweise verwendet, wo eine Blockverarbeitung ausgeführt wird, wie es hier der Fall ist. Funktionen, welche an Rahmen ausgeführt beschrieben sind, können auch an Unterrahmen in diesem Sinne ausgeführt werden, Rahmen und Unterrahmen werden hierin austauschbar verwendet. Jedoch muss s(n) überhaupt nicht in Rahmen/Unterrahmen aufgeteilt sein, wenn kontinuierliche Verarbeitung anstatt von Blockverarbeitung implementiert ist. Der Fachmann wird leicht erkennen, wie die Blocktechniken, welche untenstehend beschrieben sind, auf kontinuierliche Verarbeitung erweitert werden können.
  • In einem bevorzugten Ausführungsbeispiel wird s(n) digital bei 8 kHz gesampelt. Jeder Rahmen enthält bevorzugterweise 20 msec an Daten, oder 180 Samples bei der bevorzugten Rate von 8 kHz. Jeder Unterrahmen enthält somit 40 Samples an Daten. Es ist wichtig zu bemerken, dass viele der unten präsentierten Gleichungen unter Annahme dieser Werte angegeben sind. Jedoch wird der Fachmann erkennen, dass, während diese Parameter für die Sprachcodierung geeignet sind, sie hauptsächlich exemplarisch sind, und andere geeignete alternative Parameter verwendet werden können.
  • II. Überblick über die Erfindung
  • Die Verfahren und Vorrichtungen der vorliegenden Erfindung beinhalten die Codierung des Sprachsignals s(n). 2 zeigt den Codierer 102 und den Decodierer 104 in größerer Detailliertheit. Gemäß der vorliegenden Erfindung weist der Codierer 102 ein Modul 202 zum Berechnen von anfänglichen Parametern, ein Klassifikationsmodul 208 und einen oder mehrere Codiermodi 204 auf. Der Decodierer 104 weist einen oder mehrere Decodiermodi 206 auf. Die Anzahl von Decodiermodi, Nd, ist im Allgemeinen gleich der Anzahl von Codiermodi, Ne. Wie für den Fachmann offensichtlich ist, kommuniziert der Codiermodus 1 mit dem Decodiermodus 1, und so weiter. Wie gezeigt ist wird das codierte Sprachsignal senc(n) über das Übertragungsmedium 106 gesendet.
  • In einem bevorzugten Ausführungsbeispiel schaltet der Codierer 102 dynamisch zwischen verschiedenen Codiermodi von Rahmen zu Rahmen, abhängig davon, welcher Modus am geeignetsten ist, bei gegebenen Eigenschaften von s(n) für den laufenden Rahmen. Der Decodierer 104 schaltet auch dynamisch zwischen den korrespondierenden Decodiermodi von Rahmen zu Rahmen. Ein bestimmter Modus wird für jeden Rahmen gewählt, um die niedrigste verfügbare Bitrate zu erreichen, während akzeptable Signalwiedergabe an dem Decodierer erhalten wird. Dieser Vorgang wird als Sprachcodierung mit variabler Rate bezeichnet, weil die Bitrate des Codierers sich mit der Zeit verändert (wenn Eigenschaften des Signals sich verändern).
  • 3 ist ein Flussdiagramm 300, welches Sprachcodierung mit variabler Rate gemäß der vorliegenden Erfindung beschreibt. In Schritt 302 berechnet das Berechnungsmodul 202 für für Anfangsparameter verschiedene Parameter basierend auf dem laufenden Datenrahmen. In einem bevorzugten Ausführungsbeispiel weisen diese Parameter einen oder mehrere der Folgenden auf: Filterkoeffizienten von linearer Voraussage-Codierung (LPC), Koeffizienten von Linienspektruminformation (LSI = line spectrum information), die normalisierten Autokorrelationsfunktionen (NACFs = Normalized Autocorrelation Functions), die Verzögerung der offenen Schleife bzw. open loop, Bandenergien, die Nulldurchgangsrate und das Formant Restsignal.
  • In Schritt 304 klassifiziert das Klassifikationsmodul 208 den laufenden Rahmen als entweder „aktive" oder „inaktive" Sprache enthaltend. Wie obenstehend beschrieben wird angenommen, dass s(n) sowohl Perioden von Sprache wie auch Perioden von Ruhe, wie es bei einer normalen Unterhaltung gewöhnlich ist, beinhaltet. Aktive Sprache schließt gesprochene Worte ein, wohingegen inaktive Sprache alles andere einschließt, zum Beispiel Hintergrundrauschen, Ruhe, Pausen. Die Verfahren, welche zur Klassifikation der Sprache als aktiv/inaktiv verwendet werden, gemäß der vorliegenden Erfindung, werden untenstehend detailliert beschrieben.
  • Wie in 3 gezeigt ist, betrachtet Schritt 306, ob der laufende Rahmen als aktiv oder inaktiv in Schritt 304 klassifiziert wurde. Wenn er aktiv ist, fährt der Steuerungsfluss mit Schritt 308 fort. Wenn er inaktiv ist, fährt der Steuerungsfluss mit Schritt 310 fort.
  • Diese Rahmen, welche als aktiv klassifiziert wurden, werden in Schritt 308 weiter klassifiziert, entweder als stimmhaft, nicht stimmhaft oder als Übergangsrahmen bzw. transiente Rahmen. Der Fachmann wird erkennen, dass menschliche Sprache auf viele verschiedene Arten und Weisen klassifiziert werden kann. Zwei konventionelle Klassifikationen von Sprache sind stimmhafte und nicht stimmhafte Klänge. Gemäß der vorliegenden Erfindung wird die gesamte Sprache, welche nicht stimmhaft oder stimmhaft ist, als transiente Sprache klassifiziert.
  • 4A zeigt einen Beispielbereich von s(n) einschließlich stimmhafter Sprache 402. Stimmhafte Klänge werden durch Pressen von Luft durch die Stimmritze (Glottis) erzeugt, wobei die Spannung der Stimmbänder derart eingestellt wird, dass sie in einer relaxierter Oszillation vibrieren, wobei sie quasi-periodische Pulse von Luft erzeugen, welche den Stimmbereich anregen. Eine gemeinsame Eigenschaft, gemessen in stimmhafter Sprache, ist die Pitchperiode, wie in 4A gezeigt ist.
  • 4B zeigt einen Beispielbereich von s(n) einschließlich nicht stimmhafter Sprache 404. Nicht stimmhafte Klänge werden erzeugt durch Bildung einer Verengung an einem Punkt in dem Stimmbereich (normalerweise zu dem Mundende hin), und das Pressen von Luft durch die Verengung mit einer Geschwindigkeit, welche hoch genug ist, um Turbulenzen zu erzeugen. Das resultierende nicht stimmhafte Sprachsignal ähnelt farbigem Rauschen.
  • 4C zeigt einen Beispielbereich von s(n) einschließlich transienter bzw. übergehender Sprache 406 (das heißt Sprache, welche weder stimmhaft noch nicht stimmhaft ist). Die beispielhafte transiente Sprache 406, welche in 4C gezeigt ist, kann s(n) beim Übergang zwischen nicht stimmhafter Sprache und stimmhafter Sprache repräsentieren. Der Fachmann wird erkennen, dass viele verschiedene Klassifikationen der Sprache verwendet werden können, gemäß den hierin beschriebenen Techniken, um vergleichbare Ergebnisse zu erreichen.
  • In Schritt 310 wird ein Codier-/Decodiermodus basierend auf der Rahmenklassifikation, welche in den Schritten 306 und 308 durchgeführt wurde, ausgewählt. Die verschiedenen Codier-/Decodiermodi werden parallel verbunden, wie in 2 gezeigt ist. Einer oder mehrere von diesen Modi kann zu jeder gegebenen Zeit in Betrieb sein. Wie jedoch untenstehend detailliert beschrieben ist, wird nur ein Modus bevorzugterweise zu jeder gegebenen Zeit betrieben, und wird gemäß der Klassifikation des laufenden Rahmen ausgewählt.
  • Verschiedene Codier-/Decodiermodi werden in den folgenden Abschnitten beschrieben. Die verschiedenen Codier-/Decodiermodi funktionieren gemäß den verschiedenen Codierschemata. Bestimmte Modi sind effizienter in der Codierung von Teilen des Sprachsignals s(n), welche bestimmte Eigenschaften aufweisen.
  • In einem bevorzugtem Ausführungsbeispiel wird ein „codeangeregte lineare Voraussage (CELP = Code Excited Linear Prediction)" – Modus für Coderahmen, welche als transiente Sprache klassifiziert sind, gewählt. Der CELP Modus regt ein lineares Voraussage-Vokaltraktmodell mit einer quantisierten Version des linearen Voraussagerestsignals an. Von all den Codier-/Decodier-Modi, welche hierin beschrieben sind, erzeugt CELP im Allgemeinen die genaueste Sprachwiedergabe, aber erfordert die höchste Bitrate.
  • Ein „Protyppitchperiode" (PPP = Prototype Pitch Period) – Modus wird bevorzugter weise für Coderahmen gewählt, welche als stimmhafte Sprache klassifiziert wurden. Stimmhafte Sprache enthält periodische Komponenten, welche langsam mit der Zeit variieren, welche durch den PPP Modus ausgenutzt werden. Der PPP Modus codiert nur eine Untergruppe der Pitchperioden innerhalb jedes Rahmens. Die verbleibenden Perioden des Sprachsignals werden durch Interpolation zwischen diesen Prototypperioden rekonstruiert. Durch Ausnutzung der Periodizität von stimmhafter Sprache ist es PPP möglich, eine geringere Bitrate als CELP zu erreichen, und trotzdem das Sprachsignal in einer wahrnehmbar genauen Art und Weise wiederzugeben.
  • Ein „sprachangeregte lineare Voraussage" (NELP = Noise Excited Linear Prediction) – Modus wird verwendet, um Rahmen zu codieren, welche als nicht stimmhafte Sprache klassifiziert wurden. NELP benutzt ein gefiltertes Pseudozufalls-Rauschsignal, um nicht stimmhafte Sprache zu modellieren.
  • NELP verwendet das einfachste Modell für die codierte Sprache, und erreicht deshalb die geringste Bitrate.
  • Die gleiche Codiertechnik kann häufig bei verschiedenen Bitraten benutzt werden, mit veränderlichen Performancepegeln. Die verschiedenen Codier-/Decodiermodi in 2 können deshalb verschiedene Codiertechniken repräsentieren, oder die gleiche Codiertechnik, welche bei verschiedenen Bitraten betrieben wird, oder Kombinationen des Obigen. Der Fachmann wird erkennen, dass eine Erhöhung der Anzahl von Codier-/Decodiermodi größere Flexibilität bei der Auswahl eines Modus erlauben wird, was zu einer geringeren durchschnittlichen Bitrate führen wird, jedoch wird dies die Komplexität innerhalb des Gesamtsystems erhöhen. Die spezielle Kombination, welche in irgendeinem gegebenen System verwendet wird, wird durch die verfügbaren Systemressourcen und die spezifische Signalumgebung diktiert.
  • In 312 codiert der ausgewählte Codiermodus 204 den laufenden Rahmen und packt bevorzugterweise die codierten Daten in Datenpakete zur Übertragung. Und in Schritt 314 entpackt der Decodiermodus 206 die Datenpakete, decodiert die empfangenen Daten und rekonstruiert das Sprachsignal. Die Operationen werden untenstehend detailliert beschrieben mit Bezug auf die geeigneten Codier-/Decodiermodi.
  • III. Anfangsparameterbestimmung
  • 5 ist ein Flussdiagramm, welches Schritt 302 in größerem Detail beschreibt. Verschiedene Anfangsparameter werden gemäß der vorliegenden Erfindung berechnet. Die Parameter umfassen bevorzugterweise beispielsweise LPC Koeffizienten, Linienspektruminformation (LSI = Line Spectrum Information) – Koeffizienten, normalisierte Autokorellations-funktionen (NACFs), Verzögerung der offenen Schleife bzw. Regelung, Bandenergien, Nulldurchgangsraten und das Formant-Restsignal. Diese Parameter werden in verschiedenen Art und Weisen des Gesamtsystems verwendet, wie untenstehend beschrieben wird.
  • In einem bevorzugten Ausführungsbeispiel verwendet das anfängliche Parameterberechnungsmodul 202 einen „look ahead" bzw. „Vorausschau" von 160 + 40 Samples. Dies dient mehreren Zwecken. Zunächst erlaubt die 160 Sample-„Vorausschau", dass eine Verfolgung der Pitchfrequenz berechnet wird unter Verwendung von Information in den nächstem Rahmen, was die Robustheit der Sprachcodierung und der Pitchperiodenschätzungstechniken, wie untenstehend beschrieben, signifikant verbessert. Zweitens erlaubt die 160 Sample-Vorausschau auch, dass die LPC Koeffizienten, die Rahmenenergie und die Sprachaktivität für einen Rahmen in der Zukunft berechnet werden. Dies ermöglicht eine effiziente Multirahmenquantisierung der Rahmenenergie und der LPC Koeffizienten. Drittens dient die zusätzliche 40 Sample-Vorausschau für die Berechnung der LPC Koeffizienten an mit Hamming-Fenster versehener Sprache, wie es untenstehend beschrieben wird. Somit ist die Anzahl von Samples, welche vor der Verarbeitung des laufenden Rahmens zwischen gespeichert werden, 160 + 160 + 40, was den derzeitigen Rahmen und die 160 + 40 Sample-Vorausschau einschließt.
  • A. Berechnung der LPC Koeffizienten
  • Die vorliegende Erfindung verwendet einen LPC Vorhersage-Fehlertilter auf, um die kurzzeitigen Redundanzen in dem Sprachsignal zu entfernen. Die Transferfunktion des LPC Filters ist:
  • Figure 00160001
  • Die vorliegende Erfindung implementiert bevorzugter weise einen Filter zehnter Ordnung, wie in der vorhergehenden Gleichung gezeigt ist. Ein LPC Synthesefilter in dem Codierer setzt die Redundanzen wieder ein, und wird durch das Inverse von A(z) gegeben:
  • Figure 00160002
  • In Schritt 502 werden die LPC Koeffizienten, ai, von s(n) wie folgt berechnet.
  • Die LPC Parameter werden bevorzugter Weise für den nächsten Rahmen während der Codierprozedur für den laufenden Rahmen berechnet.
  • Ein Hamming-Fenster wird auf den laufenden Rahmen angewendet, zentriert zwischen den 119. und 120. Sample (bei Annahme des bevorzugter Weise 160 Sample-Rahmens mit einer „Vorausschau"). Das mit Fenster versehene Sprachsignal sw(n) wird durch folgende Formel gegeben:
  • Figure 00170001
  • Die Versatz von 40 Samplen führt dazu, dass das Sprachfenster zwischen dem 119. und dem 120. Sample der bevorzugten 160 Sample Rahmens von Sprache zentriert wird.
  • Elf Autokorrelationswerte werden dann bevorzugterweise berechnet als
  • Figure 00170002
  • Die Autokorrelationswerte werden mit Fenster versehen, um die Wahrscheinlichkeit von fehlenden Wurzeln von Linienspektrumpaaren (LSPs = Line Spectrum Pairs), welche von den LPC Koeffizienten erhalten werden, zu reduzieren, gegeben durch: R(k) = h(k)R(k), 0 < k ≤ 10was zu einer leichten Bandbreitenexpansion, zum Beispiel 25 Hz, führt. Die Werte h(k) werden bevorzugter Weise von der Mitte des 255 Punkte Hamming-Fensters genommen. Die LPC Koeffizienten werden dann von den mit Fenster versehenen Autokorellationswerten unter Verwendung von Durbin's Rekursion erhalten. Durbin's Rekursion, ein gut bekanntes effizientes Rechenverfahren wird in dem Text Digital Processing of Speech Signals von Rabiner und Scharfer, diskutiert.
  • B. LSI Berechnung
  • In Schritt 504 werden die LPC Koeffizienten in Linienspektruminformationenskoeffizienten (LSI) transformiert, zur Quantisierung und Interpolation.
  • Die LSI Koeffizienten werden gemäß der vorliegenden Erfindung in der folgenden Art und Weise berechnet: Wie vorstehend wird A(z) folgendermaßen gegeben: A(r) = 1- aiz–1 – ... – a10z–10,Wobei ai die LPC Koeffizienten sind, und 1 ≤ i ≤ 10.
  • Pa(z) und QA(z) werden folgendermaßen definiert: Pa(z) = A(z) + z–11A(z–1) = P0 + P1z–1 + ... + P11z–11, QA(z) = A(Z) – z–11A(z–1) = q0 + q1z–1 + ... + q11z–11,wobei pi = – a1 – a11-i, 1 ≤ i ≤ 10 qi = – a1 + a11-i, 1 ≤ i ≤ 10und P0 = 1 P11 = 1 P0 = 1 q11 = –1
  • Die Linienspektralcosinus (LSCs = Line Spectral Cosines) sind die 10 Wurzeln in –1,0 < x < 1,0 der folgenden zwei Funktionen: P'(x) = p'0cos(5cos–1(x)) + p'1(4cos–1(x)) + ... + p'4 + p'5/2 Q'(x) = q'0cos(5cos–1(x)) + q'1(4cos–1(x)) + ... + q'4 + q'5/2wobei P'0 = 1 q'0 = 1 p'i = pi – p'i-1 1 ≤ i ≤ 5 q'i = qi – q'i-1 1 ≤ i ≤ 5
  • Die LSI Koeffizienten werden dann berechnet als:
  • Figure 00190001
  • Die LSCs können zurückerhalten werden von den LSI Koeffizienten gemäß:
  • Figure 00190002
  • Die Stabilität der LPC Filter garantiert, dass die Wurzeln der zwei Funktionen sich abwechseln, das heißt die kleinere Wurzel, lsc1 ist die kleinste Wurzel von P'(x), die nächstkleinste Wurzel, lsc2, ist die kleinste Wurzel von Q'(x), etc. Somit sind lsc1, lsc3, lsc5, lsc7 und lsc9 die Wurzeln von P'(x), und lsc2, lsc4, lsc6, lsc8 und lsc10 sind die Wurzeln von Q'(x).
  • Der Fachmann wird erkennen, dass es bevorzugt ist, ein Verfahren zur Berechnung der Sensitivität der LSI Koeffizienten zur Quantisierung zu verwenden. „Sensitivitätsgewichtungen" können in den Quantisierungsverfahren verwendet werden, um korrekt den Quantisierungsfehler in jedem LSI zu gewichten.
  • Die LSI Koeffizienten werden unter Verwendung eines mehrstufigen Vektorquantisierers (VQ = Vector Quantizer) quantisiert. Die Anzahl an Stufen hängt bevorzugterweise von der speziellen Bitrate und den verwendeten Codebuchs ab. Die Codebuchs werden basierend darauf verwendet, ob der laufenden Rahmen stimmhaft ist oder nicht.
  • Die Vektorquantisierung minimiert einen gewichteten mittleren quadratischen Fehler (WMSE = Wighted Mean Squared Error), welcher definiert ist als:
  • Figure 00190003
  • Wobei x → der Vektor ist, welcher quantisiert werden soll, w → die Gewichtung, welche damit verbunden ist, ist, und y ist der Codevektor. In dem bevorzugten Ausführungsbeispiel sind x → die Sensitivitätsgewichtungen und P = 10.
  • Der LSI Vektor wird von den LSI Codes, welche mittels der Quantisierung erhalten wurden, rekonstruiert als
    Figure 00200001
    wobei CBi das VQ Codebuch der i. Stufe entweder für stimmhafte oder nicht stimmhafte Rahmen ist (dies ist basierend auf dem Code, welcher die Auswahl des Codebuchs anzeigt) und code; ist der LSI Code für die i. Stufe.
  • Bevor die LSI Koeffizienten zu den LPC Koeffizienten transformiert werden, wird ein Stabilitätscheck ausgeführt, um sicherzustellen, dass die resultierenden LPC-Filter nicht instabil gemacht wurden, aufgrund des Quantisierungsrauschens oder Kanalfehlern, welcher Rauschen in die LSI Koeffizienten injizieren. Stabilität wird garantiert, wenn die LSI Koeffizienten geordnet bleiben.
  • In der Berechnung der ursprünglichen LPC Koeffizienten wurde ein Sprachfenster, zentriert zwischen den 190. und 120. Samples des Rahmens verwendet. Die LPC Koeffizienten für andere Punkte in dem Rahmen werden approximiert durch Interpolation zwischen den LSCs des vorhergehenden Rahmens und den LSCs des laufenden Rahmens. Die resultierenden interpolierten LSCs werden dann zurückkonvertiert in LPC Koeffizienten. Die exakte Interpolation, welche für jeden Unterrahmen verwendet wurde, wird gegeben durch: ilscj = (1 – αi)lcprevj + αilscurrj 1 ≤ j ≤ 10
    wobei αi die Interpolationsfaktoren 0,375, 0,625, 0,875, 1,000 für die vier Unterrahmen mit jeweils 40 Samples sind, und ilsc die interpolierten LSCs sind.
    Figure 00200002
    und
    Figure 00200003
    werden berechnet durch die interpolierten LSCs als
  • Figure 00210001
  • Die interpolierten LPC Koeffizienten für alle vier Unterrahmen werden als Koeffizienten von
    Figure 00210002
    berechnet.
  • Somit
  • Figure 00210003
  • C. NACF Berechnung
  • In Schritt 506 werden die normalisierten Autokorrelationsfunktionen (NACFs = Normalized Autocorrelation Functions) gemäß der vorliegenden Erfindung berechnet.
  • Der Formant Rest für den nächsten Rahmen wird über vier Unterrahmen mit 40 Samples berechnet als
    Figure 00210004
    wobei α ~i der i. interpolierte LPC Koeffizient des korrespondierenden Unterrahmens ist, wobei die Interpolation zwischen den unquantisierten LSCs des laufenden Rahmens und den LSCs des nächsten Rahmens durchgeführt wird. Die Energie des nächsten Rahmens wird auch berechnet als
  • Figure 00220001
  • Der Rest, welcher oben direkt berechnet wird, wird tiefpassgefiltert und dezimiert, bevorzugterweise unter Verwendung eines nullphasigen FIR Filters der Länge 15, und Koeffizienten, von welchen dfi, –7 ≤ i ≤ 7, {0,0800, 0,1256, 0,2532, 0,4376, 0,6424, 0,8268, 0,9544, 1,000, 0,9544, 0,8268, 0,6424, 0,4376, 0,2532, 0,1256, 0,0800} sind. Der tiefpassgefilterte dezimierte Rest
    Figure 00220002
    berechnet, wobei F = 2 der Dezimierfaktor ist, und r(Fn + i), –7 ≤ Fn + i ≤ 6 werden von den letzten 14 Werten des Rests des laufenden Rahmens basierend auf den unquantisierten LPC Koeffizienten berechnet. Wie oben erwähnt wurde, werden diese LPC Koeffizienten berechnet und während des vorhergehenden Rahmens gespeichert.
  • Die NACFs für zwei Unterrahmen (40 Samples dezimiert) des nächsten Rahmens werden folgendermaßen berechnet:
  • Figure 00230001
  • Für rd(n) mit negativem n wird der tiefpassgefilterte und dezimierte Rest des laufenden Rahmens (gespeichert während des vorhergehenden Rahmens) verwendet. Die NACFs für den laufenden Unterrahmen c corr wurden auch berechnet und während des vorhergehenden Rahmens gespeichert.
  • D. Pitchverfolgung und Verzögerungsberechnung
  • In Schritt 508 werden die Pitchverfolgung und die Pitchverzögerung gemäß der vorliegenden Erfindung berechnet. Die Pitchverzögerung wird bevorzugter Weise berechnet unter Verwendung einer Witerbi-ähnlichen Suche mit einer Zurückverfolgung wie folgt.
    Figure 00240001
    Wobei FAN_i,j die 2 × 58 Matrix
    Figure 00240002
    ist. Der Vektor RM2 wird interpoliert, um Werte für R2i+1 zu erhalten als
    Figure 00240003
    wobei cfj der Interpolationsfilter ist, dessen Koeffizienten {–0,0625, 0,5625, 0,5625, –0,0625} sind. Die Verzögerung LC wird dann so gewählt, dass
    Figure 00240004
    gilt und das NACF des laufenden Rahmens wird gleich
    Figure 00240005
    /4 gesetzt. Vielfache der Verzögerung werden dann entfernt durch Suchen für die Verzögerung, welche zu der maximalen Korrelation größer als 0,9
    Figure 00240006
    entspricht, ausgesucht aus:
  • Figure 00240007
  • E. Berechnung von Bandenergie und Nulldurchgangsrate
  • In Schritt 510 werden Energien in dem 0 bis 2 kHz-Band und 2 bis 4 kHz-Band gemäß der vorliegenden Erfindung berechnet als
    Figure 00250001
    wobei
  • Figure 00250002
  • Wobei S(z), SL(z) und SH(z) jeweils die z-Transformierten des Eingangssprachsignals s(n), des Tiefpasssignals sL(n) und des Hochpasssignals sH(n) sind, mit
  • Figure 00250003
  • Die Energie des Sprachsignals selbst ist
    Figure 00250004
    Die Nulldurchgangsrate ZCR = Zero Crossing Rate wird berechnet als if(s(n)s(n + 1) < 0)ZCR = ZCR + 1, 0 ≤ n < 159
  • F. Berechnung des Formant Rests
  • In Schritt 512 wird der Formant Rest für den laufenden Rahmen über vier Unterrahmen berechnet und als
    Figure 00260001
    wobei
    Figure 00260002
    der i. LPC Koeffizient des korrespondierenden Unterrahmens ist.
  • IV. Aktive/inaktive Sprachklassifizierung
  • Unter Rückbezugnahme auf 3 wird in Schritt 304 der laufenden Rahmen klassifiziert, und zwar entweder als aktive Sprache (zum Beispiel gesprochene Wörter) oder inaktive Sprache (zum Beispiel Hintergrundrauschen, Ruhe). 6 ist ein Flussdiagramm 600, welches Schritt 304 in größerer Detailliertheit zeigt. In einem bevorzugten Ausführungsbeispiel wird ein Schwellenwertschema basierend auf zwei Energiebändern verwendet, um zu bestimmen, ob aktive Sprache vorhanden ist. Das untere Band (Band 0) spannt Frequenzen von 0,1 bis 2,0 kHz und das obere Band (Band 1) von 2,0 bis 4,0 kHz auf. Die Erkennung von Sprachaktivität wird bevorzugter Weise für den nächsten Rahmen während der Codierprozedur für den laufenden Rahmen in der folgenden Art und Weise bestimmt.
  • In Schritt 602 werden die Bandenergien Eb[i] für Bänder i = 0, 1 berechnet. Die Autokorrelationssequenz, wie oben in Abschnitt III.A beschrieben wurde, wird erweitert auf 19 unter Verwendung der folgenden Rekursionsgleichung:
  • Figure 00260003
  • Unter Verwendung dieser Gleichung wird R(11) berechnet von R(1) bis R(10), R(12) wird berechnet von R(2) bis R(11), und so weiter. Die Bandenergien werden dann berechnet von der erweiterten Autokorrelationssequenz unter Verwendung der folgenden Gleichung:
  • Figure 00260004
  • Wobei R (k) die erweiterte Autokorrelationssequenz für den laufenden Rah men ist und Rh(i)(k) ist die Bandfilterautokorrelationssequenz für Band i, gegeben in Tabelle 1.
  • Tabelle 1: Filterautorkorrelationssequenzen für Bandenergieberechnungen
    Figure 00270001
  • In Schritt 604 werden die Bandenergieschätzungen geglättet. Die geglätteten Bandenergieschätzungen, Esm(i) werden für jeden Rahmen unter Verwendung der folgenden Gleichung aktualisiert. Esm(i) = 0.6Esm(i) + 0.4Eb(i), i = 0,1
  • In Schritt 606 werden Signalenergie und Rauschenergieschätzungen aktualisiert. Die Signalenergieschätzungen Eg(i) werden bevorzugter Weise unter Verwendung der folgenden Gleichung aktualisiert: Es(i) = max(Esm(i),Es(i)), i = 0,1
  • Die Rauschenergieschätzungen En(i) werden bevorzugter Weise unter Verwendung der folgenden Gleichung aktualisiert: En(i) = min(Esm(i), En(i)), i = 0,1
  • In Schritt 608 wird die langfristigen Signal zu Rausch – Verhältnisse für die zwei Bänder SNR(i) berechnet als SNR(i) = Es(i) – En(i), i = 0,1
  • In Schritt 610 werden diese SNR Werte bevorzugter weise in acht Bereiche RegSNR(i) definiert als
    Figure 00280001
    unterteilt.
  • In Schritt 612 wird die Sprachaktivitätsentscheidung in der folgenden Art und Weise gemäß der vorliegenden Erfindung gemacht. Wenn entweder Eb(0) – En(0) > THRESH(RegSNR(0)), oder Eb(1) – En(1) > THRESH(RegSNR(1)), dann wird der Sprachrahmen als aktiv deklariert. Anderenfalls wird der Sprachrahmen als inaktiv deklariert. Die Werte von THRESH werden in Tabelle 2 definiert.
  • Die Signalenergieschätzungen, Eg(i) werden bevorzugter Weise unter Verwendung der folgenden Gleichung aktualisiert: Eg(i) = Es(i) – 0.014499, i = 0,1.
  • Tabelle 2: Schwellenwertfaktoren (THRESH) als eine Funktion des SNR Bereichs bzw. Region
    Figure 00290001
  • Die Rauschenergieschätzungen, En(i) werden bevorzugter Weise unter Verwendung der folgenden Gleichung aktualisiert:
  • Figure 00290002
  • A. Überhangrahmen
  • Wenn Signal zu Rauschen – Verhältnisse niedrig sind, werden „Überhang"rahmen bevorzugter Weise hinzugefügt, um die Qualität der rekonstruierten Sprache zu verbessern. Wenn die drei vorhergehenden Rahmen als aktiv klassifiziert wurden, und der laufende Rahmen als inaktiv klassifiziert wurde, dann werden die nächsten M Rahmen einschließlich des laufenden Rahmens als aktive Sprache klassifiziert. Die Anzahl von Überhangrahmen, M, wird bevorzugter Weise als eine Funktion von SNR(0), wie in Tabelle 3 definiert, bestimmt.
  • Figure 00300001
  • V. Klassifikation von aktiven Sprachrahmen
  • Unter Rückbezugnahme auf 3 werden in Schritt 308 laufenden Rahmen, welche in Schritt 304 als aktiv klassifiziert wurden, weiter klassifiziert gemäß den Eigenschaften, welche durch das Sprachsignal s(n) hervorgebracht werden. In einem bevorzugten Ausführungsbeispiel wird aktive Sprache entweder als stimmhaft, nicht stimmhaft oder transient klassifiziert. Der Grad an Periodizität, welcher durch das aktive Sprachsignal gezeigt wird, bestimmt, wie es klassifiziert wird. Stimmhafte Sprache zeigt den höchsten Grad an Periodizität (von quasi-periodischer Natur). Nicht stimmhafte Sprache zeigt wenig oder keine Periodizität. Transiente Sprache zeigt verschiedene Grade an Periodizität zwischen stimmhaft und nicht stimmhaft.
  • Jedoch ist der allgemeine Rahmen, welcher hierin beschrieben wurde, nicht eingeschränkt auf die bevorzugten Klassifikationsschemata und die spezifischen Codier-/Decodiermodi, welche nachfolgend beschrieben werden. Aktive Sprache kann in alternativen Wegen klassifiziert werden, und alternative Codier-/Decodiermodi sind für die Codierung verfügbar. Der Fachmann wird erkennen, dass viele Kombinationen von Klassifikationen und Codier-/Decodiermodi möglich sind. Viele solche Kombinationen können in einer reduzierten durchschnittlichen Bitrate gemäß dem allgemeinen Rahmen wie hierin beschrieben resultieren, dass heißt Klassifikation von Sprache als inaktiv oder aktiv, ferner Klassifikation von aktiver Sprache, und dann Codierung des Sprachsignals unter Verwendung von Codier-/Decodiermodi, speziell angepasst auf die Sprache, welche innerhalb jeder Klassifikation fällt. Obwohl die aktiven Sprachklassifikationen auf dem Grad an Periodizität basieren, wird die Klassifikationsentscheidung bevorzugter Weise nicht auf einer direkten Messung der Periodizität basieren. Vielmehr basiert die Klassifikationsentscheidung auf verschiedenen Parametern, welche in Schritt 302 berechnet wurden, zum Beispiel Signal zu Rausch – Verhältnisse in den oberen und unteren Bändern und in den NACFs. Die bevorzugte Klassifikation kann durch den folgenden Pseudocode beschrieben werden:
    Figure 00310001
    (In dem obigen Pseudocode gilt:
    previousNACF = vorhergehendes NACF
    current NACF = laufendes NACF
    UNVOICED = nicht-stimmhaft
    low-band SNR = Tiefband-SNR
    high-band SNR = Hochband-SNR)
    und wobei
    Figure 00310002
    und Nnoise eine Schätzung des Hintergrundrauschens ist. Eprev ist die Eingangsenergie des vorhergehenden Rahmens.
  • Das Verfahren, welches durch diesen Pseudocode beschrieben wurde, kann gemäß der spezifischen Umgebung, in welcher es implementiert ist, verfeinert werden. Der Fachmann wird erkennen, dass die verschiedenen Schwellenwerte, welche oben angegeben werden, lediglich exemplarisch sind, und Anpassung in der Praxis abhängig von der Implementierung erfordern können. Das Verfahren kann auch verfeinert werden durch Hinzufügen von zusätzlichen Klassifikationskategorien, wie die Teilung von TRANSIENT in zwei Kategorien: eine für Signale, welche von hoher zu geringer Energie übergehen und die andere für Signale, welche von geringer zu hoher Energie übergehen.
  • Der Fachmann wird erkennen, dass andere Verfahren verfügbar sind zur Unterscheidung von stimmhafter, nicht stimmhafter und transienter aktiver Sprache. Ähnlich wird der Fachmann erkennen, dass andere Klassifikationsschemata für aktive Sprache ebenfalls möglich sind.
  • VI. Codier-/Decodiermodusauswahl
  • In Schritt 310 wird ein Codier-/Decodiermodus ausgewählt, basierend auf der Klassifikation des laufenden Rahmens in den Schritten 304 und 308. Gemäß eines bevorzugten Ausführungsbeispiels werden Modi wie folgt ausgewählt: inaktive Rahmen und aktive nicht stimmhafte Rahmen werden codiert unter Verwendung eines NELP Modus, aktive stimmhafte Rahmen werden codiert unter Verwendung eines PPP Modus, und aktive transiente Rahmen werden codiert unter Verwendung eines CELP Modus. Jede dieser Codier-/Decodiermodi wird detailliert in den folgenden Abschnitten beschrieben.
  • In einem alternativen Ausführungsbeispiel werden inaktive Rahmen codiert unter Verwendung eines Nullratenmodus. Der Fachmann wird erkennen, dass viele alternative Nullratenmodi verfügbar sind, welche sehr kleine Bitraten erfordern. Die Auswahl von Nullratenmodi kann weiter verfeinert werden durch Betrachtung von zurückliegenden Auswahlen. Wenn zum Beispiel der vorhergehende Rahmen als aktiv klassifiziert wurde, kann dies die Wahl eines Nullratenmodus für den laufenden Rahmen verhindern. Ähnlich kann, wenn der nächste Rahmen aktiv ist, ein Nullratenmodus für den laufenden Rahmen ausgeschlossen werden. Eine andere Alternative ist das Ausschließen der Wahl eines Nullratenmodus für zu viele aufeinanderfolgende Rahmen (zum Beispiel 9 aufeinanderfolgende Rahmen). Der Fachmann wird erkennen, dass viele andere Modifikationen an der grundlegenden Modusauswahlentscheidung gemacht werden können, um deren Funktion in bestimmten Umgebungen zu verfeinern.
  • Wie obenstehend beschrieben ist, können andere Kombinationen von Klassifikationen und Codier-/Decodiermodi alternativ verwendet werden innerhalb des gleichen Rahmens. Die folgenden Abschnitte liefern detaillierte Beschreibungen von mehreren Codier-/Decodiermodi gemäß der vorliegenden Erfindung. Der CELP Modus wird zuerst beschrieben, gefolgt von dem PPP Modus und dem NELP Modus.
  • VII. Code-angeregte lineare Vorhersage (CELP) Codiermodus
  • Wie oben beschrieben wurde, wird der CELP Codier-/Decodiermodus verwendet, wenn der laufende Rahmen als aktive Transient- bzw. Übergangssprache klassifiziert wurde. Der CELP Modus sieht die genaueste Signalwiedergabe (verglichen mit den anderen Modi wie hierin beschrieben) vor, aber zu der höchsten Bitrate.
  • 7 zeigt einen CELP Codiermodus 204 und einen CELP Decodiermodus 206 detaillierter. Wie in 7A gezeigt ist, weist der CELP Codiermodus 204 ein Pitchcodiermodul 702, ein Codiercodebuch 704 und ein Filteraktualisierungsmodul 706 auf. Der CELP Codiermodus 204 gibt ein codiertes Sprachsignal Scnc(n) aus, welches bevorzugter Weise Codebuchparameter und Pitchfilterparameter zur Übertragung zu dem CELP Decodiermodus 206 aufweist. Wie in 7B gezeigt ist, weist der CELP Decodiermodus 206 ein Decodiercodebuchmodul 708, einen Pitchfilter 710 und einen LPC Synthesefilter 712 auf. Der CELP Decodiermodus 206 empfängt das codierte Sprachsignal und gibt synthetisiertes Sprachsignal
    Figure 00340001
    aus.
  • A. Pitchcodiermodul.
  • Das Pitchcodiermodul 702 empfängt das Sprachsignal s(n) und den quantisierten Rest von dem vorhergehenden Rahmen pc(n) (untenstehend beschrieben). Basierend auf dieser Eingabe erzeugt das Pitchcodiermodul 702 ein Zielsignal x(n) und einen Satz von Pitchfilterparametern. In einem bevorzugten Ausführungsbeispiel weisen diese Pitchfilterparameter eine optimale Pitchverzögerung L* und eine optimale Pitchverstärkung b* auf. Diese Parameter werden mit einem „Analyse durch Synthese – Verfahren" ausgewählt, in welchem der Codierprozess die Pitchfilterparameter auswählt, welche den gewichteten Fehler zwischen der Eingangssprache und der synthetisierten Sprache unter Verwendung dieser Parameter minimiert.
  • 8 zeigt das Pitchcodiermodul 702 in größerem Detail. Das Pitchcodiermodul 702 weist einen Wahrnehmungsgewichtungsfilter 802, Addierer 804 und 816, gewichtete LPC Synthesefilter 806 und 808, eine Verzögerung und Verstärkung 810 und eine Minimierungssumme von Quadraten 812 auf.
  • Der Wahrnehmungsgewichtungsfilter 802 wird verwendet, um den Fehler zwischen der ursprünglichen Sprache und der synthetisierten Sprache in einer wahrnehmungsmäßig bedeutungsvollen Art und Weise zu gewichten.
  • Der Wahrnehmungsgewichtungsfilter ist von der Form
    Figure 00340002
    wobei A(z) der LPC Vorhersagefehlerfilter ist, und γ bevorzugter Weise gleich 0,8 ist. Der gewichtete LPC Analysefilter 806 empfängt die LPC Koeffizienten, welche durch das Anfangsparameterberechungsmodul 202 berechnet wurden. Der Filter 806 gibt azir(n) aus, was die Nulleingangsantwort bei gegebenen LPC Koeffizienten ist. Der Addierer 804 summiert einen negativen Eingang axir(n) und das gefilterte Eingangssignal, um das Zielsignal x(n) zu bilden.
  • Verzögerung und Verstärkung 810 gibt eine abgeschätzte Pitchfilterausgabe bpL(n) für eine gegebene Pitchverzögerung L und Pitchverstärkung b aus. Verzögerung und Verstärkung 810 empfängt die quantisierten Restsamples von dem vorhergehenden Rahmen, pc(n), und eine Abschätzung von zukünftiger Ausgabe des Pitchfilters, gegeben durch pc(n), und bildet p(n) gemäß:
    Figure 00350001
    welche dann um L-Samples verzögert wird und skaliert mit b, um bpL(n) zu bilden. Lp ist die Länge des Unterrahmens (bevorzugter Weise 40 Samples). In einem bevorzugten Ausführungsbeispiel wird die Pitchverzögerung L durch 8 Bit repräsentiert und kann die Werte 20,0, 20,5, 21,0, 21,5, ..., 126,0, 126,5, 127,0, 127,5 annehmen.
  • Der gewichtete LPC Analysefilter 808 filtert bpL(n) unter Verwendung der laufenden LPC Koeffizienten, was zu byL(n) führt. Der Addierer 816 summiert einen negativen Eingang byL(n) mit x(n), wessen Ausgabe von der Minimierungssumme an Quadraten 812 empfangen wird. Die Minimierungssumme an Quadraten 812 wählt das Optimum L, bezeichnet als L*, und das optimale b, bezeichnet als b*, als diejenigen Werte von L und b, welche EPitch(L) minimieren, gemäß:
    Figure 00350002
    wenn
    Figure 00350003
    dann ist der Wert von b, welcher EPitch(L) für einen gegebenen Wert von L minimiert,
    Figure 00360001
    für die
    Figure 00360002
    wobei K eine Konstante ist, welche vernachlässigt werden kann.
  • Die optimalen Werte von L und b (L* und b*) werden gefunden, indem zuerst der Wert von L bestimmt wird, welcher EPitch(L) minimiert, und durch Berechnung von b*.
  • Diese Pitchfilterparameter werden bevorzugter Weise für jeden Unterrahmen berechnet, und dann für effektive Übertragung quantisiert. In einem bevorzugten Ausführungsbeispiel werden die Übertragungscodes PLAGE und PGAINj für den j. Unterrahmen berechnet als
  • Figure 00360003
  • PGAINj wird dann auf –1 angepasst, wenn PLAGE auf 0 gesetzt wird. Diese Übertragungscodes werden zu dem CELP Decodiermodus 206 als die Pitchfilterparameter gesendet, als Teil des codierten Sprachsignals senc(n).
  • B. Codiercodebuch
  • Das Codiercodebuch 704 empfängt das Zielsignal x(n) und bestimmt einen Satz von Codebuchanregungsparametern, welche durch den CELP Decodiermodus 206 verwendet werden, gemeinsam mit den Pitchfilterparametern, um das quantisierte Restsignal zu rekonstruieren.
  • Das Codiercodebuch 704 aktualisiert zunächst x(n) wie folgt. x(n) = x(n) – ypzir(n),0 ≤ n < 40
    wobei ypxir(n) die Ausgabe des gewichteten LPC Synthesefilters ist (mit Speichern, welche von den vorhergehenden Unterrahmen behalten wurden), zu einem Eingang, welcher die Nulleingangsantwort des Pitchfilters mit Parametern
    Figure 00370001
    und
    Figure 00370002
    ist (und Speicher, welche von der Verarbeitung des vorhergehenden Rahmens resultieren).
  • Ein zurückgefiltertes Ziel d → = {dn},0 ≤ n < 40 wird erzeugt als d → = HTx →wobei
    Figure 00370003
    die Impulsantwortmatrix ist, welche von der Impulsantwort {hn} und x → = {x(n)},0 ≤ n < 40 gebildet wurde. Zwei weitere Vektoren
    Figure 00370004
    und s → werden auch erzeugt. s → = sign(d →)
    Figure 00370005
    wobei
  • Figure 00380001
  • Das Codiercodebuch 704 initialisiert die Werte Exy* und Eyy* auf 0 und die optimalen Anregungsparameter, bevorzugter Weise mit vier Werten von IV (0, 1, 2, 3), gemäß:
  • Figure 00380002
  • Figure 00390001
  • Das Codiercodebuch 704 berechnet die Codebuchverstärkung G* als
    Figure 00390002
    und quantisiert dann den Satz von Anregungsparametern als die folgenden Übertragungscodes für den j-ten Unterrahmen:
    Figure 00400001
    und die quantisierte Verstärkung
    Figure 00400002
    ist
    Figure 00400003
    .
  • Ausführungsbeispiele mit kleinerer Bitrate des CELP Codier-/Decodiermodus können realisiert werden durch Entfernung des Pitchcodiermoduls 702 und ausschließliche Durchführung einer Codebuchsuche zur Bestimmung eines Index 1 und einer Verstärkung G für jeden der vier Unterrahmen. Der Fachmann wird erkennen, wie die oben beschriebenen Ideen erweitert werden können, um dieses Ausführungsbeispiel mit kleinerer Bitrate zu bewerkstelligen.
  • C. CELP Decodierer
  • Der CELP Decodiermodus 206 empfängt das codierte Sprachsignal, bevorzugter Weise einschließlich Codebuchanregungsparametern und Pitchfilterparametern, von dem CELP Codiermodus 204, und gibt basierend auf diesen Daten synthetisierte Sprache
    Figure 00400004
    aus. Das Decodiercodebuchmodul 708 empfängt die Codebuchanregungsparameter und erzeugt das Anregungssignal cb(n) mit einer Verstärkung von G. Das Anregungssignal cb(n) für den j. Unterrahmen enthält hautsächlich Nullen, außer an den fünf Positionen: Ik = 5CBIjk + k,0 ≤ k < 5 dementsprechend Impulse der Werte Sk = 1 – 2SIGNjk, 0 ≤ k < 5 welche jeweils um eine Verstärkung G skaliert sind, welche als
    Figure 00400005
    berechnet wurde, um Gcb(n) vorzusehen.
  • Der Pitchfilter 710 decodiert die Pitchfilterparameter von den empfangenen Übertragungscodes gemäß:
  • Figure 00410001
  • Der Pitchfilter 710 filtert dann Gcb(n), wobei der Filter eine Transferfunktion hat, welche durch
    Figure 00410002
    gegeben ist.
  • In einem bevorzugten Ausführungsbeispiel addiert der CELP Decodiermodus 206 auch eine extra Pitchfilterungsoperation, einen Pitchvorfilter (nicht gezeigt) nach dem Pitchfilter 710. Die Verzögerung für den Pitchvorfilter ist die gleiche wie diejenige des Pitchfilters 710, wobei seine Verstärkung bevorzugter Weise die Hälfte der Pitchverstärkung bis zu einem Maximum von 0,5 ist.
  • Der LPC Synthesefilter 712 empfängt das rekonstruierte quantisierte Restsignal
    Figure 00410003
    und gibt das synthetisierte Sprachsignal
    Figure 00410004
    aus.
  • D. Filteraktualisierungsmodul
  • Das Filteraktualisierungsmodul 706 synthetisiert Sprache, wie in dem vorhergehenden Abschnitt beschrieben, um die Filterspeicher zu aktualisieren. Das Filteraktualisierungsmodul 706 empfängt die Codebuchanregungsparameter und die Pitchfilterparameter, erzeugt ein Anregungssignal cb(n), pitchfiltert Gcb(n), und synthetisiert dann
    Figure 00410005
    . Durch Ausführung dieser Synthese an dem Codierer, werden Speicher in dem Pitchfilter und in dem LPC Synthesefilter zur Verwendung während der Verarbeitung des folgenden Unterrahmens aktualisiert.
  • VIII. Prototyp-Pitchperiode-(PPP}-Codiermodus
  • Die Prototyp-Pitchperiode(PPP = Prototype Pitch Period)-Codierung nutzt die Periodizität eines Sprachsignals, um eine geringere Bitrate als diejenige zu erhalten, welche unter Verwendung von CELP Codierung erhalten werden kann. Im Allgemeinen beinhaltet PPP Codierung die Extrahierung einer repräsentativen Periode des Restsignals, hierin bezeichnet als der Prototyp-Rest, um dann die Verwendung des Prototyps zu rekonstruieren von früheren Pitchperioden in dem Rahmen durch Interpolation zwischen dem Prototyp-Rest des laufenden Rahmens und einer ähnlichen Pitchperiode von dem vorhergehenden Rahmen (d.h. der Prototyp-Rest, wenn der letzte Rahmen PPP war). Die Effektivität (in Bezug auf die geringere Bitrate) von PPP Codierung hängt teilweise davon ab, wie nahe die laufenden und vorhergehenden Prototyp-Reste den dazwischen liegenden Pitchperioden ähneln. Aus diesem Grund wird die PPP Codierung bevorzugter Weise auf Sprachsignale angewandt, welche relativ hohe Grade an Periodizität (zum Beispiel stimmhafte Sprache) zeigen, hierin bezeichnet als quasi-periodische Sprachsignale.
  • 9 zeigt einen PPP Codiermodus 204 und einen PPP Decodiermodus 206 in weiterem Detail. Der PPP Codiermodus 204 weist ein Extraktionsmodul 904, einen Rotationskorrelator 906, ein Codiercodebuch 908 und ein Filteraktualisierungsmodul 910 auf. Der PPP Codiermodus 204 empfängt das Restsignal r(n) und gibt ein codiertes Sprachsignal senc(n) aus, welches bevorzugter Weise Codebuchparameter und Rotationsparameter aufweist. Der PPP Decodiermodus 206 weist einen Codebuchdecoder 912, einen Rotator 914, einen Addierer 916, einen Periodeninterpolierer 912 und einen Verzerrungsfilter 918 auf.
  • 10 ist ein Flussdiagramm 1000, welches die Schritte der PPP Codierung beschreibt, einschließlich Codierung und Decodierung. Diese Schritte werden zusammen mit den verschiedenen Komponenten des PPP Codiermodus 204 und des PPP Decodiermodus 206 diskutiert.
  • A. Extraktionsmodul
  • In Schritt 1002 extrahiert das Extraktionsmodul 904 einen Prototyp-Rest rp(n) von dem Restsignal r(n). Wie oben stehend in Abschnitt III.F beschrieben ist, verwendet das Anfangsparameterberechnungsmodul 202 einen LPC Analysefilter zur Berechnung von r(n) für jeden Rahmen. In einem bevorzugten Ausführungsbeispiel werden die LPC Koeffizienten in diesem Filter wahrnehmungsgewichtet wie in Abschnitt VII.A. beschrieben ist. Die Länge rp(n) ist gleich der Pitchverzögerung L, welche durch das Anfangsparameterberechnungsmodul 202 während des letzten Unterrahmens in dem laufenden Rahmen berechnet wurde.
  • 11 ist ein Flussdiagramm, welches Schritt 1002 detaillierter beschreibt. Das PPP Extraktionsmodul 904 wählt wenn möglich bevorzugter Weise eine Pitchperiode nahe zu dem Ende des Rahmens aus, unter Beachtung von bestimmten Einschränkungen, welche unten stehend beschrieben werden. 12 zeigt ein Beispiel eines Restsignals, welches basierend auf quasiperiodischer Sprache berechnet wurde, einschließlich des laufenden Rahmens und des letzten Rahmens von dem vorhergehenden Rahmen.
  • In Schritt 1102 wird ein „Cut-free"-Bereich bestimmt. Der Cut-free-Bereich definiert einen Satz von Samples bzw. Abtastungen in dem Rest, welcher keine Endpunkte des Prototyp-Rests sein können. Der Cut-free-Bereich stellt sicher, dass Hochenergiebereiche des Rests nicht am Anfang oder Ende des Prototyps auftreten (was Diskontinuitäten in der Ausgabe verursachen könnte, wenn es erlaubt wäre, dass es passiert). Der Absolutwert von jedem der endgültigen L Samples von r(n) wird berechnet. Die Variable PS wird gleich zu dem Zeitindex des Samples mit dem größten Absolutwert gesetzt, hierin bezeichnet als der „Pitchspike" bzw. Pitch-Spitze. Wenn zum Beispiel der Pitchspike in dem letzten Sample der endgültigen L Samples auftritt, ist PS gleich L – 1. In einem bevorzugten Ausführungsbeispiel wird der minimale Sample des Cut-free-Bereichs, CFmin, auf PS – 6 oder PS – 0,25L gesetzt, je nachdem, welches kleiner ist. Das Maximum des Cut-free-Bereichs CFmax wird auf PS + 6 oder PS + 0,25L gesetzt, je nachdem, welches größer ist.
  • In Schritt 1104 wird der Prototyp-Rest ausgewählt durch Schneidung von L Samples von dem Rest. Der Bereich, welcher ausgewählt wurde, ist so nahe wie möglich an dem Ende des Rahmens, unter der Bedingung, dass die Endpunkte des Bereichs nicht innerhalb des Cut-free-Bereichs sein können. Die L Samples des Prototyp-Rests werden dann bestimmt unter Verwendung des Algorithmus, welcher in dem folgenden Pseudocode beschrieben ist:
  • Figure 00440001
  • B. Rotationskorrelator
  • Unter Rückbezugnahme auf 10 berechnet in Schritt 1004 der Rotationskorrelator 906 einen Satz an Rotationsparametern, basierend auf dem laufenden Prototyp-Rest rP(n) und dem Prototyp-Rest des vorhergehenden Rahmens rprev(n). Diese Parameter beschreiben, wie rprev(n) am besten rotiert und skaliert werden können zur Verwendung als ein Prediktor von rp(n). In einem bevorzugten Ausführungsbeispiel weist der Satz an Rotationsparametern eine optimale Rotation R* und eine optimale Verstärkung b* auf. 13 ist ein Flussdiagramm, welches Schritt 1004 in größerem Detail zeigt.
  • In Schritt 1302 wird das wahrnehmungsgewichtete Zielsignal x(n) durch zirkuläre Filterung der Prototyppitchrestperiode rp(n) berechnet. Dies wird folgendermaßen erreicht. Ein temporäres Signal tmp1(n) wird von rp(n) erzeugt
    Figure 00440002
    was durch den gewichteten LPC Synthesefilter mit Nullspeichern gefiltert wird, um einen Ausgang tmp2(n) vorzusehen. In einem bevorzugten Ausführungsbeispiel sind die verwendeten LPC Koeffizienten die wahrnehmungsgewichteten Koeffizienten, welche zu dem letzten Unterrahmen in dem laufenden Rahmen entsprechen. Das Zielsignal x(n) wird dann als x(n) = tmp2(n) + tmP2(n + L),0 ≤ n < L gegeben.
  • In Schritt 1304 wird der Prototyp-Rest von dem vorhergehenden Rahmen rprev(n) von dem quantisierten Formant Rest (welcher auch in den Speichern des Pitchfilters ist) des vorhergehenden Rahmens extrahiert. Der vorhergehende Prototyp-Rest ist bevorzugter Weise als die letzten Lp Werte des Formant Rests des vorhergehenden Rahmens definiert, wobei Lp = L ist, wenn der vorhergehende Rahmen kein PPP Rahmen war, und wird andernfalls auf die vorhergehende Pitchverzögerung gesetzt.
  • In Schritt 1306 wird die Länge von rprev(n) geändert, um von der gleichen Länge wie x(n) zu sein, so dass Korrelationen korrekt berechnet werden können. Die Technik zum Ändern der Länge eines gesampelten Signals wird hierin als Verzerrung (warping) bezeichnet. Das verzerrte Pitchanregungssignal rwprev(n) kann beschrieben werden als rwprev(n) = rwprev(n·TWF),0 ≤ n < L
    wobei TWF = Time Warping Factor der Zeitverzerrungsfaktor
    Figure 00450001
    ist. Die Sample-Werte sind nichtintegrale Punkte n*. TWF werden bevorzugter Weise berechnet unter Verwendung von sinc-Funktionstabellen. Die sinc-Sequenz, welche ausgewählt wurde, ist sinc(–3 – F:4 – F), wobei F der Bruchteil von n·TWF ist, gerundet zu dem nächsten Vielfachen von 1/8. Der Anfang dieser Sequenz ist ausgerichtet mit rprev((N – 3)%Lp), wobei N der Integralteil von n·TWF ist, nachdem er zu dem nächsten Achten gerundet wurde.
  • In Schritt 1308 wird das verzerrte Pitchanregungssignal rprev(n) zirkulär gefiltert, was zu y(n) führt. Diese Operation ist die gleiche, wie diejenige, welche oben stehend mit Bezug auf Schritt 1302 geschrieben wurde, aber angewendet auf rprev(n).
  • In Schritt 1310 wird der Pitchrotationssuchbereich berechnet durch zunächst Berechnung einer erwarteten Rotation Erot,
    Figure 00460001
    wobei frac(x) den Bruchteil von x angibt. Wenn L < 80 ist, wird der Pitchrotationssuchbereich definiert als {Erot – 8, Erot – 7,5, ..., Erot + 7,5}, und {Erot – 16, Erot- 15, ..., Erot+ 15}, wobei L ≤ 80 ist.
  • In Schritt 1312 werden dann die Rotationsparameter, die optimale Rotation R*, und die optimale Verstärkung b* berechnet. Die Pitchrotation, welche in der besten Vorhersage zwischen x(n) und y(n) resultiert, wird zusammen mit der korrespondierenden Verstärkung b ausgewählt. Diese Parameter werden bevorzugter Weise gewählt, um das Fehlersignal e(n) = x(n) – y(n) zu minimieren. Die optimale Rotation R* und die optimale Verstärkung b* sind diejenigen Werte der Rotation R und der Verstärkung b, welche zu dem Maximalwert von
    Figure 00460002
    führen, wobei
    Figure 00460003
    und
    Figure 00460004
    sind, für welche die optimale Verstärkung b*
    Figure 00460005
    ist bei der Rotation R*. Für Bruchteile der Rotation wird der Wert von ExyR approximiert durch Interpolation der Werte von ExyR, berechnet bei Integerwerten der Rotation. Ein einfacher „Vier-Tap-Interpolationsfilter" wird verwendet. Zum Beispiel ExyR = 0.54(ExyR' + ExyR'+1) – 0.04·(ExyR'-1 + ExyR'+2)wobei R eine nichtintegrale Rotation (mit Präzision von 0,5) ist und R' = |R|.
  • In einem bevorzugten Ausführungsbeispiel sind die Rotationsparameter quantisiert zur effizienten Übertragung. Die optimale Verstärkung b* ist bevorzugter Weise gleichmäßig zwischen 0,0625 und 4,0 quantisiert als
    Figure 00470001
    wobei PGAIN der Übertragungscode ist, und die quantisierte Verstärkung
    Figure 00470002
    ist durch
    Figure 00470003
    gegeben. Die optimale Rotation R* ist quantisiert als der Übertragungscode PROT, welcher auf 2 (R* – ERot + 8) wobei L < 80 und R* – ERot + 16 gesetzt ist, wobei L ≤ 80 ist.
  • C. Codiercodebuch
  • Unter Rückbezugnahme auf 10 erzeugt das Codiercodebuch 908 in Schritt 1006 einen Satz von Codebuchparametern, basierend auf dem empfangenen Zielsignal x(n). Das Codiercodebuch 908 versucht, einen oder mehrere Codevektoren zu finden, welche, wenn sie skaliert, addiert und gefiltert sich zu einem Signal summieren, x(n) approximieren. In einem bevorzugten Ausführungsbeispiel ist das Codiercodebuch 908 als ein mehrstufiges Codebuch implementiert, bevorzugter Weise mit drei Stufen, wobei jede Stufe einen skalierten Codevektor erzeugt. Der Satz an Codebuchparametern weist deshalb die Indizes und Verstärkungen korrespondierend zu drei Codevektoren auf. 14 ist ein Flussdiagramm, welches Schritt 1006 in größerer Detailliertheit zeigt.
  • In Schritt 1402 wird das Zielsignal x(n), bevor die Codebuchsuche ausgeführt wird, aktualisiert als x(n) = x(n) – by((n – R*)%L),0 ≤ n < L wenn in der obigen Subtraktion die Rotation R* nicht integral ist (d.h. einen Bruchteil von 0,5 hat), dann y(i – 0.5) = –0.0073(y(i – 4) + y(i + 3)) + 0.0322(y(i – 3) + y(i + 2)) –0.1363(y(i – 2) + y(i + 1)) + 0.06076(y(i – 1) + y(i))wobei i = n – |R*|.
  • In Schritt 1404 werden die Codebuchwerte in verschiedene Bereiche partitioniert. Gemäß einem bevorzugten Ausführungsbeispiel wird das Codebuch bestimmt als
    Figure 00480001
    wobei CBP die Werte eines stochastischen oder trainierten Codebuchs sind. Der Fachmann wird erkennen, wie diese Codebuchwerte erzeugt werden. Das Codebuch wird in verschiedene Bereiche jeweils der Länge L partitioniert. Der erste Bereich ist ein einzelner Puls, und die verbleibenden Bereiche setzen sich aus Werten von dem stochastischen oder trainierten Codebuch zusammen. Die Anzahl an Bereichen N wird 128/L sein.
  • In Schritt 1406 sind die mehreren Bereiche des Codebuchs jeweils zirkulär gefiltert, um die gefilterten Codebuchs yreg(n) zu erzeugen, deren Verknüpfung das Signal y(n) ist. Für jeden Bereich wird die zirkuläre Filterung, wie oben mit Bezug auf Schritt 1302 beschrieben, durchgeführt.
  • In Schritt 1408 wird die gefilterte Codebuchenergie Eyy(reg) für jeden Bereich berechnet und gespeichert:
  • Figure 00480002
  • In Schritt 1420 werden die Codebuchparameter (d.h. Codevektorindex und Verstärkung) für jede Stufe des mehrstufigen Codebuchs berechnet. Gemäß einem bevorzugten Ausführungsbeispiel soll Region(1) bzw. Bereich (1) = reg sein, definiert als der Bereich bzw. Region, in welchem das Sample 1 sich befindet, oder
    Figure 00490001
    und es soll Exy(1) definiert sein als
  • Figure 00490002
  • Die Codebuchparameter I* und G*, für welche die j. Codebuchstufe berechnet wird, unter Verwendung des Pseudocodes.
    Figure 00490003
    und
  • Figure 00490004
  • Gemäß einem bevorzugten Ausführungsbeispiel sind die Codebuchparameter quantisiert für effiziente Übertragung. Der Übertragungscode CBIj (j = Stufennummer – 0,1 oder 2) wird bevorzugter Weise auf I* gesetzt und die Übertragungscodes CBGj und SIGNj wären dann durch Quantisierung der Verstärkung G* gesetzt
    Figure 00500001
    und die quantisierte Verstärkung
    Figure 00500002
    ist
  • Figure 00500003
  • Das Zielsignal x(n) wird dann durch Subtrahierung des Anteils des Codebuchvektors der laufenden Stufe aktualisiert. x(n) = x(n) – G·YRegion(I*)((n + I*)%L),0 ≤ n < L
  • Die obigen Prozeduren, welche von dem Pseudocode aus starten, werden wiederholt, um I*, G* und die korrespondierenden Übertragungscodes für die zweiten und dritten Stufen zu berechnen.
  • D. Filteraktualisierungsmodul
  • Unter Rückbezugnahme auf die 10 aktualisiert in Schritt 1008 das Filteraktualisierungsmodul 910 die Filter, welche von dem PPP Codiermodus 204 verwendet werden. Die alternativen Ausführungsbeispiele werden für das Filteraktualisierungsmodul 910, wie in den 15A und 16A gezeigt ist, gezeigt. Wie in dem ersten alternativen Ausführungsbeispiel in 15A gezeigt ist, weist das Filteraktualisierungsmodul 910 ein Decodiercodebuch 1502, einen Rotator 1504, einen Verzerrungsfilter 1506, einen Addierer 1510, ein Ausrichtungs- und Interpolationsmodul 1508, ein Aktualisierungs-Pitchfiltermodul 1512 und einen LPC Synthesefilter 1514 auf. Das zweite Ausführungsbeispiel, wie in 16A gezeigt ist, weist ein Decodiercodebuch 1602, einen Rotator 1604, einen Verzerrungsfilter 1606, einen Addierer 1608, ein Aktualisierungs-Pitchfiltermodul 1610, einen zirkulären LPC Synthesefilter 1612 und ein Aktualisierungs-LPC-Filtermodul 1614 auf. Die 17 und 18 sind Flussdiagramme, welche Schritt 1008 in größerer Detailliertheit zeigen, gemäß den zwei Ausführungsbeispielen.
  • In Schritt 1702 (und 1802, der erste Schritt von beiden Ausführungsbeispielen), wird der laufende rekonstruierte Prototyprest, rcurr(n), L Samples in der Länge, von den Codebuch-Parametern und Rotationsparametern rekonstruiert. In einem bevorzugten Ausführungsbeispiel rotiert der Rotator 1504 (und 1604) eine verzerrte Version des vorhergehenden Prototyprests gemäß dem Folgenden: rcurr((n + R*)%L) = brwprev(n), 0 ≤ n < L wobei rcurr der derzeitige Prototyp ist, welcher erzeugt werden soll, rwprev die verzerrte (wie oben stehend in Abschnitt VIII.A beschrieben wurde, mit TWF =
    Figure 00510001
    ) Version der vorhergehenden Periode, welche von den jüngsten L Samples der Pitchfilterspeicher erhalten wurden, wobei b die Pitchverstärkung ist und R die Rotation, welche von den Paketübertragungscodes als
    Figure 00510002
    erhalten wurde, wobei Erot die erwartete Rotation ist, welche wie oben stehend in Abschnitt III.B beschrieben wurde, berechnet wurde.
  • Das Decodiercodebuch 1502 (und 1602) addiert die Beiträge von jeder der drei Codebuchstufen zu rcurr(n) wie
    Figure 00510003
    wobei I = CBLj und G wird CBGj und SIGN wie in dem vorhergehenden Abschnitt beschrieben, erhalten, wobei j die Stufennummer ist.
  • An diesem Punkt unterscheiden sich die zwei alternativen Ausführungsbeispiele für das Filteraktualisierungsmodul 910. Unter Bezugnahme auf das erste Ausführungsbeispiel von 15A füllt in Schritt 1704 das Ausrich tungs- und Interpolationsmodul 1508 den Rest der Restsamples von dem Anfang des laufenden Rahmens zu dem Anfang des laufenden Prototyprests (wie in 12 gezeigt ist) auf. Hier werden Ausrichtung und Interpolation an dem Restsignal durchgeführt. Jedoch können diese gleichen Operationen an Sprachsignalen ausgeführt werden, wie unten stehend beschrieben wird. 19 ist ein Flussdiagramm, welches Schritt 1704 in weiterem Detail zeigt.
  • In Schritt 1902 wird es bestimmt, ob die vorhergehende Verzögerung Lp ein Doppeltes oder ein Halbes relativ zu der laufenden Verzögerung L ist. In einem bevorzugten Ausführungsbeispiel werden andere Vielfache als zu unwahrscheinlich angesehen, und werden deshalb nicht betrachtet. Wenn Lp > 1,85 L ist, wird Lp halbiert und nur die erste Hälfte der vorherigen Periode rprev(n) wird verwendet. Wenn Lp < 0,54 L ist, ist es wahrscheinlich, dass die laufende Verzögerung L ein Doppeltes ist, und konsequenterweise wird auch Lp verdoppelt, die vorhergehende Periode rprev(n) wird durch Wiederholung erweitert.
  • In Schritt 1904 wird rprev(n) verzerrt, um rwprev(n) zu bilden, wie oben stehend mit Bezug auf Schritt 1306 beschrieben ist, mit
    Figure 00520001
    so dass die Längen von beiden Prototypresten nun gleich sind. Es sei zu beachten, dass diese Funktion in Schritt 1702 ausgeführt wurde, wie oben stehend beschrieben wurde, durch den Verzerrungsfilter 1506. Der Fachmann wird erkennen, dass Schritt 1904 unnötig sein würde, wenn die Ausgabe des Verzerrungsfilters 1506 dem Ausrichtungs- und Interpolationsmodul 1508 zugänglich gemacht werden würde.
  • In Schritt 1906 wird der erlaubte Bereich von Ausrichtungsrotationen berechnet. Die erwartete Ausrichtungsrotation, EA, wird so berechnet, dass sie die Gleiche ist wie Erot, wie oben stehend in Abschnitt VIII.B beschrieben wurde. Der Suchbereich der Ausrichtungsrotation wird definiert als {EA – δA, EA – δA + 0,5, EA – δA + 1, ..., EA + δA – 1,5, EA + δA – 1}, wobei δA = max{6; 0,15L} ist.
  • In Schritt 1908 werden die Kreuzkorrelationen zwischen den vorhergehenden und den derzeitigen Prototyp-Perioden für Integer-Ausrichtungsrotationen, R, berechnet als
    Figure 00530001
    und die Kreuzkorrelationen für nicht integrale Rotationen A werden durch Interpolation der Werte für die Korrelationen bei integraler Rotation approximiert: C(A) = 0.54(C(A') + C(A' + 1)) – 0.04(C(A' – 1) + C(A' + 2))wobei A' = A – 0,5 ist.
  • In Schritt 1910 wird der Wert von A (über den Bereich von erlaubten Rotationen), welcher zu dem Maximalwert von C(A) führt, als die optimale Ausrichtung A* gewählt.
  • In Schritt 1912 wird die durchschnittliche Verzögerung oder Pitchperiode für die zwischenliegenden Samples Lav in der folgenden Art und Weise berechnet. Eine Periodennummerschätzung, Nper wird berechnet als
    Figure 00530002
    wobei die durchschnittliche Verzögerung für die zwischenliegenden Samples angegeben wird durch
  • Figure 00530003
  • In Schritt 1914 werden die verbleibenden Restsamples in den laufenden Rahmen gemäß der folgenden Interpolation zwischen den vorhergehenden und laufenden Prototypresten berechnet:
    Figure 00540001
    wobei
    Figure 00540002
    Die samplewerte sind nicht integrale Punkte n ~ (entweder gleich zu nα oder nα + A*) und werden berechnet unter Verwendung von sinc-Funktionstabellen. Die sinc-Sequenz, welche gewählt wurde, ist sinc(–3 – F:4 – F), wobei F der Bruchteil von n ~ ist, gerundet zu dem nächsten Vielfachen von
    Figure 00540003
    . Der Anfang dieser Sequenz wird mit rprev((N – 3)%Lp) ausgerichtet, wobei N der Integralteil von n ~ ist, nachdem er zu dem nächsten Achten gerundet wurde.
  • Beachte, dass diese Funktion im Wesentlichen die Gleiche ist wie Verzerrung, wie oben stehend mit Bezug auf Schritt 1306 beschrieben wurde. Deshalb wird in einem alternativen Ausführungsbeispiel die Interpolation von Schritt 1914 unter Verwendung eines Verzerrungsfilters berechnet. Der Fachmann wird erkennen, dass Einsparungen realisiert werden können, durch Wiederverwendung eines einzelnen Verzerrungsfilters für die verschiedenen hierin beschriebenen Zwecke.
  • Unter Rückbezugnahme auf 17 kopiert in Schritt 1706 das Aktualisierungs-Pitchfiltermodul 1512 Werte von dem rekonstruierten Rest r ^(n) in die Pitchfilterspeicher. Ähnlich werden auch die Speicher der Pitchvorfilter aktualisiert.
  • In Schritt 1708 filtert der LPC-Synthesefilter 1514 den rekonstruierten Rest r ^(n), was den Effekt der Aktualisierung der Speicher der LPC-Synthesefilter hat.
  • Das zweite Ausführungsbeispiel des Filteraktualisierungsmoduls 910, wie in 16A gezeigt ist, wird nun beschrieben. Wie oben stehend mit Bezug auf Schritt 1700 beschrieben wurde, wird der Prototyprest von dem Codebuch und den Rotationsparametern rekonstruiert, was zu rcurr(n) führt.
  • In Schritt 1804 aktualisiert das Aktualisierungs-Pitchfiltermodul 1610 die Pitchfilterspeicher durch Kopieren von Replikationen der L Samples von rcurr(n), gemäß pitch_mem(i) = rcurr((L – (131%L) + i)%L),0 ≤ i < 131
    oder alternativ, pitch_mem(131 – 1 – i) = rcurr(L – 1 – i%L),0 ≤ i < 131
    wobei 131 bevorzugter Weise die Ordnung des Pitchfilters für eine maximale Verzögerung von 127,5 ist. In einem bevorzugten Ausführungsbeispiel sind die Speicher der Pitchvorfilter identisch ersetzt durch Replikate der laufenden Periode rcurr(n): pitch_prefilt_mem(i) = pitch_mem(i),0 ≤ i < 131
  • In Schritt 1806 wird rcurr(n) zirkulär gefiltert, wie in Abschnitt VIII.B beschrieben wurde, was zu sc(n) führt, bevorzugterweise unter Verwendung der wahrnehmungsgewichteten LPC Koeffizienten.
  • In Schritt 1808 werden Werte von sc(n), bevorzugter Weise die letzten 10 Werte (für einen LPC Filter der 10. Ordnung) verwendet, um die Speicher des LPC Synthesefilters zu aktualisieren.
  • E. PPP Decodierer
  • Zurückkehrend auf die 9 und 10 rekonstruiert in Schritt 1010 der PPP Decodiermodus 206 den Prototyprest rcurr(n), basierend auf dem empfangenen Codebuch und Rotationsparametern. Die Decodierung des Codebuchs 912, des Rotators 914, und des Verzerrungsfilters 918 funktionieren in der Art und Weise, welche in dem vorhergehenden Abschnitt beschrieben wurde. Der Periodeninterpolator 920 empfängt den rekonstruierten Prototyprest rcurr(n) und den vorhergehenden rekonstruierten Prototyprest rprev(n), in terpoliert die Samples zwischen den zwei Prototypen, und gibt das synthetisierte Sprachsignal
    Figure 00560001
    aus. Der Periodeninterpolator 912 wird in dem folgenden Abschnitt beschrieben.
  • F. Periodeninterpolator
  • In Schritt 1012 empfängt der Periodeninterpolator 912 rcurr(n) und gibt das synthetisierte Sprachsignal
    Figure 00560002
    aus. Zwei alternative Ausführungsbeispiele für den Periodeninterpolator 920 werden hierin vorgestellt, wie in den 15B und 16B gezeigt ist. In dem ersten alternativen Ausführungsbeispiel, 15B, weist der Periodeninterpolator 920 ein Ausrichtungs- und Interpolationsmodul 1516, einen LPC Synthesefilter 1518 und ein Aktualisierungs-Pitchfiltermodul 1520 auf. Das zweite alternative Ausführungsbeispiel, wie in 16B gezeigt ist, weist einen zirkulären LPC Synthesefilter 1616, ein Ausrichtungs- und Interpolationsmodul 1618, ein Aktualisierungs-Pitchfiltermodul 1622, und ein Aktualisierungs-LPC-Filtermodul 1620 auf. Die 20 und 21 sind Flussdiagramme, welche den Schritt 1012 in größerem Detail gemäß den zwei Ausführungsbeispielen zeigen.
  • Unter Bezugnahme auf 15B rekonstruiert in Schritt 2002 das Ausrichtungs- und Interpolationsmodul 1516 das Restsignal für die Samples zwischen dem laufenden Restprototyp rcurr(n), und dem vorhergehende Restprototyp rprev(n), welcher
    Figure 00560003
    bildet. Das Ausrichtungs- und Interpolationsmodul 1516 funktioniert in der Art und Weise, welche oben stehend mit Bezug auf Schritt 1704 beschrieben ist (wie in 19 gezeigt ist).
  • In Schritt 2004 aktualisiert das Pitchfiltermodul 1520 die Pitchfilterspeicher, basierend auf dem rekonstruierten Restsignal
    Figure 00560004
    , wie oben stehend mit Bezug auf Schritt 1706 beschrieben ist.
  • In Schritt 2006 synthetisiert der LPC Synthesefilter 1518 das Ausgangssprachsignal
    Figure 00560005
    , basierend auf dem rekonstruierten Restsignal
    Figure 00560006
    . Die LPC Filterspeicher werden automatisch aktualisiert, wenn diese Operation ausgeführt wird.
  • Unter Bezugnahme nun auf die 16B und 21 aktualisiert in Schritt 2102 das Aktualisierungs-Pitchfiltermodul 1622 die Pitchfilterspeicher, basierend auf dem rekonstruierten laufenden Restprototyp, rcurr(n), wie oben stehend mit Bezug auf Schrit 1804 beschrieben wurde.
  • In Schritt 2104 empfängt der zirkuläre LPC Synthesefilter 1616 rcurr(n) und synthetisiert einen laufenden Sprachprototyp, sc(n) (welcher L Samples in der Länge ist), wie oben stehend in Abschnitt VIII.B. beschrieben wurde.
  • In Schritt 2106 aktualisiert das Aktualisierungs-LPC-Filtermodul 1612 die LPC Filterspeicher wie oben stehend mit Bezug auf Schritt 1808 beschrieben wurde.
  • In Schritt 2108 rekonstruiert das Ausrichtungs- und Interpolationsmodul 1618 die Sprachsamples zwischen der vorhergehenden Prototypperiode und der laufenden Prototypperiode. Der vorhergehende Prototyprest, rprev(n), wird zirkulär gefiltert (in einer LPC Synthesekonfiguration), so dass die Interpolation in der Sprachdomäne fortfahren kann. Das Ausrichtungs- und Interpolationsmodul 1618 funktioniert in der Art und Weise, welche oben stehend mit Bezug auf Schritt 1704 beschrieben wurde (siehe 19), außer dass die Operationen an Sprachprototypen anstatt an Restprototypen ausgeführt werden. Das Ergebnis der Ausrichtung und Interpolation ist das synthetisierte Sprachsignal s(n).
  • IX. Rauschangeregte lineare Vorhersage(NELP)-Codiermodus
  • Rauschangeregte lineare Vorhersage (NELP = Noise Excited Linear Prediction) – Codierung modelliert das Sprachsignal als eine pseudozufallsmäßige Rauschsequenz und erreicht dadurch geringere Bitraten als unter Verwendung von entweder CELP oder PPP Codierung erhalten werden können.
  • NELP Codierung funktioniert am effektivsten, bei Betrachtung der Signalwiedergabe, wobei das Sprachsignal eine geringe oder keine Pitchstruktur hat, so wie nicht stimmhafte Sprache oder Hintergrundrauschen.
  • 22 zeigt einen NELP Codiermodus 204 und einen NELP Decodiermodus 206 in weiterem Detail. Der NELP Codiermodus 204 weist einen Energieschätzer 2202 und ein Codiercodebuch 2204 auf. Der NELP Decodiermodus 206 weist ein Decodiercodebuch 2206, einen Zufallszahlenerzeuger 2210, einen Multiplizierer 2212 und einen LPC Synthesefilter 2208 auf.
  • 23 ist ein Flussdiagramm 2300, welches die Schritte der NELP Codierung zeigt, einschließlich Codierung und Decodierung. Diese Schritte werden zusammen mit den verschiedenen Komponenten des NELP Codiermodus 204 und des NELP Decodiermodus 206 diskutiert.
  • In Schritt 2302 berechnet der Energieschätzer 2202 die Energie des Restsignals für jeden der vier Unterrahmen als
  • Figure 00580001
  • In Schritt 2304 berechnet das Codiercodebuch 2204 einen Satz von Codebuch-Parametern, welche ein codiertes Sprachsignal senc(n) bilden. In einem bevorzugten Ausführungsbeispiel weist der Satz an Codebuch-Parametern einen einzelnen Parameter, Index I0, auf. Index I0 wird gleich dem Wert von j gesetzt, welches
    Figure 00580002
    minimiert.
  • Die Codebuchvektoren SFEQ werden verwendet, um die Unterrahmenenergien Esfi zu quantisieren, weisen eine Anzahl von Elementen gleich der Anzahl an Unterrahmen innerhalb eines Rahmens auf (d.h. vier in einem bevorzugten Ausführungsbeispiel). Diese Codebuchvektoren werden bevorzugterweise gemäß Standardtechniken, welche dem Fachmann bekannt sind, zur Erzeugung von stochastischen oder trainierten Codebuchs erzeugt.
  • In Schritt 2306 decodiert das Decodiercodebuch 2206 die empfangenen Codebuch-Parameter. In einem bevorzugten Ausführungsbeispiel wird der Satz an Unterrahmenverstärkungen Gi decodiert gemäß: Gi = 2SFEQ(I0,i), or Gi = 2SFEQ(I0,i)+0.8logGprev-2 (wobei der vorhergehende Rahmen codiert wurde unter Verwendung eines Nullraten-Codierungsschemas), wobei 0 ≤ i < 4 ist und Gprev die gleiche Codebuch-Anregungsverstärkung entsprechend dem letzten Unterrahmen des vorhergehenden Rahmens ist.
  • In Schritt 2308 erzeugt der Zufallszahlenerzeuger 2210 einen Zufallsvektor nz(n) mit Einheitsvarianz. Der Zufallsvektor wird durch geeignete Verstärkungen Gi innerhalb jedes Unterrahmens in Schritt 2310 skaliert, wodurch das Anregungssignal Ginz(n) erzeugt wird.
  • In Schritt 2312 filtert der LPC Synthesefilter 2208 das Anregungssignal Ginz(n), um das Ausgangssprachsignal
    Figure 00590001
    zu bilden.
  • In einem bevorzugten Ausführungsbeispiel wird auch ein Nullraten-Modus verwendet, wobei die Verstärkung Gi und die LPC Parameter, welche von den aktuellsten Nicht-Nullraten-NELP-Unterrahmen erhalten würden, für jeden Unterrahmen in dem laufenden Rahmen verwendet werden. Der Fachmann wird erkennen, dass dieser Nullraten-Modus effizient verwendet werden kann, wobei mehrere NELP Rahmen nachfolgend auftreten.
  • X. Schlussfolgerung
  • Während verschiedene Ausführungsbeispiele der vorliegenden Erfindung oben stehend beschrieben wurden, soll es verstanden werden, dass sie nur beispielhaft präsentiert wurden, und nicht als Einschränkung. Somit sollen die Breite und Reichweite der vorliegenden Erfindung nicht durch eines der oben beschriebenen exemplarischen Ausführungsbeispiele eingeschränkt werden, sondern sollen nur gemäß den folgenden Ansprüchen definiert werden.
  • Die vorhergehende Beschreibung der bevorzugten Ausführungsbeispiele ist vorgesehen, um jedem Fachmann zu ermöglichen, die vorliegende Erfindung herzustellen oder zu benutzen. Während die Erfindung speziell mit Bezug auf bevorzugte Ausführungsbeispiele davon gezeigt und beschrieben wurde, wird es verstanden werden vom Fachmann, dass verschiedene Veränderungen in der Form und den Details darin gemacht werden können, ohne von dem Umfang der Erfindung, wie in den Ansprüchen definiert, abzuweichen.

Claims (24)

  1. Verfahren zum Kodieren eines quasi-periodischen Sprachsignals, wobei das Sprachsignal durch ein Restsignal repräsentiert wird, und zwar erzeugt durch Filtern des Sprachsignals mit einen LPC (= Linear Predicitive Coding = lineare Voraussagen-Codierungs-Analyse-Filter), und wobei das Restsignal in Datenrahmen aufgeteilt ist, wobei ferner die folgenden Schritte vorgesehen sind: a) Extrahieren (1002) einer repräsentativen Periode aus einem laufenden bzw. aktuellen Rahmen des Restsignals als laufender Prototyp; b) Berechnen (1004) eines ersten Satzes von Parametern, die beschreiben, wie ein vorheriger Prototyp derart modifiziert werden muss, dass der erwähnte modifizierte vorherige Prototyp den laufenden Prototyp annähert; c) Auswählen (1006) eines oder mehrerer Codevektoren aus einem ersten Codebuch, wobei die Code-Vektoren, wenn summiert, die Differenz zwischen dem laufenden Prototyp und dem modifizierten vorherigen Prototyp annähern, wobei die Codevektoren durch einen zweiten Satz von Parametern beschrieben werden; d) Rekonstruieren (1010) eines laufenden Prototyps basierend auf dem erwähnten ersten und zweiten Satz von Parametern; e) Interpolieren (1012) des Restsignals für den Bereich zwischen dem laufenden, rekonstruierten Prototyp und einem vorherigen rekonstruierten Prototyp; f) Synthetisieren eines Ausgabesprachsignals basierend auf dem erwähnten interpolierten Restsignal.
  2. Verfahren nach Anspruch 1, wobei der laufende bzw. aktuelle Rahmen eine Pitch- oder Tonhöhenverzögerung bzw. -verschiebung besitzt, und wobei die Länge des laufenden Prototyps gleich der Pitchverzögerung ist.
  3. Verfahren nach Anspruch 1, wobei der Schritt des Extrahierens eines laufenden Prototyps einer „cut-free region" (freigeschnittene Region bzw. Bereich) ausgesetzt ist.
  4. Verfahren nach Anspruch 3, wobei der laufende bzw. aktuelle Prototyp aus dem Ende des laufenden bzw. aktuellen Rahmens extrahiert wird, und zwar entsprechend der erwähnten „cut-free region".
  5. Verfahren nach Anspruch 1, wobei der Schritt des Berechnens eines ersten Satzes von Parametern folgende Schritte aufweist: (i) Zirkuläres Filtern des laufenden Prototyps, Bildung eines Ziel- bzw. Targetsignals; (ii) Extrahieren des vorhergehenden Prototyps; (iii) Verzerren des vorherigen Prototyps derart, dass die Länge des vorherigen Prototyps gleich der Länge des laufenden Prototyps ist; (iv) Zirkuläres Filtern des verzerrten vorherigen Prototyps; und (v) Berechnen einer optimalen Drehung oder Rotation und einer ersten optimalen Verstärkung, wobei der erwähnte gefilterte verzerrte vorherige Prototyp gedreht um die optimale Rotation der Drehung und skaliert durch die erwähnte erste optimale Verstärkung am besten das Target oder Zielsignal annähert.
  6. Verfahren nach Anspruch 5, wobei der Schritt des Berechnens einer optimalen Drehung und einer ersten optimalen Verstärkung abhängig von einem Pitch-Rotationssuchbereich ausgeführt wird.
  7. Verfahren nach Anspruch 5, wobei der Schritt des Berechnens eine optimale Rotation oder Drehung und einer ersten optimalen Verstärkung die mittlere quadratische Differenz minimiert, und zwar zwischen dem gefilterten verzerrten vorherigen Prototyp und dem erwähnten Zielsignal.
  8. Verfahren nach Anspruch 5, wobei das erste Codebuch eine oder mehrere Stufen aufweist, und wobei der Schritt des Auswählens von einem oder mehreren Codevektoren die folgenden Schritte vorsieht: (i) Auf den neuesten Stand bringen des Zielsignals durch Subtrahieren des gefilterten, verzerrten, vorherigen Prototyps, gedreht um die optimale Drehung und skaliert durch die erste optimale Verstärkung; (ii) Unterteilung des ersten Codebooks in eine Vielzahl von Regionen bzw. Bereichen, wobei jeder der Bereiche einen Codevektor bildet; (iii) Zirkuläres Filtern jeder der Codevektoren; (iv) Auswählen eines der gefilterten Codevektoren, die am nächsten das auf den neuesten Stand gebrachte Zielsignal approximieren, wobei der spezielle Codevektor durch einen Optimumindex beschrieben wird; (v) Berechnen einer zweiten optimalen Verstärkung, basierend auf der Korrelation zwischen dem auf den neuesten Stand gebrachten Zielsignal und dem ausgewählten gefilterten Codevektor; (vi) auf den neuesten Stand bringen des Zielsignals durch Subtrahieren des selektierten gefilterten Codevektors, skaliert durch die zweite optimale Verstärkung; und (vii) Wiederholung der Schritte (iv) bis (vi) für jede der erwähnten Stufen in dem ersten Codebuch, wobei der erwähnte zweite Satz von Parametern den optimalen Index aufweist, und die erwähnte zweite optimale Verstärkung für jede der erwähnten Stufen.
  9. Verfahren nach Anspruch 8, wobei der Schritt der Rekonstruktion eines laufenden Prototyps die folgenden Schritte aufweist: (i) Verzerren eines zuvor rekonstruierten Prototyps derart, dass die Länge des zuvor rekonstruierten Prototyps gleich der Länge des laufenden rekonstruierten Prototyps ist; (ii) Rotieren des verzerrten vorherigen rekonstruierten Prototyps durch die optimale Rotation und Skalieren durch die erwähnte ers te optimale Verstärkung, wodurch der erwähnte laufende rekonstruierte Prototyp gebildet wird; (iii) Entnehmen eines zweiten Codevektors aus einem zweiten Codebuch, wobei der zweite Codevektor durch den erwähnten optimalen Index identifiziert ist, und wobei das zweite Codebuch eine Anzahl von Stufen gleich dem ersten Codebuch aufweist; (iv) Skalieren des zweiten Codevektors durch die zweite optimale Verstärkung; (v) Addieren des erwähnten skalierten zweiten Codevektors zu dem laufenden rekonstruierten Prototyp; und (vi) Wiederholen der Schritte (iii) bis (v) für jede der erwähnten Stufen in dem zweiten Codebuch.
  10. Verfahren nach Anspruch 9, wobei der Schritt des Interpolierens des Restsignals, die folgenden Schritte aufweist: (i) Berechnen. einer optimalen Ausrichtung (alignment) zwischen dem verzerrten vorherigen rekonstruierten Prototyp und dem erwähnten laufenden rekonstruierten Prototyp; (ii) Berechnen einer durchschnittlichen Verzögerung zwischen dem verzerrten vorherigen rekonstruierten Prototyp und dem laufenden rekonstruierten Prototyp, basierend auf der erwähnten optimalen Ausrichtung; und (iii) Interpolieren des erwähnten verzerrten vorherigen rekonstruierten Prototyps und des laufenden rekonstruierten Prototyps, wodurch das Restsignal gebildet wird, und zwar über dem Bereich zwischen dem verzerrten vorherigen rekonstruierten Prototyp und dem erwähnten laufenden rekonstruierten Prototyp, wobei das interpolierte Restsignal die erwähnte durchschnittliche Verzögerung besitzt.
  11. Verfahren nach Anspruch 10, wobei der Schritt der Synthetisierung eines Ausgangssprachsignals den Schritt des Filterns des interpolierten Restsignals mit einem LPC-Synthesefilter umfasst.
  12. Verfahren zum Codieren eines quasi-periodischen Sprachsignals, wobei das Sprachsignal durch ein Restsignal repräsentiert wird, und zwar erzeugt durch Filtern des Sprachsignals mit einem linearen vorhersagenden Codierungsanalysefilter (Linear Predictive Coding (LPC) Analysefilter) und wobei das Restsignal in Datenrahmen aufgeteilt ist, wobei die folgenden Schritte vorgesehen sind: a) Extrahieren (1002) einer repräsentativen Periode aus einem laufenden Rahmen des Restsignals als laufender Prototyp; b) Berechnen (1004) eines ersten Satzes von Parametern, die beschreiben, wie ein vorheriger Prototyp derart modifiziert werden muss, dass der erwähnte modifizierte vorherige Prototyp den laufenden Prototyp annähert. c) Auswählen (1006) eines oder mehrerer Codevektoren aus einem ersten Codebuch, wobei die Codevektoren, wenn summiert, die Differenz zwischen dem laufenden Prototyp und dem modifizierten vorherigen Prototyp annähern, und wobei die Codevektoren durch einen zweiten Satz von Parametern beschrieben werden; d) Rekonstruieren (1010) eines laufenden Prototyps basierend auf dem erwähnten ersten und zweiten Satz von Parametern; (e) Filtern des laufenden rekonstruierten Prototyps mit einem LPC-Synthesefilter; (f) Filtern eines vorherigen rekonstruierten Prototyps mit dem erwähnten LPC-Synthesefilter; (g) Interpolieren (1012) über den Bereich zwischen dem gefilterten laufenden rekonstruierten Prototyp und dem gefilterten vorherigen rekonstruierten Prototyp, wodurch ein Ausgabesprachsignal gebildet wird.
  13. System zur Codierung eines quasi-periodischen Sprachsignals, wobei das Sprachsignal durch ein Restsignal repräsentiert wird, und zwar erzeugt durch Filtern des Sprachsignals mit einem LPC-Analysefilter, wobei das Restsignal in Datenrahmen unterteilt ist, und wobei Folgendes vorgesehen ist: Mittel zum Extrahieren (904) einer repräsentativen Periode aus einem laufenden bzw. aktuellen Rahmen des Restsignals als laufender Prototyp; Mittel zum Berechnen (906) eines ersten Satzes von Parametern, die beschreiben, wie ein vorheriger Prototyp derart modifiziert werden muss, dass der erwähnte modifizierte vorherige Prototyp den laufenden Prototyp annähert; Mittel zur Auswahl (908) eines oder mehrerer Codevektoren aus einem ersten Codebuch, wobei die Codevektoren, wenn summiert, die Differenz zwischen dem laufenden Prototyp und dem modifizierten vorherigen Prototyp annähern, wobei die Codevektoren durch einen zweiten Satz von Parametern beschrieben werden; Mittel zum Rekonstruieren (912, 914, 916, 918) eines laufenden, rekonstruierten Prototyps basierend auf dem erwähnten ersten und zweiten Satz von Parametern; Mittel zum Interpolieren (920) des Restsignals über den Bereich zwischen dem laufenden, rekonstruierten Prototyp und einem vorherigen rekonstruierten Prototyp; Mittel zum Synthetisieren eines Ausgabesprachsignals basierend auf dem erwähnten interpolierten Restsignal.
  14. System nach Anspruch 13, wobei der laufende Rahmen eine Pitch oder Tonhöhenverzögerung besitzt, und wobei die Länge des laufenden Prototyps gleich der Pitchverzögerung ist.
  15. System nach Anspruch 13, wobei die Mittel zum Extrahieren den laufenden Prototyp unter Berücksichtigung einer „cut-free region" (freigeschnittene Region bzw. Bereich) extrahieren.
  16. System nach Anspruch 15, wobei die Mittel zum Extrahieren den laufenden Prototyp aus dem Ende des laufenden Rahmens extrahieren, und zwar unter Berücksichtigung der erwähnten „cut-free region".
  17. System nach Anspruch 13, wobei die Mittel zum Berechnen eines ersten Satzes von Parametern Folgendes aufweisen: ein erstes zirkuläres LPC-Synthesefilter, gekoppelt zum Empfang des erwähnten laufenden Prototyps und zur Ausgabe eines Zielsignals; Mittel zum Extrahieren des vorhergehenden Prototyps aus einem vorhergehenden Rahmen; ein Verzerrungs- bzw. Warpingfilter, gekoppelt zum Empfang des erwähnten vorherigen Prototyps, wobei das erwähnte Verzerrungsfilter einen verzerrten vorherigen Prototyp ausgibt, und zwar mit einer Länge gleich der Länge des laufenden Prototyps; ein zweites zirkuläres LPC-Synthesefilter, geschaltet zum Empfang des verzerrten vorherigen Prototyps, wobei das erwähnte zweite zirkuläre LPC-Synthesefilter einen gefilterten, verzerrten vorherigen Prototyp ausgibt; und Mittel zum Berechnen einer optimalen Drehung oder Rotation und einer ersten optimalen Verstärkung, wobei der erwähnte gefilterte, verzerrte vorherige Prototyp, gedreht durch die erwähnte optimale Drehung und skaliert durch die erwähnte erste optimale Verstärkung am Besten das Zielsignal approximiert.
  18. System nach Anspruch 17, wobei die erwähnten Mittel zum Berechnen die optimale Drehung berechnen, und die erste optimale Verstärkung, und zwar unter Berücksichtigung eines Pitch-Rotationssuchbereichs;
  19. System nach Anspruch 17, wobei die Mittel zum Berechnen die mittlere quadratische Differenz minimieren zwischen dem erwähnten gefilterten, verzerrten vorherigen Prototyp und dem erwähnten Zielsignal.
  20. System nach Anspruch 17, wobei das erste Codebuch eine oder mehrere Stufen aufweist, wobei die erwähnten Mittel zum Auswählen eines oder mehrerer Codevektoren Folgendes aufweisen: Mittel zum auf den neuesten Stand bringen des Zielsignals durch Subtrahieren des gefilterten, verzerrten vorherigen Prototyps, verdreht um die optimale Drehung und skaliert durch die erste optimale Verstärkung; Mittel zur Unterteilung des ersten Codebuchs in eine Vielzahl von Bereichen, wobei jeder der Bereiche einen Codevektor bildet; ein drittes zirkulierendes LPC-Synthesefilter, geschaltet zum Empfang der erwähnten Codevektoren, wobei das dritte zirkulierende LPC-Synthesefilter gefilterte Codevektoren ausgibt; Mittel zum Berechnen eines optimalen Indexes und einer zweiten optimalen Verstärkung für jede Stufe in dem ersten Codebuch, wobei Folgendes vorgesehen ist: Mittel zur Auswahl eines der erwähnten gefilterten Codevektoren, wobei der ausgewählte gefilterte Codevektor das Zielsignal am nächsten annähert und durch einen Optimalindex beschrieben wird, Mittel zum Berechnen einer zweiten optimalen Verstärkung, basierend auf der Korrelation zwischen dem Zielsignal und dem ausgewählten gefilterten Codevektor, und Mittel zum auf den neuesten Stand bringen des Zielsignals durch Subtrahieren des ausgewählten gefilterten Codevektors, skaliert durch die erwähnte zweite optimale Verstärkung; wobei der erwähnte zweite Satz von Parametern den erwähnten optimalen Index und die erwähnte zweite optimale Verstärkung für jede der erwähnten Stufen aufweist.
  21. System nach Anspruch 20, wobei die Mittel zum Rekonstruieren eines laufenden Prototyps Folgendes aufweisen: ein zweites Verzerrungsfilter, gekoppelt zum Empfang eines vorherigen rekonstruierten Prototyps, wobei das zweite Verzerrungsfilter einen verzerrten, vorherigen rekonstruierten Prototyp ausgibt, und zwar mit einer Länge gleich der Länge des laufenden rekonstruierten Prototyps; Mittel zum Drehen oder Rotieren des verzerrten, vorherigen rekonstruierten Prototyps durch die erwähnte optimale Drehung und Skalieren durch die erste optimale Verstärkung, wodurch der erwähnte laufende bzw. aktuelle rekonstruierte Prototyp gebildet wird; und Mittel zum Decodieren des erwähnten zweiten Satzes von Parameter, wobei ein zweiter Codevektor für jede Stufe in einem zweiten Codebuch mit einer Anzahl von Stufen gleich dem erwähnten ersten Codebuch decodiert wird, und wobei Folgendes vorgesehen ist: Mittel zur Entnahme des zweiten Codevektors aus dem zweiten Codebuch, wobei der zweite Codevektor durch den optimalen Index identifiziert wird, Mittel zum Skalieren des zweiten Codevektors durch die zweite optimale Verstärkung, und Mittel zum Addieren des erwähnten skalierten zweiten Codevektors zu dem erwähnten laufenden rekonstruierten Prototyp.
  22. System nach Anspruch 21, wobei die Mittel zum Interpolieren des Restsignals Folgendes aufweisen: Mittel zum Berechnen einer optimalen Ausrichtung zwischen dem verzerrten, vorherigen rekonstruierten Prototyp und dem erwähnten laufenden rekonstruierten Prototyp; Mittel zum Berechnen einer durchschnittlichen Verzögerung zwischen dem verzerrten, vorherigen rekonstruierten Prototyp und dem erwähnten laufenden rekonstruierten Prototyp, basierend auf der erwähnten optimalen Ausrichtung; und Mittel zum Interpolieren des verzerrten, vorherigen rekonstruierten Prototyps und des erwähnten laufenden rekonstruierten Prototyps, wodurch das Restsignal gebildet wird, und zwar über den Bereich zwischen dem verzerrten, vorherigen rekonstruierten Prototyp und dem erwähnten laufenden rekonstruierten Prototyp, wobei das interpolierte Restsignal die erwähnte durchschnittliche Verzögerung besitzt.
  23. System nach Anspruch 22, wobei die Mittel zum Synthetisieren eines Ausgangssprachsignals ein LPC-Synthesefilter aufweisen.
  24. System zum Codieren eines quasi-periodischen Sprachsignals, wobei das Sprachsignal durch ein Restsignal repräsentiert wird, und zwar erzeugt durch Filtern des Sprachsignals mit einem LPC-Analysefilter, wobei das Restsignal in Datenrahmen unterteilt ist, wobei Folgendes vorgesehen ist: Mittel zum Extrahieren (904) einer repräsentativen Periode aus einem laufenden Rahmen des Restsignals als laufender Prototyp; Mittel zum Berechnen (906) eines ersten Satzes von Parametern, die beschreiben wie ein vorheriger Prototyp zu modifizieren ist derart, dass der erwähnte modifizierte vorherige Prototyp den laufenden Prototyp annähert; Mittel zum Auswählen (908) von einem oder mehreren Codevektoren aus einem ersten Codebuch, wobei die Codevektoren dann, wenn sie summiert werden, die Differenz zwischen dem laufenden Prototyp und dem modifizierten vorherigen Prototyp annähern, und wobei die erwähnten Codevektoren durch einen zweiten Satz von Parametern beschrieben werden; Mittel zum Rekonstruieren (912, 914, 916, 918) eines laufenden rekonstruierten Prototyps, basierend auf dem erwähnten ersten und zweiten Satz von Parametern; ein erstes LPC-Synthesefilter, geschaltet zum Empfang des erwähnten, laufenden rekonstruierten Prototyps, wobei das erwähnte erste LPC-Synthesefilter einen gefilterten, laufenden rekonstruierten Prototyp ausgibt; ein zweites LPC-Synthesefilter, geschaltet zum Empfang eines vorherigen rekonstruierten Prototyps, wobei das erwähnte zweite LPC-Synthesefilter einen gefilterten, vorherigen rekonstruierten Prototyp ausgibt; und Mittel zum Interpolieren (920) über den Bereich zwischen dem gefilterten, laufenden rekonstruierten Prototyp und dem gefilterten, vorherigen rekonstruierten Prototyp, um dadurch ein Ausgabesprachsignal zu bilden.
DE69928288T 1998-12-21 1999-12-21 Kodierung periodischer sprache Expired - Lifetime DE69928288T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/217,494 US6456964B2 (en) 1998-12-21 1998-12-21 Encoding of periodic speech using prototype waveforms
US217494 1998-12-21
PCT/US1999/030588 WO2000038177A1 (en) 1998-12-21 1999-12-21 Periodic speech coding

Publications (2)

Publication Number Publication Date
DE69928288D1 DE69928288D1 (de) 2005-12-15
DE69928288T2 true DE69928288T2 (de) 2006-08-10

Family

ID=22811325

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69928288T Expired - Lifetime DE69928288T2 (de) 1998-12-21 1999-12-21 Kodierung periodischer sprache

Country Status (11)

Country Link
US (1) US6456964B2 (de)
EP (1) EP1145228B1 (de)
JP (1) JP4824167B2 (de)
KR (1) KR100615113B1 (de)
CN (1) CN1242380C (de)
AT (1) ATE309601T1 (de)
AU (1) AU2377600A (de)
DE (1) DE69928288T2 (de)
ES (1) ES2257098T3 (de)
HK (1) HK1040806B (de)
WO (1) WO2000038177A1 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754630B2 (en) * 1998-11-13 2004-06-22 Qualcomm, Inc. Synthesis of speech from pitch prototype waveforms by time-synchronous waveform interpolation
US7092881B1 (en) * 1999-07-26 2006-08-15 Lucent Technologies Inc. Parametric speech codec for representing synthetic speech in the presence of background noise
US6959274B1 (en) 1999-09-22 2005-10-25 Mindspeed Technologies, Inc. Fixed rate speech compression system and method
US6715125B1 (en) * 1999-10-18 2004-03-30 Agere Systems Inc. Source coding and transmission with time diversity
JP2001255882A (ja) * 2000-03-09 2001-09-21 Sony Corp 音声信号処理装置及びその信号処理方法
US6901362B1 (en) * 2000-04-19 2005-05-31 Microsoft Corporation Audio segmentation and classification
CN1432176A (zh) * 2000-04-24 2003-07-23 高通股份有限公司 用于预测量化有声语音的方法和设备
US6584438B1 (en) 2000-04-24 2003-06-24 Qualcomm Incorporated Frame erasure compensation method in a variable rate speech coder
US6937979B2 (en) * 2000-09-15 2005-08-30 Mindspeed Technologies, Inc. Coding based on spectral content of a speech signal
US7171357B2 (en) * 2001-03-21 2007-01-30 Avaya Technology Corp. Voice-activity detection using energy ratios and periodicity
US20020184009A1 (en) * 2001-05-31 2002-12-05 Heikkinen Ari P. Method and apparatus for improved voicing determination in speech signals containing high levels of jitter
KR100487645B1 (ko) * 2001-11-12 2005-05-03 인벤텍 베스타 컴파니 리미티드 유사주기 파형들을 이용한 음성 인코딩 방법
US7389275B2 (en) * 2002-03-05 2008-06-17 Visa U.S.A. Inc. System for personal authorization control for card transactions
US20040002856A1 (en) * 2002-03-08 2004-01-01 Udaya Bhaskar Multi-rate frequency domain interpolative speech CODEC system
US20040235423A1 (en) * 2003-01-14 2004-11-25 Interdigital Technology Corporation Method and apparatus for network management using perceived signal to noise and interference indicator
US7738848B2 (en) * 2003-01-14 2010-06-15 Interdigital Technology Corporation Received signal to noise indicator
US7627091B2 (en) * 2003-06-25 2009-12-01 Avaya Inc. Universal emergency number ELIN based on network address ranges
KR100629997B1 (ko) * 2004-02-26 2006-09-27 엘지전자 주식회사 오디오 신호의 인코딩 방법
US7130385B1 (en) 2004-03-05 2006-10-31 Avaya Technology Corp. Advanced port-based E911 strategy for IP telephony
US20050216260A1 (en) * 2004-03-26 2005-09-29 Intel Corporation Method and apparatus for evaluating speech quality
US7246746B2 (en) * 2004-08-03 2007-07-24 Avaya Technology Corp. Integrated real-time automated location positioning asset management system
CN101048813B (zh) 2004-08-30 2012-08-29 高通股份有限公司 用于语音ip传输的自适应去抖动缓冲器
US8085678B2 (en) * 2004-10-13 2011-12-27 Qualcomm Incorporated Media (voice) playback (de-jitter) buffer adjustments based on air interface
KR100639968B1 (ko) * 2004-11-04 2006-11-01 한국전자통신연구원 음성 인식 장치 및 그 방법
US7589616B2 (en) * 2005-01-20 2009-09-15 Avaya Inc. Mobile devices including RFID tag readers
KR101203348B1 (ko) 2005-01-31 2012-11-20 스카이프 가중 오버랩 애드 방법
US8355907B2 (en) * 2005-03-11 2013-01-15 Qualcomm Incorporated Method and apparatus for phase matching frames in vocoders
US8155965B2 (en) 2005-03-11 2012-04-10 Qualcomm Incorporated Time warping frames inside the vocoder by modifying the residual
US8107625B2 (en) 2005-03-31 2012-01-31 Avaya Inc. IP phone intruder security monitoring system
US7599833B2 (en) * 2005-05-30 2009-10-06 Electronics And Telecommunications Research Institute Apparatus and method for coding residual signals of audio signals into a frequency domain and apparatus and method for decoding the same
US20090210219A1 (en) * 2005-05-30 2009-08-20 Jong-Mo Sung Apparatus and method for coding and decoding residual signal
US7177804B2 (en) * 2005-05-31 2007-02-13 Microsoft Corporation Sub-band voice codec with multi-stage codebooks and redundant coding
US7184937B1 (en) * 2005-07-14 2007-02-27 The United States Of America As Represented By The Secretary Of The Army Signal repetition-rate and frequency-drift estimator using proportional-delayed zero-crossing techniques
US7821386B1 (en) 2005-10-11 2010-10-26 Avaya Inc. Departure-based reminder systems
US8259840B2 (en) * 2005-10-24 2012-09-04 General Motors Llc Data communication via a voice channel of a wireless communication network using discontinuities
CN101317218B (zh) * 2005-12-02 2013-01-02 高通股份有限公司 用于频域波形对准的系统、方法和设备
US8346544B2 (en) * 2006-01-20 2013-01-01 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with closed loop re-decision
US8090573B2 (en) * 2006-01-20 2012-01-03 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with open loop re-decision
US8032369B2 (en) * 2006-01-20 2011-10-04 Qualcomm Incorporated Arbitrary average data rates for variable rate coders
RU2418322C2 (ru) * 2006-06-30 2011-05-10 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Аудиокодер, аудиодекодер и аудиопроцессор, имеющий динамически изменяющуюся характеристику перекоса
US8682652B2 (en) 2006-06-30 2014-03-25 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder and audio processor having a dynamically variable warping characteristic
US8260609B2 (en) * 2006-07-31 2012-09-04 Qualcomm Incorporated Systems, methods, and apparatus for wideband encoding and decoding of inactive frames
US20100030557A1 (en) 2006-07-31 2010-02-04 Stephen Molloy Voice and text communication system, method and apparatus
JP4380669B2 (ja) * 2006-08-07 2009-12-09 カシオ計算機株式会社 音声符号化装置、音声復号装置、音声符号化方法、音声復号方法、及び、プログラム
US8239190B2 (en) * 2006-08-22 2012-08-07 Qualcomm Incorporated Time-warping frames of wideband vocoder
EP2458588A3 (de) * 2006-10-10 2012-07-04 Qualcomm Incorporated Verfahren und Vorrichtung zur kodierung und dekodierung von Audiosignalen
EP2538406B1 (de) * 2006-11-10 2015-03-11 Panasonic Intellectual Property Corporation of America Verfahren und Vorrichtung zum Dekodieren eines Parameters eines CELP-kodierten Sprachsignals
US20080120098A1 (en) * 2006-11-21 2008-05-22 Nokia Corporation Complexity Adjustment for a Signal Encoder
US8005671B2 (en) * 2006-12-04 2011-08-23 Qualcomm Incorporated Systems and methods for dynamic normalization to reduce loss in precision for low-level signals
CN100483509C (zh) * 2006-12-05 2009-04-29 华为技术有限公司 声音信号分类方法和装置
US9653088B2 (en) * 2007-06-13 2017-05-16 Qualcomm Incorporated Systems, methods, and apparatus for signal encoding using pitch-regularizing and non-pitch-regularizing coding
US20100006527A1 (en) * 2008-07-10 2010-01-14 Interstate Container Reading Llc Collapsible merchandising display
US9232055B2 (en) * 2008-12-23 2016-01-05 Avaya Inc. SIP presence based notifications
GB2466675B (en) 2009-01-06 2013-03-06 Skype Speech coding
GB2466673B (en) * 2009-01-06 2012-11-07 Skype Quantization
GB2466671B (en) * 2009-01-06 2013-03-27 Skype Speech encoding
GB2466670B (en) * 2009-01-06 2012-11-14 Skype Speech encoding
GB2466669B (en) * 2009-01-06 2013-03-06 Skype Speech coding
GB2466674B (en) * 2009-01-06 2013-11-13 Skype Speech coding
GB2466672B (en) * 2009-01-06 2013-03-13 Skype Speech coding
KR20110001130A (ko) * 2009-06-29 2011-01-06 삼성전자주식회사 가중 선형 예측 변환을 이용한 오디오 신호 부호화 및 복호화 장치 및 그 방법
US8452606B2 (en) * 2009-09-29 2013-05-28 Skype Speech encoding using multiple bit rates
CN105374362B (zh) 2010-01-08 2019-05-10 日本电信电话株式会社 编码方法、解码方法、编码装置、解码装置以及记录介质
FR2961937A1 (fr) * 2010-06-29 2011-12-30 France Telecom Codage/decodage predictif lineaire adaptatif
ES2559040T3 (es) * 2011-03-10 2016-02-10 Telefonaktiebolaget Lm Ericsson (Publ) Relleno de subvectores no codificados en señales de audio codificadas por transformada
EP3611728A1 (de) * 2012-03-21 2020-02-19 Samsung Electronics Co., Ltd. Verfahren und vorrichtung für hochfrequente codierung/decodierung zur bandbreitenerweiterung
US9842598B2 (en) * 2013-02-21 2017-12-12 Qualcomm Incorporated Systems and methods for mitigating potential frame instability
WO2014202539A1 (en) 2013-06-21 2014-12-24 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for improved concealment of the adaptive codebook in acelp-like concealment employing improved pitch lag estimation
PL3011555T3 (pl) 2013-06-21 2018-09-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Rekonstrukcja ramki sygnału mowy
CN105830154B (zh) 2013-12-19 2019-06-28 瑞典爱立信有限公司 估计音频信号中的背景噪声
TWI688609B (zh) 2014-11-13 2020-03-21 美商道康寧公司 含硫聚有機矽氧烷組成物及相關態樣

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62150399A (ja) * 1985-12-25 1987-07-04 日本電気株式会社 音声合成用基本周期波形生成法
JPH02160300A (ja) * 1988-12-13 1990-06-20 Nec Corp 音声符号化方式
JP2650355B2 (ja) * 1988-09-21 1997-09-03 三菱電機株式会社 音声分析合成装置
US5884253A (en) 1992-04-09 1999-03-16 Lucent Technologies, Inc. Prototype waveform speech coding with interpolation of pitch, pitch-period waveforms, and synthesis filter
US5734789A (en) * 1992-06-01 1998-03-31 Hughes Electronics Voiced, unvoiced or noise modes in a CELP vocoder
JPH06266395A (ja) * 1993-03-10 1994-09-22 Mitsubishi Electric Corp 音声符号化装置および音声復号化装置
JPH07177031A (ja) * 1993-12-20 1995-07-14 Fujitsu Ltd 音声符号化制御方式
US5517595A (en) 1994-02-08 1996-05-14 At&T Corp. Decomposition in noise and periodic signal waveforms in waveform interpolation
US5809459A (en) 1996-05-21 1998-09-15 Motorola, Inc. Method and apparatus for speech excitation waveform coding using multiple error waveforms
JP3531780B2 (ja) * 1996-11-15 2004-05-31 日本電信電話株式会社 音声符号化方法および復号化方法
JP3296411B2 (ja) * 1997-02-21 2002-07-02 日本電信電話株式会社 音声符号化方法および復号化方法
US5903866A (en) * 1997-03-10 1999-05-11 Lucent Technologies Inc. Waveform interpolation speech coding using splines
WO1999010719A1 (en) * 1997-08-29 1999-03-04 The Regents Of The University Of California Method and apparatus for hybrid coding of speech at 4kbps
US6092039A (en) * 1997-10-31 2000-07-18 International Business Machines Corporation Symbiotic automatic speech recognition and vocoder
JP3268750B2 (ja) * 1998-01-30 2002-03-25 株式会社東芝 音声合成方法及びシステム
US6260017B1 (en) * 1999-05-07 2001-07-10 Qualcomm Inc. Multipulse interpolative coding of transition speech frames
US6330532B1 (en) * 1999-07-19 2001-12-11 Qualcomm Incorporated Method and apparatus for maintaining a target bit rate in a speech coder
US6324505B1 (en) * 1999-07-19 2001-11-27 Qualcomm Incorporated Amplitude quantization scheme for low-bit-rate speech coders

Also Published As

Publication number Publication date
WO2000038177A1 (en) 2000-06-29
JP2003522965A (ja) 2003-07-29
DE69928288D1 (de) 2005-12-15
HK1040806A1 (en) 2002-06-21
EP1145228A1 (de) 2001-10-17
US20020016711A1 (en) 2002-02-07
US6456964B2 (en) 2002-09-24
HK1040806B (zh) 2006-10-06
KR20010093208A (ko) 2001-10-27
EP1145228B1 (de) 2005-11-09
ATE309601T1 (de) 2005-11-15
AU2377600A (en) 2000-07-12
CN1331825A (zh) 2002-01-16
ES2257098T3 (es) 2006-07-16
KR100615113B1 (ko) 2006-08-23
CN1242380C (zh) 2006-02-15
JP4824167B2 (ja) 2011-11-30

Similar Documents

Publication Publication Date Title
DE69928288T2 (de) Kodierung periodischer sprache
DE60121405T2 (de) Transkodierer zur Vermeidung einer Kaskadenkodierung von Sprachsignalen
DE60117144T2 (de) Sprachübertragungssystem und verfahren zur behandlung verlorener datenrahmen
DE60006271T2 (de) Celp sprachkodierung mit variabler bitrate mittels phonetischer klassifizierung
DE602004007786T2 (de) Verfahren und vorrichtung zur quantisierung des verstärkungsfaktors in einem breitbandsprachkodierer mit variabler bitrate
DE60124274T2 (de) Codebuchstruktur und suchverfahren für die sprachkodierung
DE69934320T2 (de) Sprachkodierer und verfahren zur codebuch-suche
DE60011051T2 (de) Celp-transkodierung
DE69727895T2 (de) Verfahren und Vorrichtung zur Sprachkodierung
US5018200A (en) Communication system capable of improving a speech quality by classifying speech signals
EP0409239B1 (de) Verfahren zur Sprachkodierung und -dekodierung
DE69535723T2 (de) Verfahren und vorrichtung zur sprachkodierung mit reduzierter, variabler bitrate
DE69916321T2 (de) Kodierung eines verbesserungsmerkmals zur leistungsverbesserung in der kodierung von kommunikationssignalen
DE60029990T2 (de) Glättung des verstärkungsfaktors in breitbandsprach- und audio-signal dekodierer
DE60120766T2 (de) Indizieren von impulspositionen und vorzeichen in algebraischen codebüchern zur codierung von breitbandsignalen
EP0422232B1 (de) Stimmenkodierer
DE69926821T2 (de) Verfahren zur signalgesteuerten Schaltung zwischen verschiedenen Audiokodierungssystemen
DE69910058T2 (de) Verbesserung der periodizität eines breitbandsignals
DE69934608T2 (de) Adaptive kompensation der spektralen verzerrung eines synthetisierten sprachresiduums
DE19647298C2 (de) Kodiersystem
DE60133757T2 (de) Verfahren und vorrichtung zur kodierung von stimmloser sprache
DE60126149T2 (de) Verfahren, einrichtung und programm zum codieren und decodieren eines akustischen parameters und verfahren, einrichtung und programm zum codieren und decodieren von klängen
DE60031002T2 (de) Multimodaler mischbereich-sprachkodierer mit geschlossener regelschleife
DE69729527T2 (de) Verfahren und Vorrichtung zur Kodierung von Sprachsignalen
DE60012760T2 (de) Multimodaler sprachkodierer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition