DE60226308T2 - Quantisierung der Anregung in einem Geräuschrückkopplungskodierungssytem mit allgemeiner Rauschformung - Google Patents

Quantisierung der Anregung in einem Geräuschrückkopplungskodierungssytem mit allgemeiner Rauschformung Download PDF

Info

Publication number
DE60226308T2
DE60226308T2 DE60226308T DE60226308T DE60226308T2 DE 60226308 T2 DE60226308 T2 DE 60226308T2 DE 60226308 T DE60226308 T DE 60226308T DE 60226308 T DE60226308 T DE 60226308T DE 60226308 T2 DE60226308 T2 DE 60226308T2
Authority
DE
Germany
Prior art keywords
filter
zero
term
vector
signal
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
DE60226308T
Other languages
English (en)
Other versions
DE60226308D1 (de
Inventor
Jes Laguna Niguel THYSSEN
Juin-Hwey Irvine Chen
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
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Application granted granted Critical
Publication of DE60226308D1 publication Critical patent/DE60226308D1/de
Publication of DE60226308T2 publication Critical patent/DE60226308T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein digitale Kommunikationen und insbesondere die digitale Codierung (oder Kompression) von Sprach- und/oder Audiosignalen.
  • Stand der Technik
  • Bei der Sprach- oder Audiocodierung codiert der Codierer das Eingangssprachsignal oder das Eingangsaudiosignal in einen digitalen Bistrom zur Übertragung oder Speicherung, und der Decodierer decodiert den Bitstrom in ein Ausgangssprachsignal oder ein Ausgangsaudiosignal. Die Kombination aus Codierer und Decodierer wird Codec genannt.
  • Auf dem Gebiet der Sprachcodierung ist die prädiktive Codierung ein sehr populäres Verfahren. Die Prädiktion der Eingangswellenform wird dazu verwendet, die Redundanz aus der Wellenform zu entfernen, und anstatt dass eine Eingangssprachwellenform direkt quantisiert wird, wird eine Restsignalwellenform quantisiert. Der/Die Prädiktor(en), der/die bei der prädiktiven Codierung verwendet wird/werden, kann/können entweder rückwärts adaptive oder vorwärts adaptive Prädiktoren sein. Rückwärts adaptive Prädiktoren benötigen keine Seiteninformationen (side information), da sie von einer vorher quantisierten Wellenform abgeleitet werden, und deshalb können sie an einem Decodierer abgeleitet werden. Andererseits benötigt ein/benötigen vorwärts adaptive(r) Prädiktor(en) Seiteninformationen, die an den Decodierer übertragen werden müssen, da sie von der Eingangswellenform abgeleitet werden, die an dem Decodierer nicht zur Verfügung steht.
  • Auf dem Gebiet der Sprachcodierung werden allgemein zwei Arten von Prädiktoren verwendet. Eine erste Art von Prädiktor wird als Kurzzeitprädiktor bezeichnet. Er ist darauf ausgerichtet, eine Redundanz zwischen nahe beieinanderliegenden Abtastwerten in der Eingangswellenform zu entfernen. Dies ist äquivalent zu dem Entfernen einer spektralen Hüllkurve der Eingangswellenform. Eine zweite Art von Prädiktor wird oft als ein Langzeitprädiktor bezeichnet. Er entfernt die Redundanz zwischen Abtastwerten, die weiter auseinanderliegen und typischerweise um eine Zeitdifferenz beabstandet sind, die für eine geeignete Dauer konstant ist. Für die Sprache ist dieser Zeitunterschied typischerweise äquivalent zu einer lokalen Pitch-Periode (Grundfrequenzperiode) des Sprachsignals, und konsequenterweise wird der Langzeitprädiktor oft als ein Pitchprädiktor bezeichnet. Der Langzeitprädiktor entfernt eine harmonische Struktur bzw. Oberwellenstruktur der Eingangswellenform. Ein Restsignal, das nach dem Entfernen der Redundanz durch den/die Prädiktor(en) übrigbleibt, wird zusammen mit jeglichen Informationen, die benötigt werden, um den/die Prädiktor(en) an dem Decodierer zu rekonstruieren, quantisiert.
  • Diese Quantisierung des Restsignals stellt eine Reihe von Bits bereit, die eine komprimierte Version des Restsignals darstellen. Diese komprimierte Version des Restsignals wird oft als das Anregungssignal bezeichnet und wird dazu verwendet, eine Approximation der Eingangswellenform an dem Decodierer in Kombination mit dem/den Prädiktor(en) zu rekonstruieren. Das Erzeugen der Reihen von Bits, die das Anregungssignal darstellen, wird allgemein als Anregungsquantisierung (excitation quantization) bezeichnet und erfordert im Allgemeinen die Suche nach und die Auswahl einer besten oder bevorzugten Kandidatenanregung in bzw. aus einem Satz von Kandidatenanregungen im Hinblick auf eine gewisse Kosten-Nutzen-Funktion. Die Suche und die Auswahl erfordern eine Anzahl von mathematischen Operationen, die durchgeführt werden müssen, was zu einer gewissen Berechnungskomplexität führt, wenn die Operationen in einer Signalverarbeitungsvorrichtung implementiert werden. Es ist vorteilhaft, die Anzahl an mathematischen Operationen zu minimieren, um einen Stromverbrauch der Signalverarbeitungsvorrichtung zu minimieren und eine Verarbeitungsbandbreite der Signalverarbeitungsvorrichtung zu maximieren.
  • Die Anregungsquantisierung in der prädiktiven Codierung kann auf einer Anregungsquantisierung von Abtastwert um Abtastwert beruhen. Dies wird als skalare Quantisierung (SQ) bezeichnet. Die Techniken zur Durchführung der skalaren Quantisierung der Anregung sind relativ einfach, und somit ist die Berechnungskomplexität, die mit der SQ assoziiert ist, relativ überschaubar.
  • Alternativ dazu kann die Anregung auf der Grundlage von Gruppen von Abtastwerten quantisiert werden. Das Quantisieren von Gruppen von Abtastwerten wird oftmals als Vektorquantisierung (VQ) bezeichnet, und wenn sie an die Anregung angelegt wird, wird sie einfach als Anregungs-VQ bezeichnet. Die Verwendung der VQ kann eine bessere Leistung als die SQ bereitstellen und kann notwendig sein, wenn die Anzahl an Codierbits pro Restsignalabtastwert klein wird (typischerweise kleiner als 2 Bit pro Abtastwert). Auch kann die VQ im Vergleich zu der SQ eine größere Flexibilität bei der Bitzuweisung bereitstellen, da eine gebrochene Zahl an Bits pro Abtastwert verwendet werden kann. Aber die Anregungs-VQ kann relativ komplex sein, wenn man sie mit der Anregungs-SQ vergleicht. Deshalb besteht eine Notwendigkeit, die Komplexität der Anregungs-VQ, wie sie in einer prädiktiven Codierungsumgebung verwendet wird, zu reduzieren.
  • Ein Typ der prädiktiven Codierung ist die Noise Feedback Codierung (NFC) (Rauschrückkopplungs-Codierung), bei der die Noise Feedback Filterung dazu verwendet wird, das Codierungsrauschen zu formen, um eine perzeptuelle Qualität von quantisierter Sprache zu verbessern. Deshalb wäre es vorteilhaft, eine Anregungs-VQ mit Noise Feedback Codierung zu verwenden und dies außerdem in einer rechnerisch effizienten Art und Weise durchzuführen.
  • Das Dokument "WATTS L ET AL: "A vector ADPCM analysis-by-synthesis configuration for 16 kbit/s speech coding", IEEE, 28. November 1988 (1988-11-28), Seiten 275–279, XP010071572 offenbart einen Sprachcodierungsalgorithmus auf der Grundlage der Einführung eines Vektorquantisierers in eine ADPCM-Konfiguration.
  • Es ist eine Aufgabe der vorliegenden Erfindung, die Komplexität einer Anregungs-VQ zu reduzieren, wie sie in der Umgebung einer prädiktiven Codierung verwendet wird. Es ist ferner eine Aufgabe der Erfindung, eine Anregungs-VQ mit einer Noise-Feedback-Codierung zu verwenden und dies außerdem in einer rechnerisch effizienten Art und Weise durchzuführen.
  • Diese Aufgabe wird von einem Verfahren zur Erzeugung eines NULLZUSTANDS-Antwortfehlervektors, das in einem Noise-Feedback-Codierungs-(NFC)-Verfahren durchgeführt wird, wie dies in Anspruch 1 angegeben ist, und von einem Verfahren zur Anregungsquantisierung, die einem Eingangssignalvektor entspricht, das in einem Noise-Feedback-Codierungs-(NFC)-Verfahren durchgeführt wird, wie es in Anspruch 13 angegeben ist, erzielt.
  • Vorteilhafte Ausführungsbeispiele der Erfindung sind in den Unteransprachen definiert.
  • Die vorliegende Erfindung umfasst effiziente Verfahren, die die Anregungsquantisierung in einer Noise-Feedback-Codierung zum Beispiel in NFC-Systemen betreffen, bei denen die Kurzzeit-Formung des Codierungsrauschens verallgemeinert wird. Die Verfahren werden primär in dem Abschnitt IX.D und in Verbindung mit den 2131 beschrieben. Die Verfahren basieren zum Teil auf dem Trennen eines NFC-Quantisierungsfehlersignals in NULLZUSTANDS- und NULLEINGABE-Antwortbeiträge. Die Verfahren ermöglichen die allgemeine Formung des Codierungsrauschens, während sie eine effiziente Anregungsquantisierung bereitstellen. Die vorliegende Erfindung stellt ein effizientes Verfahren zur Erzeugung einer NULLZUSTANDS-Antwort mit der verallgemeinerten Rauschformung bereit.
  • In einem Ausführungsbeispiel wird das Verfahren in einem Noise-Feedback-Codierungs-(NFC)-Systern durchgeführt, das eine entsprechende NULLZUSTANDS-Filterstruktur aufweist, wobei die NULLZUSTANDS-Filterstruktur mehrere Filter enthält. Das Verfahren umfasst Folgendes: (a) Transformieren der NULLZUSTANDS-Filterstruktur in eine zweite NULLZUSTANDS-Filterstruktur, die nur ein Allnull-Filter enthält, wobei das Allnull-Filter eine Filterantwort aufweist, die im Wesentlichen äquivalent zu einer Filterantwort der NULLZUSTANDS-Filterstruktur ist, die mehrere Filter enthält; und (b) Filtern eines VQ-Codevektors mit dem Allnull-Filter, um den NULLZUSTANDS-Antwortfehlervektor zu erzeugen, der dem VQ-Codevektor entspricht.
  • Terminologie
  • Prädiktor:
  • Ein Prädiktor P, wie auf ihn hier Bezug genommen wird, sagt einen aktuellen Signalwert (z. B. einen aktuellen Abtastwert) auf der Grundlage von vorangegangenen oder vergangenen Signalwerten (z. B. vergangene Abtastwerte) voraus. Ein Prädiktor kann ein Kurzzeitprädiktor oder ein Langzeitprädiktor sein. Ein Kurzzeitsignalprädiktor (z. B. ein Kurzzeitsprachprädiktor) kann einen aktuellen Signalabtastwert (z. B. einen Sprachabtastwert) auf der Grundlage von benachbarten Signalabtastwerten aus der unmittelbaren Vergangenheit voraussagen. Im Hinblick auf die Sprachsignale entfernt ein derartiges "Kurzzeit"-Voraussagen Redundanzen zwischen zum Beispiel benachbarten oder näher kommenden Signalabtastwerten. Ein Lang zeitsignalprädiktor kann einen aktuellen Signalabtastwert auf der Grundlage von Signalabtastwerten aus der relativ weit zurückliegenden Vergangenheit voraussagen. Im Hinblick auf ein Sprachsignal entfernt ein solches "Langzeit"-Voraussagen Redundanzen zwischen relativ weit entfernten Signalabtastwerten. Zum Beispiel kann ein Langzeitsprachprädiktor Redundanzen zwischen weit entfernten Sprachabtastwerten aufgrund einer Pitch-Periodizität des Sprachsignals entfernen.
  • Der Ausdruck "ein Prädiktor P sagt ein Signal s(n) voraus, um ein Signal ps(n) zu erzeugen" bedeutet das Gleiche wie der Ausdruck "ein Prädiktor P erstellt eine Prädiktion ps(n) eines Signals s(n)". Ein Prädiktor kann auch äquivalent zu einem prädiktiven Filter betrachtet werden, das prädiktiv ein Eingangssignal filtert, um ein prädiktiv gefiltertes Ausgangssignal zu erzeugen.
  • Codierungsrauschen und Filterung davon:
  • Oftmals kann ein Sprachsignal zum Teil durch spektrale Charakteristiken (d. h., das Frequenzspektrum) des Sprachsignals charakterisiert werden. Zwei bekannte spektrale Charakteristiken umfassen 1) das, was als eine harmonische Feinstruktur oder Linienfrequenzen des Sprachsignals bezeichnet wird, und 2) eine spektrale Hüllkurve des Sprachsignals. Die harmonische Feinstruktur umfasst zum Beispiel Pitch-Oberschwingungen und wird als eine (spektrale) Langzeitcharakteristik des Sprachsignals betrachtet. Auf der anderen Seite wird die spektrale Hüllkurve des Sprachsignals als eine (spektrale) Kurzzeitcharakteristik des Sprachsignals betrachtet.
  • Die Codierung eines Sprachsignals kann ein akustisches Rauschen verursachen, wenn die codierte Sprache von einem Decodierer decodiert wird. Das akustische Rauschen tritt auf, weil das codierte Sprachsignal Codierungsrauschen enthält, das durch den Sprachcodierungsprozess, z. B. durch das Quantisieren der Signale in dem Codierungsprozess, eingeleitet worden ist. Das Codierungsrauschen kann spektrale Charakteristiken (d. h., ein Spektrum) aufweisen, das sich von den spektralen Charakteristiken (d. h., dem Spektrum) der natürlichen Sprache (wie dies oben charakterisiert worden ist) unterscheidet. Ein solches akustisches Codierungsrauschen kann durch spektrales Formen des Codierungsrauschens (d. h., Formen des Codierungsrauschspektrums) derart verringert werden, dass es den spektralen Charakteristiken (d. h., dem Spektrum) des Sprachsignals entspricht oder bis zu einem gewissen Grad folgt. Dies wird als "spektrale Rauschformung" (spectral noise shaping) des Codierungsrauschens oder als "Formung des Codierungsrauschspektrums" bezeichnet. Das Codierungsrauschen wird so geformt, dass es dem Sprachsignalspektrum nur "bis zu einem gewissen Grad" folgt, weil es nicht notwendig ist, dass das Codierungsrauschspektrum dem Sprachsignalspektrum exakt folgt. Vielmehr wird das Codierungsrauschspektrum in ausreichender Weise geformt, um das akustische Rauschen zu reduzieren, wodurch die perzeptuelle Qualität der decodierten Sprache verbessert wird.
  • Folglich wird das Formen des Codierungsrauschspektrums (d. h., das spektrale Formen des Codierungsrauschens) derart, dass es der harmonischen Feinstruktur (d. h., der spektralen Langzeitcharakteristik) des Sprachsignals folgt, als "harmonische (spektrale) Rauschformung" oder "(spektrale) Langzeit-Rauschformung" bezeichnet. Ebenso wird das Formen des Codierungsrauschspektrums derart, dass es der spektralen Hüllkurve (d. h., der spektralen Kurzzeitcharakteristik) des Sprachsignals folgt, als eine "(spektrale) Kurzzeitrauschformung" oder "(spektrale) Hüllkurvenrauschformung" bezeichnet.
  • Noise Feedback Filter können verwendet werden, um das Codierungsrauschen spektral zu formen, damit es den spektralen Charakteristiken des Sprachsignals folgt, um so das oben erwähnte akustische Rauschen zu reduzieren. Zum Beispiel kann ein Kurzzeitrausch-Noise-Feedback-Filter das Codierungsrauschen einer Kurzzeitfilterung unterziehen, um das Codierungsrauschen spektral so zu formen, dass es der spektralen Kurzzeitcharakteristik (d. h., der Hüllkurve) des Sprachsignals folgt. Anderererseits kann ein Langzeit-Noise-Feedback-Filter das Codierungsrauschen einer Langzeitfilterung unterziehen, um das Codierungsrauschen so zu formen, dass es der spektralen Langzeitcharakteristik (d. h., der harmonischen Feinstruktur oder den Pitch-Oberschwingungen) des Sprachsignals folgt. Deshalb können in der vorliegenden Erfindung Kurzzeit-Noise-Feedback-Filter eine spektrale Kurzzeitformung oder spektrale Hüllkurvenrauschformung des Codierungsrauschens bewirken, während Langzeit-Noise-Feedback-Filter eine spektrale Langzeitformung oder eine spektrale harmonische Rauschformung des Codierungsrauschens bewirken können.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. In den Zeichnungen geben gleiche Bezugszeichen gleiche oder funktionell ähnliche Elemente an.
  • 1 ist ein Blockdiagramm einer ersten herkömmlichen Noise Feedback Codierungsstruktur bzw. eines ersten herkömmlichen Codecs.
  • 1A ist ein Blockdiagramm einer beispielhaften NFC-Struktur bzw. eines beispielhaften Codecs gemäß einem ersten Beispiels, die/der zusammengesetzte Kurzzeit- und Langzeitprädiktoren und ein zusammengesetztes Kurzzeit- und Langzeit-Noise-Feedback-Filter verwendet.
  • 2 ist ein Blockdiagramm einer zweiten herkömmlichen Noise Feedback Codierungsstruktur bzw. eines zweiten herkömmlichen Codecs.
  • 2A ist ein Blockdiagramm einer beispielhaften NFC-Struktur bzw. eines beispielhaften Codecs gemäß einem zweiten Beispiel, die/der einen zusammengesetzten Kurzzeit- und Langzeitprädiktor und ein zusammengesetztes Kurzzeit- und Langzeit-Noise-Feedback-Filter verwendet.
  • 3 ist ein Blockdiagramm einer ersten beispielhaften Anordnung einer beispielhaften NFC-Struktur bzw. eines beispielhaften Codecs gemäß einem dritten Beispiel.
  • 4 ist ein Blockdiagramm einer ersten beispielhaften Anordnung einer/eines beispielhaften verschachtelten zweistufigen NFC-Struktur bzw. Codecs gemäß einem vierten Beispiel.
  • 5 ist ein Blockdiagramm einer ersten beispielhaften Anordnung einer/eines beispielhaften verschachtelten zweistufigen NFC-Struktur bzw. Codecs gemäß einem fünften Beispiel.
  • 5A ist ein Blockdiagramm einer alternativen, aber mathematisch äquivalenten Signalkombinierungsanordnung, die einer Signalkombinierungsanordnung von 5 entspricht.
  • 6 ist ein Blockdiagramm einer ersten beispielhaften Anordnung einer/eines beispielhaften verschachtelten zweistufigen NFC-Struktur bzw. Codecs gemäß einem sechsten Beispiel.
  • 6A ist ein beispielhaftes Verfahren zur Codierung eines Sprach- oder Audiosignals, das einen der Codecs von 36 verwendet.
  • 6B ist ein detailliertes Verfahren, das einem prädiktiven Quantisierungsschritt von 6A entspricht.
  • 7 ist ein ausführliches Blockdiagramm einer/eines beispielhaften NFC-Codierungsstruktur oder Codierers auf der Grundlage des Codecs von 5.
  • 8 ist ein ausführliches Blockdiagramm einer/eines beispielhaften NFC-Decodierstruktur oder Decodierers zum Decodieren von codierten Sprachsignalen, die unter Verwendung des Codierers von 7 codiert worden sind.
  • 9 ist ein ausführliches Blockdiagramm eines linearen prädiktiven Kurzzeitanalyse- und Quantisierungssignalverarbeitungsblocks des Codierers von 7. Der Signalverarbeitungsblock erhält Koeffizienten für einen Kurzzeitprädiktor und ein Kurzzeit-Noise-Feedback-Filter des Codierers von 7.
  • 10 ist ein ausführliches Blockdiagramm eines Linienspektrumspaar(LSP)-Quantisierer- und Codierersignalverarbeitungsblocks des linearen prädiktiven Kurzzeitanalyse- und Quantisierungssignalverarbeitungsblocks von 9.
  • 11 ist ein ausführliches Blockdiagramm eines linearen prädiktiven Langzeitanalyse- und Quantisierungssignalverarbeitungsblocks des Codierers von 7. Der Signalverarbeitungsblock erhält Koeffizienten für einen Langzeitprädiktor und ein Langzeit-Noise-Feedback-Filter des Codierers von 7.
  • 12 ist ein ausführliches Blockdiagramm eines Prädiktionsrestquantisierers des Codierers von 7.
  • 13A ist ein Blockdiagramm eines beispielhaften NFC-Systems zum Durchsuchen von N VQ-Codevektoren, die in einem VQ-Codebuch gespeichert sind, nach einem bevorzugten Codevektor der N VQ-Codevektoren, der zum Codieren eines Sprach- oder Audiosignals verwendet werden soll.
  • 13B ist ein Flussdiagramm eines beispielhaften Verfahrens, das dem NFC-System von 13A entspricht, zum Durchsuchen von N VQ-Codevektoren, die in dem VQ-Codebuch gespeichert sind, nach einem bevorzugten Codevektor der N VQ-Codevektoren, der zum Codieren eines Sprach- oder Audiosignals verwendet werden soll.
  • 13C ist ein Blockdiagramm eines Abschnitts einer beispielhaften Codec-Struktur oder eines beispielhaften Codec-Systems, das in einer beispielhaften Prädiktionsrest-VQ-Codebuch-Durchsuchung des Codecs von 5 verwendet wird.
  • 13D ist ein beispielhaftes Verfahren, das von dem System von 13C implementiert wird.
  • 13E ist ein beispielhaftes Verfahren, das gleichzeitig mit dem Verfahren von 13D unter Verwendung des Systems von 13C ausgeführt wird.
  • 14A ist ein Blockdiagramm eines beispielhaften NFC-Systems zum effizienten Durchsuchen der N VQ-Codevektoren, die in einem VQ-Codebuch gespei chert sind, nach einem bevorzugten Codevektor der N VQ-Codevektoren, der zum Codieren eines Sprach- oder Audiosignals verwendet werden soll.
  • 14B ist ein beispielhaftes Verfahren, das unter Verwendung des Systems von 14A implementiert ist.
  • 14C ist eine beispielhafte Filterstruktur, die während einer Berechnung einer NULLEINGABE-Antwort eines Quantisierungsfehlersignals bei der beispielhaften Prädiktionsrest-VQ-Codebuch-Durchsuchung verwendet wird, die der 13C entspricht.
  • 14D ist ein beispielhaftes Verfahren zum Ableiten einer NULLEINGABE-Antwort unter Verwendung der NULLEINGABE-Antwortfilterstruktur von 14C.
  • 14E ist ein anderes beispielhaftes Verfahren zum Ableiten einer NULLEINGABE-Antwort, die zeitgleich mit dem Verfahren von 14D ausgeführt wird, unter Verwendung der NULLEINGABE-Antwortfilterstruktur von 14C.
  • 15A ist ein Blockdiagramm einer beispielhaften Filterstruktur, die während einer Berechnung einer NULLZUSTANDS-Antwort eines Quantisierungsfehlersignals bei der beispielhaften Prädiktionsrest-VQ-Codebuch-Durchsuchung verwendet wird, die den 13C und 14C entspricht.
  • 15B ist ein Flussdiagramm eines beispielhaften Verfahrens zum Ableiten einer NULLZUSTANDS-Antwort unter Verwendung der Filterstruktur von 15A.
  • 16A ist ein Blockdiagramm einer Filterstruktur gemäß einem anderen Ausführungsbeispiel der NULLZUSTANDS-Antwortfilterstruktur von 14A.
  • 16B ist ein Flussdiagramm eines beispielhaften Verfahrens zum Ableiten einer NULLZUSTANDS-Antwort unter Verwendung der Filterstruktur von 16A.
  • 17 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Reduzieren der rechnerischen Komplexität, die mit der Durchsuchung eines VQ-Codebuchs verbunden ist.
  • 18 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Quantisieren mehrerer Vektoren in einem Master-Vektor unter Verwendung von Korrelationstechniken.
  • 19 ist ein Flussdiagramm eines beispielhaften Verfahrens, das ein VQ-Codebuch ohne Vorzeichen verwendet, das eine Erweiterung des Verfahrens von 18 ist.
  • 20 ist ein Flussdiagramm eines beispielhaften Verfahrens, das ein VQ-Codebuch mit Vorzeichen verwendet, das eine Erweiterung des Verfahrens von 18 ist.
  • 21 ist ein Diagramm eines beispielhaften NFC-Systems, das zur Anregungsquantisierung verwendet wird, das dem NFC-System von 6 entspricht.
  • 22 ist ein Diagramm eines beispielhaften NFC-Systems, das dem NFC-System von 21 entspricht.
  • 23 ist ein Diagramm einer beispielhaften NULLZUSTANDS-Filterstruktur, die dem NFC-System der 21 und 22 entspricht.
  • 24 ist ein Diagramm einer vereinfachten NULLZUSTANDS-Filterstruktur, die der Filterstruktur von 23 gemäß der Erfindung entspricht.
  • 25 ist ein Diagramm einer beispielhaften NULLEINGABE-Filterstruktur, die der NFC-Filterstruktur von 22 entspricht.
  • 26 ist ein Diagramm einer beispielhaften NFC-Filterstruktur, die dem NFC-System der 21 und 22 entspricht, und die zum Aktualisieren von Filterspeichern verwendet wird.
  • 27 ist ein Diagramm einer beispielhaften NULLZUSTANDS-NFC-Filterstruktur, die zum Berechnen der NULLZUSTANDS-Beiträge für die Filterspeicher in der NFC-Filterstruktur von 26 verwendet wird.
  • 28 ist ein Diagramm einer beispielhaften NULLEINGABE-NFC-Filterstruktur, die zum Berechnen der NULLEINGABE-Beiträge für die Filterspeicher in der NFC-Filterstruktur von 26 verwendet wird.
  • 29 ist ein Flussdiagramm eines beispielhaften Verfahrens zur Anregungsquantisierung, die einem Eingangsvektor entspricht, das eine Nullzustands-Berechnung auf der Basis einer transformierten NULLZUSTANDS-NFC-Filterstruktur verwendet.
  • 30 ist ein Flussdiagramm eines beispielhaften Verfahrens, das in einem Noise Feedback Codierer mit einer entsprechenden NULLZUSTANDS-Filterstruktur durchgeführt wird, wobei die NULLZUSTANDS-Filterstruktur mehrere Filter umfasst.
  • 31 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Aktualisieren eines oder mehrerer Filterspeicher in einem Noise Feedback Codierer, wie etwa dem Noise Feedback Codierer von 21.
  • 32 ist ein Blockdiagramm eines Computersystems, in dem die vorliegende Erfindung implementiert werden kann.
  • Ausführliche Beschreibung der Erfindung
  • I. Herkömmliche Noise Feedback Codierung
  • Bevor die vorliegende Erfindung beschrieben wird, ist es hilfreich, erst einmal die herkömmlichen Noise Feedback Codierungsschemata zu beschreiben.
  • A. Erster herkömmlicher Codierer
  • 1 ist ein Blockdiagramm einer ersten herkömmlichen NFC-Struktur bzw. eines ersten herkömmlichen Codecs 1000. Der Codec 1000 umfasst die folgenden funktionellen Elemente: einen ersten Prädiktor 1002 (der als auch Prädiktor P(z) bezeichnet wird); einen ersten Kombinator (combiner) oder Addierer 1004; einen zweiten Kombinator oder Addierer 1006; einen Quantisierer 1008; einen dritten Kombinator oder Addierer 1010; einen zweiten Prädiktor 1012 (der auch als Prädiktor P(z) bezeichnet wird); einen vierten Kombinator 1014; und ein Noise Feedback Filter 1016 (das auch als Filter F(z) bezeichnet wird).
  • Der Codec 1000 codiert ein abgetastetes Eingangssprach- oder -audiosignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Sprachsignal sq(n) zu erzeugen, das repräsentativ für das Eingangssprachsignal s(n) ist. Das rekonstruierte Ausgangssprachsignal sq(n) ist mit einem Gesamtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Ein Codierabschnitt des Codecs 1000 arbeitet wie folgt. Das abgetastete Eingangssprach- oder -audiosignal s(n) wird einem ersten Eingang des Kombinators 1004 und einem Eingang des Prädiktors 1002 zugeführt. Der Prädiktor 1002 trifft eine Voraussage der Werte des aktuellen Sprachsignals s(n) (z. B. Abtastwerte) auf der Grundlage vergangener Werte des Sprachsignals, um ein vorausgesagtes Signal ps(n) zu erzeugen. Dieser Prozess wird als die Prädiktion des Signals s(n) zur Erzeugung des vorausgesagten Signals ps(n) bezeichnet. Der Prädiktor 1002 stellt das vorausgesagte Sprachsignal ps(n) einem zweiten Eingang des Kombinators 1004 bereit. Der Kombinator 1004 kombiniert die Signale s(n) und ps(n), um ein Prädiktionsrestsignal d(n) zu erzeugen.
  • Der Kombinator 1006 kombiniert das Restsignal d(n) mit einem Noise-Feedback-Signal fq(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 1008 quantisiert das Eingangssignal u(n), um ein quantisiertes Signal uq(n) zu erzeugen. Der Kombinator 1014 kombiniert (das heißt, differenziert) die Signale u(n) und uq(n), um ein Quantisierungsfehler- oder -rauschsignal q(n) zu erzeugen, das mit dem quantisierten Signal uq(n) assoziiert ist. Das Filter 1016 filtert das Rauschsignal q(n), um ein Feedback-Noise-Signal fq(n) zu erzeugen.
  • Ein Decodiererabschnitt des Codecs 1000 arbeitet wie folgt. Beim Verlassen des Quantisierers 1008 kombiniert der Kombinator 1010 das Quantisiererausgangssignal uq(n) mit einer Prädiktion ps(n)' des Eingangssprachsignals s(n), um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen. Der Prädiktor 1012 sagt das Eingangssprachsignal s(n) auf der Grundlage von vergangenen Abtastwerten des Ausgangssprachsignals s(n) voraus, um das vorausgesagte Sprachsignal ps(n)' zu erzeugen.
  • Das Folgende ist eine Analyse des Codecs 1000, der oben beschrieben ist. Der Prädiktor P(z) (1002 bzw. 1012) weist eine Transferfunktion auf von
    Figure 00120001
    wobei M die Prädiktorordnung ist und ai der i-te Prädiktorkoeffizient ist. Das Noise Feedback Filter F(z) (1016) kann viele mögliche Formen aufweisen. Eine populäre Form von F(z) ist gegeben durch
    Figure 00120002
  • Diese Form von Noise Feedback Filter wurde von B. S. Atal und M. R. Schroeder in ihrer Veröffentlichung "Predictive Coding of Speech Signals and Subjective Error Criteria," IEEE Transactions an Acoustics, Speech, and Signal Processing, Seiten 247–254, Juni 1979, verwendet, wobei L = M und fi = = αiαi oder F(z) = P(z/α).
  • Mit der NFC-Codecstruktur 1000 in 1 kann gezeigt werden, dass der Codec-Rekonstruktionsfehler oder das Codierungsrauschen durch Folgendes gegeben ist
    Figure 00130001
    oder in Form der z-Transformierten-Darstellung
  • Figure 00130002
  • Wenn die Codierungsbitrate des Quantisierers 1008 in 1 ausreichend hoch ist, ist der Quantisierungsfehler q(n) = u(n) – uq(n) ungefähr weiß. Aus der obigen Gleichung folgt, dass das Größenspektrum des Codierungsrauschens r(n) die gleiche Form wie die Größe des Frequenzgangs des Filters [1 – F(z)]/[1- P(z)] aufweisen wird. Wenn F(z) = P(z), dann ist R(z) = Q(z), das Codierungsrauschen ist weiß und das System 1000 in 1 ist äquivalent zu einem herkömmlichen DPCM-Codec. Wenn F(z) = 0, dann ist R(z) = Q(z)/[1 – P(z)], das Codierungsrauschen weist die gleiche spektrale Form wie das Eingangssignalspektrum auf, und das Codec-System 1000 in 1 wird ein sogenannter "Open-Loop DPCM" Codec. Wenn F(z) irgendwo zwischen P(z) und 0 liegt, wenn zum Beispiel F(z) = P(z/α), wobei 0 < α < 1, dann liegt das Spektrum des Codierungsrauschens irgendwo zwischen einem weißen Spektrum und dem Eingangssignalspektrum. Das Codierungsrauschen, das auf diese Weise spektral geformt wird, ist in der Tat weniger hörbar als entweder das weiße Rauschen oder das Rauschen mit einer spektralen Form, die zu dem Eingangssignalspektrum identisch ist.
  • B. Zweiter herkömmlicher Codec
  • 2 ist ein Blockdiagramm einer zweiten herkömmlichen NFC-Struktur bzw. eines zweiten herkömmlichen Codecs 2000. Der Codec 2000 umfasst die folgenden funktionellen Elemente: einen ersten Kombinator oder Addierer 2004; einen zweiten Kombinator oder Addierer 2006; einen Quantisierer 2008; einen dritten Kombinator oder Addierer 2010; einen Prädiktor 2012 (der auch als Prädiktor P(z) bezeichnet wird); einen vierten Kombinator 2014; und ein Noise Feedback Filter 2016 (das auch als ein Filter N(z) – 1 bezeichnet wird).
  • Der Codec 2000 codiert ein abgetastetes Eingangssprachsignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Sprachsignal sq(n) zu erzeugen, das repräsentativ für das Eingangssprachsignal s(n) ist. Das rekonstruierte Sprachsignal sq(n) ist mit einem Gesamtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Der Codec 2000 arbeitet wie folgt. Ein abgetastetes Eingangssprach- oder -audiosignal s(n) wird einem ersten Eingang eines Kombinators 2004 zugeführt. Ein Rückkopplungssignal x(n) wird einem zweiten Eingang des Kombinators 2004 zugeführt. Der Kombinator 2004 kombiniert die Signale s(n) und x(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 2008 quantisiert das Eingangssignal u(n), um ein quantisiertes Signal uq(n) zu erzeugen (das auch als ein Quantisiererausgangssignal uq(n) bezeichnet wird). Der Kombinator 2014 kombiniert (d. h., differenziert) die Signale u(n) und uq(n), um ein Quantisierungsfehler- oder -rauschsignal q(n) zu erzeugen, das mit dem quantisierten Signal uq(n) assoziiert ist. Das Filter 2016 filtert das Rauschsignal q(n), um ein Feedback-Noise-Signal fq(n) zu erzeugen. Der Kombinator 2006 kombiniert das Feedback-Noise-Signal fq(n) mit einem vorausgesagten Signal ps(n) (d. h., mit einer Prädiktion des Eingangssprachsignals s(n)), um das Rückkopplungssignal x(n) zu erzeugen.
  • Beim Verlassen des Quantisierers 2008 kombiniert der Kombinator 2010 das Quantisiererausgangssignal uq(n) mit einem Prädiktionssignal bzw. einem vorausgesagten Signal ps(n), um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen. Der Prädiktor 2012 sagt das Eingangssprachsignal s(n) auf der Grundlage von vergangenen Abtastwerten des Ausgangssprachsignals sq(n) voraus (um das vorausgesagte Sprachsignal ps(n) zu erzeugen). Somit ist der Prädiktor 2012 in den Codierer- und Decodiererabschnitten des Codecs 2000 enthalten.
  • Die Codec-Struktur 2000 wurde von J. D. Makhoul und M. Berouti in "Adaptive Noise Spectral Shaping and Entropy Coding in Predictive Coding of Speech," IEEE Transactions an Acoustics, Speech, and Signal Processing, Seiten 63–73, Februar 1979 vorgeschlagen. Diese äquivalente, bekannte NFC-Codec-Struktur 2000 weist wenigstens zwei Vorteile gegenüber dem Codec 1000 auf. Erstens wird nur ein Prädiktor P(z) (2012) in der Struktur verwendet. Zweitens erlaubt diese Codec-Struktur 2000 dann, wenn N(z) das Filter ist, dessen Frequenzgang der gewünschten spektralen Rauschform entspricht, die direkte Verwendung von [N(z) – 1] als das Noise Feedback Filter 2016. Makhoul und Berouti zeigten in ihrem Dokument von 1979, dass eine sehr gute perzeptuelle Sprachqualität dadurch erzielt werden kann, dass N(z) so gewählt wird, dass es ein einfaches endliches Impulsantwort-(FIR-)Filter zweiter Ordnung ist.
  • Die Codec-Strukturen in den 1 und 2, die oben beschrieben sind, können jeweils als ein prädiktiver Codec mit einer zusätzlichen Noise Feedback Schleife betrachtet werden. In 1 ist eine Noise Feedback Schleife zu der Struktur eines "Open-Loop DPCM" Codecs hinzugefügt, in der der Prädiktor in dem Codierer ein nichtquantisiertes Originaleingangssignal als seinen Eingang benutzt. In 2 ist andererseits eine Noise Feedback Schleife der Struktur eines "Closed-Loop DPCM" Codecs hinzugefügt, wobei der Prädiktor in dem Codierer das quantisierte Signal als seinen Eingang benutzt. Abgesehen von diesem Unterschied bezüglich des Signals, das als der Prädiktoreingang in dem Codierer benutzt wird, sind die Codec-Strukturen in 1 und 2 konzeptionell sehr ähnlich.
  • II. Zweistufige Noise Feedback Codierung
  • Die herkömmlichen Noise Feedback Codierungsprinzipien, die oben beschrieben worden sind, sind im Stand der Technik allgemein bekannt. Nun werden wir eine zweistufige Noise Feedback Codierung mit sowohl Kurzzeitprädiktion als auch Langzeitprädiktion und sowohl spektraler Kurzzeitrauschformung als auch spektraler Langzeitrauschformung ansprechen.
  • A. Zusammengesetzte Codec Ausführungsbeispiele
  • Ein erster Lösungsweg liegt darin, einen Kurzzeitprädiktor und einen Langzeitprädiktor zu einem einzigen zusammengesetzten Kurzzeit- und Langzeitprädiktor zu kombinieren und dann die allgemeine Struktur des Codecs 1000 in 1 oder die des Codecs 2000 in 2 wieder zu verwenden, um einen verbesserten Codec zu konstruieren, der der allgemeinen Struktur des Codecs 1000 entspricht, und einen verbesserten Codec zu konstruieren, der der allgemeinen Struktur des Codecs 2000 entspricht. Es sei angemerkt, dass in 1 die Rückkopplungsschleife zur Rechten des Symbols uq(n), die den Addierer 1010 und die Prädiktorschleife (die den Prädiktor 1012 umfasst) enthält, oftmals als Synthesefilter bezeichnet wird und eine Transferfunktion von 1/[1 – (P(z)] aufweist. Es sei auch angemerkt, dass in den meisten prädiktiven Codecs, die sowohl eine Kurzzeitprädiktion als auch eine Langzeitprädiktion verwenden, der Decodierer zwei solcher Synthesefilter in einer kaskadenarti gen Form aufweist: einen mit dem Kurzzeitprädiktor und den anderen mit dem Langzeitprädiktor in der Rückkopplungsschleife. Wenn Ps(z) und Pl(z) die jeweiligen Transferfunktionen des Kurzzeitprädiktors und des Langzeitprädiktors sind, dann wird das kaskadierte Synthesefilter eine Transferfunktion aufweisen von
    Figure 00160001
    wobei P'(z) = Ps(z) + Pl(z) – Ps(z)Pl(z) der zusammengesetzte Prädiktor (zum Beispiel der Prädiktor, der die Effekte sowohl der Kurzzeitprädiktion als auch der Langzeitprädiktion umfasst) ist.
  • In ähnlicher Weise wird die Filterstruktur auf der linken Seite des Symbols d(n) in 1, die den Addierer 1004 und die Prädiktorschleife (d. h., die den Prädiktor 1002 umfasst) enthält, oftmals als Analysefilter bezeichnet und weist eine Transferfunktion von 1 – P(z) auf. Wenn wir zwei solche Analysefilter kaskadieren, einen mit dem Kurzzeitprädiktor und den anderen mit dem Langzeitprädiktor, dann lautet die Transferfunktion des kaskadierten Analysefilters folgendermaßen: [1 – Ps(z)][1 -Pl(z)] = 1 – Ps(z) – Pl(z) + Ps(z)Pl(z) = 1 – P'(z).
  • Deshalb kann man den Prädiktor P(z) (1002 oder 1012) in 1 und den Prädiktor P(z) (2012) in 2 durch den zusammengesetzten Prädiktor P'(z) = Ps(z) + Pl(z) – Ps(z)Pl(z) ersetzen, um den Effekt einer zweistufigen Prädiktion zu erhalten. Um sowohl die spektrale Kurzzeit- als auch die spektrale Langzeitrauschformung zu erhalten, kann man die allgemeine Codierungsstruktur des Codecs 1000 in 1 verwenden und die Filtertransferfunktion F(z) = Ps(z/α) + P1(z/β) – Ps(z/α)Pl(z/β) = F'(z) auswählen. Dann wird die spektrale Rauschform dem Frequenzgang des Filters
    Figure 00160002
    folgen.
  • Somit werden sowohl die spektrale Kurzzeitrauschformung als auch die spektrale Langzeitrauschformung erzielt, und sie können individuell jeweils durch die Parameter α und β gesteuert werden.
  • 1. Erstes Codec-Beispiel – Zusammengesetzter Codec
  • 1A ist ein Blockdiagramm einer beispielhaften NFC-Struktur oder eines beispielhaften Codecs 1050, die/der zusammengesetzte Kurzzeit- und Langzeitprädiktoren P'(z) und ein zusammengesetztes Kurzzeit- und Langzeit-Noise-Feedback-Filter F'(z) gemäß einem ersten Beispiel verwendet. Der Codec 1050 verwendet wieder die allgemeine Struktur des bekannten Codecs 1000 in 1, aber ersetzt die Prädiktoren P(z) und das Filter des Codecs 1000 F(z) durch die zusammengesetzten Prädiktoren P'(z) und das zusammengesetzte Filter F'(z), was unten noch genauer beschrieben wird.
  • Der Codec 1050 umfasst die folgenden funktionellen Elemente: einen ersten zusammengesetzten Kurzzeit- und Langzeitprädiktor 1052 (der auch als ein zusammengesetzter Prädiktor P'(z) bezeichnet wird); einen ersten Kombinator oder Addierer 1054; einen zweiten Kombinator oder Addierer 1056; einen Quantisierer 1058; einen dritten Kombinator oder Addierer 1060; einen zweiten zusammengesetzten Kurzzeit- und Langzeitprädiktor 1062 (der auch als ein zusammengesetzter Prädiktor P'(z) bezeichnet wird); einen vierten Kombinator 1064, und ein zusammengesetztes Kurzzeit- und Langzeit-Noise-Feedback-Filter 1066 (das auch als ein Filter F'(z) bezeichnet wird).
  • Die funktionellen Elemente oder Funktionsblöcke des Codecs 1050, die oben aufgelistet sind, sind in ähnlicher Weise wie die entsprechenden Blöcke des Codecs 1000 angeordnet (der oben in Verbindung mit 1 beschrieben ist), die Bezugszeichen aufweisen, die um "50" herabgesetzt sind. Demgemäss ist der Signalfluss zwischen den Funktionsblöcken des Codecs 1050 ähnlich wie der Signalfluss zwischen den entsprechenden Blöcken des Codecs 1000.
  • Der Codec 1050 codiert ein abgetastetes Eingangssprachsignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Sprachsignal sq(n) zu erzeugen, das repräsentativ ist für das Eingangssprachsignal s(n). Das rekonstruierte Sprachsignal sq(n) ist mit einem Ge samtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Ein Codiererabschnitt des Codecs 1050 arbeitet auf die folgende beispielhafte Art und Weise. Der zusammengesetzte Prädiktor 1052 trifft eine Kurzzeit- und eine Langzeitvoraussage des Eingangssprachsignals s(n), um ein kurzzeitmäßig und langzeitmäßig vorausgesagtes Sprachsignal ps(n) zu erzeugen. Der Kombinator 1054 kombiniert das kurzzeitmäßig und langzeitmäßig vorausgesagte Signal ps(n) mit dem Sprachsignal s(n), um ein Prädiktionsrestsignal d(n) zu erzeugen.
  • Der Kombinator 1056 kombiniert das Restsignal d(n) mit einem kurzzeitmäßig und langzeitmäßig gefilterten Noise-Feedback-Signal fq(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 1058 quantisiert das Eingangssignal u(n), um ein quantisiertes Signal uq(n) zu erzeugen (das auch als Quantisiererausgangssignal bezeichnet wird), das mit einem Quantisierungsrausch- oder -fehlersignal q(n) assoziiert ist. Der Kombinator 1064 kombiniert (das heißt, differenziert) die Signale u(n) und uq(n), um das Quantisierungsfehler- bzw. -rauschsignal q(n) zu erzeugen. Das zusammengesetzte Filter 1066 führt eine Kurzzeit- und Langzeitfilterung bei dem Rauschsignal q(n) durch, um ein kurzzeitmäßig und langzeitmäßig gefiltertes Feedback-Noise-Signal fq(n) zu erzeugen. In dem Codec 1050 bilden der Kombinator 1064, das zusammengesetzte Kurzzeit- und Langzeitfilter 1066 und der Kombinator 1056 zusammen eine Noise-Feedback-Schleife um den Quantisierer 1058 herum. Diese Noise-Feedback-Schleife formt das Codierungsrauschen, das mit dem Codec 1050 assoziiert ist, in Übereinstimmung mit dem zusammengesetzten Filter spektral derart, dass es zum Beispiel den spektralen Kurzzeit- und Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • Ein Decodiererabschnitt des Codecs 1050 arbeitet in der folgenden beispielhaften Art und Weise. Beim Verlassen des Quantisierers 1058 kombiniert der Kombinator 1060 das Quantisiererausgangssignal uq(n) mit einer Kurzzeit- und Langzeitprädiktion ps(n)' des Eingangssprachsignals s(n), um ein quantisiertes Ausgangssprachsignal sq(n) zu erzeugen. Der zusammengesetzte Prädiktor 1062 sagt das Eingangssprachsignal s(n) auf der Grundlage des Ausgangssignals sq(n) kurzzeitmäßig und langzeitmäßig voraus (um ein kurzzeitmäßig und langzeitmäßig vorausgesagtes Signal ps(n)' zu erzeugen).
  • 2. Zweites Codec-Beispiel – Alternativer zusammengesetzter Codec
  • Als eine Alternative zu dem oben beschriebenen ersten Ausführungsbeispiel kann ein zweites Beispiel auf der Grundlage der allgemeinen Codierungsstruktur des Codecs 2000 in 2 aufgebaut werden. Wenn man die Codierungsstruktur des Codecs 2000 verwendet, wobei P(z) durch die zusammengesetzte Funktion P'(z) ersetzt wird, kann man ein geeignetes zusammengesetztes Noise-Feedback-Filter N'(z) – 1 (das das Filter 2016 ersetzt) derart auswählen, dass es die Effekte sowohl der spektralen Kurzzeit- als auch der spektralen Langzeitrauschformung umfasst. Zum Beispiel kann N'(z) so gewählt werden, dass es zwei FIR-Filter in einer Kaskade enthält; ein Kurzzeitfilter, um die Hüllkurve des Rauschspektrums zu regeln, während ein anderes Filter, ein Langzeitfilter, die harmonische Struktur des Rauschspektrums regelt.
  • 2A ist ein Blockdiagramm einer beispielhaften NFC-Struktur oder eines beispielhaften Codecs 2050, die/der einen zusammengesetzten Kurzzeit- und Langzeitprädiktor P'(z) und ein zusammengesetztes Kurzzeit- und Langzeit-Noise-Feedback-Filter N'(z) – 1 gemäß einem zweiten Beispiel verwendet. Der Codec 2050 umfasst die folgenden funktionellen Elemente: einen ersten Kombinator oder Addierer 2054; einen zweiten Kombinator oder Addierer 2056; einen Quantisierer 2058; einen dritten Kombinator oder Addierer 2060; einen zusammengesetzten Kurzzeit- und Langzeitprädiktor 2062 (der auch als ein Prädiktor P'(z) bezeichnet wird); einen vierten Kombinator 2064; und ein Noise-Feedback-Filter 2066 (das auch als ein Filter N'(z) – 1 bezeichnet wird).
  • Die funktionellen Elemente oder Funktionsblöcke des Codecs 2050, die oben aufgelistet sind, sind in ähnlicher Weise wie die entsprechenden Blöcke des Codecs 2000 angeordnet (der oben in Verbindung mit 2 beschrieben ist), die Bezugszeichen aufweisen, die um "50" herabgesetzt sind. Demgemäss ist der Signalfluss zwischen den Funktionsblöcken des Codecs 2050 dem Signalfluss zwischen den entsprechenden Blöcken des Codecs 2000 ähnlich.
  • Der Codec 2050 arbeitet in der folgenden beispielhaften Art und Weise. Der Kombinator 2054 kombiniert ein abgetastetes Eingangssprach- oder -audiosignal s(n) mit einem Rückkopplungssignal x(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 2058 quantisiert das Eingangssignal u(n), um ein quantisiertes Signal uq(n) zu erzeugen, das mit einem Quantisierungsrausch- oder -fehlersignal q(n) assoziiert ist. Der Kombinator 2064 kombiniert (das heißt, differen ziert) die Signale u(n) und uq(n), um ein Quantisierungsfehler- bzw. -rauschsignal q(n) zu erzeugen. Das zusammengesetzte Filter 2066 fuhrt zeitgleich eine Kurzzeit- und Langzeitfilterung des Rauschsignals q(n) durch, um ein kurzzeitmäßig und langzeitmäßig gefiltertes Feedback-Noise-Signal fq(n) zu erzeugen. Der Kombinator 2056 kombiniert das kurzzeitmäßig und langzeitmäßig gefilterte Feedback-Noise-Signal fq(n) mit einer Kurzzeit- und Langzeitprädiktion s(n) des Eingangssignals s(n), um das Rückkopplungssignal x(n) zu erzeugen. In dem Codec 2050 bilden der Kombinator 2064, das zusammengesetzte Kurzzeit- und Langzeitfilter 2066 und der Kombinator 2056 zusammen eine Noise-Feedback-Schleife um den Quantisierer 2058 herum. Diese Noise-Feedback-Schleife formt das Codierungsrauschen, das mit dem Codec 2050 assoziiert ist, spektral in Übereinstimmung mit dem zusammengesetzten Filter derart, dass es zum Beispiel den spektralen Kurzzeit- und Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • Beim Verlassen des Quantisierers 2058 kombiniert der Kombinator 2060 das Quantisiererausgangssignal uq(n) mit dem kurzzeitmäßig und langzeitmäßig vorausgesagten Signal ps(n)', um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen. Der zusammengesetzte Prädiktor 2062 sagt das Eingangssprachsignal s(n) auf der Grundlage des rekonstruierten Ausgangssprachsignals sq(n) kurzzeitmäßig und langzeitmäßig voraus (um das kurzzeitmäßig und langzeitmäßig vorausgesagte Signal ps(n) zu erzeugen).
  • In diesem Beispiel erreicht der erste Lösungsweg für eine zweistufige NFC, der oben beschrieben worden ist, das Ziel, indem er die allgemeine Codec-Struktur der herkömmlichen einstufigen Noise Feedback Codierung wiederverwendet (zum Beispiel, indem er die Strukturen der Codecs 1000 und 2000 erneut verwendet), aber indem er das, was herkömmlicherweise getrennte Kurzzeit- und Langzeitprädiktoren sind, zu einem einzigen zusammengesetzten Kurzzeit- und Langzeitprädiktor kombiniert. Ein zweiter bevorzugter Lösungsweg, der unten beschrieben wird, gestattet, dass separate Kurzzeit- und Langzeitprädiktoren verwendet werden, aber benötigt eine Modifikation der herkömmlichen Codec-Strukturen 1000 und 2000 der 1 und 2.
  • B. Codec Ausführungsbeispiele, die separate Kurzzeit- und Langzeitprädiktoren (Zwei-Stufen-Prädiktion) und eine Noise Feedback Codierung verwenden
  • Es ist nicht offensichtlich, wie die Codec-Strukturen in den 1 und 2 modifiziert werden sollen, um eine zweistufige Prädiktion und eine zweistufige spektrale Rauschformung gleichzeitig zu erzielen. Wenn man zum Beispiel annimmt, dass die Filter in 1 alle Kurzzeitfilter sind, dann wird die Kaskadierung eines Langzeitanalysefilters nach dem Kurzzeitanalysefilter, die Kaskadierung eines Langzeitsynthesefilters vor dem Kurzzeitsynthesefilter und die Kaskadierung eines Langzeit-Noise-Feedback-Filters mit dem Kurzzeit-Noise-Feedback-Filter in 1 nicht einen Codec ergeben, der das gewünschte Resultat erzielt.
  • Um eine zweistufige Prädiktion und eine zweistufige spektrale Rauschformung zur gleichen Zeit zu erzielen, ohne die beiden Prädiktoren zu einem zu kombinieren, liegt der Schlüssel darin, zu erkennen, dass der Quantisiererblock in den 1 und 2 durch ein Codierungssystem ersetzt werden kann, das auf einer Langzeitprädiktion basiert. Veranschaulichungen dieses Konzepts werden unten bereitgestellt.
  • 1. Drittes Codec Ausführungsbeispiel – Zweistufige Prädiktion mit einstufiger Noise Feedback
  • Als eine Veranschaulichung dieses Konzepts zeigt die 3 eine Codec-Struktur, in der der Quantisiererblock 1008 in 1 durch eine DPCM-artige Struktur ersetzt worden ist, die auf einer Langzeitprädiktion basiert (in 3 von der gestrichelten Umrandung umschlossen und mit Q' bezeichnet). 3 ist ein Blockdiagramm einer ersten beispielhaften Anordnung einer beispielhaften NFC-Struktur oder eines beispielhaften Codecs 3000 gemäß einem dritten exemplarischen Ausführungsbeispiel.
  • Der Codec 3000 umfasst die folgenden funktionellen Elemente: einen ersten Kurzzeitprädiktor 3002 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird); einen ersten Kombinator oder Addierer 3004; einen zweiten Kombinator oder Addierer 3006; einen prädiktiven Quantisierer 3008 (der auch als prädiktiver Quantisierer Q' bezeichnet wird); einen dritten Kombinator oder Addierer 3010; einen zweiten Kurzzeitprädiktor 3012 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird); einen vierten Kombinator 3014; und ein Kurzzeit-Noise-Feedback-Filter 3016 (das auch als ein Kurzzeit-Noise-Feedback-Filter Fs(z) bezeichnet wird).
  • Der prädiktive Quantisierer Q' (3008) umfasst einen ersten Kombinator 3024, entweder einen skalaren Quantisierer oder einen Vektorquantisierer 3028, einen zweiten Kombinator 3030 und einen Langzeitprädiktor 3034 (der auch als ein Langzeitprädiktor Pl(z) bezeichnet wird).
  • Der Codec 3000 codiert ein abgetastetes Eingangssprachsignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen, das repräsentativ ist für das Eingangssprachsignal s(n). Das rekonstruierte Sprachsignal sq(n) ist mit einem-Gesamtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Der Codec 3000 arbeitet in der folgenden beispielhaften Art und Weise. Zuerst wird ein abgetastetes Eingangssprach- oder -audiosignal s(n) einem ersten Eingang des Kombinators 3004 und einem Eingang des Prädiktors 3002 zugeführt. Der Prädiktor 3002 erstellt eine Kurzzeitprädiktion des Eingangssprachsignals s(n) auf der Grundlage von vergangenen Abtastwerten davon, um ein vorausgesagtes Eingangssprachsignal ps(n) zu erzeugen. Dieser Vorgang wird als Kurzzeitvoraussage des Eingangssprachsignals s(n) zur Erzeugung eines vorausgesagten Signals ps(n) bezeichnet. Der Prädiktor 3002 stellt ein vorausgesagtes Eingangssprachsignal ps(n) einem zweiten Eingang des Kombinators 3004 bereit. Der Kombinator 3004 kombiniert die Signale s(n) und ps(n), um ein Prädiktionsrestsignal d(n) zu erzeugen.
  • Der Kombinator 3006 kombiniert das Restsignal d(n) mit einem ersten Noise-Feedback- Signal fqs(n), um ein prädiktives Quantisierereingangssignal v(n) zu erzeugen. Der prädiktive Quantisierer 3008 quantisiert prädiktiv das Eingangssignal v(n), um ein prädiktiv quantisiertes Ausgangssignal vq(n) zu erzeugen (das auch als ein prädiktives Quantisiererausgangssignal vq(n) bezeichnet wird), das mit einem prädiktiven Rausch- oder Fehlersignal qs(n) assoziiert ist. Der Kombinator 3014 kombiniert (das heißt, differenziert) die Signale v(n) und vq(n), um das prädiktive Quantisierungsfehler- oder -rauschsignal qs(n) zu erzeugen. Das Kurzzeitfilter 3016 unterzieht das prädiktive Quantisierungsrauschsignal q(n) einer Kurzzeitfilterung, um das Feedback-Noise-Signal fqs(n) zu erzeugen. Deshalb umfasst der Noise-Feedback-(NF-)Codec 3000 eine äußere NF-Schleife um den prädiktiven Quantisierer 3008 herum, die den Kombinator 3014, das Kurzzeitrauschfilter 3016 und den Kombinator 3006 umfasst. Diese äußere NF-Schleife formt das Codierungsrauschen, das mit dem Codec 3000 assoziiert ist, spektral in Übereinstimmung mit dem Filter 3016 derart, dass es zum Beispiel den spektralen Kurzzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • Der prädiktive Quantisierer 3008 arbeitet in der äußeren NF-Schleife, die oben erwähnt ist, um das prädiktive Quantisierereingangssignal v(n) in der folgenden beispielhaften Art und Weise prädiktiv zu quantisieren. Der Prädiktor 3034 sagt langzeitmäßig das prädiktive Quantisierereingangssignal v(n) voraus (d. h., erstellt eine Langzeitvoraussage von diesem), um ein vorausgesagtes prädiktives Quantisierereingangssignal pv(n) zu erzeugen. Der Kombinator 3024 kombiniert das Signal pv(n) mit dem prädiktiven Quantisierereingangssignal v(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 3028 quantisiert das Quantisierereingangssignal u(n) unter Verwendung einer skalaren Quantisierungstechnik oder einer Vektorquantisierungstechnik, um ein Quantisiererausgangssignal uq(n) zu erzeugen. Der Kombinator 3030 kombiniert das Quantisiererausgangssignal uq(n) mit dem Signal pv(n), um ein prädiktiv quantisiertes Ausgangssignal vq(n) zu erzeugen.
  • Beim Verlassen des prädiktiven Quantisierers 3008 kombiniert der Kombinator 3010 das prädiktive Quantisiererausgangssignal vq(n) mit einer Prädiktion ps(n)' des Eingangssprachsignals s(n), um das Ausgangssprachsignal sq(n) zu erzeugen. Der Prädiktor 3012 sagt das Eingangssprachsignal s(n) kurzzeitmäßig voraus (d. h., er erstellt eine Kurzzeitprädiktion davon), um das Signal ps(n)' zu erzeugen, und zwar auf der Grundlage des Ausgangssprachsignals sq(n).
  • In der ersten beispielhaften Anordnung des NF-Codecs 3000, der in 3 dargestellt ist, sind die Prädiktoren 3002, 3012 Kurzzeitprädiktoren, und das NF-Filter 3016 ist ein Kurzzeitrauschfilter, während der Prädiktor 3034 ein Langzeitprädiktor ist. In einer zweiten beispielhaften Anordnung des NF-Codecs 3000 sind die Prädiktoren 3002, 3012 Langzeitprädiktoren und das NF-Filter 3016 ist ein Langzeitfilter, während der Prädiktor 3034 ein Kurzzeitprädiktor ist. Die äußere NF-Schleife in dieser alternativen Anordnung formt das Codierungsrauschen, das mit dem Codec 3000 assoziiert ist, spektral in Übereinstimmung mit dem Filter 3016 derart, dass es zum Beispiel den spektralen Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • In der ersten Anordnung, die oben beschrieben ist, führt die DPCM-Struktur im Innern der gestrichelten Umrandung Q' (3008) keine spektrale Langzeitrausch formung durch. Wenn alles im Innern der gestrichelten Umrandung Q' (3008) als eine Blackbox behandelt wird, dann ist für einen Beobachter außerhalb der Umrandung die Ersetzung eines direkten Quantisierers (zum Beispiel des Quantisierers 1008) durch eine DPCM-Struktur auf Langzeitprädiktionsbasis (das heißt, der prädiktive Quantisierer Q' (3008)) ein vorteilhafter Weg, die Quantisiererleistung zu verbessern. Somit wird die Codec-Struktur des Codecs 3000 in 3 im Vergleich zu 1 den Vorteil eines niedrigeren Codierungsrauschens erzielen, während sie die gleiche Art von spektraler Rauschhüllkurve aufrechterhält. In der Tat ist das System 3000 in 3 gut genug für einige Anwendungen, wenn die Bitrate hoch genug ist, und ist einfach, weil es die zusätzliche Komplexität vermeidet, die mit einer spektralen Langzeitrauschformung verbunden ist.
  • 2. Viertes Codec Ausführungsbeispiel – Zweistufige Prädiktion mit zweitstufiger Noise Feedback (verschachtelte zweistufige Rückkopplungscodierung)
  • Wenn man das obige Konzept einen Schritt weiter führt, dann kann der prädiktive Quantisierer Q' (3008) des Codecs 3000 in 3 durch die komplette NFC-Struktur des Codecs 1000 in 1 ersetzt werden. Eine sich ergebende beispielhafte "verschachtelte" oder "in Schichten angeordnete" zweistufige NFC-Codec-Struktur 4000 ist in 4 dargestellt und wird unten beschrieben.
  • 4 ist ein Blockdiagramm einer ersten beispielhaften Anordnung der beispielhaften verschachtelten zweistufigen NF-Codierungsstruktur bzw. des beispielhaften Codecs 4000 gemäß einem vierten exemplarischen Ausführungsbeispiel. Der Codec 4000 umfasst die folgenden funktionellen Elemente: einen ersten Kurzzeitprädiktor 4002 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird); einen ersten Kombinator oder Addierer 4004; einen zweiten Kombinator oder Addierer 4006; einen prädikativen Quantisierer 4008 (der auch als ein prädiktiver Quantisierer Q'' bezeichnet wird); einen dritten Kombinator oder Addierer 4010; einen zweiten Kurzzeitprädiktor 4012 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird), einen vierten Kombinator 4014; und ein Kurzzea-Noise-Feedback-Filter 4016 (das auch als ein Kurzzeit-Feedback-Filter Fs(z) bezeichnet wird).
  • Der prädiktive Quantisierer Q'' (4008) umfasst einen ersten Langzeitprädiktor 4022 (der auch als ein Langzeitprädiktor Pl(z) bezeichnet wird), einen ersten Kombinator 4024, entweder einen skalaren Quantisierer oder einen Vektorquantisierer 4028, einen zweiten Kombinator 4030, einen zweiten Langzeitprädiktor 4034 (der auch als ein Langzeitprädiktor Pl(z) bezeichnet wird), einen zweiten Kombinator oder Addierer 4036, und ein Langzeitfilter 4038 (das auch als ein Langzeitfilter Fl(z) bezeichnet wird).
  • Der Codec 4000 codiert ein abgetastetes Eingangssprachsignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen, das repräsentativ für das Eingangssprachsignal s(n) ist. Das rekonstruierte Sprachsignal sq(n) ist mit einem Gesamtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Bei der Codierung des Eingangssprachsignals s(n) arbeiten die Prädiktoren 4002 und 4012, die Kombinatoren 4004, 4006 und 4010 sowie das Rauschfilter 4016 in ähnlicher Weise wie die entsprechenden Elemente, die oben in Verbindung mit 3 beschrieben worden sind, wobei sie Bezugszeichen aufweisen, die um "1000" herabgesetzt sind. Deshalb umfasst der NF-Codec 4000 eine äußere NF-Schleife bzw. NF-Schleife erster Stufe, die den Kombinator 4014, das Kurzzeitrauschfilter 4016 und den Kombinator 4006 umfasst. Diese äußere NF-Schleife formt das Codierungsrauschen, das mit dem Codec 4000 assoziiert ist, in Übereinstimmung mit dem Filter 4016 spektral derart, dass es zum Beispiel den spektralen Kurzzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • Der prädiktive Quantisierer Q'' (4008) arbeitet in der äußeren NF-Schleife, die oben erwähnt ist, um das prädiktive Quantisierereingangssignal v(n) prädiktiv zu quantisieren, um ein prädiktiv quantisiertes Ausgangssignal vq(n) (das auch als ein prädiktives Quantisiererausgangssignal vq(n) bezeichnet wird) in der folgenden beispielhaften Art und Weise zu erzeugen. Wie oben erwähnt worden ist, weist der prädiktive Quantisierer Q'' eine Struktur auf, die der grundlegenden NFC-Struktur des Codecs 1000 entspricht, der in 1 dargestellt ist. Während des Betriebs führt der Prädiktor 4022 eine Langzeitprädiktion des prädiktiven Quantisierereingangssignals v(n) durch, um eine vorausgesagte Version pv(n) davon zu erzeugen. Der Kombinator 4024 kombiniert die Signale v(n) und pv(n), um ein Zwischenergebnissignal i(n) zu erzeugeil. Der Kombinator 4026 kombiniert das Zwischenergebnissignal i(n) mit einem zweiten Noise-Feedback-Signal fq(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 4028 quantisiert das Eingangssignal u(n), um ein quantisiertes Ausgangssignal uq(n) zu erzeugen (oder ein Quantisiererausgangssignal uq(n)), das mit einem Quantisierungsfehlersignal bzw. Quantisierungsrauschsignal q(n) assoziiert ist. Der Kombinator 4036 kombiniert (differenziert) die Signale u(n) und uq(n), um das Quantisierungsrauschsignal q(n) zu erzeugen. Das Langzeitfilter 4038 unterzieht das Rauschsignal q(n) einer Langzeitfilterung, um das Feedback-Noise-Signal fq(n) zu erzeugen. Deshalb bilden der Kombinator 4036, das Langzeitfilter 4038 und der Kombinator 4026 eine innere NF-Schleife bzw. NF-Schleife zweiter Stufe, die innerhalb der äußeren NF-Schleife eingepasst ist. Diese innere NF-Schleife formt das Codierungsrauschen, das mit dem Codec 4000 assoziiert ist, in Übereinstimmung mit dem Filter 4038 spektral derart, dass es zum Beispiel den spektralen Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • Beim Verlassen des Quantisierers 4028 kombiniert der Kombinator 4030 das Quantisiererausgangssignal uq(n) mit einer Prädiktion pv(n)' des prädiktiven Quantisierereingangssignals v(n). Der Langzeitprädiktor 4034 unterzieht das Signal v(n) einer Langzeitprädiktion (um ein vorausgesagtes Signal pv(n)' zu erzeugen) auf der Grundlage des Signals vq(n).
  • Beim Verlassen des prädiktiven Quantisierers Q'' (4008) wird das prädiktiv quantisierte Signal vq(n) mit einer Prädiktion ps(n)' des Eingangssprachsignals s(n) kombiniert, um das rekonstruierte Sprachsignal sq(n) zu erzeugen. Der Prädiktor 4012 unterzieht das Eingangssprachsignal s(n) einer Kurzzeitprädiktion (um das vorausgesagte Signal ps(n)' zu erzeugen) auf der Grundlage des rekonstruierten Sprachsignals sq(n).
  • In der ersten beispielhaften Anordnung des NF-Codecs 4000, der in 4 dargestellt ist, sind die Prädiktoren 4002 und 4012 Kurzzeitprädiktoren, und das NF-Filter 4016 ist ein Kurzzeitrauschfilter, während die Prädiktoren 4022, 4034 Langzeitprädiktoren sind und das Rauschfilter 4038 ein Langzeitrauschfilter ist. In einer zweiten beispielhaften Anordnung des NF-Codecs 4000 sind die Prädiktoren 4002, 4012 Langzeitprädiktoren und das NF-Filter 4016 ist ein Langzeitrauschfilter (um das Codierungsrauschen spektral derart zu formen, dass es zum Beispiel den Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt), während die Prädiktoren 4022, 4034 Kurzzeitprädiktoren sind und das Rauschfilter 4038 ein Kurzzeitfilter ist (um das Codierungsrauschen spektral derart zu formen, dass es zum Beispiel den Kurzzeitcharakteristiken des Eingangssprachsignals s(n) folgt).
  • In der ersten Anordnung des Codecs 4000, die in 4 dargestellt ist, enthält die gestrichelte Umrandung, die mit Q'' bezeichnet ist (das prädiktive Filter Q'' (4008)), eine NFC-Codec-Struktur, die genauso wie die Struktur des Codecs 1000 in 1 ist, außer dass die Prädiktoren 4022, 4034 und das Noise-Feedback-Filter 4038 alle Langzeitfilter sind. Deshalb ist der Quantisierungsfehler qs(n) des "prädiktiven Quantisierers" Q'' (4008) einfach der Rekonstruktionsfehler oder das Codierungsrauschen der NFC-Struktur im Innern der gestrichelten Q''-Umrandung 4008. Folglich haben wir aus einer früheren Gleichung
    Figure 00270001
  • Somit ist die z-Transformierte des gesamten Codierungsrauschens des Codecs 4000 in 4
    Figure 00270002
  • Dies beweist, dass die verschachtelte zweistufige NFC-Codec-Struktur 4000 in 4 in der Tat zusätzlich zu der Kurzzeit- und Langzeitprädiktion sowohl die spektrale Kurzzeit- als auch noch die spektrale Langzeit-Rauschformung durchführt.
  • Ein Vorteil der verschachtelten zweistufigen NFC-Struktur 4000, wie sie in 4 gezeigt ist, liegt darin, dass sie die Langzeit-Noise-Feedback-Codierung komplett von der Kurzzeit-Noise-Feedback-Codierung abkoppelt. Dies erlaubt es uns, unterschiedliche Codec-Strukturen für die Langzeit-NFC und die Kurzzeit-NFC zu verwenden, wie die nachfolgenden Beispiele veranschaulichen.
  • 3. Fünftes Codec Ausführungsbeispiel – Zweistufige Prädiktion mit zweistufiger Noise Feedback (verschachtelte zweistufige Feedback-Codierung)
  • Aufgrund der oben erwähnten "Trennung" zwischen der Langzeit-Noise-Feedback-Codierung und der Kurzzeit-Noise-Feedback-Codierung kann der prädiktive Quantisierer Q'' (4008) des Codecs 4000 in 4 durch den Codec 2000 in 2 ersetzt werden, wodurch eine weitere beispielhafte verschachtelte zweistufige NFC-Struktur 5000 konstruiert wird, wie sie in 5 gezeigt ist und unten beschrieben werden wird.
  • 5 ist ein Blockdiagramm einer ersten beispielhaften Anordnung der beispielhaften verschachtelten zweistufigen NFC-Struktur bzw. des beispielhaften verschachtelten zweistufigen NFC-Codecs 5000 gemäß einem fünften exemplarischen Ausführungsbeispiel. Der Codec 5000 umfasst die folgenden funktionellen Elemente: einen ersten Kurzzeitprädiktor 5002 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird); einen ersten Kombinator oder Addierer 5004; einen zweiten Kombinator oder Addierer 5006; einen prädiktiven Quantisierer 5008 (der auch als ein prädiktiver Quantisierer Q''' bezeichnet wird); einen dritten Kombinator oder Addierer 5010; einen zweiten Kurzzeitprädiktor 5012 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird); einen vierten Kombinator 5014; und ein Kurzzeit-Noise-Feedback-Filter 5016 (das auch als ein Kurzzeit-Noise-Feedback-Filter Fs(z) bezeichnet wird).
  • Der prädiktive Quantisierer Q''' (5008) umfasst einen ersten Kombinator 5024, einen zweiten Kombinator 5026, entweder einen skalaren Quantisierer oder einen Vektorquantisierer 5028, einen dritten Kombinator 5030, einen Langzeitprädiktor 5034 (der auch als ein Langzeitprädiktor Pl(z) bezeichnet wird), einen vierten Kombinator 5036 und ein Langzeitfilter 5038 (das auch als ein Langzeitfilter Nl(z) – 1 bezeichnet wird).
  • Der Codec 5000 codiert ein abgetastetes Eingangssprachsignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen, das repräsentativ ist für das Eingangssprachsignal s(n). Das rekonstruierte Sprachsignal sq(n) ist mit einem Gesamtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Bei der Codierung des Eingangssprachsignals s(n) arbeiten die Prädiktoren 5002 und 5012, die Kombinatoren 5004, 5006 und 5010 sowie das Rauschfilter 5016 in ähnlicher Weise wie die entsprechenden Elemente, die oben in Verbindung mit 3 beschrieben worden sind, die Bezugszeichen aufweisen, die um "2000" herabgesetzt sind. Deshalb umfasst der NF-Codec 5000 eine äußere NF-Schleife bzw. NF-Schleife erster Stufe, die den Kombinator 5014, das Kurzzeitrauschfilter 5016 und den Kombinator 5006 umfasst. Diese äußere NF-Schleife formt das Codierungsrauschen, das mit dem Codec 5000 assoziiert ist, in Übereinstimmung mit dem Filter 5016 spektral derart, dass es zum Beispiel den spektralen Kurzzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • Der prädiktive Quantisierer 5008 weist eine Struktur auf, die der Struktur des NF-Codecs 2000 ähnlich ist, der oben in Verbindung mit 2 beschrieben worden ist. Der prädiktive Quantisierer Q''' (5008) arbeitet in der äußeren NF-Schleife, die oben erwähnt worden ist, um ein prädiktives Quantisierereingangssignal v(n) prädiktiv zu quantisieren, um ein prädiktiv quantisiertes Ausgangssignal vq(n) (das auch als ein vorausgesagtes Quantisiererausgangssignal vq(n) bezeichnet wird) in der folgenden Art und Weise zu erzeugen. Der Prädiktor 5034 unterzieht das Eingangssignal v(n) einer Langzeitprädiktion auf der Grundlage des Ausgangssignals vq(n), um ein vorausgesagtes Signal pv(n) zu erzeugen (d. h., das eine Prädiktion des Signals v(n) darstellt). Die Kombinatoren 5026 und 5024 kombinieren kollektiv das Signal pv(n) mit einem Noise-Feedback-Signal fq(n) und mit einem Eingangssignal v(n), um ein Quantisierereingangssignal u(n) zu erzeugen. Der Quantisierer 5028 quantisiert das Eingangssignal u(n), um ein quantisiertes Ausgangssignal uq(n) zu erzeugen (das auch als ein Quantisiererausgangssignal uq(n) bezeichnet wird), das mit einem Quantisierungsfehlersignal bzw. Quantisierungsrauschsignal q(n) assoziiert ist. Der Kombinator 5036 kombiniert (d. h., differenziert) die Signale u(n) und uq(n), um das Quantisierungsrauschsignal q(n) zu erzeugen. Das Filter 5038 unterzieht das Rauschsignal q(n) einer Langzeitfilterung, um das Feedback-Noise-Signal fq(n) zu erzeugen. Deshalb bilden der Kombinator 5036, das Langzeitfilter 5038 und die Kombinatoren 5026 und 5024 eine innere NF-Schleife bzw. NF-Schleife zweiter Stufe, die in der äußeren NF-Schleife eingepasst ist. Diese innere NF-Schleife formt das Codierungsrauschen, das mit dem Codec 5000 assoziiert ist, in Übereinstimmung mit dem Filter 5038 spektral derart, dass es zum Beispiel den spektralen Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt.
  • In einer zweiten beispielhaften Anordnung des NF-Codecs 5000 sind die Prädiktoren 5002, 5012 Langzeitprädiktoren und das NF-Filter 5015 ist ein Langzeitrauschfilter (um das Codierungsrauschen spektral so zu formen, dass es zum Beispiel den Langzeitcharakteristiken des Eingangssprachsignals s(n) folgt), während der Prädiktor 5034 ein Kurzzeitprädiktor ist und das Rauschfilter 5038 ein Kurzzeitrauschfilter ist (um das Codierungsrauschen spektral so zu formen, dass es zum Beispiel den Kurzzeitcharakteristiken des Eingangssprachsignals s(n) folgt).
  • 5A ist ein Blockdiagramm einer alternativen, aber mathematisch äquivalenten signalkombinierenden Anordnung 5050, die der Kombinieranordnung entspricht, die die Kombinatoren 5024 und 5026 von 5 umfasst. Die kombinieren de Anordnung 5050 umfasst einen ersten Kombinator 5024' und einen zweiten Kombinator 5026'. Der Kombinator 5024' empfängt das prädiktive Quantisierereingangssignal v(n) und das vorausgesagte Signal pv(n) direkt von dem Prädiktor 5034. Der Kombinator 5024' kombiniert diese beiden Signale, um ein Zwischensignal i(n)' zu erzeugen. Der Kombinator 5026' empfängt das Zwischensignal i(n)' und das Feedback-Noise-Signal fq(n) direkt von dem Rauschfilter 5038. Der Kombinator 5026' kombiniert diese beiden empfangenen Signale, um das Quantisierereingangssignal u(n) zu erzeugen. Deshalb ist die äquivalente kombinierende Anordnung 5050 zu der kombinieren Anordnung ähnlich, die die Kombinatoren 5024 und 5026 von 5 enthält.
  • 4. Sechstes Codec Ausführungsbeispiel – Zweistufige Prädiktion mit zweistufiger Noise Feedback (verschachtelte zweistufige Feedback-Codierung)
  • In einem weiteren Beispiel kann die Außenschicht-NFC-Struktur in 5 (d. h., alle Funktionsblöcke, die außerhalb des prädiktiven Quantisierers Q''' (5008) liegen) durch die NFC-Struktur 2000 in 2 ersetzt werden, wodurch eine weitere Codec-Struktur 6000 konstruiert wird, die in 6 dargestellt ist und unten beschrieben werden wird.
  • 6 ist ein Blockdiagramm einer ersten beispielhaften Anordnung der beispielhaften verschachtelten zweistufigen NF-Codierungsstruktur bzw. des beispielhaften verschachtelten zweistufigen NF-Codecs 6000 gemäß einem sechsten exemplarischen Ausführungsbeispiel. Der Codec 6000 umfasst die folgenden funktionellen Elemente: einen ersten Kombinator 6004; einen zweiten Kombinator 6006; einen prädiktiven Quantisierer Q''' (5008), der oben in Verbindung mit 5 beschrieben worden ist; einen dritten Kombinator oder Addierer 6010; einen Kurzzeitprädiktor 6012 (der auch als ein Kurzzeitprädiktor Ps(z) bezeichnet wird); einen vierten Kombinator 6014; und ein Kurzzeit-Noise-Feedback-Filter 6016 (das auch als ein Kurzzeit-Noise-Feedback-Filter Ns(z) – 1 bezeichnet wird).
  • Der Codec 6000 codiert ein abgetastetes Eingangssprachsignal s(n), um ein codiertes Sprachsignal zu erzeugen, und dann decodiert er das codierte Sprachsignal, um ein rekonstruiertes Ausgangssprachsignal sq(n) zu erzeugen, das repräsentativ ist für das Eingangssprachsignal s(n). Das rekonstruierte Sprachsignal sq(n) ist mit einem Gesamtcodierungsrauschen r(n) = s(n) – sq(n) assoziiert. Bei der Codierung des Eingangssprachsignals s(n) arbeitet eine äußere Codierungsstruktur, die in 6 dargestellt ist, und die die Kombinatoren 6004, 6006 und 6010, das Rauschfilter 6016 und den Prädiktor 6012 umfasst, in einer Art und Weise, die den entsprechenden Codec-Elementen des Codecs 2000 ähnlich ist, die oben in Verbindung mit 2 beschrieben worden sind und die Bezugszeichen aufweisen, die um "4000" herabgesetzt sind. Eine kombinierende Anordnung, die die Kombinatoren 6004 und 6006 umfasst, kann durch eine äquivalente kombinierende Anordnung ersetzt werden, die der kombinierenden Anordnung 5050 ähnlich ist, die in Verbindung mit 5A diskutiert worden ist, wobei ein Kombinator 6004' (nicht gezeigt) die Signale s(n) und ps(n)' kombiniert, um ein Restsignal d(n) (nicht gezeigt) zu erzeugen, und dann kombiniert ein Kombinator 6006' (ebenfalls nicht gezeigt) die Signale d(n) und fqs(n), um das Signal v(n) zu erzeugen.
  • Anders als der Codec 2000 umfasst der Codec 6000 einen prädiktiven Quantisierer, der äquivalent ist zu dem prädiktiven Quantisierer 5008 (der oben in Verbindung mit 5 beschrieben worden ist und in 6 aus bezüglich der Beschreibung praktischen Gründen dargestellt worden ist), um ein prädiktives Quantisierereingangssignal v(n) prädiktiv zu quantisieren, um ein quantisiertes Ausgangssignal vq(n) zu erzeugen. Demgemäss umfasst der Codec 6000 auch eine Noise-Feedback-Schleife erster Stufe bzw. eine äußere Noise-Feedback-Schleife, um das Codierungsrauschen spektral so zu formen, dass es zum Beispiel den Kurzzeitcharakteristiken des Eingangssprachsignals s(n) folgt, und eine Noise-Feedback-Schleife zweiter Stufe bzw. eine innere Noise-Feedback-Schleife, die in der äußeren Schleife eingepasst ist, um das Codierungsrauschen spektral so zu formen, dass es zum Beispiel den Langzeitcharakteristiken des Eingangssprachsignals folgt.
  • In einer zweiten beispielhaften Anordnung des NF-Codecs 6000 ist ein Prädiktor 6012 ein Langzeitprädiktor und das NF-Filter 6016 ist ein Langzeitrauschfilter, während der Prädiktor 5034 ein Kurzzeitprädiktor ist und das Rauschfilter 5038 ein Kurzzeitrauschfilter ist.
  • Es liegt ein Vorteil in einer solchen Flexibilität, verschiedene einstufige NFC-Strukturen in unterschiedlichen Teilen der verschachtelten zweistufigen NFC-Struktur zu mischen und abzugleichen. So ist zum Beispiel der Codec 5000 in 5, obwohl er zwei unterschiedliche Typen von einstufigen NFC-Strukturen in den zwei verschachtelten Schichten mischt, tatsächlich bevorzugt, weil er die niedrigste Komplexität unter den drei Systemen 4000, 5000 und 6000 aufweist, die jeweils in den 4, 5 und 6 gezeigt sind.
  • Um zu sehen, dass der Codec 5000 in 5 die niedrigste Komplexität aufweist, wird zuerst die innere Schicht betrachtet, die die Langzeit-NFC beinhaltet. Um eine bessere Langzeitprädiktionsleistung zu erhalten, verwenden wir normalerweise eher einen Drei-Tap-Pitch-Prädiktor der Art, wie er von Atal und Schroeder in ihrem Aufsatz von 1979 verwendet wurde, als einen einfacheren Ein-Tap-Pitch-Prädiktor. Mit Fl(z) = Pl(z/β) weist die Langzeit-NFC-Struktur im Inneren der gestrichelt dargestellten Q''-Umrandung drei Langzeitfilter auf, die jeweils drei Taps umfassen. Im Gegensatz dazu haben wir dadurch, dass die harmonische spektrale Rauschform so gewählt wird, dass sie die Gleiche ist wie der Frequenzgang von N(z) = 1 + λz–p,nur ein Drei-Tap-Filter Pl(z) (5034) und ein Ein-Tap-Filter (5038) N(z) – 1 = λz–p in der Langzeit-NFC-Struktur im Innern der gestrichelten Umrandung Q''' (5008) von 5. Deshalb weist die innere Schicht Q''' (5008) von 5 eine niedrigere Komplexität auf als die innere Schicht Q'' (4008) von 4.
  • Nun wird die Kurzzeit-NFC-Struktur in der äußeren Schicht des Codecs 5000 in 5 betrachtet. Das Kurzzeit-Synthesefilter (das den Prädiktor 5012 einschließt) zur Rechten der gestrichelten Umrandung Q''' (5008) muss nicht in dem Codierer implementiert werden (und alle drei Decodierer, die den 46 entsprechen, müssen es implementieren). Das Kurzzeit-Analysefilter (das den Prädiktor 5002 einschließt) zur Linken des Symbols d(n) muss auf jeden Fall sogar in 6 implementiert werden (obwohl es hier nicht gezeigt ist), weil wir d(n) dazu verwenden, ein gewichtetes Sprachsignal abzuleiten, das dann für die Pitch-Abschätzung verwendet wird. Deshalb weist 5, wenn man den Rest der äußeren Schicht vergleicht, nur ein einziges Kurzzeitfilter Fs(z) (5016) auf, das implementiert werden muss, während 6 zwei Kurzzeitfilter aufweist. Somit weist die äußere Schicht von 5 eine niedrigere Komplexität als die äußere Schicht von 6 auf.
  • 5. Codierungsverfahren
  • 6A ist ein beispielhaftes Verfahren 6050 der Codierung eines Sprach- oder Audiosignals unter Verwendung irgendeines der beispielhaften Codecs 3000, 4000, 5000 und 6000, die oben beschrieben worden sind. In einem ersten Schritt 6055 sagt ein Prädiktor (z. B. 3002 in 3, 4002 in 4, 5002 in 5 oder 6012 in 6) ein Eingangssprachsignal – oder -audiosignal (z. B. s(n)) voraus, um ein vorausgesagtes Sprachsignal (z. B. ps(n) oder ps(n)') zu erzeugen.
  • In einem nächsten Schritt 6060 kombiniert ein Kombinator (z. B. 3004, 4004, 5004, 6004/6006 oder Äquivalente davon) das vorausgesagte Sprachsignal (z. B. ps(n)) mit dem Sprachsignal (z. B. s(n)), um ein erstes Restsignal (z. B. d(n)) zu erzeugen.
  • In einem nächsten Schritt 6062 kombiniert ein Kombinator (z. B. 3006, 4006, 5006, 6004/6006 oder Äquivalente davon) ein erstes Noise-Feedback-Signal (z. B. fqs(n)) mit dem ersten Restsignal (z. B. d(n)), um ein prädiktives Quantisierereingangssignal (z. B. v(n)) zu erzeugen.
  • In einem nächsten Schritt 6064 quantisiert ein prädiktiver Quantisierer (z. B. Q', Q'' oder Q''') prädiktiv das prädiktive Quantisierereingangssignal (z. B. v(n)), um ein prädiktives Quantisiererausgangssignal (z. B. vq(n)) zu erzeugen, das mit einem prädiktiven Quantisierungsrauschen (z. B. qs(n)) assoziiert ist.
  • In einem nächsten Schritt 6066 filtert ein Filter (z. B. 3016, 4016 oder 5016) das prädiktive Quantisierungsrauschen (z. B. qs(n)), um das erste Noise-Feedback-Signal (z. B. fqs(n)) zu erzeugen.
  • 6B ist ein ausführliches Verfahren, das dem prädiktiven Quantisierungsschritt 6064 entspricht, der oben beschrieben worden ist. In einem ersten Schritt 6070 sagt ein Prädiktor (z. B. 3034, 4022 oder 5034) das prädiktive Quantisierereingangssignal (z. B. v(n)) voraus, um ein vorausgesagtes prädiktives Quantisierereingangssignal (z. B. pv(n)) zu erzeugen.
  • In einem nächsten Schritt 6072, der in allen Codecs 30006000 verwendet wird, kombiniert ein Kombinator (z. B. 3024, 4024, 5024/5026 oder ein Äquivalent davon, wie etwa 5024') wenigstens das prädiktive Quantisierereingangssignal (z. B. v(n)) mit wenigstens dem ersten vorausgesagten prädiktiven Quantisierereingangssignal (z. B. pv(n)), um ein Quantisierereingangssignal (z. B. u(n)) zu erzeugen.
  • Außerdem verwenden die Codec-Ausführungsbeispiele, die eine innere Noise-Feedback-Schleife umfassen (d. h., die beispielhaften Codecs 4000, 5000 und 6000) noch eine weitere Kombinierlogik (z. B. die Kombinatoren 5026/5026' oder 4026 oder Äquivalente davon), um ein zweites Noise-Feedback-Signal (z. B. fq(n)) mit dem prädiktiven Quantisierereingangssignal (z. B. v(n)) und dem ersten vorausgesagten prädiktiven Quantisierereingangssignal (z. B. pv(n)) weiter zu kombinieren, um das Quantisierereingangssignal (z. B. u(n)) zu erzeugen.
  • In einem nächsten Schritt 6076 quantisiert ein skalarer Quantisierer oder Vektorquantisierer (z. B. 3028, 4028 oder 5028) das Eingangssignal (z. B. u(n)), um ein Quantisiereraungangssignal (z. B. uq(n)) zu erzeugen.
  • In einem nächsten Schritt 6078, der nur auf diejenigen Ausführungsbeispiele angewendet wird, die die innere Noise-Feedback-Schleife umfassen, filtert ein Filter (z. B. 4038 oder 5038) ein Quantisierungsrauschen (z. B. q(n)), das mit dem Quantisiererausgangssignal (z. B. q(n)) assoziiert ist, um das zweite Noise-Feedback-Signal (fq(n)) zu erzeugen.
  • In einem nächsten Schritt 6080 leitet eine Ableitlogik (z. B. 3034 und 3030 in 3, 4034 und 4030 in 4 und 5034 und 5030 in 5) das prädiktive Quantisiererausgangssignal (z. B. vq(n)) auf der Grundlage des Quantisiererausgangssignals (z. B. uq(n)) ab.
  • III. Ein weiteres Ausführungsbeispiel
  • Wir beschreiben nun ein weiteres exemplarisches Ausführungsbeispiel auf der Grundlage des fünften Beispiels. 7 zeigt einen beispielhaften Codierer 7000. 8 zeigt den entsprechenden Decodierer. Wie zu sehen ist, basiert die Codiererstruktur 7000 in 7 auf der Struktur des Codecs 5000 in 5. Das Kurzzeit-Synthesefilter (das den Prädiktor 5012 einschließt) in 5 braucht in 7 nicht implementiert zu werden, da sein Ausgang von dem Codierer 7000 nicht benutzt wird. Im Vergleich zu 5 werden nur drei zusätzliche Funktionsblöcke (10, 20 und 95) nahe der Oberseite der 7 hinzugefügt. Diese Funktionsblöcke (die so wohl im Singular als auch kollektiv als "parameterableitende Logik" bezeichnet werden) analysieren adaptiv und quantisieren die Koeffizienten der Kurzzeit- und Langzeitfilter (und leiten diese Koeffizienten dadurch ab). 7 zeigt auch ausdrücklich die unterschiedlichen Quantisiererindizes, die zur Übertragung auf dem Kommunikationskanal einem Multiplexing unterzogen werden. Der Decodierer in 8 ist im Wesentlichen gleich dem Decodierer der meisten anderen modernen prädiktiven Codecs wie etwa MPLPC und CELP. In dem Decodierer wird kein Postfilter verwendet.
  • Der Codierer 7000 und der Codierer 5000 von 5 weisen die folgenden entsprechenden Funktionsblöcke auf: die Prädiktoren 5002 und 5034 in 5, die jeweils den Prädiktoren 40 und 60 in 7 entsprechen; die Kombinatoren 5004, 5006, 5014, 5024, 5026, 5030 und 5036 in 5, die jeweils den Kombinatoren 45, 55, 90, 75, 70, 85 und 80 in 7 entsprechen; die Filter 5016 und 5038 in 5, die jeweils den Filtern 50 und 65 in 7 entsprechen; den Quantisierer 5028 in 5, der dem Quantisierer 30 in 7 entspricht; die Signale vq(n), pv(n), fqs(n) und fq(n) in 5, die jeweils den Signalen dq(n), ppv(n), stnf(n) und ltnf(n) in 7 entsprechen; Signale, die die gleichen Bezugsbezeichnungen in 5 und 7 gemeinsam nutzen und ebenfalls einander entsprechen. Folglich trifft der Betrieb des Codecs 5000, der oben in Verbindung mit 5 beschrieben worden ist, entsprechend auf den Codec 7000 von 7 zu.
  • IV. Lineare prädiktive Kurzzeitanalyse und -quantisierung
  • Nun geben wir eine ausführliche Beschreibung der Codiereroperationen, wobei wir Bezug auf 7 nehmen. Das Eingangssignal s(n) wird bei Block 10 gepuffert, der eine lineare prädiktive Kurzzeitanalyse und -quantisierung durchführt, um die Koeffizienten für den Kurzzeitprädiktor 40 und das Kurzzeit-Noise-Feedback-Filter 50 zu erhalten. Dieser Block 10 wird in 9 noch erweitert. Die Verarbeitungsblöcke in 9 verwenden alle allgemein bekannten Techniken aus dem Stand der Technik.
  • Nun wird Bezug auf 9 genommen. Das Eingangssignal s(n) wird bei Block 11 gepuffert, an dem es von einem Analysefenster multipliziert wird, das eine Länge von 20 ms aufweist. Wenn die Codierungsverzögerung nicht kritisch ist, dann kann eine Rahmengröße von 20 ms und eine Subrahmengröße von 5 ms verwendet werden, und das Analysefenster kann ein symmetrisches Fenster sein, das an dem Mittelpunkt des letzten Subrahmens in dem aktuellen Rahmen zentriert ist. In unserem bevorzugten Ausführungsbeispiel des Codecs wollen wir aber, dass die Codierungsverzögerung so klein wie möglich ist; deshalb werden sowohl die Rahmengröße als auch die Subrahmengröße beide so ausgewählt, dass sie 5 ms sind, und kein Vorgriff/keine Vorausschau über den aktuellen Rahmen hinaus ist gestattet. In diesem Fall wird ein asymmetrisches Fenster verwendet. Das "linke Fenster" ist 17,5 ms lang, und das "rechte Fenster" ist 2,5 ms lang. Die beiden Teile des Fensters verketten sich, um eine Gesamtfensterlänge von 20 ms zu ergeben. Wenn LWINSZ die Anzahl an Abtastwerten in dem linken Fenster ist (LWINSZ = 140 für eine Abtastung von 8 kHz und 280 für eine Abtastung von 16 kHz), dann ist das linke Fenster gegeben durch
    Figure 00360001
  • Wenn RWINSZ die Anzahl der Abtastwerte in dem rechten Fenster ist, dann ist RWINSZ = 20 für eine Abtastung von 8 kHz und 40 für eine Abtastung von 16 kHz. Das rechte Fenster ist gegeben durch
    Figure 00360002
  • Die Verkettung von wl(n) und wr(n) ergibt das asymmetrische 20 ms Analysefenster. Wenn dieses Analysefenster angelegt wird, wird der letzte Abtastwert des Fensters mit dem letzten Abtastwert des aktuellen Rahmens abgeglichen, so dass es keinen Vorgriff gibt.
  • Nachdem der aktuelle 5 ms Rahmen des Eingangssignals und die vorausgehenden 15 ms des Eingangssignals in den vorhergehenden drei Rahmen mit dem 20 ms Fenster multipliziert worden sind, wird das sich ergebende Signal dazu verwendet, die Autokorrelationskoeffizienten r(i) für Zeitverschiebungen i = 0, 1, 2, ..., M zu berechnen, wobei M die Kurzzeitprädiktorordnung ist, und wird so gewählt, dass es sowohl für die 8 kHz als auch die 16 kHz abgetasteten Signale 8 ist.
  • Die berechneten Autokorrelationskoeffizienten werden an den Block 12 weitergereicht, der ein Gaußsches Fenster an die Autokorrelationskoeffizienten anlegt, um das im Stand der Technik allgemein bekannte Verfahren der spektralen Glättung (spectral smoothing) durchzuführen. Die Gaußsche Fensterfunktion ist gegeben durch
    Figure 00370001
    wobei fs die Abtastrate des Eingangssignals ausgedrückt in Hz ist und σ 40 Hz ist.
  • Nachdem r(i) mit einem solchen Gaußschen Fenster multipliziert worden ist, multipliziert der Block 12 dann r(0) mit einem weißen Rauschen-Korrekturfaktor von WNCF = 1 + ε, wobei ε = 0,0001. Zusammengefasst ist der Ausgang des Blocks 12 angegeben durch
    Figure 00370002
  • Die spektrale Glättungstechnik glättet (verbreitert) scharfe Resonanzspitzen in dem Frequenzgang des Kurzzeit-Synthesefilters. Die Weißrauschen-Korrektur addiert einen Weißrauschboden, um den spektralen dynamischen Bereich zu begrenzen. Beide Techniken helfen dabei, die schlechte Konditionierung in der Levinson-Durbin-Rekursion von Block 13 zu verringern.
  • Der Block 13 nimmt die Autokorrelationskoeffizienten, die durch Block 12 modifiziert wurden, und führt das im Stand der Technik allgemein bekannte Verfahren der Levinson-Durbin-Rekursion durch, um die Autokorrelationskoeffizienten in die Kurzzeitprädiktorkoeffizienten âi, i = 0, 1, ..., M umzuwandeln. Der Block 14 führt die Bandbreitenaufweitung der spektralen Resonanzspitzen durch, indem er âi als
    Figure 00370003
    modifiziert, wobei i = 0, 1, ..., M. In unserer speziellen Implementierung wird der Parameter γ als 0,96852 gewählt.
  • Der Block 15 konvertiert die {ai} Koeffizienten in Linienspektrumspaar(LSP)-Koeffizienten {li}, die manchmal auch als Linienspektrumfrequenzen (LSFs) bezeichnet werden. Wiederum ist die Operation von Block 15 eine im Stand der Technik allgemein bekannte Vorgehensweise.
  • Der Block 16 quantisiert und codiert die M LSP-Koeffizienten in eine vorbestimmte Anzahl an Bits. Die Ausgangs-LSP-Quantisierer-Index-Array LSPI wird an den Bit-Multiplexer (Block 95) weitergeleitet, während die quantisierten LSP-Koeffizienten zu dem Block 17 weitergeleitet werden. Es können im Block 16 viele unterschiedliche Arten von LSP-Quantisierern verwendet werden. In unserem bevorzugten Ausführungsbeispiel basiert die Quantisierung von LSP auf einer gleitenden Mittelwert-(MA; moving-average)-Prädiktion zwischen Rahmen (Zwischen-Rahmen-MA-Prädiktion) und einer mehrstufigen Vektorquantisierung, ähnlich wie der (aber nicht gleich dem) LSP-Quantisierer, der in der ITU-T-Empfehlung G.729 verwendet wird.
  • Der Block 16 wird in 10 noch erweitert. Mit Ausnahme der LSP-Quantisierer-Index-Array LSPI sind alle anderen Signalpfade in 10 Vektoren der Dimension M. Der Block 161 verwendet den nicht quantisierten LSP-Koeffizientenvektor, um die Gewichtungen zu berechnen, die später in der VQ-Codebuch-Durchsuchung mit dem gewichteten mittleren quadratischen Fehler(WMSE; weighted mean-square error)-Verzerrungskriterium verwendet werden sollen. Die Gewichtungen werden folgendermaßen bestimmt:
    Figure 00380001
  • Grundsätzlich ist die i-te Gewichtung die Inversion des Abstands zwischen dem i-ten LSP-Koeffizienten und seinem nächsten Nachbar-LSP-Koeffizienten. Diese Gewichtungen unterscheiden sich von denjenigen, die in der G.729 verwendet werden.
  • Der Block 162 speichert den mittleren Langzeitwert jedes der M LSP-Koeffizienten, der offline während der Codecentwurfsphase unter Verwendung einer großen Trainingsdatendatei berechnet worden ist. Der Addierer 163 subtrahiert den mittleren LSP-Vektor von dem nicht quantisierten LSP-Koeffizientenvektor, um die mittlere entfernte (mean removed) Version von diesem zu bekommen. Der Block 164 ist der Zwischen-Rahmen-MA-Prädiktor für den LSP-Vektor. In unserem bevorzugten Ausführungsbeispiel ist die Ordnung dieses MA-Prädiktors 8. Die 8 Prädiktorkoeffizienten werden offline unter Verwendung einer großen Trainingsdatendatei festgelegt und vorher ausgelegt. Mit einer Rahmengröße von 5 ms deckt dieser Prädiktor 8ter Ordnung eine Zeitspanne von 40 ms ab, also genau die gleiche Zeitspanne, die von dem MA-Prädiktor 4ter Ordnung von LSP abgedeckt wird, der in G.729 verwendet wird, der eine Rahmengröße von 10 ms aufweist.
  • Der Block 164 multipliziert die 8 Ausgangsvektoren des Vektorquantisiererblocks 166 in den vorhergehenden 8 Rahmen mit den 8 Sätzen von 8 festgelegten MA-Prädiktorkoeffizienten und addiert das Ergebnis zusammen. Die sich ergebende gewichtete Summe ist der vorausgesagte Vektor, der von dem mittleren entfernten, nicht quantisierten LSP-Vektor durch den Addierer 165 subtrahiert wird. Der zweistufige Vektorquantisiererblock 166 quantisiert dann den sich ergebenden Prädiktionsfehlervektor.
  • Der innere VQ-Block erster Stufe 166 verwendet ein 7-Bit-Codebuch (128 Codevektoren). Für den Schmalband-Codec (8 kHz Abtastung) mit 16 kb/s verwendet die VQ zweiter Stufe ebenfalls ein 7-Bit-Codebuch. Dies ergibt eine gesamte Codierungsrate von 14 Bits/Rahmen für die 8 LSP-Koeffizienten des 16 kb/s Schmalband-Codecs. Für den Breitband-Codec (16 kHz Abtastung) bei 32 kb/s ist die VQ zweiter Stufe andererseits eine geteilte VQ mit einer 3–5-Teilung. Die ersten drei Elemente des Fehlervektors der VQ der ersten Stufe werden vektorquantisiert, wobei ein 5-Bit-Codebuch verwendet wird, und die restlichen 5 Elemente werden vektorquantisiert, wobei ein anderes 5-Bit-Codebuch verwendet wird. Dies ergibt insgesamt (7 + 5 + 5) = 17 Bits/Rahmen Codierungsrate für die 8 LSP-Koeffizienten des 32 kb/s Breitband-Codecs. Die ausgewählten Codevektoren aus den zwei VQ-Stufen werden zusammengezählt, um den endgültigen quantisierten Ausgangsvektor von Block 166 zu ergeben.
  • Während der Durchsuchungen der Codebücher verwenden beide Stufen der VQ in dem Block 166 das WMSE-Verzerrungsmaß mit den Gewichtungen {wi}, die von dem Block 161 berechnet wurden. Die Codebuch-Indizes für die besten Treffer in den beiden VQ-Stufen (zwei Indizes für den 16 kb/s Schmalband-Codec und drei Indizes für den 32 kb/s Breitband-Codec) bilden die Ausgangs-LSP-Index-Array LSP1, die zu dem Bit-Multiplexerblock 95 in 7 weitergeleitet wird.
  • Der Ausgangsvektor von Block 166 wird dazu verwendet, den Speicher des Zwischen-Rahmen-LSP-Prädiktorblocks 164 zu aktualisieren. Der vorausgesagte Vektor, der von dem Block 164 erzeugt wurde, und der mittlere LSP-Vektor, der von Block 162 gehalten wird, werden zu dem Ausgangsvektor von Block 166 durch jeweils die Addierer 167 und 168 addiert. Der Ausgang des Addierers 168 ist der quantisierte und mittlere wiederhergestellte LSP-Vektor.
  • Es ist auf dem Fachgebiet allgemein bekannt, dass die LSP-Koeffizienten in einer gleichförmig aufsteigenden Reihenfolge vorliegen müssen, damit das sich ergebende Synthesefilter stabil ist. Die Quantisierung, die in 10 durchgeführt wird, kann gelegentlich die Reihenfolge einiger der benachbarten LSP-Koeffizienten umkehren. Der Block 169 prüft die korrekte Reihenfolge in den quantisierten LSP-Koeffizienten und stellt die korrekte Reihenfolge wieder her, falls dies notwendig ist. Der Ausgang des Blocks 169 ist der endgültige Satz von quantisierten LSP-Koeffizienten {l ~i}.
  • Nur wird noch mal Bezug auf 9 genommen. Der quantisierte Satz von LSP-Koeffizienten {l ~i}, der einmal pro Rahmen bestimmt wird, wird von Block 17 verwendet, um eine lineare Interpolation von LSP-Koeffizienten für jeden Subrahmen innerhalb des aktuellen Rahmens durchzuführen. In einem allgemeinen Codierungsverfahren kann es zwei oder mehr Subrahmen pro Rahmen geben. Zum Beispiel kann die Subrahmengröße bei 5 ms bleiben, während die Rahmengröße 10 ms oder 20 ms sein kann. In diesem Fall ist die lineare Interpolation von LSP-Koeffizienten im Stand der Technik allgemein bekannt. Vorzugsweise wird die Rahmengröße so gewählt, dass sie 5 ms ist, was gleich der Größe des Subrahmen ist, um die Codierungsverzögerung gering zu halten. In diesem degenerierten Fall kann der Block 17 weggelassen werden. Dies ist der Grund dafür, warum er in einer gestrichelten Umrandung dargestellt ist.
  • Der Block 18 nimmt den Satz von interpolierten LSP-Koeffizienten {l'i} und konvertiert ihn in den entsprechenden Satz von linearen Direkt-Form-Prädiktorkoeffizienten {ãi} für jeden Subrahmen. Wiederum ist eine solche Umwandlung von LSP-Koeffizienten in Prädiktorkoeffizienten in dem Fachgebiet allgemein bekannt. Der sich ergebende Satz von Prädiktorkoeffizienten {ãi} wird dazu verwendet, die Koeffizienten des Kurzzeitprädiktorblocks 40 in 7 zu aktualisieren.
  • Der Block 19 führt eine weitere Bandbreitenaufweitung bei dem Satz von Prädiktorkoeffizienten {ãi} durch, wobei ein Bandbreitenaufweitungsfaktor von γ1 = 0,75 verwendet wird. Der sich ergebende Satz von Filterkoeffizienten mit Bandbreitenaufweitung wird angegeben durch
    Figure 00410001
  • Dieser bandbreitenaufgeweitete Satz von Filterkoeffizienten {a'i} wird dazu verwendet, die Koeffizienten des Kurzzeit-Noise-Feedback-Filterblocks 50 in 7 und die Koeffizienten des gewichteten Kurzzeit-Synthesefilterblocks 21 in 11 (der später noch erläutert wird) zu aktualisieren. Dies vervollständigt die Beschreibung des prädiktiven Kurzzeitanalyse und -quantisierungsblocks 10 in 7.
  • V. Lineare Kurzzeitprädiktion des Eingangssignals
  • Nun wird erneut Bezug auf 7 genommen. Mit Ausnahme des Blocks 10 und des Blocks 95, deren Operationen einmal pro Rahmen durchgeführt werden, werden die Operationen der meisten der restlichen Blöcke in 7 einmal pro Subrahmen durchgeführt, außer dies ist anders angegeben. Der Kurzzeitprädiktorblock 40 sagt den Eingangssignalabtastwert s(n) auf der Grundlage einer linearen Kombination der vorhergehenden M Abtastwerte voraus. Der Addierer 45 subtrahiert den sich ergebenden vorausgesagten Wert von s(n), um das Kurzzeitprädiktions-Restsignal bzw. das Differenzsignal d(n) zu erhalten. Insbesondere ist
    Figure 00410002
  • VI. Lineare prädiktive Langzeitanalyse und -quantisierung
  • Der prädiktive Langzeitanalyse- und -quantisierungsblock 20 verwendet das Kurzzeitprädiktions-Restsignal {d(n)} des aktuellen Subrahmens und seine quantisierte Version {dq(n)} in den vorhergehenden Subrahmen, um die quantisierten Wer te der Pitch-Periode und der Pitchprädiktor-Taps zu bestimmen. Dieser Block 20 wird in 11 noch erweitert.
  • Nun wird Bezug auf 11 genommen. Das Kurzzeitprädiktions-Restsignal d(n) wandert durch den gewichteten Kurzzeitsynthesefilterblock 21, dessen Ausgang folgendermaßen berechnet wird:
    Figure 00420001
  • Das Signal dw(n) ist grundsätzlich eine perzeptuell gewichtete Version des Eingangssignals s(n), gerade so, wie dies in den CELP-Codecs durchgeführt wird. Dieses dw(n) Signal wird durch einen Tiefpassfilterblock 22 geleitet, der eine –3 dB Grenzfrequenz bei etwa 800 Hz aufweist. In dem bevorzugten Ausführungsbeispiel wird ein elliptisches Filter 4ter Ordnung für diesen Zweck verwendet. Der Block 23 dezimiert die Abtastwerte des mit einem Tiefpassfilter gefilterten Signals auf eine Abtastrate von 2 kHz. Dies stellt eine 4:1-Dezimierung für den 16 kb/s Schmalband-Codec bzw. eine 8:1-Dezimierung für den 32 kb/s Breitband-Codec dar.
  • Der Pitch-Durchsuchungsblock 24 der ersten Stufe verwendet dann das dezimierte abgetastete 2 kHz Signal dwd(n), um eine "grobe Pitch-Periode" zu finden, die in 11 als cpp bezeichnet wird. Ein Pitch-Analysefenster von 10 ms wird verwendet. Das Ende des Pitch-Analysefensters wird mit dem Ende des aktuellen Subrahmens abgeglichen. Bei einer Abtastrate von 2 kHz entsprechen 10 ms 20 Abtastwerten. Ohne den Verlust der Allgemeingültigkeit lassen wir den Indexbereich von n = 1 bis n = 20 dem Pitch-Analysefenster für dwd(n) entsprechen. Der Block 24 berechnet zuerst die nachfolgende Korrelationsfunktion und die folgenden Energiewerte
    Figure 00420002
    für k = MINPPD – 1 bis k = MAXPPD 1, wobei MINPPD und MAXPPD jeweils die minimale und die maximale Pitch-Periode in dem dezimierten Bereich sind.
  • Für den Schmalband-Codec ist MINPPD = 4 Abtastwerte und MAXPPD = 36 Abtastwerte. Für den Breitband-Codec ist MINPPD = 2 Abtastwerte und MAXPPD = 34 Abtastwerte. Der Block 24 durchsucht dann die berechnete {c(k)} Array und identifiziert alle positiven lokalen Spitzen in der {c(k)} Sequenz. Nehmen wir an, dass Kp den sich ergebenden Satz von Indizes kp bezeichnet, wobei c(kp) eine positive lokale Spitze ist, und nehmen wir an, die Elemente in KP sind in einer aufsteigenden Reihenfolge angeordnet.
  • Wenn es in der {c(k)} Sequenz überhaupt keine positive lokale Spitze gibt, wird die Verarbeitung von Block 24 beendet, und die grobe Ausgangs-Pitch-Periode wird auf cpp = MINPPD gesetzt. Wenn es wenigstens eine positive lokale Spitze gibt, dann durchsucht der Block 24 die Indizes in dem Satz Kp und identifiziert den Index kp, der c(kp)2/E(kp) maximiert. Nehmen wir an, der sich ergebende Index sei k*p .
  • Um zu verhindern, dass eine grobe Pitch-Periode ausgewählt wird, die um ein ganzzahliges Vielfaches der wahren groben Pitch-Periode herum liegt, wird die folgende einfache Entscheidungslogik verwendet.
    • 1. Wenn k*p der ersten positiven lokalen Spitze entspricht (d. h., wenn es das erste Element von Kp ist), dann verwende k*p als die endgültige Ausgabe cpp von Block 24 und überspringe die restlichen Schritte.
    • 2. Anderenfalls gehe von dem ersten Element von Kp zu dem Element von Kp, das gerade vor dem Element k*p liegt, finde den ersten kp in Kp, der c(kp)2/E(kp) > T1[c(k*p )2/E(k*p )] erfüllt, wobei T1 = 0,7. Der erste kp, der diese Bedingung erfüllt, ist die endgültige Ausgabe cpp des Blocks 24.
    • 3. Wenn keines der Elemente von Kp vor k*p die Ungleichheiten in 2. oben erfüllt, finde den ersten kp in Kp, der die folgenden zwei Bedingungen erfüllt: c(kp)2/E(kp) > T2[c(k*p )2/E(k*p )], wobei T2 = 0,39, und |kp – cpp'| ≤ T3cpp', wobei T3 = 0,25 und cpp' die Ausgabe cpp des Blocks 24 für den letzten Subrahmen ist.
  • Der erste kp, der diese beiden Bedingungen erfüllt, ist die endgültige Ausgabe cpp von Block 24.
    • 4. Wenn keines der Elemente von Kp vor k*p die Ungleichheiten in 3. oben erfüllt, dann verwende k*p als die endgültige Ausgabe cpp von Block 24.
  • Block 25 nimmt cpp als seine Eingabe und führt eine Pitch-Perioden-Durchsuchung zweiter Stufe in dem nicht dezimierten Signalbereich durch, um eine verfeinerte Pitch-Periode pp zu erhalten. Der Block 25 wandelt zuerst die grobe Pitch-Periode cpp in den nicht dezimierten Signalbereich um, indem er diese mit dem Dezimierungsfaktor DECF multipliziert. (Dieser Dezimierungsfaktor DECF ist jeweils 4 und 8 für Schmalband- und Breitband-Codecs). Dann bestimmt er einen Durchsuchungsbereich für die verfeinerte Pitch-Periode um den Wert cpp*DECF herum. Die untere Grenze des Suchbereichs ist lb = max(MINPP, cpp*DECF – DECF + 1), wobei MINPP = 17 Abtastwerte in der minimalen Pitch-Periode ist. Die obere Grenze des Suchbereichs ist ub = min(MAXPP, cpp*DECF + DECF – 1), wobei MAXPP die maximale Pitch-Periode ist, die jeweils 144 und 272 Abtastwerte für Schmalband- und Breitband-Codecs ist.
  • Der Block 25 verwaltet einen Signalpufferspeicher mit einer Gesamtheit von MAXPP +1 + SFRSZ Abtastwerten, wobei SFRSZ die Subrahmengröße ist, die jeweils 40 bzw. 80 Abtastwerte für Schmalband- und Breitband-Codecs ist. Die letzten SFRSZ Abtastwerte dieses Pufferspeichers werden mit dem Open-Loop-Kurzzeitprädiktions-Restsignal d(n) in dem aktuellen Subrahmen bestückt. Die ersten MAXPP + 1 Abtastwerte werden mit den MAXPP + 1 Abtastwerten der quantisierten Version von d(n) bestückt, die als dq(n) bezeichnet werden, die dem aktuellen Subrahmen direkt vorausgehen. Aus Gründen des praktischeren Schreibens der Gleichungen an späterer Stelle werden wir dq(n) dazu verwenden, den gesamten Puffer von MAXPP + 1 + SFRSZ Abtastwerten zu bezeichnen, obwohl die letzten SFRSZ Abtastwerte eigentlich d(n) Abtastwerte sind. Wiederum nehmen wir ohne Verlust der Allgemeingültigkeit an, dass der Indexbereich von n = 1 bis n = SFRSZ die Abtastwerte in dem aktuellen Subrahmen bezeichnet.
  • Nachdem die untere Grenze lb und die obere Grenze ub des Pitch-Perioden-Suchbereichs bestimmt sind, berechnet der Block 25 die nachfolgenden Korrelations- und Energieterme in dem nicht dezimierten dq(n) Signalbereich für Verzögerungen (time lags) k in dem Suchbereich [lb, ub].
  • Figure 00450001
  • Die Zeitverzögerung k∊[lb, ub], die das Verhältnis c ~2(k)/Ẽ(k) maximiert, wird als die endgültige verfeinerte Pitch-Periode ausgewählt. Das heißt,
    Figure 00450002
  • Wenn die verfeinerte Pitch-Periode pp bestimmt ist, wird sie in den entsprechenden Ausgangs-Pitch-Perioden-Index PPI codiert, der folgendermaßen berechnet wird: PPI = pp – 17
  • Mögliche Werte von PPI sind 0 bis 127 für den Schmalband-Codec und 0 bis 255 für den Breitband-Codec. Deshalb wird die verfeinerte Pitch-Periode pp in 7 Bits oder 8 Bits ohne Verzerrung codiert.
  • Der Block 25 berechnet auch pptl, das optimale Tap-Gewicht für einen Einzel-Tap-Pitch-Prädiktor wie folgt:
    Figure 00450003
  • Block 27 berechnet den Langzeit-Noise-Feedback-Filterkoeffizienten λ wie folgt.
  • Figure 00450004
  • Der Pitch-Prädiktor-Taps-Quantisiererblock 26 quantisiert die drei Pitch-Prädiktor-Taps auf 5 Bits unter Verwendung der Vektorquantisierung. Anstatt den mittleren quadratischen Fehler der drei Taps zu minimieren, wie dies in herkömmlichen VQ-Codebuch-Durchsuchungen der Fall ist, findet der Block 26 aus dem VQ-Codebuch den Satz von Kandidation-Pitch-Prädiktor-Taps heraus, der die Pitch-Prädiktions-Restenergie in dem aktuellen Subrahmen minimiert. Unter Verwendung der gleichen dq(n) Puffer- und Zeitindex-Konvention wie in Block 25 und unter Bezeichnung des Satzes von drei Taps entsprechend dem j-ten Codevektor als {bj1, bj2, bj3} können wir eine solche Pitch-Prädiktions-Restenergie folgendermaßen ausdrucken:
    Figure 00460001
  • Diese Gleichung kann umgeschrieben werden als
  • Figure 00460002
  • In der Codecentwurfstufe werden die optimalen Drei-Tap-Codebücher {bj1, bj2, bj3,j}, j = 0, 1, 2, ..., 31 offline entworfen. Die entsprechenden 9-dimensionalen Codevektoren xj, j = 0, 1, 2, ..., 31 werden berechnet und in einem Codebuch gespeichert. Bei der tatsächlichen Codierung berechnet der Block 26 zuerst den Vektor pr, dann berechnet er die 32 inneren Produkte prxj für j = 0, 1, 2, ..., 31. Der Codebuch-Index j*, der solch ein inneres Produkt maximiert, minimiert auch die Pitch- Prädiktions-Festenergie Ej. Somit wird der Ausgangs-Pitch-Prädiktor-Taps-Index PPTI gewählt als
    Figure 00470001
  • Der entsprechende Vektor von drei quantisierten Pitch-Prädiktor-Taps, der in 11 als ppt bezeichnet wird, wird durch Multiplikation der ersten drei Elemente des ausgewählten Codevektors xj* mit 0,5 erzielt.
  • Wenn die quantisierten Pitch-Prädiktor-Taps bestimmt worden sind, berechnet der Block 28 das Open-Loop-Pitch-Prädiktions-Restsignal e(n) wie folgt.
  • Figure 00470002
  • Wiederum wird hier die gleiche dq(n) Pufferspeicher- und Zeitindexkonvention von Block 25 verwendet. Das heißt, der aktuelle Subrahmen von dq(n) für n = 1, 2, ..., SFRSZ ist tatsächlich das nichtquantisierte Open-Loop-Kurzzeitprädiktions-Restsignal d(n).
  • Damit ist die Beschreibung von Block 20, prädiktive Langzeitanalyse und -quantisierung, vollendet.
  • VII. Quantisierung der Restverstärkung
  • Das Open-Loop-Pitch-Prädiktions-Restsignal e(n) wird verwendet, um die Restverstärkung zu berechnen. Dies wird im Innern des Prädiktionsrestquantisiererblocks 30 in 7 durchgeführt. Der Block 30 findet seine Erweiterung in 12.
  • Nun wird Bezug auf 12 genommen. Der Block 301 berechnet die Restverstärkung in dem Basis-2-Logarithmus-Bereich. Wir nehmen an, der aktuelle Subrahmen entspricht den Zeitindizes von n = 1 bis n = SFRSZ. Für den Schmalband-Codec wird die logarithmische Verstärkung (Log-Verstärkung) einmal pro Subrahmen folgendermaßen berechnet.
  • Figure 00480001
  • Für den Breitband-Codec werden andererseits zwei Log-Verstärkungen für jeden Subrahmen berechnet. Die erste Log-Verstärkung wird folgendermaßen berechnet:
    Figure 00480002
    und die zweite Log-Verstärkung wird folgendermaßen berechnet:
    Figure 00480003
  • In Ermangelung eines besseren Namens werden wird den Begriff "Verstärkungsrahmen" verwenden, um Bezug auf einen Zeitraum zu nehmen, über den eine Restverstärkung berechnet wird. Somit beträgt die Verstärkungsrahmengröße SFRSZ für den Schmalband-Codec und SFRSZ/2 für den Breitband-Codec. Alle Operationen in 12 werden auf einer Basis einmal pro Verstärkungsrahmen durchgeführt.
  • Der mittlere Langzeitwert der Log-Verstärkung wird offline berechnet und in Block 302 gespeichert. Der Addierer 303 subtrahiert diesen mittleren Langzeitwert von der Ausgangs-Log-Verstärkung von Block 301, um die mittlere entfernte Version der Log-Verstärkung zu erhalten. Der MA-Log-Verstärkungs-Prädiktorblock 304 ist ein FIR-Filter mit einer Ordnung von 8 für den Schmalband-Codec und einer Ordnung von 16 für den Breitband-Codec. In beiden Fällen beträgt die Zeitspanne, die von dem Log-Verstärkungs-Prädiktor abgedeckt wird, 40 ms. Die Koeffizienten dieses Log-Verstärkungs-Prädiktors werden vorher offline bestimmt und festgehalten. Der Addierer 305 subtrahiert den Ausgang von Block 304, welcher die vorausgesagte Log-Verstärkung ist, von der mittleren entfernten Log-Verstärkung. Der skalare Quantisiererblock 306 quantisiert den sich ergebenden Log-Verstärkungs-Prädiktionsrest. Der Schmalband-Codec verwendet hierbei einen 4-Bit-Quantisierer, während der Breitband-Codec hierbei einen 5-Bit-Quantisierer verwendet.
  • Der Verstärkungs-Quantisierer-Codebuchindex GI wird an den Bit-Multiplexer-Block von 7 weitergeleitet. Die quantisierte Version des Log-Verstärkungs-Prädiktionsrestes wird an den Block 304 weitergeleitet, um den MA-Log-Verstärkungsprädiktorspeicher zu aktualisieren. Der Addierer 307 addiert die vorausgesagte Log-Verstärkung zu dem quantisierten Log-Verstärkungs-Prädiktionsrest, um die quantisierte Version der mittleren entfernten Log-Verstärkung zu erhalten. Der Addierer 308 addiert dann den mittleren Log-Verstärkungs-Wert, um die quantisierte Log-Verstärkung zu erhalten, die als qlg bezeichnet wird.
  • Der Block 309 wandelt dann die quantisierte Log-Verstärkung in die quantisierte Restverstärkung in dem linearen Bereich wie folgt um: g = 2qlg/2.
  • Der Block 310 skaliert das Rest-Quantisierer-Codebuch. Das heißt, er multipliziert alle Einträge in dem Rest-Quantisierer-Codebuch mit g. Das sich ergebende skalierte Codebuch wird dann von Block 311 verwendet, um die Rest-Quantisierer-Codebuch-Durchsuchung durchzuführen.
  • Der Prädiktionsrestquantisierer in dem vorliegenden Beispiel von TSNFZ kann entweder ein skalarer Quantisierer oder ein Vektorquantisierer sein. Bei einer gegebenen Bitrate ergibt die Verwendung eines skalaren Quantisierers eine niedrigere Codec-Komplexität auf Kosten einer niedrigeren Ausgabequalität. Umgekehrt verbessert die Verwendung eines Vektorquantisierers die Ausgabequalität, aber ergibt eine höhere Codec-Komplexität. Ein skalarer Quantisierer ist eine geeignete Wahl für Anwendungen, die eine sehr niedrige Codec-Komplexität erfordern, aber höhere Bitraten tolerieren können. Für andere Anwendungen, die keine sehr niedrige Codec-Komplexität erfordern, ist ein Vektorquantisierer besser geeignet, da er eine bessere Codierungseffizienz als ein skalarer Quantisierer ergibt.
  • In den nächsten zwei Abschnitten beschreiben wir die Prädiktionsrestquantisierer-Codebuchdurchsuchungs-Vorgänge zuerst für den Fall einer skalaren Quantisierung in SQ-TSNFC und dann für den Fall der Vektorquantisierung in VQ-TSNFC. Die Codebuchdurchsuchungsvorgänge sind für beide Fälle sehr unterschiedlich, so dass sie separat beschrieben werden müssen.
  • VIII. Skalare Quantisierung eines linearen Prädiktionsrestsignals
  • Wenn der Restquantisierer ein skalarer Quantisierer ist, wird die Codiererstruktur von 7 direkt so verwendet, wie sie ist, und die Blöcke 50 bis 90 arbeiten auf einer Basis Abtastwert um Abtastwert. Speziell der Kurzzeit-Noise-Feedback-Filterblock 50 von 7 verwendet seinen Filterspeicher, um den aktuellen Abtastwert des Kurzzeit-Noise-Feedback-Signals stnf(n) wie folgt zu berechnen.
  • Figure 00500001
  • Der Addierer 55 addiert stnf(n) zu dem Kurzzeitprädiktionsrest d(n), um v(n) zu erhalten. v(n) = d(n) + stnf(n)
  • Als Nächstes berechnet der Langzeitprädiktorblock 60 unter Verwendung seines Filterspeichers den Pitch-vorausgesagten Wert als
    Figure 00500002
    und der Langzeit-Noise-Feedback-Filterblock 65 berechnet das Langzeit-Noise-Feedback-Signal als ltnf(n) = λq(n – pp).
  • Die Addierer 70 und 75 berechnen zusammen das Quantisierereingangssignal u(n) als u(n) = v(n) – [ppv(n) + ltnf(n)].
  • Als Nächstes quantisiert der Block 311 von 12 u(n), indem er einfach die Codebuchdurchsuchung eines herkömmlichen skalaren Quantisierers durchführt. Er nimmt den aktuellen Abtastwert des nicht quantisierten Signals u(n), findet den nächsten Nachbarn aus dem skalierten Codebuch, das von Block 310 bereitgestellt wird, leitet den entsprechenden Codebuch-Index CI an den Bit-Multiplexer-Block 95 von 7 weiter und leitet den quantisierten Wert uq(n) an die Addierer 80 und 85 von 7 weiter.
  • Der Addierer 80 berechnet den Quantisierungsfehler des Quantisiererblocks 30 als q(n) = u(n) – uq(n).
  • Dieser q(n) Abtastwert wird an den Block 65 weitergeleitet, um den Filterspeicher des Langzeit-Noise-Feedback-Prädiktor-Filters zu aktualisieren.
  • Der Addierer 85 addiert ppv(n) mit uq(n), um dq(n) zu erhalten, die quantisierte Version des aktuellen Abtastwerts des Kurzzeitprädiktionsrests. dq(n) = uq(n) + ppv(n)
  • Dieser dq(n) Abtastwert wird an den Block 60 weitergeleitet, um den Filterspeicher des Langzeitprädiktors zu aktualisieren.
  • Der Addierer 90 berechnet den aktuellen Abtastwert von qs(n) als qs(n) = v(n) – dq(n)und leitet ihn dann an den Block 50 weiter, um den Filterspeicher des Kurzzeit-Noise-Feedback-Filters zu aktualisieren. Dies vervollständigt die Quantisierungs-Rückkopplungsschleife, die Abtastwert um Abtastwert arbeitet.
  • Wir haben herausgefunden, dass dann, wenn der skalare Prädiktionsrestquantisierer mit einer Bitrate von 2 Bit/Abtastwert oder höher arbeitet, wenigstens für Sprachsignale der entsprechende SQ-TSNFC-Codecausgang eine im Wesentlichen transparente Qualität aufweist
  • IX. Vektorquantisierung eines linearen Prädiktionsrestsignals
  • Wenn der Restquantisierer ein Vektorquantisierer ist, kann die Codiererstruktur von 7 nicht direkt so, wie sie ist, verwendet werden. Ein alternativer Lösungsweg und alternative Strukturen müssen verwendet werden. Um dies zu sehen, wird ein konventioneller Vektorquantisierer mit einer Vektordimension K betrachtet. Normalerweise wird dem Vektorquantisierer ein Eingangsvektor präsentiert, und der Vektorquantisierer durchsucht alle Codevektoren in seinem Codebuch, um den nächsten Nachbarn zu dem Eingangsvektor zu finden. Der gewinnende Codevektor ist der VQ-Ausgangsvektor, und die entsprechende Adresse dieses Codevektors ist der Quantisierer-Aus-Codebuch-Index. Wenn ein solches herkömmliches VQ-Verfahren mit der Codec-Struktur in 7 verwendet werden soll, dann müssen wir K Abtastwerte des Quantisierereingangs u(n) zur gleichen Zeit bestimmen. Das Bestimmen des ersten Abtastwerts von u(n) in dem VQ-Eingangsvektor ist kein Problem, da wir bereits in dem letzten Abschnitt gezeigt haben, wie dies durchzuführen ist. Aber der zweite bis zum K-ten Abtastwert des VQ-Eingangsvektors kann nicht bestimmt werden, weil sie von dem ersten bis zum (K – 1)-ten Abtastwert des VQ-Ausgangsvektors des Signals uq(n) abhängen, die noch nicht bestimmt worden sind.
  • Das vorliegende Lösungsbeispiel vermeidet dieses Henne-und-Ei-Problem, indem sie die VQ-Codebuch-Durchsuchungsvorgehensweise modifiziert, wie dies unten beschrieben wird, wobei mit Bezug auf 13A begonnen wird.
  • A. Allgemeine VQ-Durchsuchung
  • 1. Ausführungsbeispiel auf hoher Ebene
  • a. System
  • 13A ist ein Blockdiagramm eines beispielhaften Noise-Feedback-Codierungs-(NFC-)Systems 1300 zum Durchsuchen von N VQ-Codevektoren, die in einem skalierten VQ-Codebuch 5028a gespeichert sind, nach einem bevorzugten Codevektor der N VQ-Codevektoren, der zum Codieren eines Sprach- oder Audiosignals s(n) verwendet werden soll. Das System 1300 umfasst ein skaliertes VQ-Codebuch 5028a, das ein VQ-Codebuch 1302 und eine Verstärkungsskaliereinheit 1304 enthält. Das skalierte VQ-Codebuch 5028a entspricht dem Quantisierer 3028, 4028, 5028, oder 30, der oben jeweils in Verbindung mit den 3, 4, 5 oder 7 beschrieben worden ist.
  • Das VQ-Codebuch 1302 umfasst N VQ-Codevektoren. Das VQ-Codebuch 1302 stellt jeden der N VQ-Codevektoren, die in dem Codebuch gespeichert sind, der Verstärkungsskaliereinheit 1304 bereit. Die Verstärkungsskaliereinheit 1304 skaliert die Codevektoren und stellt die skalierten Codevektoren einem Ausgang des skalierten VQ-Codebuchs 5028a bereit. Das Symbol g(n) repräsentiert die quantisierte Restverstärkung in dem linearen Bereich, wie diese in den vorhergehenden Abschnitten berechnet worden ist. Die Kombination aus VQ-Codebuch 1302 und Verstärkungsskaliereinheit 1304 (auch g(n) genannt) ist äquivalent zu einem skalierten VQ-Codebuch.
  • Das System 1300 umfasst des Weiteren eine Prädiktorlogikeinheit 1306 (die auch als ein Prädiktor 1306 bezeichnet wird), einen Eingangsvektorableiter 1308, einen Fehlerenergieberechner 1310, einen Selektor 1312 für den bevorzugten Codevektor, und einen Prädiktor-/Filter-Wiederhersteller 1314. Der Prädiktor 1306 umfasst eine Kombinations- und Prädiktionslogik. Der Eingangsvektorableiter 1308 umfasst eine Kombinations-, Filterungs- und Prädiktionslogik, die einer solchen Logik entspricht, die zum Beispiel in den Codecs 3000, 4000, 5000, 6000 und 7000 verwendet wird, was unten noch genauer beschrieben werden wird. Die Logik, die in dem Prädiktor 1306, in dem Eingangsvektorableiter 1308 und in dem Quantisierer 1508a verwendet wird, arbeitet Abtastwert um Abtastwert in der gleichen Art und Weise, wie dies oben in Verbindung mit den Codecs 30007000 beschrieben worden ist. Nichtsdestotrotz werden die VQ-Systeme und -Verfahren unten in bezug auf die Durchführung von Operationen bei "Vektoren" anstatt bei einzelnen Abtastwerten beschrieben. Ein "Vektor", wie er hier verwendet wird, bezieht sich auf eine Gruppe von Abtastwerten. Es sollte klar sein, dass die VQ-Systeme und -Verfahren, die unten beschrieben werden, jeden der Abtastwerte in einem Vektor (das heißt, in einer Gruppe vorn Abtastwerten) verarbeiten, und zwar jeweils einen Abtastwert pro Zeit. Zum Beispiel filtert ein Filter einen Eingangsvektor in der folgenden Art und Weise: ein erster Abtastwert des Eingangsvektors wird an einen Eingang des Filters angelegt; das Filter verarbeitet den ersten Abtastwert des Vektors, um einen ersten Abtastwert eines Ausgangsvektors zu erzeugen, der dem ersten Abtastwert des Eingangsvektors entspricht; und der Prozess wird für jeden Abtastwert der nächsten sequentiellen Abtastwerte des Eingangsvektors wiederholt, bis keine Eingangsvektor abtastwerte mehr übrig sind, wodurch das Filter sequentiell jeden der nächsten Abtastwerte des Ausgangsvektors erzeugt. Der letzte Abtastwert des Ausgangsvektors, der von dem Filter erzeugt bzw. ausgegeben werden soll, kann an dem Filterausgang bleiben, so dass er für die Verarbeitung sofort oder zu einer späteren Abtastwertzeit zur Verfügung steht (zum Beispiel, um mit einem Abtastwert, der mit einem anderen Vektor assoziiert ist, kombiniert zu werden, oder um anderweitig verarbeitet zu werden). Ein Prädiktor sagt einen Eingangsvektor in so ziemlich der gleichen Art und Weise voraus, wie das Filter den Eingangsvektor verarbeitet (das heißt, filtert). Deshalb wird der Begriff "Vektor" hier aus praktischen Gründen verwendet, um eine Gruppe von Abtastwerten zu beschreiben, die sequentiell verarbeitet werden sollen.
  • b. Verfahren
  • Nun wird eine kurze Übersicht über ein Verfahren des Betriebs des Systems 1300 bereitgestellt. In der modifizierten VQ-Codebuch-Durchsuchungsvorgehensweise, die aktuell unter Verwendung des Systems 1300 implementiert ist, stellen wir jeweils einen VQ-Codevektor pro Zeit von einem skalierten VQ-Codebuch 5028a bereit, führen alle Prädiktions-, Kombinations- und Filterungsfunktionen des Prädiktors 1306 und die Eingangsvektorableitlogik 1308 durch, um den entsprechenden VQ-Eingangsvektor des Signals u(n) zu berechnen, und dann berechnen wir die Energie des Quantisierungsfehlervektors des Signals q(n) unter Verwendung des Fehlerenergieberechners 1310. Dieser Prozess wird N mal für die N Codevektoren in dem skalierten VQ-Codebuch 5028a durchgeführt, wobei die Filterspeicher in der Eingangsvektorableitlogik 1308 auf ihre Anfangswerte zurückgesetzt werden, bevor wir den Prozess für jeden neuen Codevektor wiederholen. Nachdem alle N Codevektoren versucht worden sind, haben wir entsprechende N Quantisierungsfehlerenergiewerte von q(n) berechnet. Der VQ-Codevektor, der die Energie des Quantisierungsfehlervektors minimiert, ist der gewinnende Codevektor und wird als der VQ-Ausgangsvektor verwendet. Die Adresse dieses gewinnenden Codevektors ist der Ausgangs-VQ-Codebuchindex CI, der an den Bit-Multiplexer-Block 95 weitergeleitet wird.
  • Der Bit-Multiplexer-Block 95 in 7 packt die fünf Sätze von Indizes LSPI, PPI, PPTI, GI und CI in einen einzigen Bitstrom. Dieser Bitstrom ist der Ausgang des Codierers. Er wird zu dem Kommunikationskanal weitergeleitet.
  • 13B ist ein Flussdiagramm eines beispielhaften Verfahrens 1350 zur Durchsuchung der N VQ-Codevektoren, die in dem VQ-Codebuch 1302 gespeichert sind, nach einem bevorzugten Codevektor der N VQ-Codevektoren, der bei der Codierung eines Sprach- bzw. Audiosignals verwendet werden soll (das Verfahren 1350 wird auch als eine Prädiktionsrest-VQ-Codebuch-Durchsuchung eines NFC bezeichnet). Das Verfahren 1350 ist unter Verwendung des Systems 1300 implementiert. Unter Bezugnahme auf die 13A und 13B sagt ein Prädiktor 1306 bei einem ersten Schritt 1352 ein Sprachsignal s(n) voraus, um ein Restsignal d(n) abzuleiten. Der Prädiktor 1306 kann einen Prädiktor und einen Kombinator in der Art wie zum Beispiel der Prädiktor 5002 und der Kombinator 5004 umfassen, die oben in Verbindung mit 5 erörtert worden sind.
  • Bei einem nächsten Schritt 1354 leitet der Eingangsvektorableiter 1308 N VQ-Eingangsvektoren u(n) ab, und zwar jeden auf der Basis des Restsignals d(n) und eines entsprechenden Codevektors der N VQ-Codevektoren, die in dem Codebuch 1302 gespeichert sind. Jeder der VQ-Eingangsvektoren u(n) entspricht einem der N VQ-Fehlervektoren q(n). Der Eingangsvektorableiter 1308 und der Schritt 1354 werden unten noch ausführlicher beschrieben werden.
  • Bei einem nächsten Schritt 1358 leitet der Fehlerenergieberechner 1310 N VQ-Fehlerenergiewerte e(n) ab, von denen jeder einem der N VQ-Fehlervektoren q(n) entspricht, die mit den N VQ-Eingangsvektoren u(n) von Schritt 1354 assoziiert sind. Der Fehlerenergieberechner 1310 führt zum Beispiel eine Quadrierungsoperation bei jedem der Fehlervektoren q(n) durch, um die Energiewerte abzuleiten, die den Fehlervektoren entsprechen.
  • Bei einem nächsten Schritt 1360 wählt der bevorzugte Codevektor-Selektor 1312 einen bevorzugten Codevektor der N VQ-Codevektoren als einen VQ-Ausgangsvektor uq(n) aus, der dem Restsignal d(n) entspricht, und zwar auf der Basis der N VQ-Fehlerenergiewerte e(n), die von dem Fehlerenergieberechner 1310 abgeleitet worden sind.
  • Der Prädiktor-/Filter-Wiederhersteller 1314 initialisiert und stellt die Filterzustände und die Prädiktorzustände verschiedener Filter und Prädiktoren, die in dem System 1300 enthalten sind, während des Verfahrens 1350 wieder her (das heißt, setzt diese zurück), was unten noch weiter beschrieben werden wird.
  • 2. Beispielhaftes spezielles Ausführungsbeispiel
  • a. System
  • 13C ist ein Blockdiagramm eines Abschnitts einer beispielhaften Codec-Struktur bzw. eines beispielhaften Systems 1362, das in einer Prädiktionsrest-VQ-Codebuchdurchsuchung des TSNFC 5000 (der oben in Verbindung mit 5 diskutiert worden ist) verwendet wird. Das System 1362 umfasst ein skaliertes VQ-Codebuch 5028a und einen Eingangsvektorableiter 1308a (ein spezifisches Ausführungsbeispiel des Eingangsvektorableiters 1308), der gemäß dem Ausführungsbeispiel des TSNFC 5000 in 5 konfiguriert ist. Der Eingangsvektorableiter 1308a umfasst im Wesentlichen die gleiche Rückkopplungsstruktur, die in der Quantisierer-Codebuch-Durchsuchung wie etwa in 7 verwendet wird, mit der Ausnahme, dass die kurzen Notationen der z-Transformierten der Filterblöcke in 5 verwendet werden. Der Eingangsvektorableiter 1308a umfasst eine äußere NF-Schleife bzw. eine NF-Schleife erster Stufe, die das NF-Filter 5016 umfasst, und eine innere NF-Schleife bzw. eine NF-Schleife zweiter Stufe, die das NF-Filter 5038 umfasst, was oben in Verbindung mit 5 beschrieben worden ist. Auch arbeiten alle der Filterblöcke und Addierer (Kombinatoren) in dem Eingangsvektorableiter 1308a in der gleichen Art und Weise auf einer Basis Abtastwert um Abtastwert, wie dies in Verbindung mit 5 beschrieben worden ist.
  • b. Verfahren
  • Das Verfahren des Betriebs der Codec-Struktur 1362 kann so betrachtet werden, dass es ein einziges Verfahren umfasst. Alternativ dazu kann das Verfahren des Betriebs der Codec-Struktur 1362 so betrachtet werden, dass es ein erstes Verfahren umfasst, das mit der inneren NF-Schleife der Codec-Struktur 1362 assoziiert ist (was oben in Verbindung mit 13C erwähnt worden ist), und auch ein zweites Verfahren umfasst, das mit der äußeren NF-Schleife der Codec-Struktur assoziiert ist (und was ebenfalls oben erwähnt worden ist). Die ersten und zweiten Verfahren, die jeweils mit den inneren und äußeren NF-Schleifen der Codec-Struktur 1362 assoziiert sind, arbeiten gleichzeitig und in einer miteinander in Beziehung stehenden Art und Weise (das heißt, zusammen), um das einzelne Verfahren zu bilden. Die oben er wähnten ersten und zweiten Verfahren (das heißt, jeweils die inneren und äußeren NF-Schleifenverfahren) werden nun der Reihe nach unten beschrieben.
  • 13D ist ein beispielhaftes erstes (inneres NF-Schleifen-)Verfahren 1364, das von dem System 1362 implementiert wird, das in 13C dargestellt ist. Das Verfahren 1364 verwendet die innere NF-Schleife des Systems 1362, wie oben erwähnt worden ist. Bei einem ersten Schritt 1365 kombiniert der Kombinator 5036 jeden der N VQ-Eingangsvektoren u(n) (was oben in Verbindung mit 13A erwähnt worden ist) mit dem entsprechenden einen Codevektor der N VQ-Codevektoren aus dem skalierten VQ-Codebuch 5028a, um die N VQ-Fehlervektoren q(n) zu erzeugen.
  • Bei einem nächsten Schritt 1366 filtert das Filter 5038 separat wenigstens einen Teil jedes der N VQ-Fehlervektoren q(n), um N Noise-Feedback-Vektoren fq(n) zu erzeugen, die jeweils einem der N VQ-Codevektoren entsprechen. Das Filter 5038 kann entweder eine Langzeitfilterung oder eine Kurzzeitfilterung durchführen. Das Filter 5038 filtert jeden der Fehlervektoren q(n) auf einer Abtastwert-um-Abtastwert-Basis (das heißt, die Abtastwerte jedes Fehlervektors q(n) werden sequentiell Abtastwert um Abtastwert gefiltert). Das Filter 5038 filtert jeden der N VQ-Fehlervektoren q(n) auf der Basis eines anfänglichen Filterzustands des Filters, der einem vorhergehenden bevorzugten Codevektor entspricht (der vorhergehende bevorzugte Codevektor entspricht einem vorhergehenden Restsignal). Deshalb stellt der Wiederhersteller 1314 wieder den anfänglichen Filterzustand des Filters 5038 her, bevor das Filter jeden der N VQ-Codevektoren filtert. Wie dies den Durchschnittfachleuten auf dem Gebiet der Sprachcodierung offensichtlich sein sollte, wird der anfängliche Filterzustand, der oben erwähnt ist, typischerweise als ein Ergebnis der Verarbeitung vieler, das heißt, eines oder mehrerer vorhergehender bevorzugter Codevektoren errichtet.
  • Bei einem nächsten Schritt 1368 kombiniert die Kombinationslogik (5006, 5024 und 5026) separat jeden der N Noise-Feedback-Vektoren fq(n) mit dem Restsignal d(n), um die N VQ-Eingangsvektoren u(n) zu erzeugen.
  • 13E ist ein beispielhaftes zweites (äußeres NF-Schleifen-)Verfahren 1370, das gleichzeitig und zusammen mit dem Verfahren 1364 von dem System 1362 ausgeführt wird. Das Verfahren 1370 verwendet die äußere NF-Schleife des Systems 1362, wie dies oben erwähnt worden ist. Bei einem ersten Schritt 1372 des Verfahrens 1370 kombiniert der Kombinator 5006 separat das Restsignal d(n) mit jedem der N Noise-Feedback-Vektoren fqs(n), um N prädiktive Quantisierereingangsvektoren v(n) zu erzeugen.
  • Bei einem nächsten Schritt 1374 sagt der Prädiktor 5034 jeden der N prädiktiven Quantisierereingangsvektoren v(n) voraus, um N vorausgesagte prädiktive Quantisierereingangsvektoren pv(n) zu erzeugen. Der Prädiktor 5034 sagt die Eingangsvektoren v(n) auf der Basis eines anfänglichen Prädiktorzustands des Prädiktors, der dem vorhergehenden bevorzugten Codevektor entspricht (das heißt, von diesem errichtet worden ist) voraus. Deshalb stellt der Wiederhersteller 1314 wieder den anfänglichen Prädiktorzustand des Prädiktors 5034 her, bevor der Prädiktor 5034 jeden der N prädiktiven Quantisierereingangsvektoren v(n) in dem Schritt 1374 voraussagt.
  • Bei einem nächsten Schritt 1376 kombiniert die Kombinationslogik (z. B. die Kombinatoren 5024 und 5026) separat jeden der N prädiktiven Quantisierereingangsvektoren v(n) mit einem entsprechenden Vektor der N vorausgesagten prädiktiven Quantisierereingangsvektoren pv(n), um die N VQ-Eingangsvektoren u(n) zu erzeugen.
  • Bei einem nächsten Schritt 1378 kombiniert ein Kombinator (z. B. der Kombinator 5030) jeden der N vorausgesagten, prädiktiven Quantisierereingangsvektoren pv(n) mit entsprechenden Codevektoren der N VQ-Codevektoren, um N prädiktive Quantisiererausgangsvektoren vq(n) zu erzeugen, die den N VQ-Fehlervektoren qs(n) entsprechen.
  • Bei einem nächsten Schritt 1380 filtert das Filter 5016 separat jeden der N VQ-Fehlervektoren qs(n), um die N Noise-Feedback-Vektoren fsq(n) zu erzeugen. Das Filter 5016 kann entweder eine Langzeitfilterung oder eine Kurzzeitfilterung durchführen. Das Filter 5016 filtert jeden der N VQ-Fehlervektoren qs(n) auf einer Abtastwert-um-Abtastwert-Basis und auf der Basis eines anfänglichen Filterzustands des Filters, der wenigstens dem vorhergehenden bevorzugten Codevektor entspricht (siehe Voraussageschritt 1374 oben). Deshalb stellt der Wiederhersteller 1314 den anfanglichen Filterzustand des Filters 5016 wieder her, bevor das Filter 5016 jeden der N VQ-Codevektoren im Schritt 1380 filtert.
  • Alternative Ausführungsbeispiele von VQ-Durchsuchungssystemen und entsprechenden Verfahren, die zum Beispiel die Ausführungsbeispiele einschließen, die auf den Codecs 3000, 4000 und 6000 basieren, wären dem Durchschnittsfachmann auf dem Gebiet des Sprachcodecdesigns offensichtlich, und zwar auf der Basis des beispielhaften VQ-Durchsuchungssystems und der Verfahren, die oben beschrieben worden sind.
  • Die grundlegenden Ideen hinter den modifizierten VQ-Codebuch-Durchsuchungsverfahren, die oben beschrieben sind, sind in gewisser Weise den Ideen in dem VQ-Codebuch-Durchsuchungsverfahren der CELP-Codecs ähnlich. Aber die Rückkopplungsfilterstrukturen des Eingangsvektorableiters 1308 (zum Beispiel des Eingangsvektorableiters 1308a, und so weiter) unterscheiden sich vollständig von der Struktur eines CELP-Codecs, und es ist den Fachleuten auf diesem Gebiet nicht ohne weiteres ersichtlich, dass ein solches VQ-Codebuch-Durchsuchungsverfahren dazu verwendet werden kann, die Leistung eines herkömmlichen NFC-Codecs oder eines zweistufigen NFC-Codecs zu verbessern.
  • Unsere Simulationsergebnisse zeigen, dass dieser Vektorquantisiererlösungsweg in der Tat funktioniert, eine bessere Codec-Leistung ergibt als ein skalarer Quantisierer bei der gleichen Bitrate und auch eine wünschenswerte spektrale Kurzzeit- und Langzeitrauschformung erzielt. Aber gemäß einem anderen neuartigen Merkmal, das unten beschrieben wird, kann dieses VQ-Codebuch-Durchsuchungsverfahren noch weiter verbessert werden, um eine beträchtlich geringere Komplexität zu erzielen, während die mathematische Äquivalenz aufrechterhalten wird.
  • B. Schnelle VQ-Durchsuchung
  • Ein rechnerisch effizienteres Codebuch-Durchsuchungsverfahren basiert auf der Beobachtung, dass die Rückkopplungsstruktur in 13C zum Beispiel als ein lineares System mit dem VQ-Codevektor aus dem skalierten VQ-Codebuch 5028a als seinem Eingangssignal und dem Quantisierungsfehler q(n) als seinem Ausgangssignal betrachtet werden kann. Der Ausgangsvektor eines solchen linearen Systems kann in zwei Komponenten zerlegt werden: einen NULLEINGABE-Antwortvektor qzi(n) und einen NULLZUSTANDS-Antwortvektor qzs(n). Der NULLEINGABE-Antwortvektor qzi(n) ist der Ausgangsvektor des linearen Systems, wenn sein Ein gangsvektor auf Null gesetzt ist. Der NULLZUSTANDS-Antwortvektor qzs(n) ist der Ausgangsvektor des linearen Systems, wenn seine internen Zustände (Filterspeicher) auf Null gesetzt sind (aber der Eingangsvektor nicht auf Null gesetzt ist).
  • 1. Ausführungsbeispiel auf hoher Ebene
  • a. System
  • 14A ist ein Blockdiagramm eines beispielhaften NFC-Systems 1400 für die effiziente Durchsuchung der N VQ-Codevektoren, die in dem VQ-Codebuch 1302 des skalierten VQ-Codebuch 5028a gespeichert sind, nach einem bevorzugten Codevektor der N VQ-Codevektoren, der für die Codierung eines Sprach- oder Audiosignals verwendet werden soll. Das System 1400 umfasst das skalierte VQ-Codebuch 5028a, eine NULLEINGABE-Antwortfilterstruktur 1402, eine NULLZUSTANDS-Antwortfilterstruktur 1404, einen Wiederhersteller 1414, der dem Wiederhersteller 1314 in 13A ähnlich ist, einen Fehlerenergieberechner 1410, der dem Fehlerenergieberechner 1310 in 13A ähnlich ist, und einen bevorzugten Codevektor-Selektor 1412, der dem Selektor 1312 für den bevorzugten Codevektor in 13A ähnlich ist.
  • b. Verfahren
  • 14B ist ein beispielhaftes, rechnerisch gesehen effizientes Verfahren 1430 zur Durchsuchung von N VQ-Codevektoren nach einem bevorzugten Codevektor der N VQ-Codevektoren, das das System 1400 verwendet. In einem ersten Schritt 1432 sagt der Prädiktor 1306 das Sprachsignal s(n) voraus, um ein Restsignal d(n) abzuleiten.
  • In einem nächsten Schritt 1434 leitet die NULLEINGABE-Antwortfilterstruktur 1402 den NULLEINGABE-Antwortfehlervektor qzi(n) ab, der jedem der N VQ-Codevektoren gemeinsam ist, die in dem VQ-Codebuch 1302 gespeichert sind.
  • In einem nächsten Schritt 1436 leitet die NULLZUSTANDS-Antwortfilterstruktur 1404 N NULLZUSTANDS-Antwortfehlervektoren qzs(n) ab, und zwar jeweils auf der Basis eines entsprechenden Codevektors der N VQ-Codevektoren, die in dem VQ-Codebuch 1302 gespeichert sind.
  • In einem nächsten Schritt 1438 leitet der Fehlerenergieberechner 1410 N VQ-Fehlerenergiewerte jeweils auf der Basis des NULLEINGABE-Antwortfehlervektors qzi(n) und eines entsprechenden Vektors der N NULLZUSTANDS-Antwortfehlervektoren qzs(n) ab. Der bevorzugte Codevektor-Selektor 1412 wählt den bevorzugten Codevektor der N VQ-Codevektoren auf der Basis der N VQ-Fehlerenergiewerte ab, die von dem Fehlerenergieberechner 1410 abgeleitet worden sind.
  • Der qzi(n) Vektor, der bei Schritt 1434 abgeleitet worden ist, erfasst die Effekte aufgrund von (1) anfänglichen Filterspeichern in der NULLEINGABE-Antwortfilterstruktur 1402 und (2) dem Signalvektor von d(n). Da die anfänglichen Filterspeicher und das Signal d(n) beide unabhängig von dem speziellen ausprobierten VQ-Codevektor sind, gibt es nur einen einzigen NULLEINGABE-Antwortvektor, und er muß nur einmal für jeden Eingangssprachvektor berechnet werden.
  • Während der Berechnung des NULLZUSTANDS-Anwortvektors qzs(n) bei Schritt 1436 werden die anfänglichen Filterspeicher und d(n) auf Null gesetzt. Für jeden VQ-Codevektor, der ausprobiert wird, gibt es einen entsprechenden NULLZUSTANDS-Antwortvektor qzs(n). Deshalb müssen wir für ein Codebuch von N Codevektoren N NULLZUSTANDS-Antwortvektoren qzs(n) für jeden Eingangssprachvektor in einem exemplarischen Ausführungsbeispiel berechnen. In einem berechnungsmäßig effizienteren Ausführungsbeispiel berechnen wir einen Satz von N NULLZUSTANDS-Antwortvektoren qzs(n) für eine Gruppe von Eingangssprachvektoren anstatt für jeden der Eingangssprachvektoren, wie dies unten noch beschrieben wird.
  • 2. Beispielhafte spezifische Ausführungsbeispiele
  • a. NULLEINGABE Antwort
  • 14C ist ein Blockdiagramm einer beispielhaften NULLEINGABE-Antwortfilterstruktur 1402a (ein spezifisches Ausführungsbeispiel der Filterstruktur 1402), die während der Berechnung der NULLEINGABE-Antwort von q(n) von 13C verwendet wird. Während der Berechnung des NULLEINGABE-Antwortvektors qzi(n) können gewisse Abzweigungen in 13C weggelassen werden, weil die Signale, die durch diese Abzweigungen wandern, Null sind. Die sich ergebende Struktur ist in 14C veranschaulicht. Die NULLEINGABE-Antwortfilterstruktur 1402a umfasst das Filter 5038, das mit einer inneren NF-Schleife der Filterstruktur assoziiert ist, und das Filter 5016, das mit einer äußeren NF-Schleife der Filterstruktur assoziiert ist.
  • Das Verfahren des Betriebs der Codec-Struktur 1402a kann so betrachtet werden, dass es ein einziges Verfahren umfasst. Alternativ dazu kann das Verfahren des Betriebs der Codec-Struktur 1402a so betrachtet werden, dass es ein erstes Verfahren umfasst, das mit der inneren NF-Schleife der Codec-Struktur 1402a assoziiert ist, und ein zweites Verfahren umfasst, das mit der äußeren NF-Schleife der Codec-Struktur assoziiert ist. Die ersten und zweiten Verfahren, die jeweils mit den inneren und äußeren NF-Schleifen der Codec-Struktur 1402a assoziiert sind, arbeiten gleichzeitig und zusammen miteinander, um das einzelne Verfahren zu bilden. Die oben erwähnten ersten und zweiten Verfahren (das heißt, jeweils die inneren und äußeren NF-Schleifenverfahren) werden nun der Reihe nach unten beschrieben.
  • 14D ist ein beispielhaftes erstes (inneres NF-Schleifen-)Verfahren 1450 der Ableitung einer NULLEINGABE-Antwort unter Verwendung der NULEINGABE-Antwortfilterstruktur 1402a von 14C. Das Verfahren 1450 umfasst die Operation der inneren NF-Schleife des Systems 1402a.
  • In einem ersten Schritt 1452 wird ein Zwischenvektor vzi(n) auf der Grundlage des Restsignals d(n) abgeleitet.
  • In einem nächsten Schritt 1454 wird der Zwischenvektor vzi(n) vorausgesagt (unter Verwendung zum Beispiel des Prädiktors 5034), um einen vorausgesagten Zwischenvektor vqzi(n) zu erzeugen. Der Zwischenvektor vzi(n) wird auf der Basis eines anfänglichen Prädiktorzustands (zum Beispiel des Prädiktors 5034) vorausgesagt, der einem vorhergehenden bevorzugten Codevektor entspricht. Wie es einem Durchschnittsfachmann auf dem Gebiet der Sprachcodierung offensichtlich sein würde, wird der anfängliche Filterzustand, der oben erwähnt ist, typischerweise als ein Ergebnis einer Historie vieler, das heißt, eines oder mehrerer vorhergehender bevorzugter Codevektoren errichtet.
  • In einem nächsten Schritt 1456 werden der Zwischenvektor vzi(n) und der vorausgesagte Zwischenvektor vqzi(n) mit einem Noise-Feedback-Vektor fqzi(n) kombiniert (unter Verwendung zum Beispiel der Kombinatoren 5026 und 5024), um den NULLEINGABE-Antwortfehlervektor qzi(n) zu erzeugen.
  • In einem nächsten Schritt 1458 wird der NULLEINGABE-Antwortfehlervektor qzi(n) gefiltert (zum Beispiel unter Verwendung des Filters 5038), um den Noise-Feedback-Vektor fqzi(n) zu erzeugen. Der Fehlervektor qzi(n) kann entweder einer Langzeitfilterung oder einer Kurzzeitfilterung unterzogen werden. Auch wird der Fehlervektor qzi(n) auf der Basis eines anfänglichen Filterzustands gefiltert (zum Beispiel des Filters 5038), der dem vorhergehenden bevorzugten Codevektor entspricht (siehe Voraussageschritt 1454 oben).
  • 14E ist ein beispielhaftes zweites (äußeres NF-Schleifen-)Verfahren 1470 der Ableitung einer NULLEINGABE-Antwort, das zeitgleich mit dem Verfahren 1450 durchgeführt wird, und zwar unter Verwendung der NULLEINGABE-Antwortfilterstruktur 1402a. Das Verfahren 1470 umfasst die Operation der äußeren NF-Schleife des Systems 1402a. Das Verfahren 1470 nutzt einige Verfahrensschritte mit dem Verfahren 1450 gemeinsam, das oben beschrieben worden ist.
  • In einem ersten Schritt 1472 wird das Restsignal d(n) mit einem Noise-Feedback-Signal fqszi(n) kombiniert (zum Beispiel unter Verwendung des Kombinators 5006), um einen Zwischenvektor vzi(n) zu erzeugen.
  • In einem nächsten Schritt 1474 wird der Zwischenvektor vzi(n) vorausgesagt, um einen vorausgesagten Zwischenvektor vqzi(n) zu erzeugen.
  • In einem nächsten Schritt 1476 wird der Zwischenvektor vzi(n) mit dem vorausgesagten Zwischenvektor vqzi(n) kombiniert (zum Beispiel unter Verwendung des Kombinators 5014), um einen Fehlervektor qszi(n) zu erzeugen.
  • In einem nächsten Schritt 1478 wird der Fehlervektor qszi(n) gefiltert (zum Beispiel unter Verwendung des Filters 5016), um den Noise-Feedback-Vektor fqszi(n) zu erzeugen. Der Fehlervektor qszi(n) kann entweder einer Langzeitfilterung oder einer Kurzzeitfilterung unterzogen werden. Auch wird der Fehlervektor qszi(n) auf der Grundlage eines anfänglichen Filterzustands (zum Beispiel des Filters 5038) gefiltert, der dem vorhergehenden bevorzugten Codevektor entspricht (siehe Voraussageschritt 1454 oben).
  • b. NULLZUSTANDS Antwort
  • (1) NULLZUSTANDS-Antwort – Erstes Ausführungsbeispiel
  • 15A ist ein Blockdiagramm einer beispielhaften NULLZUSTANDS-Antwortfilterstruktur 1404a (ein spezifisches Ausführungsbeispiel der Filterstruktur 1404), die während der Berechnung der NULLZUSTANDS-Antwort von q(n) in 13C verwendet wird.
  • Wenn wir die Vektordimension so auswählen, dass sie kleiner als die minimale Pitch-Periode minus eins ist, oder K < MINPP – 1, was in unserem bevorzugten Ausführungsbeispiel zutrifft, dann weisen die beiden Langzeitfilter 5038 und 5034 in 13A mit null Anfangsspeicher keine Auswirkung auf die Berechnung des NULLZUSTANDS-Antwortvektors auf. Deshalb können sie weggelassen werden. Die sich ergebende Struktur während der NULLZUSTANDS-Antwortberechnung ist in 15A veranschaulicht.
  • 15B ist ein Flussdiagramm eines beispielhaften Verfahrens 1520 der Ableitung einer NULLZUSTANDS-Antwort unter Verwendung der Filterstruktur 1404a, die in 15A veranschaulicht ist. In einem ersten Schritt 1522 wird ein Fehlervektor qszs(n), der mit jedem der N VQ-Codevektoren assoziiert ist, die in dem skalierten VQ-Codebuch 5028a gespeichert sind, gefiltert (unter Verwendung des Filters 5016, zum Beispiel), um einen NULLZUSTANDS-Eingangsvektor vzs(n) zu erzeugen, der jedem der N VQ-Codevektoren entspricht. Jeder der Fehlervektoren qszs(n) wird auf der Grundlage eines anfänglich auf Null gestellten Filterzustands (zum Beispiel des Filters 5016) gefiltert. Deshalb wird der Filterzustand auf Null gestellt (zum Beispiel unter Verwendung des Wiederherstellers 1414), um den anfänglich auf Null gestellten Filterzustand zu erzeugen, bevor jeder Fehlervektor qszs(n) gefiltert wird.
  • In einem nächsten Schritt 1524 wird jeder NULLZUSTANDS-Eingangsvektor vzs(n), der in einem Filterungsschritt 1522 erzeugt worden ist, separat mit dem entsprechenden Codevektor der N VQ-Codevektoren (zum Beispiel unter Verwendung des Kombinators 5036) kombiniert, um die N NULLZUSTANDS-Antwortfehlervektoren qzs(n) zu erzeugen.
  • (2) NULLZUSTANDS-Antwort – Zweites Ausführungsbeispiel
  • Es sei angemerkt, dass in 15A qszs(n) gleich qzs(n) ist. Folglich können wir einfach qszs(n) als die Ausgabe des linearen Systems während der Berechnung des NULLZUSTANDS-Antwortvektors verwenden. Dies erlaubt es uns, die 15A noch weiter in eine vereinfachte Struktur 1404b in 16A zu vereinfachen, was nichts weiter ist als lediglich die Skalierung des VQ-Codevektors mit der negativen Verstärkung –g(n) und dann das Weiterleiten des Ergebnisses durch eine Rückkopplungsfilterstruktur mit einer Transferfunktion von H(z) = 1/[1 – Fs(z)]. Deshalb ist 16A ein Blockdiagramm einer Filterstruktur 1404b gemäß einem vereinfachten Ausführungsbeispiel der NULLZUSTANDS-Antwortfilterstruktur 1404. Die Filterstruktur 1404b ist äquivalent zu der Filterstruktur 1404a von 15A.
  • Wenn wir mit einem skalierten Codebuch (verwende g(n) zur Skalierung des Codebuchs) beginnen, wie dies in der Beschreibung von Block 30 in einem früheren Abschnitt erwähnt ist, und jeden skalierten Codevektor durch das Filter H(z) mit null Anfangsspeicher weiterleiten, dann gibt uns das Subtrahieren des entsprechenden Ausgangsvektors von dem NULLEINGABE-Antwortvektor von qzi(n) den Quantisierungsfehlervektor von q(n) für diesen bestimmten VQ-Codevektor.
  • 16B ist ein Flussdiagramm eines beispielhaften Verfahrens 1620 der Ableitung einer NULLZUSTANDS-Antwort unter Verwendung der Filterstruktur 1404b von 16A. In einem ersten Schritt 1622 wird jeder der N VQ-Codevektoren mit einem entsprechenden Vektor der N gefilterten NULLZUSTANDS-Antwortfehlervektoren vzs(n) kombiniert, um die N NULLZUSTANDS-Antwortfehlervektoren qzs(n) zu erzeugen.
  • Bei einem nächsten Schritt 1624 wird jeder der N NULLZUSTANDS-Antwortfehlervektoren qzs(n) separat gefiltert, um die N gefilterten NULLZUSTANDS-Antwortfehlervektoren vzs(n) zu erzeugen. Jeder der Fehlervektoren qzs(n) wird auf der Grundlage eines anfänglich auf Null gestellten Filterzustands gefiltert. Deshalb wird der Filterzustand auf Null gesetzt, um den anfänglich auf Null gestellten Filterzustand zu erzeugen, bevor jeder Fehlervektor qzs(n) gefiltert wird. Die nachfolgenden durchnummerierten Schritte stellen ein Beispiel der Verarbeitung eines VQ-Codevektors CV(n), der vier Abtastwerte CV(n)0...3 umfasst, Abtastwert um Abtastwert gemäß den Schritten 1622 und 1624 dar, wobei die Filterstruktur 1404b verwendet wird, um einen entsprechenden NULLZUSTANDS-Fehlervektor qsz(n) zu erzeugen, der vier Abtastwerte qzs(n)0...3 umfasst:
    • 1. Der Kombinator 5030 kombiniert den ersten Codevektor-Abtastwert CV(n)0 des Codevektors CV(n) mit einem anfänglichen Nullzustands-Rückkopplungs-Abtastwert vzw(n)i von dem Filter 5034, um einen ersten Fehlerabtastwert qzs(n)0 des Fehlervektors qzs(n) zu erzeugen (der dem ersten Codevektor-Abtastwert CV(n)0 entspricht) (Teil des Schrittes 1622);
    • 2. das Filter 5034 filtert den ersten Fehlerabtastwert qsz(n)0, um einen ersten Rückkopplungsabtastwert vsz(n)0 eines Rückkopplungsvektors vzs(n) zu erzeugen (Teil des Schrittes 1624),
    • 3. der Kombinator 5030 kombiniert den Rückkopplungsabtastwert vzs(n)0 mit einem zweiten Codevektor-Abtastwert CV(n)1, um einen zweiten Fehlerabtastwert qzs(n)1 zu erzeugen (Teil des Schrittes 1622);
    • 4. das Filter 5034 filtert den zweiten Fehlerabtastwert qzs(n)1, um einen zweiten Rückkopplungsabtastwert vzs(n)1 des Rückkopplungsvektors vzs(n) zu erzeugen (Teil des Schrittes 1624);
    • 5. der Kombinator 5030 kombiniert den Rückkopplungsabtastwert vzs(n)1 mit einem dritten Codevektor-Abtastwert CV(n)2, um einen dritten Fehlerabtastwert qzs(n)2 zu erzeugen (Teil des Schrittes 1622);
    • 6. das Filter 5034 filtert den dritten Felherabtastwert qzs(n)2, um einen dritten Rückkopplungsabtastwert vzs(n)2 zu erzeugen (Teil des Schrittes 1624); und
    • 7. der Kombinator 5030 kombiniert den Rückkopplungsabtastwert vzs(n)2 mit dem vierten (und letzten) Codevektor-Abtastwert CV(n)3, um einen vierten Fehlerabtastwert qzs(n)3 zu erzeugen, wodurch die vier Abtastwerte des Vektors qzs(n) auf der Grundlage der vier Abtastwerte des VQ-Codevektors CV(n) erzeugt werden (Teil des Schrittes 1622). Die Schritte 1–7, die oben beschrieben sind, werden für jeden der N VQ-Codevektoren in Übereinstimmung mit dem Verfahren 1620 wiederholt, um die N Fehlervektoren qzs(n) zu erzeugen.
  • Dieser zweite Lösungsweg (der den 16A und 16B entspricht) ist rechnerisch gesehen viel effizienter als der erste (und direktere) Lösungsweg (der den 15A und 15B entspricht). Für den ersten Lösungsweg unternimmt das Kurzzeit-Noise-Feedback-Filter KM Multiplikations-Additions-Operationen für jeden VQ-Codevektor. Für den zweiten Lösungsweg werden nur K(K – 1)/2 Multiplikations-Additions-Operationen benötigt, wenn K < M. In unserem bevorzugten Ausführungsbeispiel ist M = 8 und K = 4, so dass der erste Lösungsweg 32 Multiplikations-Additions-Operationen pro Codevektor für das Kurzzeitfilter unternimmt, wohingegen der zweite Lösungsweg nur 6 Multiplikations-Additions-Operationen pro Codevektor unternimmt. Selbst dann, wenn alle anderen Berechnungen eingeschlossen sind, ergibt der zweite Codebuchdurchsuchungs-Lösungsweg immer noch eine ziemlich beträchtliche Reduzierung der Codebuchdurchsuchungs-Komplexität. Es sei angemerkt, dass der zweite Lösungsweg mathematisch gesehen äquivalent zu dem ersten Lösungsweg ist, so dass beide Lösungswege ein identisches Codebuchdurchsuchungs-Ergebnis ergeben.
  • Wiederum sind die Ideen hinter diesem zweiten Codebuchdurchsuchungs-Lösungsweg in gewisser Weise den Ideen in der Codebuchdurchsuchung der CELP-Codecs ähnlich. Aber die tatsächlichen Berechnungsvorgänge und die Codec-Struktur, die verwendet werden, sind ziemlich unterschiedlich, und es ist den Fachleuten auf diesem Gebiet nicht ohne weiteres ersichtlich, wie die Ideen in dem Rahmen einer zweistufigen Noise-Feedback-Codierung korrekt verwendet werden können.
  • Die Verwendung eines VQ-Codebuchs mit strukturierter Vorzeichenform kann die Codebuch-Durchsuchungs-Komplexität weiter verringern. Anstatt ein B-Bit-Codebuch mit 2B unabhängigen Codevektoren zu werden, können wir ein Codebuch in der Form eines Vorzeichenbit plus einem (B – 1)-Bit mit 2B-2 unabhängigen Codevektoren verwenden. Für jeden Codevektor in dem (B – 1)-Bit-Form-Codebuch ist die negierte Version davon oder ihr Spiegelbild im Hinblick auf das Original ebenfalls ein legitimer Codevektor in dem äquivalenten strukturierten B-Bit-Vorzeichenform-Codebuch. Verglichen mit dem B-Bit-Codebuch mit 2B unabhängigen Codevektoren ist die Gesamtbitrate die Gleiche, und die Codec-Leistung sollte ähnlich sein. Aber mit der Hälfte der Anzahl an Codevektoren halbiert diese Anordnung die Anzahl an Filterungsoperationen durch das Filter H(z) = 1/[1 – Fs(z)], da wir einen berechneten NULLZUSTANDS-Antwortvektor, der einem Form-Codevektor entspricht, einfach negieren können, um den NULLZUSTANDS-Antwortvektor zu erhalten, der dem Spiegelbild dieses Form-Codevektors entspricht. Dadurch wird eine weitere Komplexitätsreduzierung erreicht.
  • In dem bevorzugten Ausführungsbeispiel des 16 kb/s Schmalband-Codecs verwenden wird 1 Vorzeichenbit mit einem 4-Bit-Form-Codebuch. Mit einer Vektordimension von 4 ergibt dies eine Restcodierungsbitrate von (1 + 4)/4 = 1,25 Bit/Abtastwert oder 50 Bit/Rahmen (1 Rahmen = 40 Abtastwerte = 5 ms). Die Seiteninformations-Codierungsraten sind 14 Bit/Rahmen für LSPI, 7 Bit/Rahmen für PPI, 5 Bit/Rahmen für PPTI und 4 Bit/Rahmen für GI. Dies ergibt einen Gesamtwert von 30 Bit/Rahmen für alle Seiteninformationen. Somit liegt die Codierungsrate für den gesamten Codec bei 80 Bit/Rahmen oder 16 kb/s. Ein solcher 16 kb/s Codec mit einer Rahmengröße von 5 ms und ohne Vorgriff ergibt eine Ausgangssprachqualität, die vergleichbar ist mit der von G.728 und G.729E.
  • Für den 32 kb/s Breitband-Codec verwenden wir 1 Vorzeichenbit mit einem 5-bit-Form-Codebuch, wiederum mit einer Vektordimension von 4. Dies ergibt eine Restcodierungsrate von (1 + 5)/4 = 1,5 Bit/Abtastwert = 120 Bit/Rahmen (1 Rahmen = 80 Abtastwerte = 5 ms). Die Seiteninformations-Bitraten liegen bei 17 Bit/Rahmen für LSPI, 8 Bit/Rahmen für PPI, 5 Bit/Rahmen für PPTI und 10 Bit/Rahmen für GI, was einen Gesamtwert von 40 Bit/Rahmen für alle Seiteninformationen ergibt. Somit liegt die Gesamtbitrate bei 160 Bit/Rahmen oder 32 kb/s. Ein solcher 32 kb/s Codec mit einer Rahmengröße von 5 ms und ohne Vorgriff ergibt eine im Wesentlichen transparente Qualität für Sprachsignale.
  • 3) Weitere Reduzierung der Berechnungskomplexität
  • Das Sprachsignal, das in den oben beschriebenen Vektorquantisierungsausführungsbeispielen verwendet wird, kann eine Sequenz von Sprachvektoren umfassen, die jeweils eine Vielzahl von Sprachabtastwerten umfassen. Wie oben zum Beispiel in Verbindung mit 7 ausführlich beschrieben worden ist, führen die verschiedenen Filter und Prädiktoren in dem Codec jeweils eine Filterung und Prädiktion von verschiedenen Signalen durch, um ein Sprachsignal s(n) auf der Basis von Filter- und Prädiktor-(oder Prädiktions-)Parametern zu codieren (die in dem Fachgebiet auch jeweils als Filter- und Prädiktor-Taps bezeichnet werden). Der Codec um fasst eine Logik zur periodischen Ableitung, das heißt, Aktualisierung der Filter- und Prädiktorparameter und auch der Verstärkung g(n), die dazu verwendet wird, die VQ-Codebucheinträge auf der Basis des Sprachsignals einmal pro jedem M Sprachvektor zu skalieren, wobei M größer als Eins ist. Codec-Ausführungsbeispiele für die periodische Ableitung von Filter-, Prädiktions- und Verstärkungsskalierungsparametern wurden oben in Verbindung mit 7 beschrieben.
  • Der Codec nutzt den Vorteil einer solchen periodischen Aktualisierung der oben genannten Parameter aus, um die Berechnungskomplexität weiter zu reduzieren, die mit der Berechnung der N NULLZUSTANDS-Antwortfehlervektoren qzs(n) assoziiert ist, was oben beschrieben worden ist. Unter erneuter Bezugnahme auf die 16A hängen die N NULLZUSTANDS-Antwortfehlervektoren qzs(n), die unter Verwendung der Filterstruktur 1404b abgeleitet worden sind, nur von den N VQ-Codevektoren, dem Verstärkungswert g(n) und den Filterparametern (Taps) ab, die an das Filter 5034 angelegt werden. Da der Verstärkungswert g(n) und die Filtertags, die an das Filter 5034 angelegt werden, über M Sprachvektoren, das heißt, zwischen Updates konstant sind, und da die N VQ-Codevektoren ebenfalls konstant sind, sind die N NULLZUSTANDS-Antwortfehlervektoren qzs(n), die den N VQ-Codevektoren entsprechen, über die M Sprachvektoren in entsprechender Weise konstant. Deshalb müssen die N NULLZUSTANDS-Antwortfehlervektoren qzs(n) nur abgeleitet werden, wenn die Verstärkung g(n) und/oder die Filterparameter für das Filter 5034 einmal pro jedem der M Sprachvektoren aktualisiert werden, wodurch die gesamte Berechnungskomplexität, die mit der Durchsuchung des VQ-Codebuchs nach einem bevorzugten Codevektor der VQ-Codevektoren assoziiert ist, reduziert wird.
  • 17 ist ein Flussdiagramm eines beispielhaften Verfahrens 1700 für die weitere Reduzierung der Berechnungskomplexität, die mit der Durchsuchung des VQ-Codebuchs nach einem bevorzugten Codevektor der VQ-Codevektoren assoziiert ist, in Übereinstimmung mit der obigen Beschreibung. In einem ersten Schritt 1702 wird ein Sprachsignal empfangen. Das Sprachsignal umfasst eine Sequenz von Sprachvektoren, wobei jeder der Sprachvektoren eine Vielzahl von Sprachabtastwerten umfasst.
  • Bei einem nächsten Schritt 1704 wird ein Verstärkungswert auf der Grundlage des Sprachsignals einmal pro jedem Sprachvektor der M Sprachvektoren abgeleitet, wobei M eine ganze Zahl größer als 1 ist.
  • Bei einem nächsten Schritt 1706 werden die Filterparameter auf der Grundlage des Sprachsignals einmal pro Sprachvektor der T Sprachvektoren abgeleitet/aktualisiert, wobei T eine ganze Zahl größer als 1 ist, und wobei T gleich M sein kann, aber nicht notwendigerweise sein muß.
  • Bei einem nächsten Schritt 1708 werden die N NULLZUSTANDS-Antwortfehlervektoren qzs(n) einmal pro jedem der T und/oder M Sprachvektoren abgeleitet (d. h., wenn jeweils die Filterparameter und/oder die Verstärkungswerte aktualisiert werden), wobei ein gleicher Satz von N NULLZUSTANDS-Antwortfehlervektoren qzs(n) bei der Auswahl einer Vielzahl von bevorzugten Codevektoren verwendet wird, die einer Vielzahl von Sprachvektoren entsprechen.
  • Alternative Ausführungsbeispiele von VQ-Durchsuchungssystemen und entsprechenden Verfahren, einschließlich der Ausführungsbeispiele, die zum Beispiel auf den Codecs 3000, 4000 und 6000 beruhen, würden einem Durchschnittsfachmann auf dem Gebiet des Entwurfs von Sprach-Codecs auf der Grundlage des beispielhaften VQ-Durchsuchungssystems und der Verfahren, die oben beschrieben worden sind, ersichtlich sein.
  • C. Weitere schnelle VQ-Durchsuchungs Ausführungsbeispiele
  • Erste und zweite zusätzliche effiziente VQ-Durchsuchungsverfahren werden bereitgestellt, die einzeln oder zusammen verwendet werden können. Das erste Verfahren (das unten im Abschnitt IX.C.1. beschrieben wird) stellt ein effizientes VQ-Durchsuchungsverfahren für ein allgemeines VQ-Codebuch bereit, das heißt, es wird keine spezielle Struktur des VQ-Codebuchs angenommen. Das zweite Verfahren (das unten im Abschnitt IX.C.2. beschrieben wird) stellt ein effizientes Verfahren für die Anregungsquantisierung in dem Fall bereit, in dem ein VQ-Codebuch mit Vorzeichen für die Anregung verwendet wird.
  • Das erste Verfahren reduziert die Komplexität der Anregungs-VQ in einem NFC, indem es die Berechnung der Energie des Fehlervektors für jeden Kandidaten- Anregungsvektor neu organisiert, der auch als ein Codebuch-Vektor bezeichnet wird. Die Energie des Fehlervektors ist die Kosten-Nutzen-Funktion, die während der Durchsuchung des Anregungs-Codebuchs minimiert wird. Die Reorganisation wird folgendermaßen erhalten:
    • 1. Entwickeln des Terms des mittleren quadratischen Fehlers (MSE; mean squared error) des Fehlervektors.
    • 2. Ausschließen des Energieterms, der für den Kandidatenanregungsvektor invariant ist; und
    • 3. Vorberechnen der Energieterme der NULLZUSTANDS-Antwort der Kandidatenanregungsvektoren, die für die Subvektoren des Subrahmens invariant sind.
  • Das zweite Verfahren stellt einen effizienten Weg der Durchsuchung des Anregungs-Codebuchs in dem Fall dar, in dem ein Codebuch mit Vorzeichen verwendet wird. Das zweite Verfahren wird erhalten, indem die Berechnung der Energie des Fehlervektors auf eine solche Art und Weise neu organisiert wird, dass nur die Hälfte der gesamten Anzahl an Codevektoren durchsucht wird.
  • Die Kombination aus dem ersten und dem zweiten Verfahren stellt auch eine effiziente Durchsuchung bereit. Aber es kann viele Umstände geben, in denen die ersten und zweiten Verfahren getrennt verwendet werden. Wenn zum Beispiel kein vorzeichenbehaftetes Codebuch verwendet wird, dann trifft das zweite Verfahren nicht zu, aber das erste Verfahren kann anwendbar sein.
  • Aus Gründen der mathematischen Bequemlichkeit unterscheidet sich die Nomenklatur, die in den Abschnitten IX.C.1. und 2. unten verwendet wird, die sich auf bestimmte Größen bezieht, von der Nomenklatur, die in dem Abschnitt IX.B. oben verwendet worden ist, die sich auf die gleichen oder ähnliche Größen bezieht. Der nachfolgende Schlüssel dient als eine Führung zur Zuordnung der Nomenklatur, die im Abschnitt IX.B. oben verwendet worden ist, zu der, die in den nachfolgenden Abschnitten verwendet wird.
  • Im Abschnitt IX.B. oben bezieht sich die Quantisierungsenergie e(n) auf eine Quantisierungsenergie, die von einem Fehlervektor q(n) abgeleitet werden kann, wobei n ein Zeit-/Abtastwertpositionsdeskriptor ist. Die Quantisierungsenergie e(n) und der Fehlervektor q(n) sind beide mit einem VQ-Codevektor in einem VQ-Codebuch assoziiert.
  • In ähnlicher Weise bezieht sich die Quantisierungsenergie En in den Abschnitten IX.C.1. und 2. unten auf eine Quantisierungsenergie, die von einem Fehlervektor qn(k) abgeleitet werden kann, wobei sich k auf den k-ten Abtastwert des Fehlervektors bezieht und wobei k = 1 ... K (das heißt, K ist die gesamte Anzahl an Abtastwerten in dem Fehlervektor). K wird auch als die Fehlervektordimension bezeichnet. Die Quantisierungsenergie En und der Fehlervektor qn(k) sind jeweils mit einem n-ten VQ-Codevektor von N VQ-Codevektoren assoziiert (wobei n = 1 ... N).
  • Im Abschnitt IX.B. oben wird der NULLEINGABE-Antwortfehlervektor als qzi(n) bezeichnet, wobei n der Zeitindex ist. In den Abschnitten IX.C.1. und 2. unten wird der NULLEINGABE-Antwortfehlervektor als qzi(k) bezeichnet, wobei sich k auf den k-ten. Abtastwert des NULLEINGABE-Antwortfehlervektors bezieht.
  • Im Abschnitt IX.B. oben wird der NULLZUSTANDS-Antwortfehlervektor als qzs(n) bezeichnet, wobei n der Zeitindex ist. In den Abschnitten IX.C.1 und 2. unten wird der NULLZUSTANDS-Antwortfehlervektor als qzs,n(k) bezeichnet, wobei n den n-ten VQ-Codevektor der N VQ-Codevektoren bezeichnet und sich k auf den k-ten Abtastwert des NULLZUSTANDS-Antwortfehlervektors bezieht.
  • Der Abschnitt IX.B. oben bezieht sich auch auf "Rahmen", zum Beispiel 5 ms Rahmen, von denen jeder einer Vielzahl von Sprachvektoren entspricht. Und ebenso werden mehrere Bits an Seiteninformationen und VQ-Codevektorindizes von dem Codierer in jedem der Rahmen übertragen. In den unten aufgeführten Abschnitten wird der Begriff "Subrahmen" als ein Synonym für "Rahmen” verwendet, wie dies in den obigen Abschnitten verwendet worden ist. Demzufolge bezieht sich der Begriff "Subvektoren” auf Vektoren in einem Subrahmen.
  • 1. Schnelle VQ-Durchsuchung eines allgemeinen Anregungs-Codebuchs (ohne Vorzeichen) in einem NFC-System
  • a. Direktes Verfahren
  • Die Energie En des Fehlervektors qn(k) des n-ten Codevektors ist gegeben durch
    Figure 00730001
    und der optimale Codevektor nopt wird von dem Codevektor n angegeben, der En minimiert, d. h.,
    Figure 00730002
    wobei N die Anzahl an Codevektoren ist.
  • Wie oben im Abschnitt IX.B. diskutiert worden ist, kann der Fehlervektor qn(k) des n-ten Codevektors als die Superposition der NULLEINGABE-Antwort qzi(k) und der NULLZUSTANDS-Antwort qzs,n(k) des n-ten Codevektors berechnet werden, d. h. qn(k) = qzi(k) + qzs,n(k). (3)
  • Wenn man diesen Ausdruck verwendet, wird die Energie des Fehlervektors En ausgedrückt als
    Figure 00730003
  • Für ein NFC-System, bei dem die Dimension der Anregungs-VQ K kleiner als die Master-Vektorgröße KM ist (wobei KM als eine Rahmengröße oder Rahmendimension gedacht werden kann), wird es mehrere Anregungsvektoren geben, um eine Quantisierung pro Master-Vektor (oder Rahmen) durchzuführen. Die Master-Vektorgröße KM ist typischerweise die maximale Anzahl an Abtastwerten, für die andere Parameter des NFC-Systems konstant bleiben. Wenn die Beziehung zwischen der Dimension der VQ K und der Master-Vektorgröße KM definiert ist als
    Figure 00730004
    würden L VQs pro Master-Vektor durchgeführt werden. Gemäß der Analyse und den Annahmen, die im Abschnitt IX.B.2.b.3 oben diskutiert worden sind, sind die NULLZUSTANDS-Antworten der Codevektoren für die L VQs unverändert und müssen nur einmal berechnet werden (in dem Fall, in dem die Verstärkungs- und/oder Filterparameter einmal pro jeder der L VQs aktualisiert werden). Die Berechnung aller Fehlervektorenergien für alle Codevektoren für alle VQs in einem Master-Vektor wird dann C1 = L·N·K·2 (6)
  • Gleitpunktoperationen benötigen, wobei die Berechnung der NULLEINGABE- und NULLZUSTANDS-Antworten nicht berücksichtigt wird. Für die beispielhaften Schmalband- und Breitband-NFC-Systeme, die oben im Abschnitt IX.B. beschrieben worden sind, sind die Parameter der Gleichung 6 jeweils L = 10, N = 32, K = 4 bzw. L = 10, N = 64, K = 4. Konsequenterweise wäre gemäß der Gleichung 6 die Anzahl an Gleitpunktoperationen, die benötigt würden, jeweils C1,nb = 2560 und C1,wb = 5120. Die beispielhaften Anzahlen werden in Tabelle 1 unten im Vergleich zu den äquivalenten Anzahlen zusammengefasst.
  • b. Schnelle VQ-Durchsuchung eines allgemeinen Anregungs-Codebuchs unter Verwendung von Korrelationstechniken
  • In dem vorliegenden ersten Verfahren wird die Energie des Fehlervektors eines gegebenen Codevektors erweitert zu
    Figure 00740001
    wobei
    Figure 00750001
  • In der Gleichung 7 wird die Energie des Fehlervektors in die Energie der NULLEINGABE-Antwort, Gleichung 8, in die Energie der NULLZUSTANDS-Antwort, Gleichung 9, und zweimal die Kreuzkorrelation zwischen der NULLEINGABE-Antwort und der NULLZUSTANDS-Antwort, Gleichung 10, entwickelt.
  • Die Minimierung der Energie des Fehlervektors als eine Funktion des Codevektors ist unabhängig von der Energie der NULLEINGABE-Antwort, da die NULLEINGABE-Antwort unabhängig von dem Codevektor ist. Folglich kann die Energie der NULLEINGABE-Antwort weggelassen werden, wenn das Anregungs-Codebuch durchsucht wird. Des Weiteren brauchen die N Energien nur einmal berechnet zu werden, da die N Energien der NULLZUSTANDS-Antworten der Codevektoren für die L VQs unverändert sind.
  • Folglich kann die VQ-Operation ausgedrückt werden als:
    Figure 00750002
  • In der Gleichung 11 würde nur der Kreuzkorrelationsterm im Inneren der Durchsuchungsschleife berechnet. Die N Nullantwort-Energien
    Figure 00750003
    wür den vor den L VQs vorberechnet, wie dies oben erklärt ist. Die Verwendung der Gleichung 9 bis Gleichung 11, um die L VQs durchzuführen, würde C2 = N·K + L·N·(K + 1) (12)Gleitpunktoperationen für die Berechnungen benötigen, die erforderlich sind, um die Codevektoren für alle L VQs in einem Master-Vektor auszuwählen, wobei die Berechnung der NULLEINGANGS- und NULLZUSTANDS-Antworten ignoriert würde. Für die beispielhaften Schmalband- und Breitband-NFC-Systeme, die oben erwähnt sind, würde dies jeweils zu C2,nb = 1728 und C2,wb = 3456 Gleitpunktoperationen führen. Die beispielhaften Zahlen sind in der Tabelle 1 zusammengefasst.
  • Für Schmalband- und Breitband-NFC-Systeme wird mit dem Verfahren allgemein eine beträchtliche Reduzierung der Anzahl an Gleitpunktoperationen erhalten. Aber es sei angemerkt, dass die tatsächliche Reduzierung von den Parameter des NFC-Systems abhängt. Insbesondere ist es offensichtlich, dass dann, wenn die VQ-Dimension gleich der Dimension des Master-Vektors ist, d. h., K = KM ⇔ L = 1, es nur eine VQ pro Master-Vektor gibt, und tatsächlich ist die Wiederverwendung der Energien der NULLZUSTANDS-Antworten kein Problem.
  • 2. Schnelle VQ-Durchsuchung eines vorzeichenbehafteten Anregungs-Codebuchs in einem NFC-System
  • Ein zweites Verfahren zeigt einen Weg auf zur Reduzierung der Komplexität in dem Fall, in dem ein Codebuch mit Vorzeichen für die Anregungs-VQ verwendet wird. In einem vorzeichenbehafteten Codebuch stehen die Codevektoren paarweise in Beziehung zueinander, wobei sich die beiden Codevektoren in einem Paar nur durch das Vorzeichen der Vektorelemente unterscheiden, d. h., jeweils ein erster und ein zweiter Codevektor in einem Paar c1 und c2 stehen miteinander in Beziehung durch c1(k) = –c2(k), für k = 1, 2, ..., K, (13)wobei K die Dimension der Vektoren ist. Folglich existieren für ein Codebuch von N Codevektoren N/2 lineare unabhängige Codevektoren. Die restlichen N/2 Codevektoren werden durch die Negierung der N/2 linearen unabhängigen Codevektoren wie in Gleichung 13 angegeben. Typischerweise wird das Vorzeichen dann, wenn B Bits verwendet werden, um die N Codevektoren darzustellen, d. h., B = log2(N), durch 1 Bit repräsentiert und die linearen unabhängigen Codevektoren durch B – 1 Bit.
  • Es ist lediglich notwendig, die N/2 linearen unabhängigen Codevektoren zu speichern, da die restlichen N/2 Codevektoren problemlos durch eine einfache Negation erzeugt werden können. Des Weiteren werden die NULLZUSTANDS-Antworten der restlichen N/2 Codevektoren durch eine einfache Negation der NULLZUSTANDS-Antworten der N/2 linearen unabhängigen Codevektoren gegeben. Folglich wird die Komplexität der Erzeugung der N NULLZUSTANDS-Antworten durch die Verwendung eines vorzeichenbehaftetes Codebuchs reduziert.
  • Das vorliegende zweite Verfahren reduziert die Komplexität der Durchsuchung eines Codebuchs mit Vorzeichen noch weiter, indem sie die Minimierungsoperation manipuliert.
  • a. Direktes Verfahren
  • Durch die Berechnung der Energie der Fehlervektoren gemäß dem direkten Verfahren, siehe Gleichung 2 und Gleichung 4, ist die Durchsuchung angegeben durch
    Figure 00770001
    wobei s das Vorzeichen ist und n∊{1, ..., N/2} die N/2 linearen unabhängigen Codevektoren darstellt. In der Praxis werden beide Vorzeichen für jeden der N/2 linearen unabhängigen Codevektoren überprüft, ohne dass die Multiplikation mit dem Vorzeichen angewendet wird, was die Komplexität unnötig steigern würde. Die Anzahl an Gleitpunktoperationen, die benötigt werden, um die Energie des Fehlervektors für alle der kombinierten N Codevektoren für alle der L VQs zu berechnen, würde bleiben, wie dies von Gleichung 6 spezifiziert ist. C1 = L·N·K·2 (15)
  • Es sei angemerkt, dass diese Figur die Berechnungen der NULLEINGABE- und NULLZUSTANDS-Antworten ausschließt. Nichtsdestotrotz bleibt die Komplexität der restlichen Operationen unverändert, wenn die NULLEINGABE- und NULLZUSTANDS-Antworten einmal berechnet sind. Die Anzahl an Gleitpunktoperationen für das Schmalband- und Breitbandbeispiel ist jeweils wie oben angegeben C1,nb = 2560 und C1,wb = 5120.
  • b. Schnelle VQ-Durchsuchung eines vorzeichenbehafteten Anregungscodebuchs unter Verwendung einer Korrelationstechnik
  • Ähnlich wie bei dem ersten Verfahren wird der Term der Energie des Fehlervektors entwickelt, mit Ausnahme der weiteren Integration der Eigenschaft eines Codebuchs mit Vorzeichen.
    Figure 00780001
    wobei s das Vorzeichen ist und n∊{1, ..., N/2} die N/2 linearen unabhängigen Codevektoren darstellt. In der Gleichung 16 wird die Energie des Fehlervektors für ein Paar von Codevektoren in dem vorzeichenbehafteten Codebuch untersucht. Gemäß der Gleichung 16 kann die Energie des Codevektors in die Energie der NULLEINGABE-Antwort, Gleichung 8, die Energie der NULLZUSTANDS-Antwort, Gleichung 9, und zweimal die Kreuzkorrelation zwischen der NULLEINGABE-Antwort und der NULLZUSTANDS-Antwort, Gleichung 10, entwickelt werden. Das Vorzeichen des Kreuzkorrelationsterms hängt von dem Vorzeichen des Codevektors ab. Die Minimierung der Energie des Fehlervektors als eine Funktion des Codevektors ist unabhängig von der Energie der NULLEINGABE-Antwort, da die NULLEINGABE-Antwort unabhängig von dem Codevektor ist. Folglich kann die Energie der NULLEINGABE-Antwort weggelassen werden, wenn das Anregungs-Codebuch durchsucht wird, und die Durchsuchung ist angegeben durch
    Figure 00790001
  • Aus der Gleichung 17 ist es offensichtlich, dass dann, wenn ein Paar von Codevektoren, d. h., s = ±1, gemeinsam betrachtet werden, die beiden Minimierungsterme En,s=+1 und En,s=–1 jeweils angegeben werden durch
    Figure 00790002
  • Offensichtlich wird der Codevektor mit dem positiven Vorzeichen dann, wenn der Kreuzkorrelationsterm R(qzi, qzs,n) kleiner als Null ist, einen kleineren Minimierungsterm bereitstellen und nur En,s=+1 muß berechnet und überprüft werden. Anderenfalls, wenn der Kreuzkorrelationsterm R(qzi, qzs,n) größer als Null ist, wird der Codevektor mit dem negativen Vorzeichen einen kleineren Minimierungsterm bereitstellen, und nur En,s=–1 muß berechnet und überprüft werden. Wenn der Kreuzkorrelationsterm Null ist, kann einer der beiden überprüft werden, da die beiden Vorzeichen identische Minimierungsterme bereitstellen werden. Folglich kann die Durchsuchung spezifiziert werden als
    Figure 00790003
    wobei das Zeichen 'kleiner als' austauschbar ist mit dem Zeichen 'kleiner als oder gleich'. Die Anzahl an Gleitpunktoperationen, die benötigt wird, um die Energie des Fehlervektors für alle der kombinierten N Codevektoren für alle der L VQs gemäß der Durchsuchung zu berechnen, die von Gleichung 20 spezifiziert wird, ist C3 = L·N/2·(2·K + 1) = L·N·(K + 1/2) (21)
  • Wiederum kann die Berechnung der NULLEINGABE- und NULLZUSTANDS-Antworten urberücksichtigt bleiben. Die Anzahl an Gleitpunktoperationen für die beispielhaften Schmalband- und Breitband-NFC-Systeme ist jeweils C3,nb = 1440 und C3,wb = 2880. Die beispielhaften Zahlen sind in Tabelle 1 zusammengefasst.
  • Dieses Verfahren würde auch auf ein vorzeichenbehaftetes Subcodebuch in einem Codebuch passen, d. h. eine Untergruppe der Codevektoren des Codebuch bildet ein vorzeichenbehaftetes Codebuch. Es ist dann möglich, das Verfahren auf das vorzeichenbehaftete Subcodebuch anzuwenden.
  • 3. Kombination von effizienten Durchsuchungsverfahren
  • Wenn die Anzahl an VQs pro Master-Vektor, L, größer als 1 ist und ein mit Vorzeichen versehendes Codebuch (oder Subcodebuch) verwendet wird, ist es vorteilhaft, die oben erwähnten beiden Verfahren zu kombinieren. In diesem Fall bleiben die Energien der Nullantworten
    Figure 00800001
    in Gleichung 20 für die L VQs unverändert und werden gemäß dem ersten Verfahren vorberechnet. Die Anzahl an Gleitpunktoperationen, die benötigt wird, um die Energie des Fehlervektors für alle der kombinierten N Codevektoren für alle der L VQs zu berechnen, ist C4 = N/2·K + L·N/2·(K + 1) = 1/2·(N·K + L·N·(K + 1)) (22)
  • Für die beispielhaften Schmalband- und Breitband-NFC-Systeme ist die Anzahl an Gleitpunktoperationen jeweils C4,nb = 864 und C4,wb = 1728. Die beispielhaften Zahlen sind in Tabelle 1 zusammengefasst.
  • 4. Verfahrensflussdiagramme
  • Die Verfahren, die in den Abschnitten IX.C.1. und 2. beschrieben sind, werden in einem NFC-System verwendet, um ein Prädiktionsrestsignal zu quantisieren. Allgemeiner gesagt werden die Verfahren in einem NFC-System dazu verwendet, ein Restsignal zu quantisieren. Das heißt, das Restsignal ist nicht auf ein Prädiktionsrestsignal begrenzt, und somit kann das Restsignal ein anderes Signal als ein Prädiktionsrestsignal umfassen. Das Prädiktionsrestsignal (und allgemeiner gesagt, das Restsignal) umfasst eine Reihe von aufeinanderfolgenden Restsignalvektoren. Jeder Restsignalvektor muß quantisiert werden. Deshalb suchen die Verfahren nach einem bevorzugten Codevektor aus einer Vielzahl von Kandidatencodevektoren, die jedem Restvektor entsprechen, und wählen diesen aus. Jeder bevorzugte Codevektor stellt die Anregungs-VQ des entsprechenden Restsignalvektors dar.
  • 18 ist ein Flussdiagramm eines beispielhaften Verfahrens 1800 zur Quantisierung von mehreren Vektoren, zum Beispiel Restsignalvektoren, in einem Master-Vektor (oder Rahmen) gemäß den Korrelationstechniken, die in den Abschnitten IX.C.1. und IX.C.2. beschrieben sind. Das Verfahren 1800 wird in einem NFC-System implementiert. Zum Beispiel kann das Verfahren 1800 mit den beispielhaften NFC-Systemen, Strukturen und Verfahren verwendet werden, die in Verbindung mit den 117 beschrieben worden sind, und zwar in dem Maße, wie die Anregungs-VQ in diesen Systemen, Strukturen und Verfahren verwendet wird. Jedes dieser NFC-Systeme umfasst wenigstens eine Noise-Feedback-Schleife/ein Noise-Feedback-Filter zur Formung des Codierungsrauschens.
  • In einer Anordnung verwendet das Verfahren 1800 ein vorzeichenloses oder allgemeines VQ-Codebuch, das N vorzeichenlose Kandidaten-Codevektoren umfasst (siehe Abschnitt IX.C.1.b. oben).
  • In einer anderen Anordnung verwendet das Verfahren 1800 ein vorzeichenbehaftetes VQ-Codebuch, das N vorzeichenbehaftete Kandidaten-Codevektoren umfasst (siehe Abschnitt IX.C.2.b oben). Zum Beispiel stellt das vorzeichenbehaftete Codebuch ein Produkt dar aus:
    einem Formcode, Cshape = {c1, c2, c3, ...cN/2}, der N/2 Form-Codevektoren cn umfasst, und
    einem Vorzeichencode Csign = {+1, –1}, der ein Paar von Vorzeichenwerten +1 und –1 mit entgegengesetzten Vorzeichen derart aufweist, dass ein positiver Codevektor und ein negativer Codevektor (die als die vorzeichenbehafteten Codevektoren bezeichnet werden), die mit jedem Form-Codevektor cn assoziiert sind, jeweils ein Produkt aus dem Formcodevektor und einem entsprechenden der Vorzeichenwerte darstellt. Somit entsprechen die N/2 Formcodevektoren, wenn sie mit dem Vorzeichencode kombiniert sind, den N vorzeichenbehafteten Codevektoren. Das heißt, erste und zweite Codevektoren mit entgegengesetzten Vorzeichen sind mit jedem der Formcodevektoren assoziiert.
  • Das Verfahren 1800 nimmt an, dass es L Vektoren in dem Master-Vektor (oder Rahmen) gibt und dass die NULLZUSTANDS-Antworten der N Codevektoren (die mit einem Vorzeichen versehen sein können oder nicht, wie dies oben erwähnt ist) invariant über die L Vektoren sind, weil Verstärkungs- und/oder Filterparameter in dem NFC-System nur einmal pro jedem der L Vektoren aktualisiert werden.
  • Bei einem ersten Schritt 1805 werden die N NULLZUSTANDS-Antworten, die jeweils einem entsprechenden Vektor der N Codebuchvektoren entsprechen, berechnet. Die N NULLZUSTANDS-Antworten können zum Beispiel unter Verwendung der NFC-Filterstukturen der 15A und 16A und den assoziierten Verfahren berechnet werden.
  • Bei einem nächsten Schritt 1810 werden die N NULLZUSTANDS-Energien, die den N NULLZUSTANDS-Antworten des Schrittes 1805 entsprechen, berechnet.
  • Bei einem nächsten Schritt 1815 wird ein anfänglicher Vektor der L Vektoren in dem Rahmen, die quantisiert werden sollen, identifiziert.
  • Als Nächstes wird eine Schleife, die die Schritte 1820, 1825, 1830, 1835 und 1840 umfasst, für jeden der zu quantisierenden Vektoren in dem Rahmen wiederholt. Jede Iteration der Schleife erzeugt eine Anregungs-VQ, die einem sukzessiven Vektor der Vektoren in dem Rahmen entspricht, wobei mit dem anfänglichen Vektor begonnen wird. Bei dem ersten Schritt 1820 der Schleife wird eine NULLEINGABE-Antwort berechnet, die dem vorgegebenen (das heißt, identifizierten) Vektor entspricht. In der ersten Iteration der Schleife wird zum Beispiel eine NULLEINGABE-Antwort berechnet, die dem ersten Vektor in dem Rahmen entspricht. Die NULLEINGABE-Antwort kann zum Beispiel unter Verwendung der NFC-Filterstruktur, die oben in Verbindung mit 14C beschrieben worden ist, und den Verfahren, die damit assoziiert sind, berechnet werden.
  • Bei einem nächsten Schritt 1825 wird ein bester oder bevorzugter Codevektor aus den N Codevektoren auf der Grundlage von Minimierungstermen ausgewählt. Die Minimierungsterme werden auf der Basis der N NULLZUSTANDS-Energien von Schritt 1810 und den Kreuzkorrelationen zwischen der NULLEINGABE-Antwort von Schritt 1820 und den NULLZUSTANDS-Antworten von Schritt 1805 abgeleitet. In der Anordnung des Verfahrens 1800, das vorzeichenlose Codevektoren verwendet, wird der Schritt 1825 von der Gleichung 11 des Abschnitts IX.C.1.b. oben geregelt. In der Anordnung des Verfahrens 1800, das vorzeichenbehaftete Codevektoren verwendet, wird der Schritt 1825 von der Gleichung 20 des Abschnitts IX.C.2.b. oben geregelt. Der Schritt 1825 wird unten in Verbindung mit den 19 und 20 noch weiter beschrieben.
  • Bei einem nächsten Schritt 1830 werden die Filterspeicher in dem NFC-System, das verwendet wird, um das Verfahren 1800 zu implementieren, unter Verwendung des besten oder bevorzugten Codevektors aktualisiert, der im Schritt 1825 ausgewählt worden ist.
  • Bei einem Entscheidungsschritt 1835 wird bestimmt, ob ein letzter Vektor der Vektoren in dem Rahmen quantisiert worden ist. Falls ja, dann ist das Verfahren erledigt. Wenn andererseits weitere Vektoren in dem Rahmen noch zur Quantisierung übrigbleiben, geht der Fluss weiter zu einem Schritt 1840, und ein nächster Vektor der Vektoren in dem Rahmen, die quantisiert werden müssen, wird identifiziert. Die Quantisierungsschleife wiederholt sich für den nächsten Vektor und so weiter, und das für jeden der L Vektoren in dem Rahmen.
  • 19 ist ein Flussdiagramm eines beispielhaften Verfahrens 1900, das sich aus dem Schritt 1825 der 18 entwickelt und das ein allgemeines bzw. vorzeichenloses VQ-Codebuch verwendet. Mit anderen Worten, das Verfahren 1900 entspricht einer VQ-Durchsuchung eines VQ-Codebuchs ohne Vorzeichen, wie dies oben im Abschnitt IX.C.1.b. beschrieben worden ist. Das Verfahren 1900 stellt eine Durchsuchung der N Kandidaten-Codevektoren in dem Codebuch dar, um den bevorzugten Codevektor auszuwählen, der als die Anregungsquantisierung in dem Schritt 1825 verwendet werden soll. Bei einem ersten Schritt 1905 wird ein erster Vektor der N Codevektoren, die untersucht/getestet werden sollen, identifiziert. Als Nächstes wird eine Durchsuchungsschleife, die die Schritte 1910 bis 1945 umfasst, für jeden der N Codevektoren wiederholt, wobei mit dem ersten Codevektor begonnen wird, der im Schritt 1905 identifiziert worden ist.
  • Bei dem anfänglichen Schritt 1910 der Schleife wird eine der NULLZUSTANDS-Antworten, die in Schritt 1805 berechnet worden sind, abgerufen. Die abgerufene NULLZUSTANDS-Antwort entspricht dem Codevektor, der während der aktuellen Iteration der Durchsuchungsschleife getestet wird. Zum Beispiel wird bei dem ersten zeitlichen Durchgang durch die Schleife die NULLZUSTANDS-Antwort, die dem ersten Codevektor entspricht, abgerufen.
  • Bei einem nächsten Schritt 1915 wird eine Kreuzkorrelation zwischen der NULLZUSTANDS-Antwort und der NULLEINGABE-Antwort (aus dem Schritt 1820) berechnet. Die Kreuzkorrelation erzeugt einen Korrelationsterm (der auch als ein "Korrelationsergebnis" bezeichnet wird).
  • Bei einem nächsten Schritt 1920 wird die NULLZUSTANDS-Energie, die der NULLZUSTANDS-Antwort von Schritt 1910 entspricht, abgerufen.
  • Bei einem nächsten Schritt 1925 wird ein Minimierungsterm, der dem Codevektor entspricht, der in der aktuellen Iteration der Durchsuchungsschleife getestet werden soll, berechnet. Der Minimierungsterm basiert auf der abgerufenen NULLZUSTANDS-Energie und einer Kreuzkorrelation zwischen der NULLZUSTANDS-Antwort des gerade getesteten Codevektors und der NULLEINGABE-Antwort. Die NULLZUSTANDS-Energie und der Kreuzkorrelationsterm werden miteinander kombiniert (zum Beispiel die NULLZUSTANDS-Energie und der Kreuzkorrelationsterm werden wie in Gleichung 11 addiert, und wie in Gleichung 20 addiert, wenn der Kreuzkorrelationsterm negativ ist).
  • Bei den nächsten Schritten 1930 und 1935 wird der aktuelle Minimierungsterm (der gerade in Schritt 1925 berechnet worden ist) mit den Minimierungstermen verglichen, die sich aus früheren Iterationen durch die Durchsuchungsschleife ergeben haben, um einen aktuellen besten Minimierungsterm aus all den Minimierungstermen zu identifizieren, die bis hierher berechnet worden sind. Der Codevektor, der diesem aktuellen besten Minimierungsterm entspricht, wird ebenfalls identifiziert.
  • Bei einem nächsten Schritt 1940 wird bestimmt, ob ein letzter Codevektor der N Codevektoren getestet worden ist. Falls ja, dann ist das Verfahren vollendet, weil das Codebuch durchsucht worden ist, und ein bevorzugter Codevektor ist bestimmt worden. Aber falls nicht, dann wird bei Schritt 1945 einer nächster Codevektor der N Codevektoren, die getestet werden sollen, identifiziert, und die Durchsuchungsschleife wird wiederholt.
  • Wenn man N Iterationen der Schleife in dem Verfahren 1900 für jeden Vektor, der quantisiert werden soll, annimmt, dann führt das Verfahren 1900 die folgenden Schritte durch:
    Ableiten von N Korrelationswerten unter Verwendung des NFC-Systems (Schritt 1915), wobei jeder der N Korrelationswerte einem jeweiligen Codevektor der N VQ-Codevektoren entspricht;
    Kombinieren jedes der N Korrelationswerte mit einer entsprechenden Energie der N NULLZUSTANDS-Energien des NFC-Systems (Schritt 1925), wodurch N Minimierungswerte erzeugt werden, die jeweils einem jeweiligen Codevektor der N VQ-Codevektoren entsprechen; und
    Auswählen eines bevorzugten Codevektors der N VQ-Codevektoren auf der Basis der N Minimierungswerte (Schritte 1930 und 1935), wodurch der bevorzugte VQ-Codevektor als eine Anregungsquantisierung verwendet werden kann, die einem Prädiktionsrestsignal (und allgemeiner einem Restsignal) entspricht, das aus einem Sprach- oder Audiosignal abgeleitet worden ist.
  • Da das Prädiktionsrestsignal (und allgemeiner das Restsignal) eine Reihe von Prädiktionsrestvektoren (und allgemeiner eine Reihe von Restvektoren) umfasst und das Verfahren 1900 für jeden der Restvektoren in Übereinstimmung mit dem Verfahren 1800 wiederholt wird, erzeugt das Verfahren insgesamt eine Anregungsquantisierung, die jedem der Prädiktionsrestvektoren (und allgemeiner jedem der Restvektoren) entspricht.
  • 20 ist ein Flussdiagramm eines beispielhaften Verfahrens 2000, das sich aus dem Schritt 1825 entwickelt, und das ein vorzeichenbehaftetes VQ-Codebuch verwendet. Deshalb quantisiert das Verfahren 2000 Vektoren gemäß den Techniken, die oben im Abschnitt IX.C.2.b. beschrieben sind, und entspricht somit einer VQ-Durchsuchung eines vorzeichenbehafteten Codebuchs. Das Verfahren 2000 reduziert die Durchsuchungskomplexität selbst in dem Fall, in dem es nur einen Vektor pro Rahmen gibt, das heißt, wenn L = 1. In diesem Fall werden die NULLZUSTANDS-Antworten der vorzeichenbehafteten Codevektoren für jeden zu quantisierenden Restvektor berechnet, anstatt einmal pro jedem der mehreren Restvektoren (das heißt, wenn L größer als 1 ist).
  • In einem ersten Schritt 2005 wird ein erster Formcodevektor, der getestet werden soll (zum Beispiel der Codevektor c1), in dem Formcodebuch identifiziert.
  • Bei einem nächsten Schritt 2010 wird die NULLZUSTANDS-Antwort des Formcodevektors abgerufen.
  • Bei einem nächsten Schritt 2015 wird die Energie der NULLZUSTANDS-Antwort des Schritts 2010 abgerufen
  • Bei einem nächsten Schritt 2020 wird ein Kreuzkorrelationsterm zwischen der NULLZUSTANDS-Antwort des Formcodevektors und der NULLEINGABE-Antwort berechnet. Das Vorzeichen des Kreuzkorrelationsterms kann ein erster Wert (zum Beispiel negativ) oder ein zweiter Wert (zum Beispiel positiv) sein.
  • Bei einem nächsten Schritt 2025 wird der Vorzeichenwert des Kreuzkorrelationsterms bestimmt. Zum Beispiel wird bestimmt, ob der Kreuzkorrelationsterm positiv ist. Falls ja (der Kreuzkorrelationsterm ist positiv), dann wird bei Schritt 2030 ein Minimierungsterm als die Energie der NULLZUSTANDS-Antwort minus dem Kreuzkorrelationsterm berechnet. In Block 2030 zeigt der Satz "Das Vorzeichen ist negativ" an, dass der Block 2030 einem negativen Codevektor entspricht. Somit zeigt das Ankommen bei Block 2030 an, dass der negative Codevektor der bevorzugte der negativen und positiven Codevektoren ist, die dem aktuellen Formcodevektor entsprechen (siehe Gleichung 20 des Abschnitts IX.C.2.b. oben).
  • Wenn der Kreuzkorrelationsterm andererseits negativ ist, dann wird bei Schritt 2035 der Minimierungsterm als die Energie der NULLZUSTANDS-Antwort plus dem Kreuzkorrelationsterm berechnet. Im Block 2035 zeigt der Satz "Das Vorzeichen ist positiv" an, dass der Block 2035 dem positiven Codevektor entspricht. Somit zeigt das Ankommen an Block 2035 an, dass der positive Codevektor der bevorzugte Codevektor der negativen und positiven Codevektoren ist, die dem aktuellen Formcodevektor entsprechen.
  • Als Nächstes bestimmen die Schritte 2040 und 2045 den besten aktuellen Minimierungsterm aus all den Minimierungstermen, die bis hierher berechnet worden sind, und identifizieren auch den vorzeichenbehafteten Codevektor, der mit dem besten aktuellen Minimierungsterm assoziiert ist.
  • Bei einem nächsten Schritt 2050 wird bestimmt, ob der letzte Codevektor in dem Formcodebuch getestet worden ist. Falls ja, dann ist die Durchsuchung beendet und der bevorzugten Formcodevektor und sein Vorzeichen sind bestimmt worden. Falls nein, dann wird bei Schritt 2055 der nächste Formcodevektor, der getestet werden soll, in dem Formcodebuch identifiziert.
  • In einer alternativen Anordnung des Verfahrens 2000 wird nicht angenommen, dass die NULLZUSTANDS-Antworten und ihre entsprechenden Energien vorab berechnet worden sind. In dieser alternativen Anordnung werden die NULLZUSTANDS-Antwort und die NULLZUSTANDS-Energie, die dem jeweiligen Formcodevektor entsprechen, innerhalb jeder Iteration der Durchsuchungsschleife unter Verwendung von zusätzlichen Verfahrensschritten berechnet.
  • Wenn man N Iterationen der Schleife in dem Verfahren 2000 annimmt, führt das Verfahren 2000 die folgenden Schritte für jeden zu quantisierenden Vektor durch:
    Für jeden Formcodevektor
    • (a) Ableiten eines Korrelationsterms, der dem Formcodevektor entspricht, wobei wenigstens eine Filterstruktur des NFC-System verwendet worden ist, um die Signale für die Korrelation zu erzeugen (Schritt 2020);
    • (b) Ableiten eines ersten Minimierungswertes, der dem positiven Codevektor entspricht, der mit dem Formcodevektor assoziiert ist, wenn ein Vorzeichen des Korrelationsterms ein erster Wert ist (Schritte 2025 und 2030); und
    • (c) Ableiten eines zweiten Minimierungswertes, der dem negativen Codevektor entspricht, der mit dem Formcodevektor assoziiert ist, wenn ein Vorzeichen des Korrelationsterms ein zweiter Wert ist (Schritte 2025 und 2035); und Auswählen eines bevorzugten Codevektors aus den positiven und negativen Codevektoren, die den Minimierungswerten entsprechen, die in den Schritten (b) und (c) abgeleitet worden sind, auf der Grundlage der Minimierungswerte (Schritte 2045 und 2040).
  • Die beispielhaften Verfahren 1900 und 2000 leiten jeweils einen Minimierungsterm, der einem Codevektor entspricht, in jeder Iteration ihrer jeweiligen Durchsuchungsschleifen ab. In alternativen Anordnungen der Verfahren 1900 und 2000 können alle Minimierungsterme in einem einzigen Schritt berechnet werden, gefolgt von einer Ein-Schritt-Durchsuchung durch alte diese Minimierungsterme, um den bevorzugten Minimierungsterm und den entsprechenden Codevektor auszuwählen.
  • 5. Vergleich der Durchsuchungsverfahren-Komplexitäten
  • Dieser Abschnitt stellt eine Zusammenfassung und einen Vergleich der Anzahl von Gleitpunktoperationen bereit, die benötigt werden, um die L VQs in einem Master-Vektor für die verschiedenen Verfahren durchzuführen. Der Vergleich nimmt an, dass die gleichen Techniken verwendet werden, um die NULLEINGABE-Antwort und die NULLZUSTANDS-Antworten für die verschiedenen Verfahren zu erhalten, und somit, dass die Komplexität, die damit assoziiert ist, für die verschiedenen Verfahren identisch ist. Folglich wird diese Komplexität aus der geschätzten Anzahl von Gleitpunktoperationen herausgelassen. Die unterschiedlichen Verfahren sind mathematisch äquivalent, d. h. alle sind einer erschöpfenden Durchsuchung der Codevektoren äquivalent. Der Vergleich ist in der Tabelle 1 bereitgestellt, die den Ausdruck für die Anzahl von Gleitpunktoperationen sowie auch die Anzahl an Gleitpunktoperationen für die beispielhaften Schmalband- und Breitband-NFC-Systeme auflistet. In der Tabelle sind das erste und das zweite Verfahren jeweils als "Vorberechnung von Energien der NULLZUSTANDS-Antworten" und "vorzeichenbehaftete Codebuchdurchsuchung" benannt. Tabelle 1: Vergleich der Anzahl an Gleitpunktoperationen für die unterschiedlichen Verfahren
    Verfahren Anwendung Ausdruck Beispiel Schmalband L = 10, N = 32, K = 4 Beispiel Breitband L = 10, N = 64, K = 4
    Direktes Verfahren Jegliches Codebuch C = L·N·K·2 2560 5120
    Vorberechnung der Energien der Nullzustands-Antworten Jegliches Codebuch C2 = N·K + L·N·(K + 1) 1728 3456
    Vorzeichenbehaftete Codebuchdurchsuchung Vorzeichenbehaftetes Codedebuch C3 = L·N·(K + 1/2) 1440 2880
    Vorberechung der Energien der Nullzustands-Antworten Vorzeichenbehaftete Codebuchdurchsuchung Vorzeichenbehaftetes Codedebuch C4 = 1/2·(N·K + L·N·(K + 1)) 864 1728
  • Es sei angemerkt, dass das Vorzeichen des Kreuzkorrelationsterms in den Gleichungen 7, 11, 16, 17, 18, 19 und 20 in einigen NFC-Systemen aufgrund von anderen Vorzeichendefinitionen der Signale entgegengesetzt ist. Es sollte klar sein, dass dies das vorliegende Beispiel nicht grundlegend beeinflusst, sondern einfach zu einer geeigneten Vorzeichenänderung in den Gleichungen und den Verfahren führen wird.
  • D. Weitere Ausführungsbeispiele, die sich auf die VQ Durchsuchung in einer NFC mit einer generalisierten Rauschformung beziehen
  • 1. Überblick
  • Dieser Abschnitt (Abschnitt IX.D.) stellt effiziente Verfahren dar, die sich auf die Anregungsquantisierung in einer Noise-Feedback-Codierung beziehen, bei der die Kurzzeitformung des Codierungsrauschens generalisiert ist. Die Verfahren beruhen zum Teil auf der Trennung eines NFC-Quantisierungsfehlersignals in NULL-ZUSTANDS- und NULLEINGABE-Antwortbeiträge. Zusätzliche neue Teile werden entwickelt und präsentiert, um eine allgemeinere Formung des Codierungsrauschens zu ermöglichen, während eine effiziente Anregungsquantisierung bereitgestellt wird. Dies umfasst ein effizientes Verfahren zum Berechnen der NULLZUSTANDS-Antwort mit der generalisierten Rauschformung und ein effizientes Verfahren zum Aktualisieren der Filterspeicher der Noise-Feedback-Codierungsstruktur mit der generalisierten Rauschformung, wie dies unten beschrieben werden wird. Obwohl die Verfahren dieses Abschnitts beispielshalber in Verbindung mit dem NFC-System/Codec 6000 von 6 beschrieben werden, können sie allgemeiner bei jedem NFC-System oder bei anderen Codierungssystemen verwendet werden.
  • Die Beispiele in diesem Abschnitt werden in Verbindung mit NFC-"Strukturen" oder -"Systemen" beschrieben, die in den 2128 dargestellt sind. Es sollte klar sein, dass solche Strukturen/Systeme auch äquivalent Prozesse oder Verfahren darstellen, da die Verarbeitungsblöcke oder -module, die in den 2128 veranschaulicht sind, wie etwa Filter, Addierer und so weiter, als Prozess-/Verfahrensschrittdeskriptoren betrachtet werden können. Zum Beispiel können die Filter- und Addiererblöcke als Deskriptoren für Verfahrensschritte betrachtet werden, die das Filtern und das Addieren von Signalen umfassen, wie dies einem Fachmann auf dem/den relevanten Fachgebiet(en) offensichtlich sein würde.
  • Die NFC-Systeme, die in den 2128 veranschaulicht sind, arbeiten im Allgemeinen in einer Art und Weise, die der ähnlich ist, die in Verbindung mit vorhergehenden Abschnitten beschrieben worden ist, und die dem Durchschnittsfachmann auf dem/den relevanten Fachgebiet(en) offensichtlich ist, nachdem er die vorliegende Beschreibung gelesen hat. Somit wird die Operation der NFC-Systeme, die in den 2128 dargestellt sind, hier nicht im Einzelnen beschrieben.
  • 21 ist ein Diagramm eines beispielhaften NFC-Systems/-Codierers 2100, der für die Anregungsquantisierung (zum Beispiel eine VQ-Durchsuchung) in dem NFC 6000 von 6 verwendet wird. Das NFC-System 2100 stellt eine NF-Filterstruktur 2100 dar und wird hier auch so bezeichnet. Das NFC-System 2100 umfasst einen Kurzzeitprädiktor/eine Kurzzeitprädiktion Ps(z) (6012), einen Langzeitprädiktor/eine Langzeitprädiktion Pl(z) (5034), ein Kurzzeit-Rauschformungsfilter Ns(z) (das einen Abschnitt des Noise-Feedback-Filters 6016 darstellt) und ein Langzeit-Rauschformungsfilter Nl(z) (das einen Abschnitt des Noise-Feedback-Filters 5038 darstellt).
  • Aus praktischen Gründen identifizieren/bezeichnen die Beschreibung und die mathematischen Analysen in diesem Abschnitt Filter in Übereinstimmung mit solchen Bezeichnungen wie Ps(z), Pl(z), Ns(z), Nl(n), die auch die entsprechenden Filterantworten oder Transferfunktionen der Filter bezeichnen. Die Filterbezeichnungen umfassen die tiefergestellten Indizes "s" und "l", um jeweils die "Kurzzeit" (short-term) und die "Langzeit" (long-term) anzuzeigen. Dieser Abschnitt umfasst eine geringfügige Änderung der Filter-(und der Filterantwort-)Benennungskonvention, die in den vorhergehenden Abschnitten verwendet wurde, da nämlich die "s"- und "l"-Indikatoren in den Figuren, die in Verbindung mit vorhergehenden Abschnitten hier erläutert worden sind, nicht mit tiefergestellten Indizes versehen wurden, aber in den 2128 aus Gründen der Konsistenz mit der folgenden Beschreibung, die auf diese Figuren ausgerichtet ist, mit tiefergestellten Indizes versehen sind. Mit anderen Worten entsprechen die Filter Ps(z), Pl(z), Ns(z) und Nl(z) den Filtern Ps(z), Pl(z), Ns(z) und Nl(z), die in den vorhergehenden Abschnitten beschrieben worden sind.
  • Das Kurzzeit-Noise-Feedback-Filter Fs(z) = Ns(z) – 1 (wobei Fs(z) die Antwort des Filters 6016 ist), (23)wird das Codierungsrauschen, d. h., den Quantisierungsfehler in Übereinstimmung mit der Filterantwort von Ns(z) formen. Dies sorgt für eine flexible Regelung des Codierungsrauschens, wobei Maskierungseffekte des menschlichen Gehörsystems ausgenützt werden können. Das Kurzzeit-Rauschformungs-Filter Ns(z) ist als ein Pol-Nullstellen-Filter
    Figure 00910001
    spezifiziert, wobei die Nullstellen- und Pol-Abschnitte jeweils gegeben sind durch
    Figure 00910002
  • Die Symbole KT und KU bezeichnen jeweils die Filterordnungen der Nullstellen- und Pol-Abschnitte, und ti, i = 0, 1, ..., KT sowie ui, i = 0, 1, ..., KU bezeichnen jeweils die Filterkoeffizienten des Nullstellen- und Pol-Abschnitts.
  • Das Kurzzeit-Rauschformungsfilter Ns(z) kann effektiv dadurch gesteuert werden, dass die Pol- und Nullstellen-Abschnitte mit der spektralen Hüllkurve des Eingangssignals mit Hilfe einer linearen Kurzzeit-Prädiktorkoeffizienten-(LPC)-Analyse verbunden werden. Die Kurzzeit-LPC-Analyse führt zu einem Prädiktionsfehlerfilter, das angegeben ist durch
    Figure 00910003
    wobei NNFF die Ordnung der Kurzzeit-LPC-Analyse ist und ai, i = 1, 2, ..., NNFF die Prädiktionskoeffizienten sind. Das Kurzzeit-Rauschformungsfilter Ns(z) ist spezifiziert als
    Figure 00910004
    wobei 0 ≤ γz ≤ γp ≤ 1 die Kurzzeit-Rauschformung steuern und Beispielswerte γz = 0,5, γp = 0,85 sind. Mit dem Kurzzeit-Rauschformungsfilter der Gleichung 28 nimmt das Kurzzeit-Noise-Feedback-Filter die folgende Form an (das heißt, weist eine Filterantwort auf von)
    Figure 00920001
    wobei die Nullstellen- und Pol-Abschnitte jeweils angegeben sind durch
  • Figure 00920002
  • 22 ist ein beispielhaftes NFC-System 2000, das ein solches Kurzzeit-Noise-Feedback-Filter (6016) umfasst. Der einzige Unterschied zwischen 21 und 22 ist die unterschiedliche Form der Filterantwort, die im Innern der Umrandung anzeigt wird, die dem Noise-Feedback-Filter 6016 entspricht.
  • Das effiziente Verfahren zur Anregungsquantisierung, das in diesem Abschnitt beschrieben wird, umfasst vier Schritte:
    • 1. eine NULLZUSTANDS-Berechnung;
    • 2. eine NULLEINGABE-Berechnung;
    • 3. eine Codebuchdurchsuchung (VQ); und
    • 4. einen Filterspeicheraktualisierungsprozess.
  • 2. NULLZUSTANDS-Berechnung gemäß der Erfindung
  • Das NFC-System von 21 (und das System 2200 von 22) kann in einer NULLZUSTANDS-Konfiguration und in einer NULLEINGABE-Konfiguration betrieben werden. Die NULLZUSTANDS-Konfiguration wird erhalten/abgeleitet, indem die Inhalte der Speicher der Filter in dem NFC-System 2100 auf Null gesetzt werden. Andererseits wird die NULLEINGABE-Konfiguration erhalten, indem ein Leer- oder Null-VQ-Codevektor an das NFC-System 2100 angelegt wird.
  • 23 ist eine beispielhafte NULLZUSTANDS-Konfiguration 2300, die dem NFC-System 2100 entspricht. Diese NULLZUSTANDS-Konfiguration wird in äquivalenter Weise auch als eine NULLZUSTANDS-Antwortfilterstruktur 2300 und eine NULLZUSTANDS-Filterstruktur 2300 bezeichnet. Die NULLZUSTANDS-Filterstruktur 2300 wird verwendet, um die NULLZUSTANDS-Antwort qzs(n) des NFC-Systems 2100 für jeden der N VQ-Codevektoren zu berechnen. Die N VQ-Codevektoren könnten in einem VQ-Codebuch gespeichert werden, oder sie könnten eine Funktion von mehreren Beiträgen sein, z. B. ein Produktcode wie etwa der Vorzeichenformcode/das vorzeichenbehaftete Codebuch von Abschnitt IX.C. Die Komplexität der Berechnung dieser NULLZUSTANDS-Antwort kann reduziert werden, indem eine NULLZUSTANDS-Filterstruktur 2400 verwendet wird, die in 24 dargestellt ist. Dies liegt daran, weil die NULLZUSTANDS-Filterstruktur 2300 auf die äquivalente und weniger komplexe Filterstruktur 2400 reduziert werden kann, in der
    Figure 00930001
    wobei
    Figure 00940001
    das Prädiktionsfehlerfilter der quantisierten LPC und N die Ordnung der quantisierten LPC ist, die sich von der Ordnung des LPC für das Kurzzeit-Rauschformungsfilter NNFF unterscheiden könnte. Die Verwendung einer NULLZUSTANDS-Filterstruktur (wie zum Beispiel die Struktur 2300 oder 2400) zur Berechnung einer NULLZUSTANDS-Antwort entspricht dem Betreiben des NFC-Systems (zum Beispiel des NFC-Systems 6000/2100) unter der NULLZUSTANDS-Bedingung. Mit anderen Worten, das NF-System 6000/2100 kann unter der NULLZUSTANDS-Bedingung betrieben werden.
  • Wie oben erwähnt worden ist, werden die Filterspeicher der verschiedenen Filter der NULLZUSTANDS-Filterstruktur 2300 per definitionem auf Null initialisiert, bevor die Berechnung der NULLZUSTANDS-Antwort jedes VQ-Codevektors begonnen wird, und die Filteroperation, die von der NULLZUSTANDS-Filterstruktur 2300 gegeben wird, kann vorteilhafterweise in eine äquivalente Allnull-Filteroperation niedriger Ordnung transformiert werden. Mit anderen Worten, die NULLZUSTANDS-Filterstruktur 2300 von 23, die mehrere Filter einschließt (zum Beispiel die Filter 6012 und 6016) wird in eine Filterstruktur 2400 von 24 transformiert, die nur ein einziges Allnull-Filter endlicher Ordnung umfasst, nämlich das Filter 2404. Die Filterstruktur 2400 weist eine im Wesentlichen äquivalente Filterantwort zu der der Filterstruktur der 23 auf. Diese beiden Filterstrukturen stellen identische NULLZUSTANDS-Antworten der VQ-Codevektoren bereit:
    Das Pol-Nullstellen-Filter H(z) der Gleichung 32 (zum Beispiel das Filter 2404 in 24) wird als ein mathematisch äquivalentes Allnull-IIR-Filter ausgedrückt:
    Figure 00940002
    und die z-Transformation der NULLZUSTANDS-Antwort wird angegeben durch Qzs(z) = H(z)·Uq(z). (35)
  • In dem Zeitbereich wird diese Filteroperation ausgedrückt als
  • Figure 00950001
  • Da uq(n) nur Elemente für n = 0, 1, ..., K – 1 aufweist und alle Filterspeicher vor der Filterung von uq(n) auf Null initialisiert werden, kann die Filteroperation, die von dem Filter 2404 durchgeführt wird, reduziert werden auf
    Figure 00950002
    wobei K die Dimension der VQ-Codevektoren ist. Folglich müssen nur die ersten K Koeffizienten des Allnull-IIR-Filters H(z) der Gleichung 34 bestimmt werden. Somit ist die Antwort dieser trunkierten Version des Allnull-IIR-Filters im Wesentlichen äquivalent zu der Antwort der NULLZUSTANDS-Filterstruktur von 23. In der Tat ist sie identisch bis zu dem Punkt, an dem sie abgekürzt ist. Wie aus der Gleichung 37 offensichtlich wird, führt die Verwendung des trunkierten Allnull-Filters im Vergleich zu der Verwendung des Allnull-Filters unendlicher Ordnung oder der ursprünglichen NULLZUSTANDS-Filterstruktur von 23 außerdem zu identischen NULLZUSTANDS-Antworten.
  • Die ersten K Koeffizienten der Impulsantwort des Allnull-IIR-Filters werden erhalten, indem ein Impuls durch das Pol-Nullstellen-Filter weitergeleitet wird, das durch die Gleichung 32 gegeben ist, und zwar unter Ausnutzung der Tatsache, dass alle Filterspeicher auf Null initialisiert werden. Dies ist äquivalent zu der Filterung der Impulsantwort des Nullstellen-Abschnitts von H(z) in der Gleichung 32
    Figure 00950003
    durch den restlichen Allpol-Teil:
    Figure 00950004
    wobei ausgenutzt wird, dass nur die ersten K Abtastwerte der Ausgabe benötigt werden. Diese ersten K Abtastwerte der Ausgabe sind die ersten K Koeffizienten der Impulsantwort des Allnull-IIR-Filters.
  • Zusammengefasst heißt das, die NULLZUSTANDS-Antworten der VQ-Codevektoren werden effizient erhalten, indem die Filterstruktur von 24 mit der Filteroperation verwendet wird, die in Gleichung 37 ausgedruckt ist.
  • Es sollte angemerkt werden, dass der Verstärkungsskalierungsschritt in 24, der in dein Block 5028a in 24 repräsentiert ist, vorteilhafterweise in das Allnull-Filter integriert werden kann, indem die Allnull-Filter-Koeffizienten mit der Verstärkung multipliziert werden. Mit anderen Worten, die Verstärkungsskalierung, die in Block 5028a repräsentiert ist, kann zu dem Allnull-Filter verschoben werden, wobei ein modifizierter Block 5028a nicht skalierte VQ-Codevektoren erzeugt und das Allnull-Filter statt dessen die Verstärkungsskalierung durchführt. Die NULLZUSTANDS-Antworten der VQ-Codevektoren können dann effizient erhalten werden, indem die nicht skalierten VQ-Codevektoren, einfach die VQ-Codevektoren, durch das Allnull-Filter mit den modifizierten Koeffizienten geleitet werden. Unter Bezugnahme auf 24 und die Gleichung 37 würde uq(n) dann den VQ-Codevektor repräsentieren, da die Verstärkungsskalierung nicht vorhanden wäre, und H(z) (hi, i = 0, 1, ..., K – 1) würde indirekt die Verstärkungsskalierung durch die Multiplikation der Filterkoeffizienten enthalten.
  • Aus Gründen der Einfachheit werden beide Verfahren als Filterung eines VQ-Codevektors mit dem Allnull-Filter, um die NULLZUSTANDS-Antwort zu erhalten, die dem VQ-Codevektor entspricht, bezeichnet.
  • Auch die Verstärkungsskalierung in den 2124 kann in das VQ-Codebuch integriert werden, indem alle VQ-Codevektoren vor der Anregungsquantisierung mit der Verstärkung multipliziert werden, wodurch ein modifiziertes VQ-Codebuch erzeugt wird. In diesem Fall würden die VQ-Codevektoren des modifizierten VQ-Codebuchs direkt die Kandidaten-Anregungsvektoren repräsentieren und würden in der Tat verstärkungsskalierte VQ-Codevektoren sein.
  • Im Folgenden sollte klar sein, dass der Begriff "VQ-Codevektoren" sowohl nicht skalierte als auch verstärkungsskalierte VQ-Codevektoren abdeckt.
  • 3. NULLEINGABE-Berechnung
  • 25 ist eine beispielhafte NULLEINGABE-Filterkonfiguration oder -struktur 2500, die der NFC-Struktur 2200 entspricht. Die Filterstruktur von 25 wird verwendet, um die NULLEINGABE-Antwort qzi(n) für das NFC-System der 22 zu berechnen. Das Berechnen der NULLEINGABE-Antwort qzi(n) unter Verwendung der Filterstruktur von 25 entspricht dem Betreiben des NFC-Systems 2100 unter der NULLEINGABE-Bedingung.
  • 4. VQ-Durchsuchung
  • Auf der Grundlage der NULLZUSTANDS-Antwort jedes Kandidaten-VQ-Codevektors und der NULLEINGABE-Antwort wird der VQ-Codevektor, der
    Figure 00970001
    minimiert, ausgewählt, und der quantisierte Anregungsvektor wird als uq(n) bezeichnet.
  • 5. Filterspeicher-Update-Prozess
  • In der nachfolgenden Beschreibung und den nachfolgenden Analysen soll es klar sein, dass sich der Begriff "Speicher-Update" (Speicheraktualisierung) auf ein Signal bezieht, das in einen Filterspeicher eines Filters, das in einer Filterstruktur enthalten ist, verschoben wird oder diesen speist. Folglich sind vergangene Werte dieses Signals in dem Filterspeicher gespeichert. In den 26, 27 und 28 werden die Speicher-Update-Signale, die die verschiedenen Filter speisen (das heißt, die verschiedenen Filterspeicher speisen), aus Gründen der beschreibenden Bequemlichkeit und Klarheit unter Verwendung von Doppelbezeichnungen angegeben. Das heißt, in den 2628 weist jedes dieser Signale eine erste Bezeichnung, die die Gleiche ist wie die Bezeichnung, die verwendet worden ist, um das entsprechende Signale in den Systemen/Strukturen der 2125 zu identifizieren, und eine zweite Bezeichnung auf, die das Filter angibt, das mit diesem Signal gespeist wird. Die zweite Bezeichnung hat den Zweck, die Transformation der Filterstruktur gemäß der Erfindung von 26 jeweils in die NULLZUSTANDS- und NULLEINGABE-Strukturen der 27 und 28 für Filterspeicher-Updates zu beschreiben. Die zweite Bezeichnung dient auch dazu, zu betonen, dass einige dieser Signale als existierende Signale zur Verfügung stehen, die während der NULLEINGABE- und NULLZUSTANDS-Antwortberechnungen vor der Codebuchdurchsuchung berechnet worden sind.
  • Eine beispielhafte Grundstruktur zur Aktualisierung der Filterspeicher für das NFC-System von 22 ist in 26 dargestellt. Diese umfasst:
    • 1. Das Speicher-Update für den Kurzzeitprädiktor, genannt ps(n).
    • 2. Das Speicher-Update für den Langzeitprädiktor, genannt pl(n).
    • 3. Das Speicher-Update für das Langzeit-Noise-Feedback-Filter, genannt nl(n).
    • 4. Das Speicher-Update für den Nullstellen-Abschnitt des Kurzzeit-Noise-Feedback-Filters, genannt fsz(n).
    • 5. Das Speicher-Update für den Pol-Abschnitt des Kurzzeit-Noise-Feedback-Filters, genannt fsp(n).
  • Ein alternatives und effizienteres Verfahren liegt darin, die fünf Filterspeicher-Updates als die Superposition der Beiträge für die Filterspeicher aus den NULLZUSTANDS- und den NULLEINGABE-Konfigurationen zu berechnen (die auch als NULLZUSTANDS- und NULLEINGABE-Komponenten bezeichnet werden). Die Beiträge von der NULLZUSTANDS-Komponente/-Konfiguration für die fünf Filterspeicher sind jeweils pszs(n), plzs(n), nlzs(n), fszzs(n) und fspzs(n) genannt, und die Beiträge von der NULLEINGABE-Komponente/-Konfiguration sind jeweils pszi(n), plzi(n), nlzi(n), fszzi(n) und fspzi(n) genannt.
  • Die Struktur zur Berechnung der Beiträge für die fünf Filterspeicher aus der NULLZUSTANDS-Komponente/-Konfiguration ist in 27 dargestellt. Diese Struktur ist aus der 23 und der 26 abgeleitet. Es ist zu sehen, dass plzs(n) = uq(n), (41) nlzs(n) = qzs(n),(42)und fszzs(n) = qzs(n), (43)die alle aus der NULLZUSTANDS-Antwortberechnung des VQ-Codevektors zur Verfügung stehen, der uq(n) (dem quantisierten Anregungsvektor) entspricht. Der Beitrag für das Filterspeicher-Update für den Kurzzeitprädiktor von der NULLZUSTANDS-Komponente/-Konfiguration pszs(n) muß berechnet werden gemäß
    Figure 00990001
    wobei angemerkt werden sollte, dass pszs(n) Null ist für n < 0. Aus 27 und der Gleichung 44 wird es offensichtlich, dass diese Berechnung unabhängig ist von irgendeinem der anderen Filterspeicher. Des Weiteren kann aus 27 gezeigt werden, dass der Beitrag für das Filterspeicher-Update für den Pol-Abschnitt des Kurzzeit-Noise-Feedback-Filters von der NULLZUSTANDS-Komponente/-Konfiguration ausgedrückt werden kann als fspzs(n)= –qzs(n) – pszs(n). (45)
  • Die Struktur zur Berechnung der Beiträge für die fünf Filterspeicher aus der NULLEINGABE-Komponente/-Konfiguration ist in 28 dargestellt. (Es sei angemerkt, dass die 25 und 28 gleich sind, mit der Ausnahme der doppelten Signalbezeichnungen, die in 28 hinzugefügt sind) Aber unter Bezugnahme auf 25 ist es offensichtlich, dass die NULLEINGABE-Beiträge für die fünf Filterspeicher alle aus der vorhergehenden Berechnung der NULLEINGABE-Antwort qzi(n) zur Verfügung stehen, die vor der Codebuchdurchsuchung durchgeführt wurde, und folglich sind keine zusätzlichen Berechnungen notwendig.
  • Aus den Beiträgen für die fünf Filterspeicher von den NULLZUSTANDS- und NULLEINGABE-Komponenten werden die endgültigen Updates für die Filterspeicher berechnet als ps(n) = pszs(n) + pszi(n) pl(n) = plzs(n) + plzi(n) nl(n) = nlzs(n) + nlzi(n) fsz(n) = fszzs(n) + fszzi(n) fsp(n) = fspzs(n) + fspzi(n) (46)
  • Zusammengefasst heißt das, die Anregungsquantisierung jedes Eingangsvektors mit einer Dimension K ergibt K neue Werte, die während des Filterspeicher-Update-Prozesses in jeden Filterspeicher verschoben werden. Dies wird auch aus der Tatsache ersichtlich, dass der Filterspeicher-Update-Prozess der Filterung uq(n), n = 0, 1, ..., K – 1 durch das NFC-System von 21 entspricht, wobei uq(n), n = 0, 1, ..., K – 1 der quantisierte Anregungsvektor ist.
  • Es sollte angemerkt werden, dass die beiden Verfahren zur Aktualisierung der Filterspeicher, d. h., das direkte Verfahren, das in 26 gezeigt ist, und das effiziente Verfahren, das von der Gleichung 41 bis zur Gleichung 46 und in 27 und 28 beschrieben ist, mathematisch äquivalent sind.
  • Es sollte auch angemerkt werden, dass andere Vorzeichendefinitionen von Signalen in den NFC-Codierungssystemen/der NFC-Codierungsstruktur in zweckmäßige Vorzeichenänderungen in den abgeleiteten Gleichungen und Verfahren übertragen werden, ohne dass dies vom dem Schutzumfang der Erfindung abweicht.
  • 6. Verfahrenflussdiagramme
  • a. NULLZUSTANDS-Berechnung
  • 29 ist ein Flussdiagramm eines beispielhaften Verfahrens 2900 zum Auswählen eines besten VQ-Codevektors, der den quantisierten Anregungsvektor darstellt, der einem Eingangsvektor entspricht, wobei das Verfahren eine Nullzustands-Berechnung verwendet, wie diese in diesem Abschnitt beschrieben wird. Dies entspricht der Durchführung einer VQ-Durchsuchung eines NFC-Systems, wie etwa des NFC-Systems von 21. Das NFC-System umfasst ein NF-Filter in einem NF-Pfad oder einer NF-Schleife des NFC-Systems. Das NFC-System kann in einer NULLZUSTANDS-Konfiguration arbeiten, die zum Beispiel die NULLZUSTANDS-Filterstruktur von 23 einschließt. Das NFC-System kann in einer NULLEINGABE-Konfiguration betrieben werden, die zum Beispiel die NULLEINGABE-Filterstruktur von 25 umfasst. In einer Anordnung der vorliegenden Erfindung werden die verschiedenen Schritte des Verfahrens 2900, die unten beschrieben werden, in Übereinstimmung mit den Gleichungen dieses Abschnitts durchgeführt.
  • Ein erster Schritt 2902 umfasst das Erzeugen eines NULLEINGABE-Antwortfehlervektors, der jedem der N Kandidaten-VQ-Codevektoren gemeinsam ist. Zum Beispiel kann die NULLEINGABE-Filterstruktur/NFC-Konfiguration von 25 verwendet werden, um den NULLEINGABE-Antwortfehlervektor zu berechnen (z. B. den Fehlervektor qzi(n)).
  • Ein nächster Schritt 2904 umfasst das separate Filtern jedes der N VQ-Codevektoren mit einem Allnull-Filter (z. B. dem Filter 2404), das eine Filterantwort aufweist, die im Wesentlichen äquivalent ist zu einer Filterantwort der NULLZUSTANDS-Filterstruktur, um N NULLZUSTANDS-Antwortfehlervektoren zu erzeugen (z. B. N Fehlervektoren qsz(n)).
  • Ein nächster Schritt 2906 umfasst das Auswählen eines bevorzugten Codevektors der N VQ-Codevektoren, der den quantisierten Anregungsvektor darstellt, der dem Eingangssignalvektor entspricht, auf der Basis des NULLEINGABE-Antwortfehlervektors und der N NULLZUSTANDS-Antwortfehlervektoren. Dieser Schritt kann in Übereinstimmung mit der Gleichung 40 durchgeführt werden und verwendet effiziente Korrelationstechniken, die denjenigen ähnlich sind, die oben in den Abschnitten IX.C.2.–IX.C.5. beschrieben worden sind.
  • Das Verfahren 2900 kann auch einen Filtertransformationsschritt vor dem Schritt 2904 umfassen. Der Filtertransformationsschritt umfasst die Transformation der NULLZUSTANDS-Filterstruktur (z. B. von 23) in eine Filterstruktur (z. B. von 24), die nur das Allnull-Filter (z. B. das Filter 2404) umfasst.
  • 30 ist ein Flussdiagramm eines beispielhaften Verfahrens 3000 der effizienten Durchführung einer NULLZUSTANDS-Berechnung in einem NFC-System, das eine entsprechende anfängliche oder erste NULLZUSTANDS-Filterstruktur aufweist (z. B. die Struktur von 23), wobei die NULLZUSTANDS-Filterstruktur mehrere Filter (z. B. die Filter 6016 und 6012) umfasst. Das Verfahren 3000 erzeugt in effizienter Weise einen NULLZUSTANDS-Antwortfehlervektor für das NFC-System, der zum Beispiel auch in anderen Verfahren verwendet werden kann, die mit der Anregungsquantisierung in Bezug stehen.
  • Ein erster Schritt 3002 umfasst die Transformation der ersten NULLZUSTANDS-Filterstruktur (z. B. von 23), die mehrere Filter aufweist, in eine zweite, einfachere NULLZUSTANDS-Filterstruktur (z. B. von 24), die nur ein einziges Filter umfasst, zum Beispiel ein Allnull-Filter (z. B. Filter 2404). Das Allnull-Filter weist eine Filterantwort auf, die im Wesentlichen äquivalent ist zu einer Filterantwort der ersten NULLZUSTANDS-Filterstruktur.
  • Ein nächster Schritt 3004 umfasst die Filterung eines VQ-Codevektors mit dem Allnull-Filter, um einen NULLZUSTANDS-Antwortfehlervektor zu erzeugen, der dem VQ-Codevektor entspricht. Typischerweise ist der VQ-Codevektor einer der N VQ-Codevektoren, und das Verfahren 3000 umfasst des Weiteren die Filterung der restlichen N – 1 Codevektoren mit dem Allnull-Filter, um N NULLZUSTANDS-Antwortfehlervektoren zu erzeugen, die den N VQ-Codevektoren entsprechen.
  • b. Filterspeicher-Update-Prozess
  • 31 ist ein Flussdiagramm eines beispielhaften Verfahrens 3100 zur Aktualisierung eines oder mehrerer Filterspeicher(s) in einem NFC-System, wie etwa dem NFC-System von FIG. 2100. Das NFC-System kann unter einer NULLZUSTANDS-Bedingung (wobei sich das NFC-System in einer NULLZUSTANDS-Konfiguration befindet) und unter einer NULLEINGABE-Bedingung (wobei sich das NFC-System in einer NULLEINGABE-Konfiguration befindet) betrieben werden und umfasst wenigstens ein Filter (z. B. das Filter 6016), das einen Filterspeicher aufweist. In einer Anordnung des Verfahrens können die verschiedenen Schritte des Verfahrens 3000, die unten beschrieben werden, in Übereinstimmung mit den Gleichungen dieses Abschnitts durchgeführt werden.
  • Eins erster Schritt 3102 umfasst das Erzeugen eines NULLZUSTANDS-Beitrags (z. B. fszzs(n)) für den Filterspeicher, wenn sich das NFC-System in der NULLZUSTANDS-Bedingung befindet. Zum Beispiel kann die Struktur von 27 dazu verwendet werden, den NULLZUSTANDS-Beitrag zu erzeugen. "Erzeugen" kann das Berechnen oder alternativ dazu das Abrufen von/das Zugreifen auf vorher berechnete Werte umfassen.
  • Ein nächster Schritt 3104 umfasst das Erzeugen eines NULLEINGABE-Beitrags (z. B. fszzi(n)) für den Filterspeicher, wenn sich das NFC-System in der NULLEINGABE-Bedingung befindet. Zum Beispiel kann die Struktur von 28 dazu verwendet werden, den NULLEINGABE-Beitrag zu berechnen. In einer alter nativen Anordnung des Verfahrens 3100 ist die Reihenfolge der Schritte 3102 und 3104 umgedreht. Das heißt, der Schritt 3104 geht dem Schritt 3102 voraus.
  • Ein nächster Schritt umfasst das Aktualisieren des Filterspeichers als eine Funktion sowohl des NULLZUSTANDS-Beitrags als auch des NULLEINGABE-Beitrags. Zum Beispiel wird der Filterspeicher mit der Summe oder Superposition der NULLEINGABE- und NULLZUSTANDS-Beiträge aktualisiert (z. B. Speicher-Update fsz(n) = fszzs(n) + fszzi(n)).
  • Das Verfahren 3100 wird typischerweise, obwohl nicht notwendigerweise, in dem Kontext der Anregungsquantisierung durchgeführt, das heißt, in einer VQ-Durchsuchung. In dem Kontext der VQ-Durchsuchung umfasst das Verfahren 3100 vor dem Schritt 3102 einen Schritt des Durchsuchens von N VQ-Codevektoren, die mit dem NFC-System assoziiert sind, nach einem besten VQ-Codevektor, der einen quantisierten Anregungsvektor darstellt. Dann umfasst der Schritt 3102 das Erzeugen des NULLZUSTANDS-Beitrags, wie oben erwähnt ist, der dem besten VQ-Codevektor entspricht.
  • In diesem Abschnitt sind die Verfahren und Strukturen beispielshalber in dem Kontext des NFC-Systems 6000 beschrieben worden, das in 6 dargestellt ist. Es soll klar sein, dass die Verfahren und Strukturen nicht auf dieses Beispiel beschränkt sind und sich somit auch auf die NFC-Systeme 3000, 4000 und 5000 sowie auch andere Codierungssysteme erstrecken.
  • X. Decodiereroperationen
  • Der Decodierer in 8 ist dem Decodierer anderer prädiktiver Codecs wie zum Beispiel CELP und MPLPC sehr ähnlich. Die Operationen des Decodierers sind im Stand der Technik allgemein bekannt.
  • Nun wird Bezug auf 8 genommen. Der Bit-Demultiplexer-Block 100 entpackt bzw. dekomprimiert den Eingangsbitstrom in die fünf Sätze von Indizes LSPI, PPI, PPTI, GI und CI. Der prädiktive Langzeitparameter-Decodiererblock 110 decodiert die Pitch-Periode als pp = 17 + PPI. Er verwendet PPTI auch als die Adresse, um den entsprechenden Codevektor aus dem 9-dimensionalen Pitch-Tap-Codebuch abzurufen und multipliziert die ersten drei Elemente des Codevektors mit 0,5, um die drei Pitch-Prädiktorkoeffizienten {bj*1, bj*2, bj*3} zu bekommen. Die decodierte Pitch-Periode und die Pitch-Prädiktor-Taps werden zu dem Langzeitprädiktorblock 140 geleitet.
  • Der prädiktive Kurzzeitparameter-Decodiererblock 120 decodiert LSPI, um die quantisierte Version des Vektors des LSP-Zwischen-Rahmen-MA-Prädiktionsrests zu bekommen. Dann führt er die gleichen Operationen wie in der rechten Hälfte der Struktur in 10 durch, um den quantisierten LSP-Vektor zu rekonstruieren, und zwar auf eine Weise, die auf dem Fachgebiet allgemein bekannt ist. Als Nächstes führt er die gleichen Operationen wie in den Blöcken 17 und 18 durch, um den Satz von Kurzzeitprädiktorkoeffizienten {ãi} zu bekommen, der zu dem Kurzzeitprädiktorblock 160 weitergeleitet wird.
  • Der Prädiktionsrestquantisierer-Decodiererblock 130 decodiert den Verstärkungsindex GI, um die quantisierte Version des Log-Verstärkungsprädiktionsrestes zu bekommen. Dann führt er die gleichen Operationen wie in den Blöcken 304, 307, 308 und 309 von 12 durch, um die quantisierte Restverstärkung in dem linearen Bereich zu bekommen. Als Nächstes verwendet der Block 130 den Codebuchindex CI, um die Restquantisiererausgangsschicht abzurufen, wenn ein skalarer Quantisierer verwendet wird, oder den gewinnenden Rest-VQ-Codevektor, wenn ein Vektorquantisierer verwendet wird, und dann skaliert er das Ergebnis mit der quantisierten Restverstärkung. Das Ergebnis einer solchen Skalierung ist das Signal uq(n) in 8.
  • Der Langzeitprädiktorblock 140 und der Addierer 150 führen zusammen die Langzeitsynthesefilterung durch, um die quantisierte Version des Kurzzeitprädiktionsrests dq(n) wie folgt zu erhalten.
  • Figure 01040001
  • Der Kurzzeitprädiktorblock 160 und der Addierer 170 führen dann die Kurzzeitsynthesefilterung durch, um das decodierte Ausgangssprachsignal sq(n) wie folgt zu erhalten.
  • Figure 01040002
  • Dies vollendet die Beschreibung der Decodiereroperationen.
  • XI. Hardware- und Software-Implementierungen
  • Die folgende Beschreibung eines Universal-Computersystems wird vollständigkeitshalber bereitgestellt. Die vorliegende Erfindung kann in Hardware oder als eine Kombination aus Software und Hardware implementiert werden. Folglich kann die Erfindung in einer Umgebung eines Computersystems oder eines anderen Verarbeitungssystems implementiert werden. Ein Beispiel eines solchen Computersystems 3200 ist in 32 gezeigt. In der vorliegenden Erfindung können zum Beispiel alle der Signalverarbeitungsblöcke der Codecs 1050, 2050, 30007000 und 21002800 in einem oder mehreren unterschiedlichen Computersystem(en) 3200 ausgeführt werden, um die verschiedenen Verfahren der vorliegenden Erfindung zu implementieren. Das Computersystem 3200 umfasst einen oder mehrere Prozessoren, wie etwa den Prozessor 3204. Der Prozessor 3204 kann ein digitaler Spezial- oder Universal-Signalprozessor sein. Der Prozessor 3204 ist mit einer Kommunikationsinfrastruktur 3206 verbunden (zum Beispiel einem Bus oder einem Netzwerk). Verschiedene Software-Implementierungen werden in bezug auf dieses beispielhafte Computersystem beschrieben. Nach dem Lesen dieser Beschreibung wird es einem Fachmann auf dem relevanten Fachgebiet offensichtlich werden, wie die Erfindung unter Verwendung anderer Computersysteme und/oder Computerarchitekturen implementiert werden kann.
  • Das Computersystem 3200 umfasst auch einen Hauptspeicher 3208, vorzugsweise einen Direktzugriffsspeicher (RAM; random access memory) und kann auch einen externen Speicher 3210 umfassen. Der externe Speicher 3210 kann zum Beispiel ein Festplattenlaufwerk 3212 und/oder ein Wechselspeicherlaufwerk 3214 umfassen, das ein Disketten-Laufwerk, ein Magnetbandlaufwerk, ein optisches Plattenlaufwerk (CD-Laufwerk), etc. darstellt. Das Wechselspeicherlaufwerk 3214 liest aus und/oder schreibt in eine Wechselspeichereinheit 3218 in einer allgemein bekannten Art und Weise. Die Wechselspeichereinheit 3218 stellt eine Diskette, ein Magnetband, eine Optical Disk (CD) etc. dar, die von einem Wechselspeicherlaufwert 3214 gelesen und geschrieben wird. Wie klar sein wird, umfasst die Wechselspeichereinheit 3218 ein von einem Computer nutzbares Speichermedium, auf dem Computersoftware und/oder Daten gespeichert sind.
  • In alternativen Implementierungen kann der externe Speicher 3210 andere ähnliche Einrichtungen umfassen, die es gestatten, dass Computerprogramme oder andere Befehle bzw. Anweisungen in das Computersystem 3200 geladen werden können. Solche Einrichtungen können zum Beispiel eine Wechselspeichereinheit 3222 und eine Schnittstelle 3220 umfassen. Beispiele für solche Einrichtungen können eine Programmkassette und eine Kassettenschnittstelle (wie etwa diejenigen, die in Videospielvorrichtungen zu finden sind), einen herausnehmbaren Speicherchip (wie etwa ein EPROM oder PROM) und zugehörige Anschlüsse, und andere Wechselspeichereinheiten 3222 und Schnittstellen 3220 umfassen, die es erlauben, dass Software und Daten von der Wechselspeichereinheit 3222 auf das Computersystem 3200 übertragen werden können.
  • Das Computersystem 3200 kann auch eine Kommunikationsschnittstelle 3224 umfassen. Die Kommunikationsschnittstelle 3224 erlaubt es, dass Software und Daten zwischen dem Computersystem 3200 und externen Geräten transferiert werden können. Beispiele einer solchen Kommunikationsschnittstelle 3224 können ein Modem, eine Netzwerkschnittstelle (wie etwa eine Ethernet-Karte), einen Kommunikationsport, einen PCMCIA-Steckplatz und eine PCMCIA-Karte, etc. umfassen. Software und Daten, die über eine Kommunikationsschnittstelle 3224 übertragen werden, liegen in der Form von Signalen 3228 vor, die elektronische, elektromagnetische, optische oder andere Signale sein können, die von der Kommunikationsschnittstelle 3224 empfangen werden können. Diese Signale 3228 werden der Kommunikationsschnittstelle 3224 über einen Übertragungsweg 3226 zugeführt. Der Übertragungsweg 3226 überträgt Signale 3228 und kann unter Verwendung von Draht oder Kabeln, Glasfasern, einer Telefonleitung, einer zellularen Telefonverbindung, einer HF-Verbindung und anderen Kommunikationskanälen implementiert werden.
  • In diesem Dokument werden die Begriffe "Computerprogrammmedium" und "von einem Computer nutzbares Medium" verwendet, um sich allgemein auf Medien wie etwa ein Wechselspeicherlaufwerk 3214, eine Festplatte, die in dem Festplattenlaufwerk 3212 installiert ist, und Signale 3228 zu beziehen. Diese Computerprogrammprodukte sind Einrichtungen zum Bereitstellen von Software für das Computersystem 3200.
  • Computerprogramme (die auch Computersteuerlogik genannt werden) sind in dem Hauptspeicher 3208 und/oder dem externen Speicher 3210 gespeichert. Com puterprogramme können auch über eine Kommunikationsschnittstelle 3224 empfangen werden. Solche Computerprogramme ermöglichen es dem Computersystem 3200 dann, wenn sie ausgeführt werden, die vorliegende Erfindung so, wie sie hier erläutert worden ist, zu implementieren. Insbesondere ermöglichen es die Computerprogramme, wenn sie ausgeführt werden, dem Prozessor 3204, die Prozesse der vorliegenden Erfindung zu implementieren, wie etwa die Verfahren, die unter Verwendung der verschiedenen Codec-Strukturen, die oben beschrieben worden sind, implementiert werden, wie zum Beispiel die Verfahren 6050, 1350, 1364, 1430, 1450, 1470, 1520, 1620, 1700, 1800, 1900, 2000 und 29003100. Demgemäss stellen solche Computerprogramme Controller des Computersystems 3200 dar. Beispielshalber können in den Ausführungsbeispielen der Erfindung die Prozesse, die von den Signalverarbeitungsblöcken der Codecs/Strukturen 1050, 2050, 30007000, 1300, 1362, 1400, 1402a, 1404a, 1404b, 21002800 durchgeführt werden, von der Computersteuerlogik durchgeführt werden. Wenn die Erfindung unter Verwendung von Software implementiert wird, kann die Software in einem Computerprogrammprodukt gespeichert werden und in das Computersystem 3200 unter Verwendung eines Wechselspeicherlaufwerks 3214, eines Festplattenlaufwerks 3212 oder einer Kommunikationsschnittstelle 3224 geladen werden.
  • In einem anderen Ausführungsbeispiel werden die Merkmale der Erfindung primär in Hardware implementiert, wobei zum Beispiel Hardwarekomponenten wie etwa anwendungsspezifische integrierte Schaltungen (ASICs; Application Specific Integrated Circuits) und Gate-Arrays verwendet werden. Die Implementierung einer Hardware-Zustandsmaschine, um so die hier beschriebenen Funktionen durchzuführen, wird den Fachleuten in dem/den relevanten Fachgebiet(en) ebenfalls ersichtlich sein.
  • XII. Schlussfolgerung
  • Obwohl oben verschiedene Ausführungsbeispiele der vorliegenden Erfindung beschrieben worden sind, sollte es klar sein, dass sie nur beispielshalber präsentiert worden sind und keine Beschränkung darstellen. Es wird den Fachleuten auf dem relevanten Gebiet offensichtlich sein, dass verschiedene Änderungen bezüglich der Form und der Einzelheiten darin durchgeführt werden können, ohne von dem Erfindungsgedanken und dem Schutzumfang der Erfindung abzuweichen.
  • Die vorliegende Erfindung ist oben unter Zuhilfenahme von funktionellen Baueinheiten und Verfahrensschritten beschrieben worden, die die Performanz von spezifizierten, Funktionen und deren Beziehungen veranschaulichen. Die Grenzen dieser funktionellen Baueinheiten und Verfahrensschritte sind hier zur Erleichterung der Beschreibung willkürlich definiert worden. Alternative Grenzen können definiert werden, solange die spezifizierten Funktionen und Beziehungen davon in angemessener Weise durchgeführt werden. Alle solche alternativen Grenzen liegen somit im Schutzumfang der beanspruchten Erfindung. Ein Fachmann auf diesem Gebiet wird erkennen, dass diese funktionellen Baueinheiten mit diskreten Bauteilen, anwendungsspezifischen integrierten Schaltungen, Prozessoren, die die geeignete Software ausführen, und Ähnlichem oder irgendwelchen Kombinationen daraus implementiert werden können. Somit soll der Schutzumfang und der Schutzbereich der vorliegenden Erfindung nicht von irgendeinem der oben beschriebenen beispielhaften Ausführungsbeispiele begrenzt sein, sondern soll nur in Übereinstimmung mit den nachfolgenden Ansprüchen und ihren Äquivalenten definiert werden.

Claims (15)

  1. Verfahren zur Erzeugung eines NULLZUSTANDS-Antwortfehlervektors für ein Noise-Feedback-Codierungs-(NFC)-System, das eine entsprechende NULLZUSTANDS-Filterstruktur aufweist, wobei die NULLZUSTANDS-Filterstruktur mehrere Filter enthält, wobei das Verfahren Folgendes umfasst: (a) Transformieren der NULLZUSTANDS-Filterstruktur, die mehrere Filter enthält, in eine NULLZUSTANDS-Filterstruktur, die nur ein Allnull-Filter enthält, wobei das Allnull-Filter eine Filterantwort aufweist, die bis zu einem vorbestimmten Abschneidepunkt gleich einer Filterantwort der NULLZUSTANDS-Filterstruktur ist, die mehrere Filter enthält; und (b) Filtern eines Vektorquantisierer-VQ-Codevektors mit dem Allnull-Filter, um den NULLZUSTANDS-Antwortfehlervektor zu erzeugen, der dem VQ-Codevektor entspricht.
  2. Verfahren nach Anspruch 1, wobei wenigstens eines der mehreren Filter ein Noise-Feedback-NF-Filter der folgenden Form ist: F(z) = N(z) – 1,wobei N(z) ein Noise-Shaping-NS-Filter der folgenden Form ist:
    Figure 01090001
    wobei ti und ui jeweils i-te Filterkoeffizienten eines Allnull-Abschnitts und eines Allpol-Abschnitts des NS-Filters sind, und KT und KU jeweils die Ordnungen des Allnull-Abschnitts und des Allpol-Abschnitts sind.
  3. Verfahren nach Anspruch 2, wobei die Filterkoeffizienten ti und ui zu den Prädiktionskoeffizienten ai gemäß
    Figure 01100001
    in Beziehung stehen, wobei γiz und γip jeweils Bandbreitenaufweitungsfaktoren der Allnull- und Allpol-Abschnitte sind, und NNFF die Ordnung des NS-Filters ist.
  4. Verfahren nach Anspruch 1, wobei die Filterantwort des Allnull-Filters im Wesentlichen äquivalent ist zu
    Figure 01100002
    wobei N(z) das Noise-Shaping-Filter ist und Ps(z) der Kurzzeitprädiktor ist.
  5. Verfahren nach Anspruch 1, wobei das Allnull-Filter von der folgenden Form ist:
    Figure 01100003
    wobei hi ein i-ter Filterkoeffizient ist.
  6. Verfahren nach Anspruch 5, wobei das Allnull-Filter von einer endlichen Ordnung ist.
  7. Verfahren nach Anspruch 1, wobei das Allnull-Filter von der folgenden Form ist:
    Figure 01100004
    wobei hi ein i-ter Filterkoeffizient ist und K – 1 die Filterordnung ist.
  8. Verfahren nach Anspruch 7, wobei der Schritt (b) das Erzeugen des NULLZUSTANDS-Antwortfehlervektors, der mit qzs(n) bezeichnet ist, und der einem VQ-Codevektor entspricht, der mit uq(n) bezeichnet ist, wobei n = 0, 1, ... K – 1, gemäß Folgendem umfasst:
    Figure 01110001
  9. Verfahren nach Anspruch 8, wobei uq(n) ein verstärkungsskalierter VQ-Codevektor ist und hi, i = 0, 1, ...K – 1 die Verstärkungsskalierung ausschließt.
  10. Verfahren nach Anspruch 8, wobei uq(n) ein nicht skalierter VQ-Codevektor ist und hi, i = 0, 1, ...K – 1 die Verstärkungsskalierung einschließt.
  11. Verfahren nach Anspruch 1, das des Weiteren das Durchführen einer Anregungsquantisierung, die einem Eingangsvektor entspricht, unter Verwendung des NULLZUSTANDS-Antwortfehlervektors umfasst.
  12. Verfahren nach Anspruch 1, wobei der VQ-Codevektor ein gewisser VQ-Codevektor unter N VQ-Codevektoren ist, wobei das Verfahren des Weiteren Folgendes umfasst: (c) Wiederholen des Schrittes (b) für jeden der restlichen N – 1 VQ-Codevektoren, um N NULLZUSTANDS-Antwortfehlervektoren zu erzeugen; (d) Erzeugen eines NULLEINGABE-Antwortfehlervektors, der allen N VQ-Codevektoren gemeinsam ist; und (e) Auswählen eines bevorzugten VQ-Codevektors der N VQ-Codevektoren, der einem Eingangssignalvektor entspricht, auf der Grundlage des NULLEINGABE-Antwortfehlervektors und der N NULLZUSTANDS-Antwortfehlervektoren.
  13. Verfahren zur Anregungsquantisierung, die einem Eingangssignalvektor für ein Noise-Feedback-Codierungs-(NFC)-System entspricht, das eine entsprechende NULLZUSTANDS-Filterstruktur aufweist, wobei die NULLZUSTANDS-Filterstruktur eine Noise-Feedback-NF-Schleife enthält, wobei die NF-Schleife ein NF-Filter enthält, wobei das Verfahren Folgendes umfasst: (a) Separates Filtern jedes der N Vektorquantisierer-VQ-Codevektoren in Übereinstimmung mit dem Verfahren von Anspruch 1, um N NULLZUSTANDS-Antwortfehlervektoren zu erzeugen; (b) Erzeugen eines NULLEINGABE-Antwortfehlervektors, der allen N VQ-Codevektoren gemeinsam ist; und (c) Auswählen eines bevorzugten VQ-Codevektors der N VQ-Codevektoren, der dem Eingangssignalvektor entspricht, auf der Grundlage des NULLEINGABE-Antwortfehlervektors und den N NULLZUSTANDS-Antwortfehlervektoren.
  14. Verfahren nach Anspruch 13, das des Weiteren Folgendes umfasst: vor dem Schritt (a) das Transformieren der NULLZUSTANDS-Filterstruktur in eine Filterstruktur, die nur das Allnull-Filter enthält.
  15. Verfahren nach Anspruch 13, wobei der Schritt (b) das Erzeugen des NULLEINGABE-Antwortfehlervektors unter Verwendung einer NULLEINGABE-Filterstruktur umfasst, die dem NFC-System entspricht.
DE60226308T 2002-01-04 2002-12-31 Quantisierung der Anregung in einem Geräuschrückkopplungskodierungssytem mit allgemeiner Rauschformung Expired - Lifetime DE60226308T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US34437502P 2002-01-04 2002-01-04
US344375P 2002-01-04
US216442 2002-08-12
US10/216,442 US6751587B2 (en) 2002-01-04 2002-08-12 Efficient excitation quantization in noise feedback coding with general noise shaping

Publications (2)

Publication Number Publication Date
DE60226308D1 DE60226308D1 (de) 2008-06-12
DE60226308T2 true DE60226308T2 (de) 2009-05-14

Family

ID=26911013

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60226308T Expired - Lifetime DE60226308T2 (de) 2002-01-04 2002-12-31 Quantisierung der Anregung in einem Geräuschrückkopplungskodierungssytem mit allgemeiner Rauschformung

Country Status (3)

Country Link
US (1) US6751587B2 (de)
EP (1) EP1326235B1 (de)
DE (1) DE60226308T2 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829577B1 (en) * 2000-11-03 2004-12-07 International Business Machines Corporation Generating non-stationary additive noise for addition to synthesized speech
US7173551B2 (en) * 2000-12-21 2007-02-06 Quellan, Inc. Increasing data throughput in optical fiber transmission systems
US7110942B2 (en) * 2001-08-14 2006-09-19 Broadcom Corporation Efficient excitation quantization in a noise feedback coding system using correlation techniques
US7206740B2 (en) * 2002-01-04 2007-04-17 Broadcom Corporation Efficient excitation quantization in noise feedback coding with general noise shaping
JP2004013681A (ja) * 2002-06-10 2004-01-15 Bosu & K Consulting Kk 名刺情報管理システム
AU2003256569A1 (en) 2002-07-15 2004-02-02 Quellan, Inc. Adaptive noise filtering and equalization
AU2003287628A1 (en) 2002-11-12 2004-06-03 Quellan, Inc. High-speed analog-to-digital conversion with improved robustness to timing uncertainty
US20040190661A1 (en) * 2003-03-26 2004-09-30 Quellan, Inc. Method and system for equalizing communication signals
US7804760B2 (en) 2003-08-07 2010-09-28 Quellan, Inc. Method and system for signal emulation
DE112004001455B4 (de) 2003-08-07 2020-04-23 Intersil Americas LLC Verfahren und System zum Löschen von Übersprechen
EP1513137A1 (de) * 2003-08-22 2005-03-09 MicronasNIT LCC, Novi Sad Institute of Information Technologies Sprachverarbeitungssystem und -verfahren mit Multipuls-Anregung
US7123676B2 (en) 2003-11-17 2006-10-17 Quellan, Inc. Method and system for antenna interference cancellation
US7616700B2 (en) 2003-12-22 2009-11-10 Quellan, Inc. Method and system for slicing a communication signal
US7522883B2 (en) * 2004-12-14 2009-04-21 Quellan, Inc. Method and system for reducing signal interference
US7725079B2 (en) 2004-12-14 2010-05-25 Quellan, Inc. Method and system for automatic control in an interference cancellation device
US20060136202A1 (en) * 2004-12-16 2006-06-22 Texas Instruments, Inc. Quantization of excitation vector
US8023752B1 (en) * 2005-03-04 2011-09-20 Nvidia Corporation Decompression of 16 bit data using predictor values
JP5129117B2 (ja) * 2005-04-01 2013-01-23 クゥアルコム・インコーポレイテッド 音声信号の高帯域部分を符号化及び復号する方法及び装置
WO2006116025A1 (en) 2005-04-22 2006-11-02 Qualcomm Incorporated Systems, methods, and apparatus for gain factor smoothing
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US8620644B2 (en) * 2005-10-26 2013-12-31 Qualcomm Incorporated Encoder-assisted frame loss concealment techniques for audio coding
KR101372361B1 (ko) 2006-04-26 2014-03-12 인터실 아메리카스 엘엘씨 통신 채널로부터 복사성 방출을 감소시키기 위한 방법 및 시스템
US8335684B2 (en) * 2006-07-12 2012-12-18 Broadcom Corporation Interchangeable noise feedback coding and code excited linear prediction encoders
US20080162150A1 (en) * 2006-12-28 2008-07-03 Vianix Delaware, Llc System and Method for a High Performance Audio Codec
WO2009023807A1 (en) * 2007-08-15 2009-02-19 Massachusetts Institute Of Technology Speech processing apparatus and method employing feedback
JP4735711B2 (ja) * 2008-12-17 2011-07-27 ソニー株式会社 情報符号化装置
GB2466674B (en) * 2009-01-06 2013-11-13 Skype Speech coding
GB2466670B (en) * 2009-01-06 2012-11-14 Skype Speech encoding
GB2466673B (en) 2009-01-06 2012-11-07 Skype Quantization
GB2466675B (en) 2009-01-06 2013-03-06 Skype Speech coding
GB2466669B (en) * 2009-01-06 2013-03-06 Skype Speech coding
GB2466671B (en) * 2009-01-06 2013-03-27 Skype Speech encoding
GB2466672B (en) * 2009-01-06 2013-03-13 Skype Speech coding
US8452606B2 (en) * 2009-09-29 2013-05-28 Skype Speech encoding using multiple bit rates
AU2009353896B2 (en) * 2009-10-15 2013-05-23 Widex A/S Hearing aid with audio codec and method
US9178553B2 (en) * 2012-01-31 2015-11-03 Broadcom Corporation Systems and methods for enhancing audio quality of FM receivers
US9130643B2 (en) * 2012-01-31 2015-09-08 Broadcom Corporation Systems and methods for enhancing audio quality of FM receivers
US9396734B2 (en) * 2013-03-08 2016-07-19 Google Technology Holdings LLC Conversion of linear predictive coefficients using auto-regressive extension of correlation coefficients in sub-band audio codecs
TWI597955B (zh) * 2015-08-05 2017-09-01 晨星半導體股份有限公司 決策回授等化器之前饋等化器係數及反饋等化器係數的計算方法及裝置
KR20190011742A (ko) * 2016-05-10 2019-02-07 이멀젼 서비시즈 엘엘씨 적응형 오디오 코덱 시스템, 방법, 장치 및 매체
WO2021007615A1 (en) * 2019-07-12 2021-01-21 Saluda Medical Pty Ltd Monitoring a quality of neural recordings

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2927982A (en) 1957-06-11 1960-03-08 George Windeler Co Ltd Vibration responsive switch
JPS5550738A (en) 1978-10-05 1980-04-12 Nec Corp Decoding method of adaptability forecasting type differential pulse code and its unit
US4220819A (en) 1979-03-30 1980-09-02 Bell Telephone Laboratories, Incorporated Residual excited predictive speech coding system
JPS5853352B2 (ja) 1979-10-03 1983-11-29 日本電信電話株式会社 音声合成器
JPS60116000A (ja) 1983-11-28 1985-06-22 ケイディディ株式会社 音声符号化装置
JPS61134000A (ja) 1984-12-05 1986-06-21 株式会社日立製作所 音声分析合成方式
US4815132A (en) * 1985-08-30 1989-03-21 Kabushiki Kaisha Toshiba Stereophonic voice signal transmission system
IT1195350B (it) 1986-10-21 1988-10-12 Cselt Centro Studi Lab Telecom Procedimento e dispositivo per la codifica e decodifica del segnale vocale mediante estrazione di para metri e tecniche di quantizzazione vettoriale
US4969192A (en) 1987-04-06 1990-11-06 Voicecraft, Inc. Vector adaptive predictive coder for speech and audio
US4791654A (en) 1987-06-05 1988-12-13 American Telephone And Telegraph Company, At&T Bell Laboratories Resisting the effects of channel noise in digital transmission of information
JPH01177227A (ja) 1988-01-05 1989-07-13 Toshiba Corp 音声コーデック
US4896361A (en) 1988-01-07 1990-01-23 Motorola, Inc. Digital speech coder having improved vector excitation source
DE3853161T2 (de) 1988-10-19 1995-08-17 Ibm Vektorquantisierungscodierer.
US5060269A (en) 1989-05-18 1991-10-22 General Electric Company Hybrid switched multi-pulse/stochastic speech coding technique
US4963034A (en) 1989-06-01 1990-10-16 Simon Fraser University Low-delay vector backward predictive coding of speech
JPH0472909A (ja) 1990-07-13 1992-03-06 Sony Corp オーディオ信号の量子化誤差低減装置
US5487086A (en) 1991-09-13 1996-01-23 Comsat Corporation Transform vector quantization for adaptive predictive coding
US5327520A (en) 1992-06-04 1994-07-05 At&T Bell Laboratories Method of use of voice message coder/decoder
US5313554A (en) 1992-06-16 1994-05-17 At&T Bell Laboratories Backward gain adaptation method in code excited linear prediction coders
JP3225644B2 (ja) 1992-10-31 2001-11-05 ソニー株式会社 ノイズシェイピング回路
DE4320990B4 (de) * 1993-06-05 2004-04-29 Robert Bosch Gmbh Verfahren zur Redundanzreduktion
FR2729247A1 (fr) 1995-01-06 1996-07-12 Matra Communication Procede de codage de parole a analyse par synthese
DE19526366A1 (de) * 1995-07-20 1997-01-23 Bosch Gmbh Robert Verfahren zur Redundanzreduktion bei der Codierung von mehrkanaligen Signalen und Vorrichtung zur Dekodierung von redundanzreduzierten, mehrkanaligen Signalen
US5812971A (en) * 1996-03-22 1998-09-22 Lucent Technologies Inc. Enhanced joint stereo coding method using temporal envelope shaping
JPH10173744A (ja) 1996-12-09 1998-06-26 Sony Corp 電話システム
US6055496A (en) 1997-03-19 2000-04-25 Nokia Mobile Phones, Ltd. Vector quantization in celp speech coder
US6073092A (en) * 1997-06-26 2000-06-06 Telogy Networks, Inc. Method for speech coding based on a code excited linear prediction (CELP) model
JPH11122375A (ja) 1997-10-09 1999-04-30 Abic International:Kk 携帯電話機
JP3357829B2 (ja) 1997-12-24 2002-12-16 株式会社東芝 音声符号化/復号化方法
JPH1155363A (ja) 1998-06-05 1999-02-26 Teresen Kk 無線通信用の発信アダプター
US6014618A (en) 1998-08-06 2000-01-11 Dsp Software Engineering, Inc. LPAS speech coder using vector quantized, multi-codebook, multi-tap pitch predictor and optimized ternary source excitation codebook derivation
US6188980B1 (en) 1998-08-24 2001-02-13 Conexant Systems, Inc. Synchronized encoder-decoder frame concealment using speech coding parameters including line spectral frequencies and filter coefficients
US7171355B1 (en) * 2000-10-25 2007-01-30 Broadcom Corporation Method and apparatus for one-stage and two-stage noise feedback coding of speech and audio signals
US7110942B2 (en) * 2001-08-14 2006-09-19 Broadcom Corporation Efficient excitation quantization in a noise feedback coding system using correlation techniques
US7617096B2 (en) 2001-08-16 2009-11-10 Broadcom Corporation Robust quantization and inverse quantization using illegal space
US7610198B2 (en) 2001-08-16 2009-10-27 Broadcom Corporation Robust quantization with efficient WMSE search of a sign-shape codebook using illegal space
DE60217522T2 (de) * 2001-08-17 2007-10-18 Broadcom Corp., Irvine Verbessertes verfahren zur verschleierung von bitfehlern bei der sprachcodierung
US7206740B2 (en) 2002-01-04 2007-04-17 Broadcom Corporation Efficient excitation quantization in noise feedback coding with general noise shaping

Also Published As

Publication number Publication date
US6751587B2 (en) 2004-06-15
US20030135365A1 (en) 2003-07-17
EP1326235A2 (de) 2003-07-09
DE60226308D1 (de) 2008-06-12
EP1326235A3 (de) 2005-01-19
EP1326235B1 (de) 2008-04-30

Similar Documents

Publication Publication Date Title
DE60226308T2 (de) Quantisierung der Anregung in einem Geräuschrückkopplungskodierungssytem mit allgemeiner Rauschformung
DE19811039B4 (de) Verfahren und Vorrichtungen zum Codieren und Decodieren von Audiosignalen
DE69634645T2 (de) Verfahren und Vorrichtung zur Sprachkodierung
DE69916321T2 (de) Kodierung eines verbesserungsmerkmals zur leistungsverbesserung in der kodierung von kommunikationssignalen
DE69227650T2 (de) Digitaler Sprachkodierer
DE69518452T2 (de) Verfahren für die Transformationskodierung akustischer Signale
DE69328450T2 (de) Verfahren und Vorrichtung zur Sprachkodierung
DE4492048C2 (de) Vektorquantisierungs-Verfahren
US6980951B2 (en) Noise feedback coding method and system for performing general searching of vector quantization codevectors used for coding a speech signal
DE69932460T2 (de) Sprachkodierer/dekodierer
DE60011051T2 (de) Celp-transkodierung
DE69531642T2 (de) Synthese eines Anregungssignals bei Ausfall von Datenrahmen oder Verlust von Datenpaketen
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
DE69729527T2 (de) Verfahren und Vorrichtung zur Kodierung von Sprachsignalen
DE69426860T2 (de) Sprachcodierer und Verfahren zum Suchen von Codebüchern
DE69526017T2 (de) Vorrichtung zur Vektorquantisierung
DE60214121T2 (de) Quantisierung der Anregung bei einem &#34;noise-feedback&#34; Kodierungsverfahren
DE69121411T2 (de) Methode und gerät zur codierung von analogen signalen
DE69033510T2 (de) Numerischer sprachkodierer mit verbesserter langzeitvorhersage durch subabtastauflösung
DE69026843T2 (de) Linearer Prädiktivkodierer mit Code-Anregung für Sprach- oder Audiosignale mit niedriger Verzögerung
DE10004862B4 (de) Ein schnelles Suchverfahren für LSP-Quantisierung
DE69703233T2 (de) Verfahren und Systeme zur Sprachkodierung
DE69937907T2 (de) Sprachkodiererprozessor und sprachkodierungsmethode
US7110942B2 (en) Efficient excitation quantization in a noise feedback coding system using correlation techniques
DE68917552T2 (de) Verfahren und Einrichtung zur Codierung und Decodierung von Sprachsignalen unter Anwendung von Multipuls-Anregung.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: QUALCOMM INC., SAN DIEGO, CALIF., US