-
Technisches
Gebiet
-
Diese
Erfindung bezieht sich auf Sprachkommunikationssysteme bzw. Sprachnachrichtensysteme und
spezieller auf Systeme für
digitale Sprachcodierung.
-
Technischer
Hintergrund
-
Eine
gängige
Art und Weise menschlicher Kommunikation ist mittels Verwendung
von Kommunikationssystemen bzw. Nachrichtensystemen. Kommunikationssysteme
umfassen sowohl drahtleitungsgestützte als auch drahtlose funkgestützte Systeme.
Drahtlose Kommunikationssysteme sind mit den drahtgestützten Systemen
elektrisch verbunden und kommunizieren mit den mobilen Kommunikationsgeräten unter
Verwendung von Funkfrequenz (radio frequency, RF)-Kommunikation.
Gegenwärtig
sind die zur Kommunikation in zellularen Systemen verfügbaren Funkfrequenzen
beispielsweise in dem zellularen Frequenzbereich um 900 MHz zentriert
und in dem persönlichen
Kommunikationsdienste (personal communication services, PCS)-Frequenzbereich um
1900 MHz zentriert. Daten- und Sprachübertragungen innerhalb des
drahtlosen Systems besitzen eine Bandbreite, die einen Teil der
Funkfrequenz verbraucht. Aufgrund von zunehmendem Verkehr, der durch
die wachsende Popularität
drahtloser Kommunikationsgeräte,
wie beispielsweise Funktelefone, verursacht wird, ist es wünschenswert,
die Bandbreite von Übertragungen
innerhalb des drahtlosen Systems zu reduzieren.
-
Digitale Übertragung
bei drahtlosen Funkkommunikationen wird zunehmend sowohl auf Sprache
als auch Daten angewendet, und zwar aufgrund von Rauschimmunität, Zuverlässigkeit,
Kompaktheit der Ausrüstung
und der Fähigkeit
fortgeschrittene Signalverarbeitungsfunktionen unter Verwendung
digitaler Techniken zu implementieren. Digitale Übertragung von Sprachsignalen
umfasst die folgenden Schritte: Abtasten einer analogen Sprachwellenform
mit einem Analog-zu-Digital-Konverter, Sprachkomprimierung bzw.
Sprach kompression (Codierung), Übertragung,
Sprachdekomprimierung bzw. Sprachdekompression (Decodierung), Digital-zu-Analog-Konvertierung,
und Wiedergabe in einen Hörer
bzw. eine Hörmuschel
oder einen Lautsprecher. Die Abtastung der analogen Sprachwellenform
mit dem Analog-zu-Digital-Konverter
erzeugt ein digitales Signal. Die Anzahl der in dem digitalen Signal
verwendeten Bits zum Darstellen der analogen Sprachwellenform erzeugt
jedoch eine relativ große
Bandbreite. Beispielsweise führt
ein Sprachsignal, das mit einer Rate von 8000 Hz (einmal jede 0,125
ms) abgetastet ist, wobei jeder Abtastwert bzw. jede Tastung durch
16 Bits dargestellt ist, zu einer Bitrate von 128000 (16 × 8000)
Bits pro Sekunde oder 128 Kbps (Kilobits pro Sekunde).
-
Sprachkomprimierung
kann zum Reduzieren der Anzahl von Bits bzw. Bitanzahl, die das
Sprachsignal repräsentieren
verwendet werden und dadurch die zur Übertragung nötige Bandbreite
reduzieren. Sprachkomprimierung kann jedoch zur Degradation der
Qualität
der dekomprimierten Sprache führen.
Im Allgemeinen wird eine höhere
Bitrate zu höherer
Qualität
führen,
während
eine niedrigere Bitrate zu niedrigerer Qualität führen wird. Moderne Sprachkomprimierungstechniken,
wie beispielsweise Codierungstechniken können jedoch dekomprimierte
Sprache mit relativ hoher Qualität
bei relativ niedrigen Bitraten erzeugen. Im Allgemeinen versuchen
moderne Codierungstechniken die wichtigen wahrnehmbaren Merkmale
des Sprachsignals zu repräsentieren
und zwar ohne die tatsächliche
Sprachwellenform zu erhalten bzw. zu bewahren.
-
Eine
zum Verringern der Bitrate verwendete Codierungstechnik umfasst
das Variieren des Grades der Sprachkomprimierung (d.h. Variieren
der Bitrate) und zwar in Abhängigkeit
von dem Teil des zu komprimierenden Sprachsignals. Typischerweise
werden Teile des Sprachsignals, für die adäquate Wahrnehmungsdarstellung
bzw. Repräsentation
schwieriger ist (wie beispielsweise stimmhafte Sprache, Plosive
bzw. Verschlusslaute oder stimmhafte Einsätze bzw. stimmhaftes Einschwingen),
unter Verwendung einer höheren
Bitanzahl codiert und übertragen.
Umgekehrt werden Teile der Sprache, für die adäquate Wahrnehmungsrepräsentation weniger
schwierig ist (wie beispielsweise stimmloses, oder die Stille bzw.
Ruhe zwischen Wörtern),
mit einer niedrigeren Bitanzahl codiert. Die resultierende durchschnittliche
Bitrate für
das Sprachsignal wird relativ niedriger sein als sie es in dem Fall
einer festen bzw. fixierten Bitrate wäre, die dekomprimierte Sprache
gleicher Qualität
liefert.
-
Sprachkomprimierungssysteme,
im Allgemeinen Codecs genannt, umfassen einen Encoder und einen
Decoder und können
zum Reduzieren der Bitrate digitaler Sprachsignale verwendet werden.
Für Sprach-Codecs
wurden zahlreiche Algorithmen entwickelt, die die Bitanzahl reduzieren,
die zum digitalen Codieren der Originalsprache nötig ist, wobei versucht wird,
hohe Qualität
rekonstruierter Sprache zu erhalten. Codeangeregte lineare prädiktive
(Code-Excited Linear
Predictive, CELP) Codierungstechniken wie in dem Artikel mit dem
Titel „Code-Excited
Linear Predictive: High-Quality Speech at Very Low Rates" von M.R. Schroeder
und B.S. Atal, Proc. ICASSP-85, Seiten 937–940, 1985, liefern einen effektiven
Sprachcodierungsalgorithmus. Ein Beispiel eines CELP-basierten Sprachcoders
mit variabler Rate bzw. Geschwindigkeit ist der TIA (Telecommunications
Industry Association) IS-127 Standard, der für CDMA (Code Division Multiple
Access, Codemultiplex-Vielfachzugriff) Anwendungen ausgelegt ist,
und zwar mit dem Titel „Enhanced
Variable Rate Codec, Speech Service Option 3 für Wideband Spread Spectrum
digital Systems",
Committee, TR-45.5, Kategorie: Telecommunications, veröffentlicht
1. Januar 1997. Die CELP Codierungstechnik verwendet mehrere Prädiktionstechniken
bzw. Vorhersagetechniken zum Entfernen der Redundanz aus dem Sprachsignal.
Der CEPL Codierungsansatz ist rahmenbasiert in dem Sinn, dass er
abgetastete Eingangssprachsignale speichert und zwar in einen Block
von Tastungen, als Rahmen bezeichnet. Die Datenrahmen können dann
zum Kreieren eines komprimierten Sprachsignals in digitaler Form
verarbeitet werden.
-
Der
CELP Codierungsansatz verwendet zwei Arten von Prädiktoren,
einen Kurzzeitprädiktor (short-term
predictor) und einen Langzeitprädiktor
(long-term predictor). Der Kurzzeitprädiktor wird typischerweise
vor dem Langzeitprädiktor
angewendet. Ein von dem Kurzzeitprädiktor abgeleiteter Prädiktionsfehler wird üblicherweise
Kurzzeitrest bzw. Kurzzeitresidum (short-term residual) genannt
und ein von dem Langzeitprädiktor
abgeleiteter Prädiktionsfehler
wird üblicherweise
Langzeitrest genannt. Der Langzeitrest kann unter Verwendung eines
festen bzw. fixierten Codebuchs codiert werden, wobei das Codebuch
eine Vielzahl von festen bzw. fixierten Codebucheinträgen oder
Vektoren umfasst. Einer der Einträge kann ausgewählt werden
und mit einem festen Codebuchgewinn multipliziert werden, und zwar
um den Langzeitrest darzustellen. Der Kurzzeitprädiktor kann auch als eine LPC
(Linear Prediction Coding, lineare Prädiktionscodierung) oder als
eine spektrale Darstellung bezeichnet werden und enthält typischerweise
10 Prädiktionsparameter.
Der Langzeitprädiktor
kann auch als ein Tonhöhenprädiktor (pitch
predictor) oder als ein adaptives Codebuch bezeichnet werden und
enthält
typischerweise einen Verzögerungs-
bzw. Nacheil- bzw. Abstandsparameter (lag parameter) und einen Langzeitprädiktor-Verstärkungsparameter
(gain parameter). Jeder Abstandsparameter kann auch Tonhöhenabstand
(pitch lag) genannt werden, und jeder Langzeitprädiktor-Verstärkungsparameter
kann auch eine adaptive Codebuchverstärkung genannt werden. Der Abstandsparameter
definiert einen Eintrag oder einen Vektor in dem adaptiven Codebuch.
-
Der
CELP Codierer führt
zum Bestimmen der Kurzzeitprädiktorparameter
eine LPC Analyse durch. Im Anschluss an die LPC Analyse können die
Langzeitprädiktorparameter
bestimmt werden. Zusätzlich
findet eine Bestimmung des festen Codebucheintrags und des festen
Codebuchgewinns bzw -verstärkung
statt, und zwar der die am Besten den Langzeitrest repräsentieren.
Das leistungsfähige
Konzept der Analyse durch Synthese (analysis-by-synthesis, ABS) wird beim CELP Codieren
angewendet. In dem ABS Ansatz können
der beste Beitrag von dem festen Codebuch, der beste feste Codebuchgewinn
und die besten Langzeitprädiktorparameter
gefunden werden und zwar indem diese durch Synthese aufgebaut werden
unter Verwendung eines inversen Präditionsfilters und Anwenden
eines Wahrnehmungsgewichtungsmaßes
(perceptual weighting measure). Die Kurzzeit (LPC)-Prädiktionskoeffizienten,
der feste Codebuchgewinn, wie auch der Abstandsparameter und der
Langzeitverstärkungsparameter
können
dann quantisiert werden. Die Quantisierungsindizes, wie auch die
festen Codebuchindizes, können
von dem Codierer zu dem Decoder gesendet werden.
-
Der
CELP Decoder verwendet die festen Codebuchindizes um einen Vektor
aus dem festen Codebuch zu extrahieren. Der Vektor kann mit dem
festen Codebuchgewinn multipliziert werden und zwar um eine Langzeitanregung
zu kreieren, die auch als fester Codebuchbeitrag bekannt ist. Ein
Langzeitprädiktorbeitrag
kann zu der Langzeitanregung addiert werden, und zwar um eine Kurzzeitanregung
zu kreieren, die allgemein einfach als eine Anregung bezeichnet
wird. Der Langzeitprädiktorbeitrag
enthält
die Kurzzeitanregung aus der Vergangenheit, multipliziert mit dem
Langzeitprädiktorgewinn.
Die Addition des Langzeitprädiktorbeitrags
kann alternativ als ein adaptiver Codebuchbeitrag oder als eine
Langzeit (Tonhöhen)-Filterung
gesehen werden. Die Kurzzeitanregung kann durch einen kurzzeitinversen
Prädiktionsfilter
(LPC) gegeben werden, der die Kurzzeit (LPC)-Prädiktionskoeffizienten verwendet,
die von dem Codierer quantisiert wurden, um synthetisierte Sprache
zu erzeugen. Die synthetisierte Sprache kann dann durch einen Nachfilter
(postfilter) laufen, der wahrnehmbares Codierungsrauschen reduziert.
-
Diese
Sprachkomprimierungstechniken haben zu einer Verminderung des zur Übertragung
eines Sprachsignals verwendeten Bandbreitenumfangs geführt. Weitere
Bandbreitenreduktion ist jedoch besonders wichtig bei einem Kommunikationssystem,
das seine Ressourcen an eine große Anzahl von Nutzern verteilen muss.
Entsprechend gibt es einen Bedarf für Systeme und Verfahren zur
Sprachcodierung, die geeignet sind, die zur Sprachdarstellung benötigte durchschnittliche
Bitrate zu minimieren, und dabei hohe Qualität dekomprimierter Sprache zu
liefern.
-
Offenbarung
der Erfindung
-
Diese
Erfindung liefert Systeme zum Codieren und Decodieren von Sprachsignalen.
Die Ausführungsbeispiele
können
die CELP Codierungstechnik und prädiktionsbasierende Codierung
verwenden und zwar als einen Rahmen zum Anwenden von Signalverarbeitungsfunktionen,
unter Verwendung von Wellenformabgleich und wahrnehmungsbezogenen
Techniken bzw. Verfahren. Diese Techniken erlauben die Erzeugung bzw.
Generierung von synthetisierter Sprache, die nahe bzw. genau der
originalen Sprache ähnelt,
und zwar durch Einbeziehen von Wahrnehmungsmerkmalen bei Aufrechterhaltung
einer relativ niedrigen Bitrate. Eine Anwendung der Ausführungsbeispiele
ist bei drahtlosen Kommunikationssystemen. In dieser Anwendung kann
die Codierung von Originalsprache oder die Decodierung zum Erzeugen
synthetisierter Sprache bei Mobilkommunikationsgeräten stattfinden.
Zusätzlich
kann Codierung und Decodierung innerhalb drahtgestützter Systeme
oder innerhalb anderer drahtloser Kommunikationssysteme stattfinden,
und zwar zum Vorsehen von Interfaces bzw. Schnittstellen zu drahtgestützten Systemen.
-
Ein
Ausführungsbeispiel
eines Sprachkomprimierungssystems umfasst einen-Vollraten-Codec, einen Halbraten-Codec,
einen Viertelraten-Codec und einen Achtelraten-Codec, wobei jeder
geeignet ist, Sprachsignale zu codieren und zu decodieren. Die Vollraten-,
Halbraten-, Viertelraten- und Achtelraten-Codecs codieren die Sprachsignale mit
Bitraten von 8,5 Kbps, 4 Kbps, 2 Kbps bzw. 0,8 Kbps. Das Sprachkomprimierungssystem
führt eine
Ratenwahl bzw. Ratenauswahl bzw. Ratenselektion für einen
Rahmen eines Sprachsignals durch, um einen der Codecs auszuwählen. Die
Ratenauswahl wird auf einer rahmenweisen Grundlage durchgeführt. Rahmen
werden kreiert durch Unterteilen des Sprachsignals in Segmente mit
einer begrenzten Zeitdauer. Da jeder Rahmen mit einer unterschiedlichen
Bitrate bzw. Bitgeschwindigkeit codiert werden kann, ist das Sprachkomprimierungssystem
ein Sprachkomprimierungssystem mit variabler Rate bzw. Geschwindigkeit,
das die Sprache mit einer durchschnittlichen Bitrate codiert.
-
Die
Ratenauswahl wird bestimmt durch Charakterisierung jedes Rahmens
des Sprachsignals und zwar basierend auf dem Anteil des Sprachsignals,
das in dem bestimmten Rahmen enthalten ist. Beispielsweise können Rahmen
wie folgt charakterisiert werden: stationär stimmhaft, nicht-stationär stimmhaft,
stimmlos, Hintergrundrauschen, Ruhe usw. Zusätzlich basiert die Ratenaus wahl
auf einem Modus innerhalb dessen das Sprachkomprimierungssystem
operiert bzw. betrieben wird. Die unterschiedlichen Modi zeigen
die gewünschte
durchschnittliche Bitrate an. Die Codecs werden für optimierte
Codierung entworfen bzw. bestimmt, und zwar innerhalb der unterschiedlichen
Charakterisierungen des Sprachsignals. Optimale Codierung wägt ab zwischen
dem Wunsch synthetisierte Sprache der höchsten wahrnehmbaren Qualität zu liefern
und dem Beibehalten der gewünschten
bzw. Soll-Durchschnittsbitrate,
um dadurch die Verwendung der vorhandenen Bandbreite zu maximieren.
Während
des Betriebs aktiviert das Sprachkomprimierungssystem wahlweise
die Codecs und zwar basierend sowohl auf dem Modus als auch der
Charakterisierung des Rahmens in einem Bestreben, die wahrnehmbare
Qualität
der synthetisierten Sprache zu optimieren.
-
Sobald
der Voll- oder der Halbraten-Codec von der Ratenauswahl ausgewählt wurde,
findet eine Typklassifizierung des Sprachsignals statt, zum weiteren
Optimieren der Codierung. Die Typklassifizierung kann ein erster
Typ (d.h. ein Typ Eins (Type One)) für Rahmen sein, die eine harmonische
Struktur und eine Formantstruktur beinhalten, die sich nicht schnell ändert, oder
ein zweiter Typ (d.h. ein Typ Null (Type Zero)) für alle anderen
Rahmen sein. Die Bitzuordnung der Vollraten- und Halbraten-Codecs
kann ansprechend auf die Typklassifizierung eingestellt werden und
zwar um die Codierung des Rahmens weiter zu optimieren. Die Einstellung
der Bitzuordnung liefert verbesserte wahrnehmbare Qualität des rekonstruierten
Sprachsignals und zwar durch Betonen bzw. Hervorheben unterschiedlicher
Aspekte des Sprachsignals innerhalb jedes Rahmens.
-
Entsprechend
ist der Sprachcodierer geeignet, die Codecs wahlweise zu aktivieren
und zwar um die Gesamtqualität
eines rekonstruierten Sprachsignals zu maximieren, während die
gewünschte
durchschnittliche Bitrate beibehalten wird. Andere Systeme, Verfahren,
Merkmale und Vorteile der Erfindung sind oder werden für einen
Fachmann, bei der Betrachtung der folgenden Figuren und detaillierten
Beschreibung, klar werden. Es ist beabsichtigt, dass alle solche
zusätzlichen
Systeme, Verfahren, Merkmale und Vorteile in diese Be schreibung
einbezogen werden, innerhalb des Rahmens der Erfindung liegen und
von den begleitenden Ansprüchen
geschützt
werden.
-
Kurze Beschreibung
der Zeichnungen
-
Die
Komponenten in den Figuren sind nicht notwendigerweise maßstabsgetreu,
stattdessen liegt der Schwerpunkt beim Erläutern der Prinzipien der Erfindung.
Außerdem
bezeichnen in den Figuren gleiche Bezugszeichen überall in den unterschiedlichen
Ansichten übereinstimmende
Teile.
-
1 zeigt
ein Blockdiagramm eines Ausführungsbeispiels
eines Sprachkomprimierungssystems.
-
2 zeigt
ein erweitertes Blockdiagramm eines Ausführungsbeispiels des in 1 dargestellten
Codierungssystems.
-
3 zeigt
ein erweitertes Blockdiagramm eines Ausführungsbeispiels des in 1 dargestellten
Decodierungssystems.
-
4 zeigt
eine Tabelle, die die Bitzuordnung eines Ausführungsbeispiels des Vollraten-Codec
darstellt.
-
5 zeigt
eine Tabelle, die die Bitzuordnung eines Ausführungsbeispiels des Halbraten-Codec
darstellt.
-
6 zeigt
eine Tabelle, die die Bitzuordnung eines Ausführungsbeispiels des Viertelraten-Codec
darstellt.
-
7 zeigt
eine Tabelle, die die Bitzuordnung eines Ausführungsbeispiels des Achtelraten-Codec
darstellt.
-
8 zeigt
ein erweitertes Blockdiagramm eines Ausführungsbeispiels des in 2 dargestellten
Vorverarbeitungsmoduls.
-
9 zeigt
ein erweitertes Blockdiagramm eines Ausführungsbeispiels des in 2 dargestellten
Initiale- bzw. Anfangsrahmenverarbeitungsmoduls für die Voll-
und Halbraten-Codecs
-
10 zeigt ein erweitertes Blockdiagramm eines Ausführungsbeispiels
des in 2 dargestellten ersten Teil-
bzw. Unterrahmenverarbeitungsmoduls für die Voll- und Halbraten-Codecs
-
11 zeigt ein erweitertes Blockdiagramm eines Ausführungsbeispiels
des in 2 dargestellten ersten Rahmenverarbeitungsmoduls,
des zweiten Unterrahmenverarbeitungsmoduls und des zweiten Rahmenverarbeitungsmoduls
für die
Voll- und Halbraten-Codecs.
-
12 zeigt ein erweitertes Blockdiagramm eines Ausführungsbeispiels
für das,
in 3 dargestellte, Decodierungssystem für die Voll-
und Halbraten-Codecs.
-
Modi zum Ausführen der
Erfindung
-
Die
Ausführungsbeispiele
werden erläutert
mit Bezug auf Sprachsignale, die Verarbeitung irgendwelcher anderer
Signale ist jedoch möglich.
Es ist auch selbstverständlich,
dass die offenbarten nummerischen Werte nummerisch dargestellt werden
können
durch Fließkomma-
(floating point), Festkomma- (fixed
point), Dezimal- oder andere gleichartige nummerische Darstellung,
die leichte Variation in den Werten verursachen kann, aber die Funktionalität nicht
beeinträchtigt.
Ferner sind als Module bezeichnete funktionale Blöcke nicht dazu
gedacht diskrete Strukturen darzustellen und können in verschiedenen Ausführungsbeispielen
kombiniert oder weiter unterteilt werden.
-
1 zeigt
ein Blockdiagramm eines Ausführungsbeispiels
des Sprachkomprimierungssystems 10. Das Sprachkomprimierungssystem 10 umfasst
ein Codierungssystem 12, ein Kommunikationsmedium 14 und ein
Decodierungssystem 16, die wie dargestellt, verbunden sein
können.
Das Sprachkomprimierungssystem 10 kann irgendein System
sein, das geeignet ist, ein Sprachsignal 18 zu empfangen
und zu codieren, und es dann zu decodieren um nachverarbeitete (post-processed)
synthetisierte Sprache 20 zu kreieren bzw. zu erzeugen.
In einem typischen Kommunikationssystem ist das drahtlose Kommunikationssystem
mit einem öffentlichen
Telefonnetz (public switched telephone network, PSTN) elektrisch
verbunden und zwar innerhalb des drahtgestützten Kommunikationssystems.
Innerhalb des drahtlosen Kommunikationssystems werden typischerweise
eine Vielzahl von Basisstationen verwendet um Funkkommunikation
vorzusehen, und zwar mit mobilen Kommunikati onsgeräten, wie
beispielsweise einem Mobiltelefon (cellular telephone) oder einem
tragbaren Funktransceiver.
-
Das
Sprachkomprimierungssystem 10 arbeitet um das Sprachsignal 18 zu
empfangen. Das von einem Sende (nicht gezeigt) ausgesendete Sprachsignal 18 kann
beispielsweise von einem Mikrofon (nicht gezeigt) eingefangen werden,
und durch einen Analog-zu-Digital-Konverter (nicht gezeigt) digitalisiert
werden. Der Sender kann eine menschliche Sprache, ein Musikinstrument
oder irgendein anderes Gerät
sein, das geeignet ist, analoge Signale auszusenden. Das Sprachsignal 18 kann
irgendeinen Klangtyp repräsentieren,
wie beispielsweise stimmhafte Sprache, stimmlose Sprache, Hintergrundrauschen,
Stille, Musik usw.
-
Das
Codierungssystem 12 wird betrieben zum Codieren des Sprachsignals 18.
Das Codierungssystem 12 kann Teil eines mobilen Kommunikationsgeräts, einer
Basisstation oder irgendeines anderen drahtlosen oder Drahtleitungskommunikationsgeräts sein,
das geeignet ist, durch einen Analog-zu-Digital-Konverter digitalisierte Sprachsignale 18 zu
empfangen und zu codieren. Die Drahtleitungskommunikationsgeräte können Sprache über Internetprotokoll
(Voice over Internet Protocol, VoIP)-Geräte und Systeme umfassen. Das Codiersystem 12 segmentiert
das Sprachsignal 18 in Rahmen um einen Bitstrom zu generieren.
Ein Ausführungsbeispiel
des Sprachkomprimierungssystems 10 verwendet Rahmen, die
160 Abtastungen bzw. Tastungen enthalten bzw. aufweisen, was bei
einer Abtastrate von 8000 Hz 20 Millisekunden pro Rahmen entspricht. Die
von dem Bitstrom repräsentierten
Rahmen können
an das Kommunikationsmedium 14 geliefert werden.
-
Das
Kommunikationsmedium 14 kann irgendein Übertragungsmechanismus sein,
wie beispielsweise ein Kommunikationskanal, Funkwellen, Mikrowellendrahtübertragungen,
Glasfaserübertragungen
oder irgendein Medium, das geeignet ist, den vom Codierungssystem 12 generierten
Bitstrom zu befördern.
Das Kommunikationsmedium 14 kann auch Sende- bzw. Übertragungsgeräte und Empfangsgeräte umfassen,
die bei der Übertragung
des Bitstroms ver wendet werden. Ein beispielhaftes Ausführungsbeispiel
des Kommunikationsmediums 14 kann Kommunikationskanäle, Antennen
und zugeordnete Transceiver zur Funkkommunikation in einem drahtlosen
Kommunikationssystem umfassen. Das Kommunikationsmedium 14 kann
auch ein Speichermechanismus sein, wie beispielsweise ein Speichergerät, ein Aufbewahrungsmedium
oder anderes Gerät,
das geeignet ist zum Aufbewahren bzw. Speichern und Wiedergewinnen
des vom Codiersystem 12 generierten Bitstroms. Das Kommunikationsmedium 14 wird
betrieben zum Senden bzw. Übertragen
des vom Codiersystem 12 generierten Bitstroms zu dem Decodiersystem 16.
-
Das
Decodiersystem 16 empfängt
den Bitstrom von dem Kommunikationsmedium 14. Das Decodiersystem 16 (14)
kann Teil eines mobilen Kommunikationsgeräts sein, einer Basisstation
oder anderen drahtlosen oder Drahtleitungskommunikationsgerät sein,
das geeignet ist, den Bitstrom zu empfangen. Das Decodiersystem 16 wird
betrieben zum Decodieren des Bitstroms und zum Generieren der nachverarbeiteten
synthetisierten Sprache 20, und zwar in der Form eines
digitalen Signals. Die nachverarbeitete synthetisierte Sprache 20 kann
dann durch einen Digital-zu-Analog-Converter (nicht gezeigt) in
ein Analogsignal konvertiert werden. Der Analogaussgang des Digital-zu-Analog-Converters
kann durch einen Empfänger
(nicht gezeigt) empfangen werden, der ein menschliches Ohr, ein
Magnetbandrecorder oder irgendein anderes Gerät sein kann, das geeignet ist,
ein Analogsignal zu empfangen. Alternativ kann ein digitales Aufnahmegerät, ein Spracherkennungsgerät oder irgendein
anderes Gerät,
das geeignet ist ein digitales Signal zu empfangen, die nachverarbeitete
synthetisierte Sprache 20 empfangen.
-
Ein
Ausführungsbeispiel
des Sprachkomprimierungssystems 10 umfasst auch eine Modusleitung 21. Die
Modusleitung 21 führt
bzw. trägt
ein Modussignal, das das Sprachkomprimierungssystem 10 steuert,
und zwar durch Anzeigen der gewünschten
durchschnittlichen Bitrate für
den Bitstrom. Das Modussignal kann extern generiert werden, durch
beispielsweise ein drahtloses Kommunikationssystem, das ein Modussignalgenerierungsmodul
verwendet. Das Modussignalgenerierungsmodul bestimmt das Modussignal
und zwar basierend auf einer Vielzahl von Faktoren, wie beispielsweise
der gewünschten
Qualität
der nachverarbeiteten synthetisierten Sprache 20, der verfügbaren Bandbreite,
den von einem Nutzer bezogenen Diensten oder irgendeinem anderen
relevanten Faktor. Das Modussignal wird von dem Kommunikationssystem,
innerhalb dessen das Sprachkomprimierungssystem 10 betrieben
wird gesteuert und ausgewählt.
Das Modussignal kann an das Codierungssystem 12 geliefert
werden, um bei der Bestimmung welcher der Vielzahl von Codecs innerhalb
des Codierungssystems 12 aktiviert werden kann, zu helfen.
-
Die
Codecs beinhalten einen Codierabschnitt bzw. -anteil und einen Decodierabschnitt
bzw. -anteil, die innerhalb des Codierungssystems 12 bzw.
des Decodiersystems 16 lokalisiert sind. In einem Ausführungsbeispiel
des Sprachkomprimierungssystems 10 gibt es vier Codecs,
und zwar wie folgt: einen Vollraten-Codec 22, einen Halbraten-Codec 24,
einen Viertelraten-Codec 26 und einen Achtelraten-Codec 28.
Jeder der Codecs 22, 24, 26 und 28 ist
betreibbar zum Generieren des Bitstroms. Die Größe des Bitstroms, der von jedem
Codec 22, 24, 26 und 28 generiert
wird, und somit die Bandbreite oder Kapazität, die zur Übertragung des Bitstroms über das
Kommunikationsmedium 14 benötigt wird, ist unterschiedlich.
-
In
einem Ausführungsbeispiel
generieren bzw. erzeugen der Vollraten-Codec 22, der Halbraten-Codec 24,
der Viertelraten-Codec 26 bzw. der Achtelraten-Codec 28 pro
Rahmen 170 Bits, 80 Bits, 40 Bits bzw. 16 Bits. Die Größe des Bitstroms
jedes Rahmens entspricht einer Bitrate und zwar 8,5 Kbps für den Vollraten-Codec 22,
4,0 Kbps für
den Halbraten-Codec 24, 2,0 Kbps für den Viertelraten-Codec 26 und
0,8 Kbps für
den Achtelraten-Codec 28. Jedoch sind weniger oder mehr
Codecs sowie auch andere Bitraten in alternativen Ausführungsbeispielen
möglich.
Durch Verarbeitung der Rahmen des Sprachsignals 18 mit
den verschiedenen Codecs wird eine durchschnittliche Bitrate erreicht.
Das Codierungssystem 12 bestimmt welcher der Codecs, 22, 24, 26 und 28 verwendet
werden kann zum Codieren eines speziellen Rahmens und zwar basierend
auf der Charakterisierung des Rahmens und auf der durch das Modussignal
gelieferten gewünschten
durchschnittlichen Bitrate. Charakterisierung eines Rahmens basiert
auf dem Abschnitt des in dem speziellen Rahmen enthaltenen Sprachsignals 18.
Beispielsweise können
Rahmen charakterisiert werden als stationär stimmhaft, nicht-stationär stimmhaft,
stimmlos, Einschwingen bzw. Anlaut (onset), Hintergrundrauschen,
Stille usw.
-
Das
Modussignal auf der Modussignalleitung 21 kennzeichnet
in einem Ausführungsbeispiel
einen Modus 0, einen Modus 1 und einen Modus 2. Jeder der drei Modi
liefert eine unterschiedliche gewünschte durchschnittliche Bitrate,
die den Prozentsatz der Verwendung jedes der Codecs 22, 24, 26 und 28 variieren kann.
Modus 0 kann als ein Premiummodus bezeichnet werden, in dem die
meisten der Rahmen mit dem Vollraten-Codec 22 codiert werden
können;
wenigere der Rahmen können
mit dem Halbraten-Codec 24 codiert werden; und Rahmen,
die Stille bzw. Ruhe und Hintergrundrauschen enthalten können mit
dem Viertelraten-Codec 26 und dem Achtelraten-Codec 28 codiert
werden. Modus 1 kann als ein Standardmodus bezeichnet werden, in
dem Rahmen mit hohem Informationsinhalt wie beispielsweise Anlaute
und einige stimmhafte Rahmen mit dem Vollraten-Codec 22 codiert
werden können.
Zusätzlich
können
andere stimmhafte und stimmlose Rahmen mit dem Halbraten-Codec 24 codiert
werden, einige stimmlose Rahmen können mit dem Viertelraten-Codec 26 codiert
werden und stille und stationäre
Hintergrundrauschrahmen können
mit dem Achtelraten-Codec 28 codiert werden.
-
Modus
2 kann als ein wirtschaftlicher Modus bezeichnet werden, in dem
nur einige Rahmen mit hohem Informationsinhalt mit dem Vollraten-Codec 22 codiert
werden können.
Die meisten der Rahmen im Modus 2 können mit dem Halbraten-Codec 24 codiert
werden, mit der Ausnahme einiger stimmloser Rahmen, die mit dem
Viertelraten-Codec 26 codiert werden können. Stille und stationäre Hintergrundrauschrahmen
können
mit dem Achtelraten-Codec 28 im Modus 2 codiert werden.
Entsprechend kann das Sprachkomprimierungssystem 10 durch
Variieren der Auswahl der Codecs 22, 24, 26 und 28 rekonstruierte
Sprache mit der gewünschten durchschnittlichen
Bitrate liefern und zwar in einem Bestreben die höchstmögliche Qualität zu erhalten.
Zusätzliche Modi,
wie beispielsweise ein Modus 3, der in einem superwirtschaftlichen
Modus betrieben wird, oder einem Halbratenmaxmodus, bei dem der
maximal aktivierte Codec der Halbratenmodus 24 ist, sind
in alternativen Ausführungsbeispielen
möglich.
-
Weitere
Steuerung des Sprachkomprimierungssystems 10 kann auch
durch eine Halbratensignalleitung 30 vorgesehen sein. Die
Halbratensignalleitung 30 liefert einen Halbratensignalisiermarker
bzw. -anzeige (flag). Die Halbratensignalisiermarker kann durch
eine Quelle, wie beispielsweise einem drahtlosen Kommunikationssystem,
geliefert werden. Wenn er aktiviert bzw. gesetzt ist, weist der
Halbratensignalisiermarker das Sprachkomprimierungssystem 10 an,
den Halbraten-Codec 24 als die maximale Rate zu verwenden.
Die Bestimmung wann der Halbratensignalisiermarker zu aktivieren
ist, wird durch das Kommunikationssystem durchgeführt innerhalb
dessen das Sprachkomprimierungssystem 10 betrieben wird. Ähnlich wie
bei der Modussignalbestimmung steuert ein Halbratensignalisiermodul
die Aktivierung des Halbratensignalisiermarkers und zwar basierend
auf einer Vielzahl von Faktoren, die durch das Kommunikationssystem
bestimmt werden. In alternativen Ausführungsbeispielen könnte der
Halbratensignalisiermarker das Sprachkomprimierungssystem 10 anweisen,
einen Codec 22, 24, 26 und 28 anstelle
eines anderen zu verwenden oder einen oder mehrere der Codecs 22, 24, 26 und 28 als
maximale oder minimale Rate bestimmen.
-
In
einem Ausführungsbeispiel
des Sprachkomprimierungssystems 10 können die Voll- und Halbraten-Codec 22 und 24 auf
einem eX-CELP (extended CELP, erweiterter CELP)-Ansatz basieren
und die Viertel- und Achtelraten-Codec 26 und 28 können auf
einem Wahrnehmungsanpassungsansatz bzw. -vorgehensweise basieren.
Der eX-CELP Ansatz erweitert die traditionelle Balance zwischen
Wahrnehmungsanpassung bzw. Abgleich und Wellenformanspassung des
traditionellen CELP und wird beschrieben in einer Veröffentlichung
mit dem Titel „EX-CELP:
A SPEECH CODING PARADIGM".
Veröffentlicht
in „The
Proceedings of the ICASSP 2001, Salt Lake Cite, UTAH; Mai 2001,
Seiten 689–692
von Gao et al. Im Speziellen kategorisiert der eX-CELP Ansatz die
Rahmen unter Verwendung einer Ratenselektion bzw. -auswahl und einer
Typklassifizierung, die später
beschrieben wird. Innerhalb der unterschiedlichen Rahmenkategorien
können
unterschiedliche Codierungsansätze
verwendet werden, die unterschiedliche Wahrnehmungsanpassung, unterschiedliche Wellenformanpassung
und unterschiedliche Bitzuweisungen besitzen. Der Wahrnehmungsanpassungsansatz des
Viertelraten-Codec 26 und des Achtelraten-Codec 28 verwendet
keine Wellenformanpassung und ist stattdessen beim Codieren von
Rahmen auf Wahrnehmungsaspekte konzentriert.
-
Die
Codierung jedes Rahmen mit entweder dem eX-CELP Ansatz oder dem
Wahrnehmungsanpassungsansatz kann basieren auf weiterem Unterteilen
des Rahmens in eine Vielzahl von Teil- bzw. Unterrahmen. Die Unterrahmen
können
für jeden
Codec 22, 24, 26 und 28 in Größe und Anzahl
unterschiedlich sein. Zusätzlich
können
bezüglich
des eX-CELP Ansatzes die Unterrahmen für jede Kategorie unterschiedlich
sein. Innerhalb der Unterrahmen können Sprachparameter und Wellenformen
mit verschieden prädiktiven
und nicht-prädiktiven
Scalar- und Vektorquantisierungstechniken codiert werden. Bei Scalarquantisierung
kann ein Sprachparameter oder -element durch einen Indexort bzw.
eine Indexstelle (index location) des nächsten bzw. nächstgelegenen
Eintrags in einer repräsentativen
Scalartabelle repräsentiert
werden. Bei Vektorquantisierung können verschiedene Sprachparameter
gruppiert werden, um einen Vektor zu bilden bzw. zu formen. Der Vektor
kann durch einen Indexort des nächstgelegenen
Eintrags in einer repräsentativen
Vektortabelle repräsentiert
werden.
-
Bei
prädiktiver
Codierung kann ein Element aus der Vergangenheit prädiktiert
bzw. vorhergesagt werden. Das Element kann ein Skalar oder ein Vektor
sein. Der Prädiktionsfehler
kann dann quantisiert werden, und zwar durch Verwendung einer Skalartabelle
(Skalarquantisierung) oder einer Vektortabelle (Vektorquantisierung).
Der eX-CELP Codierungsansatz, ähnlich
dem traditionellen CELP, verwendet das leistungsfähige Analyse-durch-Synthese
(Analysis-by-Synthesis,
ABS)-Schema zur Auswahl der besten Repräsentation bzw. Dar stellung
verschiedener Parameter. Insbesondere können die Parameter das adaptive
Codebuch, das feste bzw. fixierte Codebuch und ihre entsprechenden
Verstärkungen
sein. Das ABS Schema verwendet inverse Prediktionsfilter und wahrnehmungsangepasste
Maße bzw.
Messungen zur Auswahl der besten Codebucheinträge.
-
Eine
Implementierung eines Ausführungsbeispiels
des Sprachkomprimierungssystems 10 kann in einem Signalverarbeitungsgerät, wie beispielsweise
einem digitalen Signalverarbeitungs (Digital Signal Processing,
DSP)-Chip, einem mobilen Kommunikationsgerät oder einer Funktübertragungsbasisstation
sein. Das Signalverarbeitungsgerät
kann mit Quellcode (source code) programmiert werden. Der Quellcode
muss erst in Festkomma übersetzt
werden und dann in die Programmiersprache übersetzt werden, die speziell
für das
Signalverarbeitungsgerät
ist. Der übersetzte
Quellcode kann dann in das Signalverarbeitungsgerät hinuntergeladen
werden und ablaufen. Ein Beispiel von Quellcode ist das von einem
Ausführungsbeispiel
des Sprachkomprimierungssystems 10 verwendete Computerprogramm
in der C-Sprache, das in dem beigefügten Mikrofilmanhang als Anhang
A und B einbezogen ist.
-
2 zeigt
ein detaillierteres Blockdiagramm des in 1 dargestellten
Codiersystems 12. Ein Ausführungsbeispiel des Codiersystems 12 umfasst
ein Vorverarbeitungsmodul (pre-processing module) 34, einen Vollraten-Codierer
(full-rate encoder) 36, einen Halbraten-Codierer (half-rate
encoder) 38, einen Viertelraten-Codierer (quarter-rate
encoder) 40 und einen Achtelraten-Codierer (eigth-rate encoder) 42,
die wie dargestellt, verbunden werden können. Die Raten-Codierer 36, 38, 40 und 42 umfassen
ein Anfangs- bzw. Initialrahmenverarbeitungsmodul 44 und
ein Anregungsverarbeitungsmodul 54.
-
Das
vom Codiersystem 12 empfangene Sprachsignal 18 wird
auf einer Rahmenebene von dem Vorverarbeitungsmodul 34 verarbeitet.
Das Vorverarbeitungsmodul 34 wird betrieben um eine Anfangsverarbeitung
des Sprachsignals 18 vorzusehen. Die Anfangsverarbeitung
kann Filterung, Signalverstärkung
bzw. -anhebung, Rauschentfernung, Verstärkung und andere ähnliche Techniken
umfassen, die geeignet sind, das Sprachsignal 18 für nachfolgende
Codierung zu optimieren.
-
Die
Voll-, Halb-, Viertel- und Achtelraten-Codierer 36, 38, 40 bzw. 42 sind
die Codierabschnitte bzw. -anteile des Voll-, Halb-, Viertel bzw.
Achtelraten-Codecs 22, 24, 26 bzw. 28.
Das Anfangsrahmenverarbeitungsmodul 44 führt anfängliche
Rahmenverarbeitung, Sprachparameterextraktion durch und bestimmt
welcher der Raten-Codierer 36, 38, 40 und 42 einen
bestimmten Rahmen codieren wird. Das Anfangsrahmenverarbeitungsmodul 44 kann
zur Darstellung in eine Vielzahl von Anfangsrahmenverarbeitungsmodulen
unterteilt werden und zwar in ein Anfangsvollrahmenverarbeitungsmodul 46,
ein Anfangshalbrahmenverarbeitungsmodul 48, ein Anfangsviertelrahmenverarbeitungsmodul 50 und
ein Anfangsachtelrahmenverarbeitungsmodul 52. Jedoch sollte
bemerkt werden, dass das Anfangsrahmenverarbeitungsmodul 44 Verarbeitung
durchführt, die
allen der Raten-Codierer 36, 38, 40 und 42 gemeinsam
ist, und spezielle Verarbeitung durchführt, die speziell ist für jeden
Raten-Codierer 36, 38, 40 und 42.
Die Unterteilung des Anfangsrahmenverarbeitungsmoduls 44 in
die entsprechenden Anfangsrahmenverarbeitungsmodule 46, 48, 50 und 52 korrespondiert
mit einem entsprechenden Raten-Codierer 36, 38, 40 und 42.
-
Das
Anfangsrahmenverarbeitungsmodul 44 führt zum Bestimmen einer Ratenauswahl
bzw. Ratenwahl (rate selection), die einen der Raten-Codierer 36, 38, 40 und 42 aktiviert,
gemeinsame Verarbeitung durch. In einem Ausführungsbeispiel basiert die
Ratenwahl auf der Charakterisierung des Rahmens des Sprachsignal 18 und
dem Modus innerhalb dessen das Sprachkomprimierungssystem 10 betrieben
wird. Aktivierung eines der Raten-Codierer 36, 38, 40 und 42 aktiviert
entsprechend eines der Anfangsrahmenverarbeitungsmodule 46, 48, 50 und 52.
-
Das
spezielle Anfangsrahmenverarbeitungsmodul 46, 48, 50 und 52 wird
zum Codieren von Aspekten des Sprachsignals 18, die dem
gesamten Rahmen gemeinsam sind, aktiviert. Die Codierung durch das
Anfangsrahmenverarbei tungsmodul 44 quantisiert Parameter
des in einem Rahmen enthaltenen Sprachsignals 18. Die quantisierten
Parameter führen
zur Generierung bzw. Erzeugung eines Teils bzw. Anteils des Bitstroms.
Im Allgemeinen ist der Bitstrom die komprimierte Darstellung eines
Rahmens des Sprachsignals 18, der durch das Codiersystem 12 durch
einen der Raten-Codierer 36, 38, 40 und 42 verarbeitet
worden ist.
-
Zusätzlich zu
der Ratenauswahl führt
das Anfangsrahmenverarbeitungsmodul 44 Verarbeitung durch, um
eine Typklassifikation für
jeden Rahmen zu bestimmen, der durch die Voll- und Halbraten-Codierer 36 und 38 verarbeitet
wird. Die Typklassifikation eines Ausführungsbeispiels klassifiziert
das durch einen Rahmen repräsentierte
Sprachsignal 18 als einen ersten Typ (d.h. ein Typ Eins)
oder als einen zweiten Typ (d.h. ein Typ Null). Die Typklassifikation
eines Ausführungsbeispiels
ist abhängig
von der Art und Charakteristika des Sprachsignals 18. In
einem alternativen Ausführungsbeispiel
können
zusätzliche
Typklassifikationen und unterstützende
Verarbeitung vorgesehen sein.
-
Typ
Eins Klassifizierung umfasst Rahmen des Sprachsignals 18,
die stationäres
Verhalten zeigen. Stationäres
Verhalten zeigende Rahmen umfassen eine harmonische Struktur und
eine Formantstruktur, die sich nicht schnell ändern. Alle anderen Rahmen
können
mit der Typ Null Klassifizierung klassifiziert werden. In alternativen
Ausführungsbeispielen
können
zusätzliche
Typklassifizierungen Rahmen in zusätzliche Klassifizierungen klassifizieren,
und zwar basierend auf Zeitbereich, Frequenzbereich usw. Die Typklassifizierung
optimiert Codierung durch das Anfangsvollratenrahmenverarbeitungsmodul 46 und
das Anfangshalbratenrahmenverarbeitungsmodul 48, wie später beschrieben
wird. Zusätzlich
können
sowohl die Typklassifizierung als auch die Ratenauswahl verwendet
werden, um Codierung durch Anteile des Anregungsverarbeitungsmoduls 54 zu optimieren
und zwar durch Anteile, die den Voll- und Halbraten-Codierern 36 und 38 entsprechen.
-
Ein
Ausführungsbeispiel
des Anregungsverarbeitungsmoduls 54 kann unterteilt werden
und zwar in ein Vollratenmodul 56, ein Halbratenmodul 58,
ein Viertelratenmodul 60 und ein Achtelratenmodul 62.
Die Ratenmodule 56, 58, 60 und 62 entsprechen
den Raten-Codierern 36, 38, 40 und 42,
wie in 2 dargestellt ist. Die Voll-
und Halbratenmodule 56 und 58 eines Ausführungsbeispiels
umfassen beide eine Vielzahl von Rahmenverarbeitungsmodulen, und
eine Vielzahl von Unterrahmenverarbeitungsmodulen, die wesentlich
unterschiedliche Codierung vorsehen, wie noch erläutert werden
wird.
-
Der
Anteil des Anregungsverarbeitungsmoduls 54 für sowohl
den Voll- als auch den Halbraten-Codierer 36 und 38 umfassen
Typauswahlmodule, erste Unterrahmenverarbeitungsmodule, zweite Unterrahmenverarbeitungsmodule,
erste Rahmenverarbeitungsmodule und zweite Unterrahmenverarbeitungsmodule. Spezieller
umfasst das Vollratenmodul 56 ein F Typ Auswahlmodul 68,
ein F Null erstes Unterrahmenverarbeitungsmodul 70, ein
F1 erstes Rahmenverarbeitungsmodul 72, ein F1 zweites Unterrahmenverarbeitungsmodul 74 und
ein F1 zweites Rahmenverarbeitungsmodul 76. Der Ausdruck „F" steht für Vollrate
und „0" und „1" kennzeichnen Typ
Null bzw. Typ Eins. In gleicher Weise umfasst das Halbratenmodul 58 ein
H Typ Auswahlmodul 78, ein H Null erstes Unterrahmenverarbeitungsmodul 80,
ein H1 erstes Rahmenverarbeitungsmodul 82, ein H1 zweites
Unterrahmenverarbeitungsmodul 84 und ein H1 zweites Rahmenverarbeitungsmodul 86.
-
Die
F und H Typ Auswahlmodule 68, 78 weisen die Verarbeitung
des Sprachsignals 18 an, den Codierprozess, basierend auf
der Typklassifikation weiter zu optimieren. Klassifikation als Typ
Eins zeigt an, dass der Rahmen eine harmonische Struktur und eine
Formantstruktur, die sich nicht schnell ändern beinhaltet, wie beispielsweise
stationäre
stimmhafte Sprache. Entsprechend können die Bits, die zum Darstellen
eines als Typ Eins klassifizierten Rahmens verwendet werden, zugewiesen
werden zum Vereinfachen der Codierung, die aus diesen Aspekten beim
Darstellen des Rahmens einen Vorteil ziehen kann. Klassifikation
als Typ Null zeigt an, dass der Rahmen nichtstationäres Verhalten
zeigen kann, z.B. eine harmonische Struktur und eine Formantstruktur,
die sich schnell ändert
oder der Rahmen kann stationäre
stimmlose oder rauschähnliche
Charakteristika zeigen. Die Bitzuordnung für als Typ Null klassifizierte
Rahmen kann konsequenter Weise geregelt werden, um dieses Verhalten
besser darzustellen und zu berücksichtigen.
-
Für das Vollratenmodul 56 generiert
das F0 erste Unterrahmenverarbeitungsmodul 70 einen Anteil
des Bitstroms, und zwar wenn der verarbeitete Rahmen als Typ Null
klassifiziert ist. Typ Null Klassifizierung eines Rahmens aktiviert
das F Null erste Unterrahmenverarbeitungsmodul 70 um den
Rahmen auf einer Unterrahmenbasis zu verarbeiten. Das F1 erste Rahmenverarbeitungsmodul 72,
das F1 zweite Unterrahmenverarbeitungsmodul 74 und die
F1 zweite Verarbeitungsmodule 76 kombinieren um einen Anteil
des Bitstrom zu generieren und zwar wenn der verarbeitete Rahmen
als Typ 1 klassifiziert ist. Typ 1 Klassifizierung umfasst sowohl Unterrahmen
als auch Rahmenverarbeitung innerhalb des Vollratenmoduls 56.
-
Für das Halbratenmodul 58 generiert
das H0 erste Unterrahmenverarbeitungsmodul 80 in gleicher Weise
einen Anteil des Bitstroms auf einer Unterrahmenbasis und zwar wenn
der verarbeitete Rahmen als Typ Null klassifiziert ist. Ferner kombinieren
das H1 erste Rahmenverarbeitungsmodul 82, das H1 zweite
Unterrahmenverarbeitungsmodul 84 und das H1 zweite Rahmenverarbeitungsmodul 86 um
einen Anteil des Bitstroms zu generieren, und zwar wenn der verarbeitete
Rahmen als Typ 1 klassifiziert ist. Wie bei dem Vollratenmodul 56 umfasst
die Typ 1 Klassifikation sowohl Unterrahmen- als auch Rahmenverarbeitung.
-
Die
Viertel- und Achtelratenmodule 60 und 62 sind
Teil der Viertel- und Achtenraten-Codierer 40 bzw. 42 und
umfassen nicht die Typklassifikation. Die Typklassifikation ist
nicht enthalten und zwar aufgrund der Art der Rahmen, die verarbeitet
werden. Die Viertel- und Achtelratenmodule 60 und 62 erzeugen
einen Anteil des Bitstroms auf einer Unterrahmenbasis bzw. einer
Rahmenbasis, und zwar wenn sie aktiviert sind.
-
Die
Ratenmodule 56, 58, 60 und 62 generieren
einen Anteil des Bitstroms, der zusammengesetzt bzw. zusammengeführt wird
mit einem entsprechenden Anteil des Bitstroms, der durch die Anfangsrahmenverarbeitungsmodule 46, 48, 50 und 52 generiert
wird, und zwar zum Kreieren einer digitalen Repräsentation eines Rahmens. Beispielsweise
kann der durch das Anfangsvollratenrahmenverarbeitungsmodul 46 und
das Vollratenmodul 56 generierte Anteil des Bitstroms zusammengefügt werden,
um den Bitstrom zu generieren, wenn der Vollratencodierer 36 aktiviert
ist, um einen Rahmen zu codieren. Die Bitströme von jedem der Codierer 36, 38, 40 und 42 können ferner
zusammengefügt
werden, um einen Bitstrom zu bilden, der eine Vielzahl von Rahmen
des Sprachsignals 18 repräsentiert. Der von den Codierern 36, 38, 40 und 42 generierte
Bitstrom wird von dem Decodiersystem 16 decodiert.
-
3 zeigt
ein erweitertes Blockdiagramm des in 1 dargestellten
Decodiersystems 16. Ein Ausführungsbeispiel des Decodiersystems 16 umfasst
einen Vollratendecoder 90, einen Halbratendecoder 92,
einen Viertelratendecoder 94, einen Achtelratendecoder 96,
ein Synthesefiltermodul 98 und ein Nachverarbeitungsmodul
(post processing module) 100. Die Voll-, Halb-, Viertel-
und Achtelratendecoder 90, 92, 94 und 96, das
Synthesefiltermodul 98 und das Nachverarbeitungsmodul 100 sind
die Decodieranteile der Voll-, Halb-, Viertel- und Achtelraten-Codecs 22, 24, 26 und 28.
-
Die
Decoder 90, 92, 94 und 96 empfangen
den Bitstrom und decodieren das Digitalsignal um verschiedene Parameter
des Sprachsignals 18 wiederherzustellen. Die Decoder 90,92, 94 und 96 können aktiviert
werden, um jeden Rahmen basierend auf der Ratenwahl zu decodieren.
Die Ratenwahl kann von dem Codiersystem 12 an das Decodiersystem 16 durch
einen separaten Informationsübertragungsmechanismus
geliefert werden, wie beispielsweise einen Steuerkanal in einem
drahtlosen Kommunikationssystem. In diesem beispielhaften Ausführungsbeispiel
kann die Ratenwahl an die mobilen Kommunikationsgeräte geliefert
werden als Teil von Broadcast-Strahlsignalen (broadcast beacon signals),
die von den Basisstationen innerhalb des drahtlosen Kommunikationssystems
generiert werden. Im Allgemeinen werden die Broadcast-Beacon-Signale erzeugt
um Identifizierungsinformation zu liefern, die verwendet wird, um
Kommunikationen zwischen den Basisstationen und den mobilen Kommunikationsgeräten aufzubauen.
-
Das
Synthesefilter 98 und das Nachverarbeitungsmodul 100 sind
Teil des Decodierungsprozesses für jeden
der Decoder 90, 92, 94 und 96.
Zusammenfügen
der Parameter des Sprachsignals 18, die decodiert werden
von den Decodern 90, 92, 94 und 96 unter
Verwendung des Synthesefilters 98, erzeugt synthetisierte Sprache.
Die synthetisierte Sprache durchläuft das Nachverarbeitungsmodul 100 um
die nachverarbeitete synthetisierte Sprache 20 zu kreieren.
-
Ein
Ausführungsbeispiel
des Vollratendecoders 90 umfasst ein F Typ Auswahlglied 102 und
eine Vielzahl von Anregungsrekonstruktionsmodulen (excitation reconstruction
modules). Die Anregungsrekonstruktionsmodule umfassen ein F0 Anregungsrekonstruktionsmodul 104 und
ein F1 Anregungsrekonstruktionsmodul 106. Zusätzlich umfasst
der Vollratendecoder 90 ein Linearprädiktionskoeffizienten (linear
prediction coefficient, LPC)-Rekonstruktionsmodul 107.
Das LPC Rekonstruktionsmodul 107 umfasst ein F0 LPC Rekonstruktionsmodul 108 und
ein F1 LPC Rekonstruktionsmodul 110.
-
In
gleicher Weise umfasst ein Ausführungsbeispiel
des Halbratendecoders 92 ein H Typ Auswahlglied 112 und
eine Vielzahl von Anregungsrekonstruktionsmodulen. Die Anregungsrekonstruktionsmodule
umfassen ein H0 Anregungsrekonstruktionsmodul 114 und ein
H1 Anregungsrekonstruktionsmodul 116. Zusätzlich umfasst
der Halbratendecoder 92 ein Linearprädiktionskoeffizienten (auf
LPC)-Rekonstruktionsmodul, das ein H LPC Rekonstruktionsmodul 118 ist.
Obwohl im Konzept ähnlich,
sind die Voll- und Halbratendecoder 90 und 92 bestimmt
Bitströme
von den entsprechenden Voll- und Halbratencodierern 36 bzw. 38 zu
decodieren.
-
Die
F und H Typ Auswahlglieder 102 und 112 aktivieren
selektiv entsprechende Anteile der Voll- und Halbratendecoder 90 und 92 und
zwar abhängig
von der Typklassifikation. Wenn die Typklassifikation vom Typ Null
ist, werden die F0 oder H0 Anregungsrekonstruktionsmodule 104 oder 114 aktiviert.
Umgekehrt werden, wenn die Typklassifikation vom Typ Eins ist, die
F1 oder H1 Anregungsrekonstruktionsmodule 106 oder 116 aktiviert.
Die F0 oder F1 LPC Rekonstruktionsmodule 108 oder 110 werden
durch die Typ Null bzw. Typ Eins Typklassifikationen aktiviert.
Das H LPC Rekonstruktionsmodul 118 wird nur basierend auf
der Ratenauswahl aktiviert.
-
Der
Viertelratendecoder 94 umfasst ein Q Anregungsrekonstruktionsmodul 120 und
ein Q LPC Rekonstruktionsmodul 122. In gleicher Weise umfasst
der Achtelratendecoder 96 ein E Anregungsrekonstruktionsmodul 124 und
ein E LPC Rekonstruktionsmodul 126. Sowohl die entsprechenden
Q oder E Anregungsrekonstruktionsmodule 120 oder 124 als
auch die entsprechenden Q oder E LPC Rekonstruktionsmodule 122 oder 126 werden
nur bzw. einzig basierend auf der Ratenauswahl aktiviert.
-
Jedes
der Anregungsrekonstruktionsmodule ist betreibbar um die Kurzzeitanregung
auf einer Kurzzeitanregungsleitung 128 zu liefern, und
zwar wenn es aktiviert ist. In gleicher Weise wird jedes der LPC
Rekonstruktionsmodule betrieben, um die Kurzzeitprädiktionskoeffizienten
auf einer Kurzzeitprädiktionskoeffizientenleitung 130 zu
generieren. Die Kurzzeitanregungs- und die Kurzzeitprädiktionskoeffizienten
werden an das Synthesefilter 98 geliefert. Zusätzlich werden
in einem Ausführungsbeispiel
die Kurzzeitprädiktionskoeffizienten
an das Nachverarbeitungsmodul 100 geliefert, wie in 3 dargestellt
ist.
-
Das
Nachverarbeitungsmodul 100 kann Filterung, Signalverbesserung
bzw. Verstärkung,
Rauschmodifikation, Verstärkung,
Neigungskorrektur (tilt correction) und andere ähnliche Techniken aufweisen,
die geeignet sind, die wahrnehmbare Qualität der synthetisierten Sprache
zu verbessern. Das Nachverarbeitungsmodul 100 ist betreibbar
zum Verringern des hörbaren
Rauschens ohne die synthetisierte Sprache zu verschlechtern. Verringern
des hörbaren
Rauschens kann erreicht werden durch Anheben bzw. Betonen der For mantstruktur
der synthetisierten Sprache oder durch Unterdrücken nur des Rauschens in den
Frequenzbereichen, die wahrnehmungsbezogen für die synthetisierte Sprache
nicht relevant sind. Da hörbares
Rauschen bei niedrigen Bitraten wahrnehmbarer wird, kann ein Ausführungsbeispiel
des Nachverarbeitungsmoduls 100 aktiviert werden, um Nachverarbeitung
der synthetisierten Sprache, unterschiedlich abhängig von der Ratenauswahl,
vorzusehen. Ein anderes Ausführungsbeispiel
des Nachverarbeitungsmoduls 100 kann betreibbar sein um
unterschiedliche Nachverarbeitung für unterschiedliche Gruppen
der Decoder 90, 92, 94 und 96 vorzusehen,
und zwar basierend auf der Ratenauswahl.
-
Während des
Betriebs analysiert das in 2 dargestellte
Anfangsrahmenverarbeitungsmodul 44 das Sprachsignal 18 um
die Ratenauswahl zu bestimmen, und einen der Codecs 22, 24, 26 und 28 zu
aktivieren. Falls beispielsweise der Vollraten-Codec 22 aktiviert
wird, um einen Rahmen basierend auf der Ratenauswahl zu verarbeiten,
bestimmt das Anfangsvollratenrahmenverarbeitungsmodul 46 die
Typklassifikation für
den Rahmen und erzeugt einen Anteil des Bitstroms. Das Vollratenmodul 56 erzeugt,
basierend auf der Typklassifikation den Rest bzw. restlichen Anteil
des Bitstroms für
den Rahmen.
-
Der
Bitstrom kann von dem Vollratendecoder 90 empfangen und
decodiert werden, und zwar basierend auf der Ratenauswahl. Der Vollratendecoder 90 decodiert
den Bitstrom unter Verwendung der Typklassifikation, die während dem
Codieren bestimmt wurde. Das Synthesefilter 98 und das
Nachverarbeitungsmodul 100 verwenden die von dem Bitstrom
decodierten Parameter um die nachverarbeitete synthetisierte Sprache 20 zu
generieren. Der Bitstrom, der von jedem der Codecs 22, 24, 26 und 28 generiert
wird, enthält
signifikant unterschiedliche Bitzuordnungen, um unterschiedliche
Parameter und/oder Charakteristika des Sprachsignals 18 innerhalb
eines Rahmen zu betonen.
-
1.0 Bitzuordnung
-
4, 5, 6 und 7 sind
Tabellen, die ein Ausführungsbeispiel
darstellen für
die Bitzuordnung für
den Vollraten-Codec 22, den Halbraten-Codec 24,
den Viertelraten-Codec 26 bzw. den Achtelraten-Codec 28.
Die Bitzuordnung bestimmt den durch das Anfangsrahmenverarbeitungsmodul 44 generierten Anteil
des Bitstrom und den durch das Anregungsverarbeitungsmodul 54 generierten
Anteil des Bitstrom und zwar innerhalb eines entsprechenden Codierers 36, 38, 40 und 42.
Zusätzlich
bestimmt die Bitzuweisung die Bitanzahl in dem Bitstrom, die einen
Rahmen repräsentieren.
Entsprechend variiert die Bitrate abhängig von dem Codec 22, 24, 26 und 28,
der aktiviert ist. Der Bitstrom kann in einen ersten Anteil und
einen zweiten Anteil klassifiziert bzw. eingeteilt werden und zwar
abhängig
davon ob die repräsentativen
Bits auf einer Rahmenbasis bzw. einer Unterrahmenbasis von dem Codiersystem 12 generiert
werden. Wie später
beschrieben wird, variieren der erste Anteil und der zweite Anteil
des Bitstroms abhängig
von dem Codec 22, 24, 26 und 28,
der zum Codieren und Decodieren eines Rahmens des Sprachsignals 18 ausgewählt ist.
-
1.1 Bitzuordnung für den Vollraten-Codec
-
Jetzt
bezugnehmend auf 2, 3 und 4 wird
der Vollratenbitstrom des Vollraten-Codec 22 beschrieben.
Jetzt bezugnehmend auf 4 umfasst die Bitzuordnung
für den
Vollraten-Codec 22 eine Linienspektrumfrequenz (line spectrum
frequency, LSF)-Komponente 140, eine Typkomponente 142,
eine adaptive Codebuchkomponente 144, eine feste bzw. fixierte
Codebuchkomponente 146 und eine Verstärkungskomponente 147.
Die Verstärkungskomponente 147 umfasst
eine adaptive Codebuchverstärkungkomponente 148 und
eine feste bzw. fixierte Codebuchverstärkungkomponente 150.
Die Bitstromzuordnung wird ferner definiert durch eine Typ Null
Spalte 152 und eine Typ Eins Spalte 154. Die Typ
Null und die Typ Eins Spalten 152 und 154 bestimmen
die Zuordnung der Bits in dem Bitstrom und zwar basierend auf der
Typklassifikation des Sprachsignals 18, wie vorher diskutiert.
In einem Ausführungsbeispiel
verwenden sowohl die Typ Null Spalte 152 als auch die Typ
Eins Spalte 154 vier Teil- bzw. Unterrahmen von jeweils
fünf Millisekunden,
um das Sprachsignal 18 zu verarbeiten.
-
Das
in 2 dargestellte Initial- bzw. Vollrahmenverarbeitungsmodul 46 generiert
die LSF Komponente 140. Die LSF Komponente 140 wird,
basierend auf den Kurzzeitprädiktorparametern,
generiert. Die Kurzzeitprädiktorparameter
werden in eine Vielzahl von Linienspektrumfrequenzen (LSFs) konvertiert.
Die LSFs repräsentieren
die spektrale Einhüllende
(spectral envelope) eines Rahmens. Zusätzlich wird eine Vielzahl prädiktierter
bzw. vorhergesagter LSFs aus den LSFs vorhergehender Rahmen bestimmt.
Die vorhergesagten LSFs werden von den LSFs abgezogen um einen LSFs
Prädiktionsfehler
zu kreieren. In einem Ausführungsbeispiel
umfasst der LSF Prädiktionsfehler
einen Vektor mit 10 Parametern. Der LSF Prädiktionsfehler wird mit den
vorhergesagten LSFs kombiniert um eine Vielzahl quantisierter LSFs
zu generieren. Die quantisierten LSFs werden interpoliert und konvertiert
um eine Vielzahl quantisierter LPC Koeffizienten Aq(z) von jeden
Unterrahmen zu bilden, wie im Detail später erörtert wird. Zusätzlich wird
der LSFs Prädiktionsfehler
quantisiert um die LSF Komponente 140 zu generieren, die
an das Decodiersystem 16 übertragen wird.
-
Wenn
der Bitstrom beim Decodiersystem 16 empfangen wird, wird
die LSF Komponente 140 verwendet, um einen quantisierten
Vektor zu lokalisieren, der einen quantisierten LSFs Prädiktionsfehler
repräsentiert. Der
quantisierte LSFs Prädiktionsfehler
wird auf die vorhergesagten LSFs addiert, um quantisierte LSFs zu
generieren. Die vorhergesagten LSFs werden aus den LSFs vorhergehender
Rahmen bestimmt und zwar innerhalb des Decodierungssystems 16,
wie beim Codiersystem 12. Die resultierenden quantisierten
LSFs können für jeden
Unterrahmen unter Verwendung einer vorherbestimmten Gewichtung interpoliert
werden. Die vorherbestimmte Gewichtung definiert einen Interpolationspfad,
der fest bzw. fixiert oder variabel sein kann. Der Interpolationspfad
liegt zwischen den quantisierten LSFs des vorhergehenden Rahmens
und den quantisierten LSFs des aktuellen Rahmens. Der Interpolationspfad
kann verwendet werden, um eine spektraleinhüllende Darstellung für jeden
Unterrahmen in dem aktuellen Rahmen vorzusehen.
-
Für Rahmen,
die als vom Typ Null klassifiziert sind, wird in einem Ausführungsbeispiel
der LSF Komponente 140 codiert, unter Verwendung einer
Vielzahl von Stufen 156 und einem Interpolationselement 158, wie
in 4 dargestellt. Die Stufen 156 repräsentieren
den LSFs Prädiktionsfehler,
der zum Codieren der LSF Komponente 140 für einen
Rahmen verwendet wird. Das Interpolationselement 158 kann
verwendet werden, um eine Vielzahl von Interpolationspfaden vorzusehen
und zwar zwischen den quantisierten LSFs des vorhergehenden Rahmens
und den quantisierten LSFs des Rahmens der aktuell verarbeitet wird.
Im Allgemeinen repräsentiert
das Interpolationselement 158 während dem Decodieren auswählbare Anpassung
in der Kontur der Linienspektrumfrequenzen (LSFs). Auswählbare Anpassung
kann verwendet werden aufgrund der nichtstationären spektralen Eigenschaft
von Rahmen, die als Typ Null klassifiziert sind. Für Rahmen,
die als Typ Eins klassifiziert sind, kann die LSF Komponente 140 codiert
werden, und zwar unter Verwendung nur der Stufen 156 und
einem vorherbestimmten linearen Interpolationspfad aufgrund der
stationären
spektralen Eigenschaft solcher Rahmen.
-
Ein
Ausführungsbeispiel
der LSF Komponente 140 umfasst zwei Bits zum Codieren des
Interpolationselements 158 und zwar für Rahmen, die als vom Typ Null
klassifiziert sind. Die Bits identifizieren bzw. kennzeichnen den
speziellen Interpolationspfad. Jeder der Interpolationspfade stellt
die Gewichtung der vorhergehenden quantisierten LSFs für jeden
Unterrahmen ein, und stellt die Gewichtung des aktuellen quantisierten LSFs
für jeden
Unterrahmen ein. Die Auswahl eines Interpolationspfads kann bestimmt
werden, und zwar basierend auf dem Grad der Variationen in der spektral
Einhüllenden
zwischen aufeinanderfolgenden Unterrahmen. Beispielsweise, falls
es eine wesentliche Variation in der spektral Einhüllenden
in der Mitte des Rahmens gibt, wählt
das Interpolationselement 158 einen Interpolationspfad,
der den Einfluss der quantisierten LSFs von dem vorhergehenden Rahmen
vermindert. Ein Ausführungsbeispiel
des Interpolationselements 158 kann irgendeinen von vier
unterschiedlichen Interpolationspfaden für jeden Unterrahmen repräsentieren.
-
Die
vorhergesagten LSFs können
generiert werden, und zwar unter Verwendung einer Vielzahl von gleitenden
Mittelwertprädiktorkoeffizienten
(moving average predictor coefficients). Die Prädiktorkoeffizienten bestimmen
wie viel der LSFs vergangener Rahmen verwendet werden, um die LSFs
des aktuellen Rahmen vorherzusagen. Die Prädiktorkoeffizienten innerhalb
des Vollraten-Codec 22 verwenden
eine LSF Prädiktorkoeffiziententabelle.
Die Tabelle kann im Allgemeinen durch die folgende Matrix dargestellt
werden:
-
-
In
einem Ausführungsbeispiel
ist m gleich 2 und n gleich 10. Entsprechend ist die Prädiktionsordnung zwei
und es gibt zwei Vektoren mit Prädikorkoeffizienten
von denen jeder 10 Elemente umfasst. Ein Ausführungsbeispiel der LSF Prädiktorkoeffiziententabelle
trägt den
Titel „Float
64 B_85k" und ist
im Anhang B des beigefügten
Micorfilmanhangs enthalten.
-
Sobald
die vorhergesagten LSFs bestimmt worden sind, kann der LSFs Prädiktionsfehler
unter Verwendung der aktuellen bzw. tatsächlichen LSFs berechnet werden.
Der LSFs Prädiktionsfehler
kann unter Verwendung eines volldimensionalen Mehrstufenquantisierers
(full dimensional multi-stage quantizer) quantisiert werden. Eine
LSF Prädiktionsfehlerquantisierungstabelle,
die eine Vielzahl von Quantisierungsvektoren umfasst, repräsentiert
jede Stufe 156, die mit dem mehrstufigen Quantisierer verwendet
werden kann. Der mehrstufige Quantisierer bestimmt einen Anteil
der LSF Komponente 140 für jede Stufe 156.
Die Bestimmung des Anteils der LSF Komponente 140 basiert
auf einem Ausschlusssuchansatz (pruned search approach). Der Ausschlusssuchansatz
bestimmt aus jeder Stufe vielversprechende Quantisierungsvektorkandidaten.
Nach dem Abschluss der Bestimmung der Kandidaten für alle Stufen
findet eine gleichzeitige Entscheidung statt, die die besten Quantisierungsvektoren
für jede
Stufe auswählt.
-
In
der ersten Stufe bestimmt der mehrstufige Quantisierer eine Vielzahl
von Kandidatenquantisierungsfehlern der ersten Stufe (candidate
first stage quantization errors). Die Kandidatenquantisierungsfehler der
ersten Stufe entsprechen dem Unterschied zwischen dem LSFs Prädiktionsfehler
und den in der ersten Stufe lokalisierten bzw. gelegenen nächsten angepassten
Quantisierungsvektoren. Der mehrstufige Quantisierer bestimmt dann
eine Vielzahl von Kandidatenquantisierungsfehlern der zweiten Stufe
und zwar durch Identifizieren der in der zweiten Stufe lokalisierten
Quantisierungsvektoren, die am Besten zu den Kandidatenquantisierungsfehlern
der ersten Stufe passen. Dieser iterative Prozess wird für jede der
Stufen vollendet und vielversprechende Kandidaten werden von jeder
Stufe aufgehoben. Die endgültige
Auswahl der besten repräsentativen
Quantisierungsvektoren für
jede Stufe findet gleichzeitig statt, wenn die Kandidaten für alle die
Stufen bestimmt worden sind. Die LSF Komponente 140 umfasst
Indexstellen der nächsten
passenden Quantisierungsvektoren von jeder Stufe. Ein Ausführungsbeispiel
der LSF Komponente 140 umfasst 25 Bits zum Codieren der
Indexstellen innerhalb der Stufen 156. Die LSF Prädiktionsfehlerquantisierungstabelle
für den
Quantisierungsansatz kann im Allgemeinen durch die folgende Matrix
dargestellt werden:
-
-
Ein
Ausführungsbeispiel
der Quantisierungstabelle für
sowohl die Typ Null als auch die Typ Eins Klassifikation verwendet
vier Stufen (j = 4), in denen jeder Quantisierungsvektor durch 10
Elemente (n = 10) repräsentiert
ist. Die Stufen 156 dieses Ausführungsbeispiels umfassen 128
Quantisierungsvektoren (r = 128) für eine der Stufen 156 und
64 Quantisierungsvektoren (s = 64) in den verbleibenden Stufen 156.
Entsprechend kann die Indexstelle der Quantisierungsvektoren innerhalb
der Stufen 156 codiert werden, und zwar unter Verwendung
von 7 Bits für
die eine der Stufen 156, die 128 Quantisierungsvektoren
umfasst. Zusätzlich
können Indexstellen
für jede
der Stufen 156, die 64 Quantisierungsvektoren umfasst,
unter Verwendung von 6 Bits codiert werden. Ein Ausführungsbeispiel
der LSF Prädiktionsfehlerquantisierungstabelle,
die sowohl für
die Typ Null als auch die Typ Eins Klassifikation verwendet wird,
hat den Titel „Float64
Cbes_85k" und ist
im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Innerhalb
des Decodiersystems 16 erhalten die F0 oder F1 LPC Rekonstruktionsmodule 108, 110 in dem
Vollratendecoder 90 die LSF Komponente 140 aus
dem Bitstrom, wie in 3 dargestellt ist. Die LSF Komponente 140 kann
verwendet werden, um die quantisierten LSFs zu rekonstruieren, wie
vorher erörtert wurde.
Die quantisierten LSFs können
interpoliert und konvertiert werden, um die linearen Prädiktionscodierungskoeffizienten
für jeden
Unterrahmen des aktuellen Rahmens zu bilden.
-
Für die Typ
Null Klassifikation kann die Rekonstruktion durch das F0 LPC Rekonstruktionsmodul 108 durchgeführt werden.
Die Rekonstruktion umfasst Bestimmung der vorhergesagten LSFs, die
Codierung des quantisierten LSFs Prädiktionsfehlers und Rekonstruktion
der quantisierten LSFs. Zusätzlich
können
die quantisierten LSFs interpoliert werden, unter Verwendung des
identifizierten Interpolationspfades. Wie vorher diskutiert wurde,
wird einer der vier Interpolationspfade für das F0 LPC Rekonstruktionsmodul 108 identifiziert bzw.
kenntlich gemacht, und zwar durch das Interpolationselement 158,
das einen Teil der LSF Komponente 140 bildet. Rekonstruktion
der Typ Eins Klassifikation umfasst die Verwendung des vorherbestimmten
linearen Interpolationspfades und der LSF Prädiktionsfehlerquantisierungstabelle
durch das F1 LPC Rekonstruktionsmodul 110. Die LSF Komponente 140 bildet
einen Teil des ersten Anteils des Bitstroms, da es auf einer Rahmenbasis
codiert wird, und zwar sowohl bei dem Typ Null als auch den Typ
Eins Klassifikationen.
-
Die
Typkomponente 142 bildet auch einen Teil des ersten Anteils
des Bitstroms. Wie in 2 dargestellt ist, generiert
das F Typ Selektormodul 68 die Typkomponente 142,
um die Typklassifikation eines speziellen Rahmens zu repräsentieren.
Jetzt bezugnehmend auf 3 empfängt das F Typ Selektormodul 102 in dem
Vollratendecoder 90 die Typkomponente 142 aus
dem Bitstrom.
-
Ein
Ausführungsbeispiel
der adaptiven Codebuchkomponente 144 kann eine gesteuerte
(open loop) adaptive Codebuchkomponente 144a oder eine
geregelte (closed loop) adaptive Codebuchkomponente 144b sein.
Die gesteuerte oder geregelte adaptive Codebuchkomponente 144a, 144b wird
durch das initiale Vollrahmenverarbeitungsmodul 46 oder
entsprechend durch das F0 erste Unterrahmenverarbeitungsmodul 70 generiert,
wie in 2 dargestellt ist. Die gesteuerte
adaptive Codebuchkomponente 144a kann durch die gere gelte adaptive
Codebuchkomponente 144b in dem Bitstrom ersetzt werden,
wenn der Rahmen als vom Typ Null klassifiziert wird. Im Allgemeinen
bezieht sich die gesteuerte (open loop) Bestimmung auf Verarbeitung
auf eine Rahmenbasis, die Analyse-durch-Synthese (ABS) nicht umfasst.
Die geregelte (closed loop) Verarbeitung wird auf einer Unterrahmenbasis
durchgeführt,
und umfasst Analyse-durch-Synthese (ABS).
-
Codierung
des Tonhöhenabstands,
die auf der Periodizität
des Sprachsignals 18 basiert, generiert die adaptive Codebuchkomponente 144.
Die gesteuerte adaptive Codebuchkomponente 144a wird für einen
Rahmen generiert; wohingegen die geregelte adaptive Codebuchkomponente 144b auf
einer Unterrahmenbasis generiert wird. Entsprechend ist die gesteuerte
adaptive Codebuchkomponente 144a Teil des ersten Anteils des
Bitstroms, und die geregelte adaptive Codebuchkomponente 144b ist
Teil des zweiten Anteils des Bitstroms. In einem Ausführungsbeispiel,
wie in 4 dargestellt, umfasst die
gesteuerte adaptive Codebuchkomponente 144a 8 Bits und
die geregelte adaptive Codebuchkomponente 144b umfasst
26 Bits. Die gesteuerte adaptive Codebuchkomponente 144a und
die geregelte adaptive Codebuchkomponente 144b können generiert
werden, unter Verwendung eines adaptiven Codebuchvektors, der später beschrieben
wird. Bezugnehmend jetzt auf 3 empfängt das
Decodiersystem 16 die gesteuerte oder geregelte adaptive
Codebuchkomponente 144a oder 144b. Die gesteuerte
oder geregelte adaptive Codebuchkomponente 144a oder 144b wird durch
das F0 oder entsprechend F1 Anregungsrekonstruktionsmodul 104 oder
entsprechend 106 decodiert.
-
Ein
Ausführungsbeispiel
der festen Codebuchkomponente 146 kann eine fixierte Typ
Null Codebuchkomponente 146a oder eine fixierte Typ Eins
Codebuchkomponente 146b sein. Die fixierte Typ Null Codebuchkomponente 146a wird
durch das F Null erste Unterrahmenverarbeitungsmodul 70 generiert,
wie in 2 dargestellt ist. Das F1 Unterrahmenverarbeitungsmodul 72 generiert
die fixierte Typ Eins Codebuchkomponente 146b. Die fixierte
Typ Null oder Typ Eins Codebuchkomponente 146a oder 146b wird
generiert unter Verwendung eines fixierten Codebuchvektors und Synthese-durch-Analyse
auf einer Unterrahmenbasis, was später beschrieben wird. Die fixierte
Codebuchkomponente 146 repräsentiert den Langzeitrest eines
Unterrahmens, unter Verwendung eines n-Impulscodebuchs, wobei n
die Anzahl der Impulse in dem Codebuch ist.
-
Bezugnehmend
jetzt auf 4 umfasst die fixierte Typ
Null Codebuchkomponente 146a eines Ausführungsbeispiels 22 Bits pro
Unterrahmen. Die fixierte Typ Null Codebuchkomponente 146a umfasst
Identifikation von einem aus einer Vielzahl von n-Impulscodebüchern, Impulsstellen
in dem Codebuch und den Vorzeichen (signs) repräsentativer Impulse (Menge „n"), die den Impulsstellen
entsprechen. In einem beispielhaften Ausführungsbeispiel bestimmen bis
zu zwei Bits, welches von drei n-Impulscodebüchern codiert worden ist. Speziell
das erste der zwei Bits wird auf „1" gesetzt, um zu kennzeichnen, dass das
erste der drei n-Impulscodebücher
verwendet wird. Falls das erste Bit auf „0" gesetzt ist, kennzeichnet das zweite
der zwei Bits ob das zweite oder das dritte der drei n-Impulscodebücher verwendet
wird. Entsprechend in dem beispielhaften Ausführungsbeispiel besitzt das
erste der drei n-Impulscodebücher 21
Bits um die Impulsstellen und Vorzeichen zu repräsentieren, und das zweite und
dritte der drei n-Impulscodebücher
haben 20 Bits zur Verfügung.
-
Jeder
der repräsentativen
Impulse innerhalb eines der n-Impulscodebücher umfasst eine entsprechende
Spur (track). Die Spur ist eine Auflistung von Abtaststellen in
einem Unterrahmen, wobei jede Abtaststelle in der Auflistung eine
der Impulsstellen ist. Ein Unterrahmen, der codiert wird, kann in
eine Vielzahl von Abtaststellen unterteilt werden, wobei jede der
Abtaststellen einen Abtastwert enthält. Die Spuren der entsprechenden
repräsentativen
Impulse listen nur einen Anteil der Abtaststellen von einem Unterrahmen
auf. Jeder der repräsentativen
Impulse innerhalb eines der n-Impulscodebücher kann durch eine der Impulsstellen
in der entsprechenden Spur repräsentiert
werden.
-
Während des
Betriebs wird jeder der repräsentativen
Impulse nacheinander in jede der Impulsstellen in der entsprechenden
Spur platziert. Die repräsentativen
Impulse werden in ein Signal konvertiert, das unter Verwendung von
ABS mit den Abtastwerten in den Abtaststellen des Unterrahmens vergleichen
werden kann. Die repräsentativen
Impulse werden mit den Abtastwerten verglichen und zwar in jenen
Abtaststellen, die zeitlich später
sind als die Abtaststelle der Impulsstelle. Die Impulsstelle, die
die Differenz minimiert zwischen dem repräsentativen Impuls und den Abtastwerten,
die zeitlich später
sind, bildet einen Anteil der fixierten Typ Null Codebuchkomponente 146a.
Jeder der repräsentativen
Impulse in einem ausgewählten
n-Impulscodebuch kann durch eine entsprechende Impulsstelle repräsentiert
werden, die einen Anteil der fixierten Typ Null Codebuchkomponente 146a bildet.
Die Spuren sind in Spurtabellen enthalten, die im Allgemeinen durch
die folgende Matrix repräsentiert
werden können:
-
-
Ein
Ausführungsbeispiel
der Spurtabellen sind die Tabellen mit dem Titel „static
short track_5_4_0", static
short track_5_3_2" und „static
short track_5_3_1" innerhalb
der Sammlung mit dem Titel „tracks.tab", die im Anhang B
des beigefügten
Mikrofilmanhangs enthalten ist.
-
In
dem in 4 dargestellten beispielhaften
Ausführungsbeispiel
sind die n-Impulscodebücher drei 5-Impulscodebücher 160,
wobei das erste der drei 5-Impulscodebücher 160 5
repräsentative
Impulse umfasst, deswegen n = 5.
-
Ein
erster repräsentativer
Impuls besitzt eine Spur, die 16 (f = 16) der 40 Abtaststellen in
dem Unterrahmen umfasst. Der erste repräsentative Impuls aus dem ersten
der drei 5-Impulscodebücher 160 wird
mit den Abtastwerten in den Abtaststellen verglichen. Eine der Abtaststellen,
die in der Spur vorhanden ist, die mit dem ersten repräsentativen
Impuls assoziiert ist, wird als Impulsstelle identifiziert bzw.
gekennzeichnet und zwar unter Verwendung von 4 Bits. Die Abtaststelle,
die in der Spur identifiziert wird, ist die Abtaststelle in dem Unterrahmen,
die die Differenz zwischen dem ersten repräsentativen Impuls und den Abtastwerten,
die zeitlich später
liegen, minimiert, wie vorher erörtert
wurde. Die Identifizierung der Impulsstelle in der Spur bildet einen Anteil
der fixierten Typ Null Codebuchkomponente 146a.
-
In
diesem beispielhaften Ausführungsbeispiel
besitzen die zweiten und vierten repräsentativen Impulse entsprechende
Spuren mit 16 Abtaststellen (g und i = 16) und die dritten und fünften repräsentativen
Impulse besitzen entsprechend Spuren mit 8 Abtaststellen (h und
j = 8). Entsprechend werden die Impulsstellen für die zweiten und vierten repräsentativen
Impulse unter Verwendung von 4 Bits identifiziert bzw. gekennzeichnet und
die Impulsstellen der dritten und fünften repräsentativen Impulse werden unter
Verwendung von 3 Bits identifiziert. Als ein Ergebnis umfasst die
fixierte Typ Null Codebuchkomponente 146a für das erste
der drei 5-Impulscodebücher 160 18
Bits zum Identifizieren der Impulsstellen.
-
Die
Vorzeichen (signs) der repräsentativen
Impulse in den identifizierten Impulsstellen können auch in der fixierten
Typ Null Codebuchkomponente 146a identifiziert werden.
In dem beispielhaften Ausführungsbeispiel
repräsentiert
ein Bit das Vorzeichen für
den ersten repräsentativen
Impuls, ein Bit repräsentiert
ein kombiniertes Vorzeichen sowohl für den zweiten als auch den
vierten repräsentativen
Impuls und ein Bit repräsentiert
das kombinierte Vorzeichen für
den dritten und den fünften
repräsentativen
Impuls. Die kombinierten Vorzeichen verwenden die Redundanz der
Information in den Impulsstellen um zwei eindeutige Vorzeichen mit einem
einzelnen Bit zu übertragen.
Entsprechend umfasst die fixierte Typ Null Codebuchkomponente 146a für das erste
der drei 5-Impulscodebücher 160 drei
Bits für
die Vorzeichenbezeichnung, was eine Gesamtmenge von 21 Bits ergibt.
-
In
einem beispielhaften Ausführungsbeispiel
umfassen die zweiten und dritten der drei 5-Impulscodebücher 160 auch
5 repräsentative
Impulse (n = 5) und die Spuren in der Spurtabelle umfassen jeweils
8 Abtaststellen (f, g, h, j = 8). Entsprechend werden die Impulsstellen
für jeden
der repräsentativen
Impulse in dem zweiten und dritten der drei 5-Impulscodebücher 160 unter
Verwendung von 3 Bits identifiziert. Zusätzlich werden in diesem beispielhaften
Ausführungsbeispiel
die Vorzeichen für
jede der Impulsstellen unter Verwendung von 1 Bit identifiziert.
-
Für Rahmen,
die als Typ Eins klassifiziert sind, ist in einem beispielhaften
Ausführungsbeispiel
das n-Impulscodebuch ein 8 Impulscodebuch 162 (n = 8).
Das 8 Impulscodebuch 162 wird unter Verwendung von 30 Bits
pro Unterrahmen codiert und zwar um ein Ausführungsbeispiel der fixierten
Typ Eins Codebuchkomponente 146b zu kreieren. Die 30 Bits
umfassen 26 Bits, die Impulsstellen identifizieren, die Spuren wie
in der Typ Null Klassifikation verwenden, und 4 Bits, die die Vorzeichen
identifizieren. Ein Ausführungsbeispiel
der Spurtabelle ist die Tabelle mit dem Titel „static INT16track_8_4_0" innerhalb der Sammlung
mit dem Titel „tracks.tab", die im Anhang B
des beigefügten
Mikrofilmanhangs enthalten ist.
-
In
dem beispielhaften Ausführungsbeispiel
umfassen die Spuren, die mit den ersten und fünften repräsentativen Impulsen assoziiert
sind, 16 Abtaststellen, die unter Verwendung von 4 Bits codiert
werden. Die Spuren, die mit den verbleibenden repräsentativen
Impulsen assoziiert sind, umfassen 8 Abtaststellen, die unter Verwendung
von 3 Bits codiert werden. Die ersten und fünften repräsentativen Impulse, die zweiten
und sechsten repräsentativen
Impulse, die dritten und siebten repräsentativen Impulse und die
vierten und achten repräsentativen
Impulse verwenden die kombinierten Vorzeichen für jeweils beide entsprechenden
Impulse. Wie in 3 dargestellt ist, wenn der
Bitstrom vom Decodiersystem 16 empfangen wird, decodieren
die F0 oder die F1 An regungsrekonstruktionsmodule 104 oder 106 die
Impulsstellen auf den Spuren. Die Impulsstellen auf den Spuren werden
durch die F0 oder die F1 Anregungsrekonstruktionsmodule 104 oder 106 für eines der
drei 5-Impulscodebücher 160 oder
entsprechend das 8-Impulscodebuch 162 decodiert. Die fixierte
Codebuchkomponente 146 ist Teil des zweiten Anteils des
Bitstroms, da es auf einer Unterrahmenbasis generiert wird.
-
Wieder
Bezug nehmend auf 4 repräsentiert die Verstärkungskomponente 147 im
Allgemeinen die adaptiven und fixierten Codebuchgewinne. Für Typ Null
Klassifikation ist die Verstärkungskomponente 147 eine
Typ Null adaptive und fixierte Codebuchverstärkungskomponente 148a, 150a,
die sowohl die adaptiven als auch die fixierten Codebuchgewinne
repräsentiert.
Die Typ Null adaptive und fixierte Codebuchverstärkungskomponente 148a, 150a ist
Teil des zweiten Anteils des Bitstroms, da sie auf einer Unterrahmenbasis bzw.
Grundlage codiert wird. Wie in 2 dargestellt
ist, wird die Typ Null adaptive und fixierte Codebuchverstärkungskomponente 148a, 150a durch
das F0 erste Unterrahmenverarbeitungsmodul 70 generiert.
-
Für jeden
Unterrahmen eines Rahmens, der als Typ Null klassifiziert ist, werden
die adaptiven und fixierten Codebuchgewinne gemeinsam durch einen
zweidimensionalen Vektorquantisierer (2DVQ) 164 codiert, um
die Typ Null adaptive und fixierte Codebuchverstärkungskomponente 148a, 150a zu
generieren. In einem Ausführungsbeispiel
umfasst die Quantisierung das Übersetzen
der fixierten Codebuchverstärkung
in eine fixierte Codebuchenergie und zwar in Dezibeleinheiten (dB).
Zusätzlich
kann eine vorhergesagte fixierte Codebuchenergie aus den quantisierten
fixierten Codebuchenergiewerten vorhergehender Rahmen generiert
werden. Die vorhergesagte fixierte Codebuchenergie kann unter Verwendung
einer Vielzahl fixierter Codebuchprädiktorkoeffizienten abgeleitet
werden.
-
Ähnlich zu
den LSFs Prädiktorkoeffizienten
bestimmen die fixierten Codebuchprädiktorkoeffizienten wieviel
der fixierten Codebuchenergie vergangener Rahmen verwendet werden
kann, um die fixierte Codebuchenergie des aktu ellen Rahmens vorherzusagen.
Die vorhergesagte fixierte Codebuchenergie wird von der fixierten
Codebuchenergie abgezogen, um einen fixierten Prädiktionscodebuchenergiefehler
zu generieren. Durch Einstellen der Gewichtung der vorhergehenden
Rahmen und der aktuellen Rahmen für jeden Unterrahmen, kann die
vorhergesagte fixierte Codebuchenergie berechnet werden, um den
fixierten Prädiktionscodebuchfehler
bzw. Prädiktionsfehler
des fixierten Codebuchs zu minimieren.
-
Der
Prädiktionsfehler
der fixierten Codebuchenergie bzw. fixierter Prädiktionscodebuchenergiefehler wird
mit der adaptiven Codebuchverstärkung
gruppiert, um einen zweidimensionalen Vektor zu bilden. Anschließend an
die Quantisierung des fixierten Prädiktionscodebuchenergiefehlers
und dem adaptiven Codebuchgewinn, wie später beschrieben, kann der zweidimensionale
Vektor als ein quantisierter Verstärkungsvektor (g ^ac)
bezeichnet werden. Der zweidimensionale Vektor wird mit einer Vielzahl
vorherbestimmter Vektoren in einer 2D Verstärkungsquantisierungstabelle
verglichen. Eine Indexstelle wird identifiziert, die die Stelle
in der 2D Verstärkungsquantisierungstabelle
des vorherbestimmten Vektors ist, der den zweidimensionalen Vektor am
Besten repräsentiert.
Die Indexstelle ist die adaptive und fixierte Codebuchverstärkungskomponente 148a und 150a für den Unterrahmen.
Die adaptive und fixierte Codebuchverstärkungskomponente 148a und 150a für den Rahmen
repräsentiert
die für
jeden der Unterrahmen identifizierten Indizes.
-
Die
vorherbestimmten Vektoren umfassen zwei Elemente, eines das die
adaptive Codebuchverstärkung
repräsentiert
und eines das den fixierten Codebuchenergieprädiktionsfehler repräsentiert.
Die 2D Verstärkungsquantisierungstabelle
kann im Allgemeinen dargestellt werden durch:
-
-
Der
zweidimensionale Vektorquantisierer (2D VQ) 164 eines Ausführungsbeispiels
verwendet 7 Bits pro Unterrahmen um die Indexstelle eines der 128 Quantisierungsvektoren
(n = 128) zu identifizieren. Ein Ausführungsbeispiel der 2D Verstärkungsquantisierungstabelle
trägt den
Titel „_Float64
gainVQ_2_128_8_5" und ist
im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Für Rahmen,
die als Typ Eins klassifiziert sind, wird eine Typ Eins adaptive
Codebuchverstärkungskomponente 148b erzeugt,
und zwar durch das F1 erste Rahmenverarbeitungsmodul 72,
wie in 2 dargestellt ist. Ähnlich generiert
das F1 zweite Rahmenverarbeitungsmodul 76 eine Typ Eins
fixierte Codebuchverstärkungskomponente 150b.
Die Typ Eins adaptive Codebuchverstärkungskomponente 148b und
die Typ Eins fixierte Codebuchverstärkungskomponente 150b werden
auf einer Rahmenbasis generiert, um einen Teil des ersten Anteils
des Bitstroms zu bilden.
-
Wieder
bezugnehmend auf 4 wird die Typ Eins adaptive
Codebuchverstärkungskomponente 148b generiert,
und zwar unter Verwendung eines mehrdimensionalen Vektorquantisierers,
der ein vierdimensionaler Vorvektorquantisierer (four-dimensional
pre vector quantizer, 4D pre VQ) 166 in einem Ausführungsbeispiel
ist. Der Ausdruck „vor" bzw. "pre" wird verwendet um
zu betonen, dass in einem Ausführungsbeispiel die
adaptiven Codebuchgewinne für
alle die Unterrahmen in einem Rahmen vor der Suche in dem fixierten Codebuch
für irgendeinen
der Unterrahmen quantisiert werden. In einem alternativen Ausführungsbeispiel
ist der mehrdimensionale Quantisierer ein n dimen sionaler Vektorquantisierer,
der Vektoren für
n Unterrahmen quantisiert, wobei n irgendeine Anzahl von Unterrahmen
sein kann.
-
Der
durch den vierdimensionalen Vorvektorquantisierer (4D pre VQ) 166 quantisierte
Vektor ist ein adaptiver Codebuchverstärkungsvektor mit Elementen,
die jeden der adaptiven Codebuchgewinne aus jedem der Unterrahmen
repräsentiert.
Im Anschluss an Quantisierung kann, wie später erörtert wird, der adaptive Codebuchverstärkungsvektor
auch als eine quantisierte Tonhöhenverstärkung (quantized
pitch gain, g ^k a)
bezeichnet werden. Quantisierung des adaptiven Codebuchverstärkungsvektors
zum Generieren der adaptiven Codebuchverstärkungskomponente 148b wird
durch Suchen in einer Vorverstärkungsquantisierungstabelle (pre-gain
quantization table) durchgeführt.
Die Vorverstärkungsquantisierungstabelle
umfasst eine Vielzahl von vorherbestimmten Vektoren, die durchsucht
werden können,
um den vorherbestimmten Vektor zu bestimmen, der den adaptiven Codebuchverstärkungsvektor
am Besten repräsentiert.
Die Indexstelle des identifizierten vorherbestimmten Vektors innerhalb
der Vorverstärkungsquantisierungstabelle
ist die Typ Eins adaptive Codebuchkomponente 148b. Die
adaptive Codebuchverstärkungskomponente 148b eines
Ausführungseispiels
umfasst 6 Bits.
-
In
einem Auführungsbeispiel
umfassen die vorherbestimmten Vektoren 4 Elemente, 1 Element
für jeden
Unterrahmen. Entsprechend kann die Vorverstärkungsquantisierungstabelle
im Allgemeinen dargestellt werden als:
-
-
Ein
Ausführungsbeispiel
der Vorverstärkungsquantisierungstabelle
umfasst 64 vorher bestimmte Vektoren (n = 64). Ein Ausführungsbeispiel
der Vorverstärkungsquantisierungstabelle
trägt den
Titel „Float64 gp4_tab" und ist im Anhang
B des beigefügten
Mikrofilmanhangs enthalten.
-
Die
Typ Eins fixierte Codebuchverstärkungskomponente 150b kann
in gleicher Weise codiert werden, und zwar unter Verwendung eines
mehrdimensionalen Vektorquantisierers für n Unterrahmen. In einem Ausführungsbeispiel
ist der mehrdimensionale Vektorquantisierer ein vierdimensionaler
verzögerter
Vektorquantisierer (four-dimensional delayed vector quantizer, 4D
delayed VQ) 168. Der Ausdruck „verzögert" bzw. "delayed" betont, dass die Quantisierung der
fixierten Codebuchgewinne für
die Unterrahmen erst nach der Suche in dem fixierten Codebuch für all die
Unterrahmen stattfindet. Wieder bezugnehmend auf 2 bestimmt
das F1 zweite Rahmenverarbeitungsmodul 76 die fixierte
Codebuchverstärkung
für jeden
der Unterrahmen. Die fixierte Codebuchverstärkung kann bestimmt werden,
indem zuerst Parameter, die auf einer Unterrahmenbasis generiert
wurden, zwischengespeichert werden, bis der gesamte Rahmen verarbeitet
worden ist. Wenn der Rahmen verarbeitet worden ist, werden die fixierten
Codebuchgewinne für
alle der Unterrahmen quantisiert und zwar unter Verwendung der zwischengespeicherten
Parameter, um die Typ Eins fixierte Codebuchverstärkungskomponente 150b zu
generieren. In einem Ausführungsbeispiel
umfasst die Typ Eins fixierte Codebuchverstärkungskomponente 150b 10
Bits, wie in 4 dargestellt ist.
-
Die
Typ Eins fixierte Codebuchverstärkungskomponente 150b wird
erzeugt durch Darstellen der fixierten Codebuchverstärkungen
mit einer Vielzahl fixierter Codebuchenergien in Dezibeleinheiten
(dB). Die fixierten Codebuchenergien werden quantisiert, um eine
Vielzahl quantisierter fixierter Codebuchenergien zu generieren,
die dann übersetzt
werden, um eine Vielzahl quantisierter fixierter Codebuchgewinne
zu kreieren. Zusätzlich
werden die fixierten Codebuchenergien aus den quantisierten fixierten
Codebuchenergiefehlern der vorhergehenden Rahmen vorhergesagt, und
zwar um eine Vielzahl vorhergesagter fixierter Codebuchenergien
zu generieren. Der Unterschied zwi schen den vorhergesagten fixierten
Codebuchenergien und den fixierten Codebuchenergien ist eine Vielzahl
fixierter Prädiktionscodebuchenergiefehler.
In einem Ausführungsbeispiel können unterschiedliche
Prädiktionskoeffizienten
für jeden
der vier Unterrahmen verwendet werden, und zwar zum Erzeugen der
vorhergesagten fixierten Codebuchenergien. In diesem beispielhaften
Ausführungsbeispiel werden
die vorhergesagten fixierten Codebuchenergien des ersten, des zweiten,
des dritten und des vierten Unterrahmens aus den vier quantisierten
fixierten Codebuchenergiefehlern des vorhergehenden Rahmens vorhergesagt.
Die Prädiktionskoeffizienten
für die
ersten, zweiten, dritten und vierten Unterrahmen dieses beispielhaften
Ausführungsbeispiels
können
{0,7, 0,6, 0,4, 0,2,}, {0,4, 0,2, 0,1, 0,05}, {0,3, 0,2, 0,075,
0,025} bzw. {0,2, 0,075, 0,025, 0,0} sein.
-
Die
fixierten Prädiktionscodebuchenergiefehler
können
gruppiert werden, um einen fixierten Codebuchverstärkungsvektor
zu bilden, der, wenn er quantisiert wird, als eine quantisierte
fixierte Codebuchverstärkung
(g ^k c) bezeichnet
werden. In einem Ausführungsbeispiel
repräsentiert
der fixierte Prädiktionscodebuchenergiefehler
für jeden
Unterrahmen die Elemente in dem Vektor. Die fixierten Prädiktionscodebuchenergiefehler werden
quantisiert und zwar unter Verwendung einer Vielzahl vorherbestimmter
Vektoren in einer verzögerten Verstärkungsquantisierungstabelle.
Während
der Quantisierung kann ein Wahrnehmungsgewichtungsmaß einbezogen
werden, um den Quantisierungsfehler zu minimieren. Eine Indexstelle,
die den vorherbestimmten Vektor in der verzögerten Verstärkungsquantisierungstabelle
identifiziert, ist die fixierte Codebuchverstärkungskomponente 150b für den Rahmen.
-
Die
vorherbestimmten Vektoren in der verzögerten Verstärkungsquantisierungstabelle
eines Ausführungsbeispiels
umfassen 4 Elemente. Entsprechend kann die verzögerte Verstärkungsquantisierungstabelle durch
die vorher erörterte
Tabelle 5 dargestellt werden. Ein Ausführungsbeispiel der verzögerten Verstärkungsquantisierungstabelle
umfasst 1024 vorherbestimmte Vektoren (n = 1024). Ein Ausführungsbeispiel
der verzögerten
Verstärkungsquantisie rungstabelle
trägt den
Titel „Float64
gainVQ_4_1024" und
ist im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Wieder
bezugnehmend auf 3, können die fixierten und adaptiven
Codebuchverstärkungskomponenten 148 und 150 codiert
werden, und zwar durch den Vollratendecoder 90, innerhalb
des Decodierungssystems 16, basierend auf der Typklassifikation.
Das F0 Anregungskonstruktionsmodul 104 decodiert die Typ Null
adaptive und fixierte Codebuchverstärkungskomponente 148a, 150a.
In gleicher Weise werden die Typ Eins adaptive Codebuchverstärkungskomponente 148b und
die Typ Eins fixierte Verstärkungskomponente 150b durch
das F1 Anregungsrekonstruktionsmodul 106 decodiert.
-
Die
Decodierung der fixierten und adaptiven Codebuchverstärkungskomponenten 158 und 160 umfasst
die Generierung der entsprechenden vorhergesagten Verstärkungen
durch den Vollratendecoder 90 und zwar wie vorher erörtert wurde.
Die entsprechenden quantisierten Vektoren aus den entsprechenden
Quantisierungstabellen werden dann unter Verwendung der entsprechenden
Indexstellen gefunden bzw. angeordnet. Die entsprechenden quantisierten
Vektoren werden dann mit den entsprechenden vorhergesagten Verstärkungen
zusammengesetzt, um entsprechende quantisierte Codebuchgewinne zu
generieren. Die quantisierten Codebuchgewinne, die aus den Typ Null
fixierten und adaptiven Verstärkungskomponenten 148a und 150a generiert
wurden, repräsentieren
die Werte sowohl für
die fixierten als auch adaptiven Codebuchgewinne für einen
Unterrahmen. Die quantisierte Codebuchverstärkung, die aus der Typ Eins
adaptiven Codebuchverstärkungskomponente 148b und
der Typ Eins fixierten Codebuchverstärkungskomponente 150b generiert
wurde, repräsentiert
die Werte für
die fixierten bzw. adaptiven Codebuchgewinne und zwar für jeden
Unterrahmen in einem Rahmen.
-
1.2 Bitzuordnung für den Halbraten-Codec
-
Bezugnehmend
jetzt auf 2, 3 und 5 wird
der Halbratenbitstrom des Halbraten-Codec 24 beschrieben.
Der Halbraten-Codec 24 ist in vieler Hinsicht gleichartig
wie der Vollraten-Codec 22, besitzt aber eine unterschiedliche
Bitzuordnung. Somit, der Kürze
wegen, wird sich die Erörterung
auf die Unterschiede konzentrieren. Jetzt bezugnehmend auf 5 umfasst
die Bitstromzuordnung eines Ausführungsbeispiels
des Halbraten-Codecs 24 eine Linienspektrumfrequenz (LSF)-Komponente 172,
eine Typkomponente 174, eine adaptive Codebuchkomponente 176,
eine fixierte Codebuchkomponente 178 und eine Verstärkungskomponente 179.
Die Verstärkungskomponente 179 umfasst
ferner eine adaptive Codebuchverstärkungskomponente 180 und
eine fixierte Codebuchverstärkungskomponente 182.
Der Bitstrom des Halbraten-Codec 24 wird auch
ferner definiert durch eine Typ Null Spalte 184 und eine
Typ Eins Spalte 186. In einem Ausführungsbeispiel verwendet die
Typ Null Spalte 184 zwei Unterrahmen mit 10 Millisekunden,
die jeweils 80 Abtastungen enthalten. Die Typ Eins Spalte 186 eines
Ausführungsbeispiels
verwendet drei Unterrahmen, wobei die ersten und zweiten Unterrahmen 53 Abtastungen
enthalten, und der dritte Unterrahmen 54 Abtastungen enthält.
-
Obwohl ähnlich wie
bei dem Vollraten-Codec 22 generiert, umfasst die LSF Komponente 172 eine
Vielzahl von Stufen 188 und einen Prädiktorschalter 190,
sowohl für
die Typ Null als auch die Type Eins Klassifikationen. Zusätzlich umfasst
ein Ausführungsbeispiel
der LSF Komponente 172 21 Bit, die Teil des ersten Anteils
des Bitstroms bilden. Das in 2 dargestellte
initiale Halbrahmenverarbeitungsmodul 48 generiert die LSF
Komponente 172 auf die gleiche Weise wie der Vollraten-Codec 22.
Wieder bezugnehmend auf 5 umfasst der Halbraten-Codec 24 eines
Ausführungsbeispiels
drei Stufen 188, zwei mit 128 Vektoren und einen mit 64
Vektoren. Die drei Stufen 188 des Halbraten-Codecs 24 werden
in gleicher Weise betrieben wie der Vollraten-Codec 22 für Rahmen, die als Typ Eins
klassifiziert sind, mit der Ausnahme der Auswahl eines Satzes von
Prädiktorkoeffizienten,
wie später
erläutert
wird. Die Indexstelle jedes der 128 Vektoren wird mit 7 Bits identifiziert
und die Indexstelle jedes der 64 Vektoren wird mit 6 Bits identifiziert.
Ein Ausführungsbeispiel
der LSF Prädiktionsfehlerquantisierungstabelle
für den
Halbraten-Codec 24 trägt
den Titel „Float64
CBes_40k" und ist
im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Der
Halbraten-Codec 24 unterscheidet sich auch vom Vollraten-Codec 22 durch
Auswählen
zwischen Sätzen
von Prädiktorkoeffizienten.
Der Prädiktorschalter 190 eines
Ausführungsbeispiels
identifiziert einen von zwei möglichen
Sätzen
von Prädiktorkoeffizienten
unter Verwendung von einem Bit. Der ausgewählte Satz von Prädiktorkoeffizienten
kann verwendet werden, um die vorhergesagten Linienspektrumfrequenzen
(LSFs) zu bestimmen, und zwar gleichartig wie beim Vollraten-Codec 22.
Der Prädiktorschalter 190 bestimmt
und identifiziert welcher der Sätze
von Prädiktorkoeffizienten
den Quantisierungsfehler am Besten minimiert. Die Sätze von
Prädiktorkoeffizienten
können
in einer LSF Prädiktorkoeffiziententabelle
enthalten sein, die im Allgemeinen durch die folgende Matrix dargestellt
werden kann:
-
-
In
einem Ausführungsbeispiel
gibt es vier Prädiktorkoeffizienten
(m = 4) in jedem der zwei Sätze
G = 2), die jeweils 10 Elemente umfassen (n = 10). Die LSF Prädiktorkoeffiziententabelle
für den
Halbraten-Codec 24 trägt
in einem Ausführungsbeispiel
den Titel „Float64
B_40k" und ist im
Anhang B des beigefügten
Mikrofilmanhangs enthalten. Wieder bezugnehmend auf 3 werden
die LSF Prädiktionsfehlerquantisierungstabelle
und die LSF Prädiktorkoeffiziententabelle
von dem H LPC Rekonstruktionsmodul 118 innerhalb des Decodierungssystems 16 verwendet.
Das H LPC Rekonstruktionsmodul 118 – empfängt und decodiert die LSF Komponente 172 aus
dem Bitstrom, um die quantisierten Rahmen LSFs zu rekonstruieren.
Gleichartig zu dem Vollraten-Codec 22 verwendet
der Halbraten-Codec 24 für Rahmen, die als Typ Eins
klassifiziert sind, einen vorherbestimmten linearen Interpolationspfad.
Der Halbraten-Codec 24 verwendet jedoch den vorherbestimmten
linearen Interpolationspfad für
Rahmen, die sowohl als Typ Null als auch Typ Eins klassifiziert
sind.
-
Die
adaptive Codebuchkomponente 176 in dem Halbraten-Codec 24 modelliert
auf die gleiche Weise den Tonhöhenabstand
(pitch lag) und zwar basierend auf der Periodizität des Sprachsignals 18.
Die adaptive Codebuchkomponente 176 wird für die Typ
Null Klassifikation auf einer Unterrahmenbasis und für die Typ
Eins Klassifikation auf einer Rahmenbasis codiert. Wie in 2 dargestellt
ist, codiert das initiale Halbrahmenverarbeitungsmodul 48 eine
gesteuerte (open loop) adaptive Codebuchkomponente 176a für Rahmen
mit der Typ Eins Klassifikation. Für Rahmen mit der Typ Null Klassifikation
codiert das H0 erste Unterrahmenverarbeitungsmodul 80 eine
geregelte (closed loop) adaptive Codebuchkomponente 176b.
-
Wieder
bezugnehmend auf 5 wird ein Ausführungsbeispiel
der gesteuerten adaptiven Codebuchkomponente 176a durch
7 Bits pro Rahmen codiert, und die geregelte adaptive Codebuchkomponente 176b wird
durch 7 Bits pro Unterrahmen codiert. Entsprechend ist die Typ Null
adaptive Codebuchkomponente 176a ein Teil des ersten Anteils
des Bitstroms und die Typ Eins adaptive Codebuchkomponente 176b ist
Teil des zweiten Anteils des Bitstroms. Wie in 3 dargestellt,
empfängt
das Decodiersystem 16 die geregelte adaptive Codebuchkomponente 176b.
Die geregelte adaptive Codebuchkomponente 176b wird von
dem Halbratendecoder 92 decodiert und zwar unter Verwendung
des H0 Anregungsrekonstruktionsmoduls 114. In gleicher
Weise decodiert das H1 Anregungsrekonstruktionsmodul 116 die
gesteuerte adaptive Codebuchkomponente 176a.
-
Ein
Ausführungsbeispiel
der fixierten Codebuchkomponente 178 für den Halbraten-Codec 24 ist
abhängig
von der Typklassifikation zum Codieren des Langzeitrests, wie bei
dem Vollraten-Codec 22. Wieder Bezug nehmend auf 2 wird
eine Typ Null fixierte Codebuchkomponente 178a oder eine
Typ Eins fixierte Codebuchkomponente 178b erzeugt, und
zwar durch das H0 erste Unterrahmenverarbeitungsmodul 80 oder
entsprechend durch das H1 zweite Unterrahmenverarbeitungsmodul 84.
Entsprechend bilden die Typ Null und Typ Eins fixierten Codebuchkomponenten 178a und 178b einen
Teil des zweiten Anteils des Bitstroms.
-
Wieder
bezugnehmend auf 5 wird die Typ Null fixierte
Codebuchkomponente 178a eines beispielhaften Ausführungsbeispiels
codiert unter Verwendung von 15 Bits pro Unterrahmen und zwar mit
bis zu 2 Bits, die das zu verwendende Codebuch identifizieren wie
bei dem Vollraten-Codec 22. Codieren der Typ Null fixierten
Codebuchkomponente 178a umfasst die Verwendung einer Vielzahl
von n Impulscodebüchern,
die in dem beispielhaften Ausführungsbeispiel
ein 2-Impulscodebuch 192 und ein 3-Impulscodebuch 194 sind.
Zusätzlich wird
in diesem beispielhaften Ausführungsbeispiel
ein gaussförmiges
Codebuch (gaussion codebook) 195 verwendet, das Einträge umfasst,
die zufälliger
Anregung bzw. Zufallsanregung (random exitation) entsprechen. Für die n
Impulscodebücher
verwendet der Halbraten-Codec 24 die Spurtabellen auf die
gleiche Weise wie der Vollraten-Codec 22. In einem Ausführungsbeispiel
wird die Spurtabelle mit dem Titel „static INT16track_2_7_1", „static
INT16track_1_3_0" und „staic
INT16track_3_2_0",
enthalten in der Sammlung mit dem Titel „tracks.tab" des Anhangs B des
Mikrofilmanhangs verwendet.
-
In
einem beispielhaften Ausführungsbeispiel
des 2-Impulscodebuchs 192 umfasst jede Spur in der Spurtabelle 80 Abtaststellen
für jeden
repräsentativen
Impuls. Die Impulsstellen für
sowohl die ersten als auch die zweiten repräsentativen Impulse werden unter
Verwendung von 13 Bits codiert. Codierung 1 von den 80 möglichen
Impulsstellen wird mit 13 Bits erreicht, und zwar durch Identifizieren
der Impulsstelle für
den ersten repräsentativen
Impuls, Multiplizieren der Impulsstelle mit 80 und Addieren der
Impulsstelle des zweiten repräsentativen
Impulses zu dem Ergebnis. Das Endergebnis ist ein Wert, der mit
13 Bits codiert werden kann, mit einem zusätzlichen Bit, das verwendet
wird zum Darstellen der Vorzeichen beider repräsentativen Impulse und zwar
wie in dem Vollraten-Codec 22.
-
In
einem beispielhaften Ausführungsbeispiel
des 3-Impulscodebuchs 194 werden die Impulsstellen generiert
und zwar durch die Kombination einer allgemeinen Stelle, die eine
von 16 durch 4 Bits definierten Abtaststellen sein kann, und einer
davon relativen Versetzung (displacement). Die relative Versetzung
kann 3 Werte sein, die jeweils einen von den 3 repräsentativen
Impulsen in dem 3-Impulscodebuch 194 repräsentieren.
Die Werte repräsentieren
die Stellendifferenz und zwar weg von der allgemeinen Stelle, und
können
mit 2 Bits für
jeden repräsentativen
Impuls definiert werden. Die Vorzeichen für die 3 repräsentativen
Impulse können
jeweils mit einem Bit definiert werden, so dass die gesamten Bits
für die
Impulsstelle und die Vorzeichen 13 Bits sind.
-
Das
gaussförmige
Codebuch 195 repräsentiert
im Allgemeinen Sprachsignale vom Rauschtyp, die unter Verwendung
von zwei orthogonalen Basiszufallsvektoren codiert werden können. Die
Typ Null fixierte Codebuchkomponente 178a repräsentiert
die zwei orthogonal basierten Zufallsvektoren, die aus dem gaussförmigen Codebuch 195 generiert
werden. Die Typ Null fixierte Codebuchkomponente 178a repräsentiert
wie eine Vielzahl orthogonaler Basiszufallsvektoren in einer gaussförmigen Tabelle
gestört
(perturbate) werden, um die Anzahl von orthogonalen Basiszufallsvektoren
zu erhöhen
und zwar ohne Erhöhung
der Speicheranforderungen. In einem beispielhaften Ausführungsbeispiel
wird die Anzahl der orthogonalen Basiszufallsvektoren von 32 Vektoren
auf 45 Vektoren erhöht.
Eine gaussförmige
Tabelle, die 32 Vektoren umfasst, wobei jeder Vektor 40 Elemente
aufweist, repräsentiert
das gaussförmige
Codebuch des beispielhaften Ausführungsbeispiels.
In diesem beispielhaf ten Ausführungsbeispiel
werden die zwei zum Codieren verwendeten orthogonalen Zufallsvektoren
miteinander verschachtelt (interleaved) um 80 Abtastungen in jedem
Unterrahmen zu repräsentieren.
Das gaussförmige
Codebuch kann im Allgemeinen durch die folgende Matrix dargestellt
werden:
-
-
Ein
Ausführungsbeispiel
des gaussförmigen
Codebuchs 195 trägt
den Titel „double
bv" und ist im Anhang
B des beigefügten
Mikrofilmanhangs enthalten. Für
das beispielhafte Ausführungsbeispiel
des gaussförmigen
Codebuchs 195 identifizieren 11 Bits die kombinierten Indizes
(Stelle und Störung
(locaction and perturbation)) von beiden der zwei zu Codierung verwendeten
orthogonalen Basiszufallsvektoren und 2 Bits definieren die Vorzeichen
der orthogonalen Basiszufallsvektoren.
-
Codierung
der Typ Eins fixierten Codebuchkomponente 178b umfasst
eine Vielzahl von n Impulscodebüchern,
die in dem beispielhaften Ausführungsbeispiel
ein 2-Impulscodebuch 196 und ein 3-Impulscodebuch 197 sind.
Das 2-Impulscodebuch 196 und
das 3-Impulscodebuch 197 funktionieren in ähnlicher
Weise wie das 2-Impulscodebuch 192 und das 3-Impulscodebuch 194 der
Typ Null Klassifikation, die Struktur ist jedoch unterschiedlich.
Typ Eins fixierte Codebuchkomponente 178b eines beispielhaften
Ausführungsbeispiels wird
unter Verwendung von 13 Bits pro Unterrahmen codiert. Von den 13
Bits identifiziert 1 Bit das 2-Impulscodebuch 196 oder
das 3-Impulscodebuch 197 und 12 Bits repräsentieren
die entsprechenden Impulsstellen und die Vorzeichen der repräsentativen
Impulse. In dem 2-Impulscodebuch 196 des beispielhaften
Ausführungsbeispiels
umfassen die Spuren für
jeden repräsentativen
Impuls 32 Abtaststellen, die unter Verwendung von 5 Bits
codiert werden, wo bei die verbleibenden 2 Bits für das Vorzeichen jedes repräsentativen
Impulses verwendet werden. In dem 3-Impulscodebuch 197 umfasst
die allgemeine Stelle 8 Abtaststellen, die unter Verwendung von
4 Bits codiert werden. Die relative Versetzung wird mit 2 Bits codiert,
und die Vorzeichen für
die repräsentativen
Impulse werden in 3 Bits codiert, und zwar in ähnlicher Weise wie bei den
als Type Null klassifizierten Rahmen.
-
Wieder
bezugnehmend auf 3 empfängt das Decodiersystem 16 die
Typ Null oder die Typ Eins fixierten Codebuchkomponenten 178a und 178b.
Die Typ Null oder Typ Eins fixierten Codebuchkomponenten 178a und 178b werden
von dem H0 Anregungsrekonstruktionsmodul 114 oder entsprechend
dem H1 Rekonstruktionsmodul 116 decodiert. Die Decodierung
der Typ Null fixierten Codebuchkomponente 178a findet statt unter
Verwendung eines Ausführungsbeispiels
des 2-Impulscodebuchs 192, des 3-Impulscodebuchs 194 oder des
gaussförmigen
Codebuchs 195. Die Typ Eins fixierte Codebuchkomponente 178b wird
unter Verwendung des 2-Impulscodebuchs 196 oder des 3-Impulscodebuchs 197 decodiert.
-
Wieder
bezugnehmend auf 5 umfasst ein Ausführungsbeispiel
der Verstärkungskomponente 179 eine
Typ Null adaptive und fixierte Codebuchverstärkungskomponente 180a und 182a.
Die Typ Null adaptive und fixierte Codebuchverstärkungskomponente 180a und 182a können quantisiert
werden unter Verwendung des zweidimensionalen Vektorquantisierers
(2D VQ) 164 und der 2D Verstärkungsquantisierungstabelle
(Tabelle 4), auch verwendet für
den Vollraten-Codec 22. In einem Ausführungsbeispiel trägt die 2D
Verstärkungsquantisierungstabelle
den Titel „Fload64
gainVQ_3_128" und
ist im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Typ
Eins adaptive und fixierte Codebuchverstärkungskomponenten 180b und 182b können auch
in ähnlicher
Weise wie beim Vollraten-Codec 22 generiert werden, und
zwar unter Verwendung mehrdimensionaler Vektorquantisierer. In einem
Ausführungsbeispiel
werden ein dreidimensionaler Vorvektorquantisierer (three-dimensional
pre vector quantizer, 3D preVQ) 198 bzw. ein drei- dimensionaler verzögerter Vektorquantisierer
(three-dimensional delayed vector quantizer, 3D delayed VQ) 200 für die adaptiven
bzw. fixierten Verstärkungskomponenten 180b bzw. 182b verwendet.
Die Vektorquantisierer 198 und 200 führen Quantisierung durch
unter Verwendung entsprechender Verstärkungsquantisierungstabellen.
In einem Ausführungsbeispiel sind
die Verstärkungsquantisierungstabellen
eine Vorverstärkungsquantisierungstabelle
bzw. eine verzögerte Verstärkungsquantisierungstabelle
für die
adaptiven bzw. fixierten Codebuchverstärkungen. Die mehrdimensionalen
Verstärkungstabellen
können ähnlich strukturiert
sein, und eine Vielzahl vorherbestimmter Vektoren enthalten. Jede
mehrdimensionale Verstärkungstabelle
in einem Ausführungsbeispiel
umfasst 3 Elemente für jeden
Unterrahmen eines als Typ Eins klassifizierten Rahmens.
-
Ähnlich dem
Vollraten-Codec 22 kann der dreidimensionale Vorvektorquantisierer
(3D preVQ) 198 für die
adaptive Verstärkungskomponente 180b,
die adaptiven Verstärkungen
direkt quantisieren. Zusätzlich
kann der dreidimensionale verzögerte
Vektorquantisierer (3D delayed VQ) 200 für die fixierte
Verstärkungskomponente 182b den
fixierten Codebuchenergieprädiktionsfehler
quantisieren. Unterschiedliche Prädiktionskoeffizienten können verwendet
werden um die fixierte Codebuchenergie für jeden Unterrahmen vorherzusagen.
In einem bevorzugten Ausführungsbeispiel
werden die vorhergesagten fixierten Codebuchenergien der ersten, der
zweiten und der dritten Unterrahmen aus den 3 quantisierten fixierten
Codebuchenergiefehlern des vorhergehenden Rahmens vorhergesagt.
In diesem beispielhaften Ausführungsbeispiel
werden die vorhergesagten fixierten Codebuchenergien der ersten,
der zweiten bzw. der dritten Unterrahmen vorhergesagt unter Verwendung
des Satzes von Koeffizienten {0,6, 0,3, 0,1}, {0,4, 0,25, 0,1} bzw.
{0,3, 0,15, 0,075}.
-
Die
Verstärkungsquantisierungstabellen
für den
Halbraten-Codec 24 können
im Allgemeinen dargestellt werden als:
-
-
Ein
Ausführungsbeispiel
der vom dreidimensionalen Vorvektorquantisierer (3D preVQ) 198 verwendeten
Vorverstärkungsquantisierungstabelle
umfasst 16 Vektoren (n = 16). Der dreidimensionale verzögerte Vektorquantisierer
(3D delayed VQ) 200 verwendet ein Ausführungsbeispiel der verzögerten Verstärkungsquantisierungstabelle,
die 256 Vektoren (n = 256) umfasst. Die Verstärkungsquantisierungstabellen
für den
Vorvektorquantisierer (3D preVQ) 198 bzw. den verzögerten Vektorquantisierer
(3D delayed VQ) 200 eines Ausführungsbeispiels haben den Titel
Float64 gp3_tab" bzw. „Float64
gainVQ_3_256" und
sind im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Wieder
bezugnehmend auf 2 wird die Typ Null adaptive
und fixierte Codebuchverstärkungskomponente 180a und 182a durch
das H0 erste Unterrahmenverarbeitungsmodul 80 generiert.
Das H1 erste Rahmenverarbeitungsmodul 82 generiert die
Typ Eins adaptive Codebuchverstärkungskomponente 180b.
In ähnlicher
Weise wird die Typ Eins fixierte Codebuchverstärkungskomponente 182b durch
das H1 zweite Rahmenverarbeitungsmodul 86 generiert. Wieder
bezugnehmend auf 3 empfängt das Decodierungssystem 16 die Typ
Null adaptive und fixierte Codebuchverstärkungskomponente 180a und 182a.
Die Typ Null adaptive und fixierte Codebuchverstärkungskomponente 180a und 182a wird
durch das H0 Anregungsrekonstruktionsmodul 114 decodiert
und zwar basierend auf der Typklassifikation. In ähnlicher
Weise decodiert das H1 Anregungsrekonstruktionsmodul 116 die
Typ Eins adaptive Verstärkungskomponente 180b und
die Typ Eins fixierte Codebuchverstärkungskomponente 182b.
-
1.3 Bitzuordnung für den Viertelraten-Codec
-
Jetzt
bezugnehmend auf 2, 3 und 6 wird
jetzt der Viertelratenbitstrom des Viertelraten-Codec 26 erläutert. Das
dargestellte Ausführungsbeispiel
des Viertelraten-Codec 26 wird sowohl auf einer Rahmenbasis
als auch einer Unterrahmenbasis betrieben, aber umfasst nicht die
Typklassifikation als Teil des Codierungsprozesses, wie bei den
Voll- und Halbraten-Codecs 22 und 24. Jetzt bezugnehmend
auf 6 umfasst der vom Viertelraten-Codec 26 generierte
Bitstrom eine LSF Komponente 202 und eine Energiekomponente 204.
Ein Ausführungsbeispiel
des Viertelraten-Codecs 26 wird betrieben unter Verwendung
von zwei Unterrahmen von jeweils 10 Millisekunden um Rahmen zu verarbeiten
und zwar unter Verwendung von 39 Bits pro Rahmen.
-
Die
LSF Komponente 202 wird auf einer Rahmenbasis codiert und
zwar unter Verwendung eines ähnlichen
LSF Quantisierungsschemas wie bei dem Vollraten-Codec 22,
wenn der Rahmen als Typ Null klassifiziert ist. Der Viertelraten-Codec 26 verwendet
ein Interpolationselement 206 und eine Vielzahl von Stufen 208, um
die LSFs zu codieren, damit diese die spektral Einhüllende eines
Rahmens repräsentieren.
Ein Ausführungsbeispiel
der LSF Komponente 202 wird unter Verwendung von 27 Bits
codiert. Die 27 Bits repräsentieren das
Interpolationselement 206, das in 2 Bits codiert wird,
und vier der Stufen 108, die in 25 Bits codiert werden. Die
Stufen 208 umfassen eine Stufe, die unter Verwendung von
7 Bits codiert wird, und drei Stufen, die unter Verwendung von 6
Bits codiert werden. In einem Ausführungsbeispiel verwendet der
Viertelraten-Codec 26 die exakte Quantisierungstabelle
und Prädiktorkoeffiziententabelle,
die vom Vollraten-Codec 22 verwendet werden. Die Quantisierungstabelle
und die Prädiktorkoeffiziententabelle
eines Ausführungsbeispiels
tragen den Titel „Float64
CBes_85k" bzw. „Float64
B_85k" und sind
im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
Die
Energiekomponente 204 repräsentiert eine Energieverstärkung, die
multipliziert werden kann, und zwar mit einem Vektor jetzt noch ähnlicher
(similar yet) Zufallszahlen, die sowohl von dem Codiersystem 12 als
auch dem Deco diersystem 16 erzeugt werden können. In
einem Ausführungsbeispiel
wird die Energiekomponente 204 unter Verwendung von 6 Bits
pro Unterrahmen codiert. Die Energiekomponente 204 wird
generiert durch erstes Bestimmen der Energieverstärkung für den Unterrahmen,
und zwar basierend auf den Zufallszahlen. Zusätzlich wird eine vorhergesagte
Energieverstärkung
für den
Unterrahmen bestimmt, und zwar basierend auf der Energieverstärkung vergangener
bzw. vorhergegangener Rahmen.
-
Die
vorhergesagte Energieverstärkung
wird von der Energieverstärkung
abgezogen, um einen Energieverstärkungsprädiktionsfehler
zu bestimmen. Der Energieverstärkungsprädiktionsfehler
wird quantisiert und zwar unter Verwendung eines Energieverstärkungsquantisierers
und einer Vielzahl vorherbestimmter Scalare in einer Energieverstärkungsquantisierungstabelle.
Indexstellen der vorherbestimmten Scalare für jeden Unterrahmen können durch
die Energiekomponente 204 für den Rahmen repräsentiert
werden.
-
Die
Energieverstärkungsquantisierungstabelle
kann im Allgemeinen durch die folgende Matrix repräsentiert
werden:
-
-
In
einem Ausführungsbeispiel
enthält
die Energiequantisierungstabelle 64 (n = 64) der vorherbestimmten
Scalare. Ein Ausführungsbeispiel
der Energieverstärkungsquantisierungstabelle
trägt den
Titel Float64 gainSQ_1_64" und
ist im Anhang B des beigefügten
Mikrofilmanhangs enthalten.
-
In 2 wird
die LSF Komponente 202 durch das initiale Viertelrahmenverarbeitungsmodul 50 auf
einer Rahmenbasis codiert. In ähnlicher
Weise wird die Energiekomponente 204 durch das Viertelratenmodul 60 auf
einer Unterrahmenbasis codiert. Jetzt bezugnehmend auf 3 empfängt das
Decodiersystem 16 die LSF Komponente 202. Die
LSF Komponente 202 wird durch das Q LPC Rekonstruktionsmodul 122 decodiert und
die Energiekomponente 204 wird durch das Q Anregungsrekonstruktionsmodul 120 decodiert.
Die Decodierung der LSF Komponente 202 ist ähnlich den
Decodierverfahren für
den Vollraten-Codec 22 für als Typ Eins klassifizierte
Rahmen. Die Energiekomponente 204 wird zum Bestimmen der
Energieverstärkung
decodiert. Ein Vektor jetzt ähnlicher
Zufallszahlen innerhalb des Decodiersystems 16 generiert,
kann mit der Energieverstärkung
multipliziert werden, um die Kurzzeitanregung zu generieren.
-
1.4 Bitzuordnung für den Achtelraten-Codec
-
In
den 2, 3 und 7 kann
der Achtelratenbitstrom des Achtelraten-Codec 28 die Typklassifikation
als Teil des Codierprozesses nicht enthalten, und kann nur auf einer
Rahmenbasis betrieben werden. Jetzt bezugnehmend auf 7 umfasst
der Bitstrom des Achtelraten-Codec 28, in ähnlicher
Weise wie der Viertelraten-Codec 26, eine LSF Komponente 240 und
eine Energiekomponente 242. Die LSF Komponente 240 kann
codiert werden und zwar unter Verwendung eines ähnlichen LSF Quantisierungsschemas,
wie beim Vollraten-Codec 22, wenn der Rahmen als Typ Eins
klassifiziert ist. Der Achtelraten-Codec 28 verwendet eine Vielzahl
von Stufen 244 zum Codieren des Kurzzeitprädiktors
oder spektraler Repräsentation
eines Rahmens. Ein Ausführungsbeispiel
der LSF Komponente 240 wird in drei Stufen 244 unter
Verwendung von 11 Bits pro Rahmen codiert. Zwei der drei Stufen 244 werden
mit 4 Bits und die letzte der drei Stufen 244 wird mit
3 Bits codiert.
-
Der
Quantisierungsansatz zum Erzeugen der LSF Komponente 240 für den Achtelraten-Codec 28 umfasst
eine LSF Prädiktionsfehlerquantisierungstabelle
und eine Prädiktorkoeffiziententabelle, ähnlich dem
Vollraten-Codec 22. Die LSF Prädiktionsfehlerquantisierungstabelle
und die LSF Prädiktorkoeffiziententabelle kann
im Allgemeinen durch die vorher erörterten Tabellen 1 und 2 repräsentiert
werden. In einem beispielhaften Ausführungsbeispiel umfasst die
LSF Quantisierungstabelle für
den Achtelraten-Codec 28 drei Stufen G = 3) mit 16 Quantisierungsvektoren
in zwei Stufen (r = 16) und 8 Quantisierungsvektoren in einer Stufe
(s = 8), wobei jede 10 Elemente (n = 10) besitzt. Die Prädiktorkoeffiziententabelle
eines Ausführungsbeispiels
umfasst 4 Vektoren (m = 4) mit jeweils 10 Elementen (n = 10). Die
Quantisierungstabelle und die Prädiktorkoeffiziententabelle
eines Ausführungsbeispiels
haben den Titel „Float64
CBes_08k" bzw. „Float64B_08k" und sind im Anhang
B des beigefügten
Mikrofilmanhangs enthalten.
-
In 2 wird
die LSF Komponenten 240 auf einer Rahmenbasis durch das
initiale Achtelrahmenverarbeitungsmodul 52 codiert. Die
Energiekomponente 242 wird auch auf einer Rahmenbasis durch
das Achtelratenmodul 62 codiert. Die Energiekomponente 242 repräsentiert
eine Energieverstärkung,
die in ähnlicher Weise
wie beim Viertelraten-Codec 26 bestimmt und codiert werden
kann. Ein Ausführungsbeispiel
der Energiekomponente 242 wird durch 5 Bits pro Rahmen
repräsentiert,
wie in 7 dargestellt ist. Ähnlich dem
Viertelraten-Codec 26 können
die Energieverstärkung
und die vorhergesagte Energieverstärkung verwendet werden, um
einen Energieprädiktionsfehler
zu bestimmen. Der Energieprädiktionsfehler
wird quantisiert und zwar unter Verwendung eines Energieverstärkungsquantisierers
und einer Vielzahl vorher bestimmter Skalare in einer Energieverstärkungsquantisierungstabelle.
Die Energieverstärkungsquantisierungstabelle
kann im Allgemeinen durch Tabelle 9, wie vorher diskutiert, dargestellt
werden. Der Energieverstärkungsquantisierer
eines Ausführungsbeispiels
verwendet eine Energieverstärkungsquantisierungstabelle,
die 32 Vektoren (n = 32) enthält,
die den Titel trägt „Float64
gainSQ_1_32" und
im Anhang B des beigefügten
Mikrofilmanhangs enthalten ist.
-
In 3 können die
LSF Komponente 240 und die Energiekomponente 242 decodiert
werden, und zwar nach dem Empfang durch das Decodiersystem 16.
Die LSF Komponente 240 und die Energiekomponente 242 werden
durch das E LPC Rekonstruktionsmodul 126 bzw. das E Anregungsrekonstruktions modul 124 decodiert.
Die Decodierung der LSF Komponente 240 ist ähnlich wie
beim Vollraten-Codec 22 für als Typ Eins klassifizierte
Rahmen. Die Energiekomponente 242 kann decodiert werden
durch Anwenden der decodierten Energieverstärkung auf einen Vektor mit
jetzt ähnlichen
Zufallszahlen, wie beim Viertelraten-Codec 26.
-
Ein
Ausführungsbeispiel
des Sprachkomprimierungssystems 10 ist geeignet einen Bitstrom
zu kreieren und dann zu decodieren, und zwar unter Verwendung eines
der vier Codecs 22, 24, 26 und 28.
Der durch einen bestimmten Codec 22, 24,26 und 28 generierte
Bitstrom kann codiert werden, mit Betonung bzw. unter Hervorhebung
unterschiedlicher Parameter des Sprachsignals 18 innerhalb
eines Rahmens und zwar abhängig
von der Ratenauswahl und der Typklassifikation. Entsprechend kann
die Wahrnehmungsqualität
bzw. wahrnehmbare Qualität
der aus dem Bitstrom decodierten nachverarbeiteten synthetisierten
Sprache 20 optimiert werden, während die gewünschte durchschnittliche
Bitrate beibehalten wird.
-
Eine
detaillierte Erörterung
der Konfiguration und des Betriebs der in den Ausführungsbeispielen
der 2 und 3 dargestellten Sprachkomprimierungssystemmodule
wird jetzt geliefert. Der Leser wird ermutigt, den Quellcode zu
betrachten, der im Anhang A des beigefügten Mikrofilmanhangs beinhaltet
ist und zwar im Zusammenhang mit der Erörterung um das Verständnis zu
erhöhen.
-
2.0 Vorverarbeitungsmodul
(pre-processing module)
-
Jetzt
bezugnehmend auf 8 wird ein erweitertes Blockdiagramm
des in 2 dargestellten Vorverarbeitungsmoduls 34 geliefert.
Ein Ausführungsbeispiel
des Vorverarbeitungsmoduls 34 umfasst ein Stille- bzw.
Ruheverstärkungsmodul
(silence enhancement module) 302, ein Hochpassfiltermodul 304 und
ein Rauschunterdrückungsmodul 306.
Das Vorverarbeitungsmodul 34 empfängt das Sprachsignal 18 und
liefert ein vorverarbeitetes Sprachsignal 308.
-
Das
Ruheverstärkungsmodul 302 empfängt das
Sprachsignal 18 und hat die Funktion der minimalen Rauschauflösung (minimum
noise resolution) nachzufolgen. Die Ruheverstärkungsfunktion bzw. Ruheanhebungsfunktion
folgt adaptiv der minimalen Auflösung
nach und pegelt das Sprachsignal 18 um Null herum ein, und
detektiert ob der aktuelle Rahmen „Ruherauschen" (silence noise)
sein könnte.
Falls ein Rahmen mit „Ruherauschen" detektiert wird,
kann das Sprachsignal 18 auf den Null-Pegel geregelt (ramped)
werden. Andernfalls kann bzw. könnte
das Sprachsignal 18 nicht modifiziert werden. Beispielsweise
kann das Codierungsschema nach der A-Regel, bzw. A-law Codierungsschema
so ein unhörbares „Ruherauschen" in ein deutlich hörbares Rauschen
transformieren. A-law-Codierung und Decodierung des Sprachsignal 18 vor
dem Vorverarbeitungsmodul 34 kann Abtastwerte, die fast
Null sind, verstärken
und zwar auf Werte von etwa +8 oder –8 und dabei ein fast unhörbares Rauschen
in ein hörbares
Rauschen transformieren. Nach der Verarbeitung durch das Ruheverstärkungsmodul 302 kann
das Sprachsignal 18 an das Hochpassfiltermodul 304 geliefert werden.
-
Das
Hochpassfiltermodul 304 kann ein Pol-Nullstellen-Filter
(pole-zero-filter) zweiter Ordnung sein, und kann durch die folgende
Transferfunktion H(z) angegeben sein.
-
-
Während der
Hochpassfilterung kann der Eingang um den Faktor 2 herunterscaliert
werden, und zwar durch Teilen der Koeffizienten des Zählers durch
2.
-
Nach
der Verarbeitung durch das Hochpassfilter kann das Sprachsignal 18 an
das Rauschunterdrückungsmodul 306 gegeben
werden. Das Rauschunterdrückungsmodul 306 wendet
Rauschunterdrückung
im Frequenzbereich an, und kann eines der vielen bekannten Verfahren
zur Rauschunterdrückung
sein. Das Rauschunterdrückungsmodul 306 kann
ein Programm zur Fouriertrans formation umfassen, wie es von einem Rauschunterdrückungsverfahren
wie in Section 4.1.2 des TIA/EIA IS-127 Standards mit dem Titel „Enhanced Variable
Rate Codec, Speech Service Option 3 for Wideband Spread Spectrum
Digital Systems" beschrieben ist.
-
Das
Rauschunterdrückungsmodul 306 eines
Ausführungsbeispiels
transformiert jeden Rahmen des Sprachsignals 18 in den
Frequenzbereich, wo die Spektralamplituden von den Spektralphasen
getrennt werden können.
Die Spektralamplituden können
in Bänder
gruppiert werden, die den menschlichen Gehörkanalbändern folgen. Eine Dämpfungsverstärkung (attenuation
gain) kann für
jedes Band berechnet werden. Die Dämpfungsverstärkungen
können
berechnet werden und zwar mit weniger Gewichtung auf Spektralbereiche für die wahrscheinlich
ist, dass sie harmonische Struktur aufweisen. In solchen Bereichen
kann das Hintergrundrauschen durch die starke stimmhafte Sprache
maskiert werden. Entsprechend kann jede Dämpfung der Sprache die Qualität der Originalsprache
stören
und zwar ohne irgendeine wahrnehmbare Verbesserung der Reduktion
des Rauschens.
-
Nach
der Berechnung der Dämpfungsverstärkung können die
spektralen Amplituden in jedem Band mit der Dämpfungsverstärkung multipliziert
werden. Die spektralen Amplituden können dann mit den originalen spektralen
Phasen kombiniert werden, und das Sprachsignal 18 kann
zurück
in den Zeitbereich transformiert werden. Das Zeitbereichssignal
kann überlappt
und addiert (overlapped-and-added) werden, um das vorverarbeitete
Sprachsignal 308 zu generieren. Das vorverarbeitete Sprachsignal 308 kann
dann an das initiale Rahmenverarbeitungsmodul 44 geliefert
werden.
-
3.0 Initiales Rahmenverabeitungsmodul
(initial frame processing module)
-
9 zeigt
ein Blockdiagramm des initialen Rahmenverarbeitungsmoduls 44,
wie in 2 dargestellt. Ein Ausführungsbeispiel
des initialen Rahmenverarbeitungsmoduls 44 umfasst einen
LSF Generierungsabschnitt 312, ein Wahrnehmungsgewichtungsfiltermodul 314,
ein gesteuertes Tonhöhenschät zungsmodul (open
loop pitch estimation module) 316, einen Charakterisierungsabschnitt 318,
ein Ratenauswahlmodul 320, ein Tonhöhenvorverarbeitungsmodul 322 und
ein Typklassifikationsmodul 324. Der Charakterisierungsabschnitt 318 umfasst
ferner ein Sprachaktivitätsdetektions
(voice activity detection, VAD)-Modul 326 und ein Charakterisierungsmodul 328.
Der LSF Generierungsabschnitt 312 umfasst ein LPC Analysemodul 330,
ein LSF Glättungsmodul
(smoothing module) 332 und ein LSF Quantisierungsmodul 334.
Zusätzlich
umfasst der LSF Generierungsabschnitt 312 innerhalb des
Vollratencodierers 36 ein Interpolationsmodul 338 und
innerhalb des Halbratencodierers 38 umfasst der LSF Generierungsabschnitt
ein Prädiktorschaltmodul 336.
-
Bezugnehmend
auf 2 wird das initiale Rahmenverarbeitungsmodul 44 betrieben,
um die LSF Komponenten 140, 172, 202 und 240 zu
generieren, wie auch die Ratenauswahl und die Typklassifikation
zu bestimmen. Die Ratenauswahl und Typklassifikation steuern die
Verarbeitung durch das Anregungsverarbeitungsmodul 54.
Das in 9 dargestellte initiale Rahmenverarbeitungsmodul 44 ist
illustrativ für
ein Ausführungsbeispiel
des initialen Vollrahmenverarbeitungsmoduls 46 und des
initialen Halbrahmenverarbeitungsmoduls 48. Ausführungsbeispiele
des initialen Viertelrahmenverarbeitungsmoduls 50 und des
initialen Achtelrahmenverarbeitungsmoduls 52 unterscheiden
sich in gewissem Maße.
-
Wie
vorher in einem Ausführungsbeispiel
erörtert,
findet die Typklassifikation für
das initiale Viertelratenrahmenverarbeitungsmodul 50 und
das initiale Achtelratenrahmenverarbeitungsmodul 52 nicht
statt. Zusätzlich
werden der Langzeitprädiktor
und der Langzeitprädiktorrest
nicht getrennt verarbeitet, um die in 6 und 7 dargestellte
Energiekomponente 204 und 242 zu repräsentieren.
Entsprechend werden nur der LSF Abschnitt 312, der Charakterisierungsabschnitt 318 und
das Ratenauswahlmodul 320, in 9 dargestellt,
innerhalb des initialen Viertelratenrahmenverarbeitungsmoduls 50 und
des initialen Achtelratenrahmenverarbeitungsmoduls 52 betrieben.
-
Um
das Verständnis
des initialen Rahmenverarbeitungsmoduls 44 zu vereinfachen
wird zuerst ein allgemeiner Überblick
des Betriebs erörtert,
gefolgt von einer detaillierten Erörterung. Jetzt bezugnehmend
auf 9 wird das vorverarbeitete Sprachsignal 308 initial
bzw. anfänglich
an den LSF Generierungsabschnitt 312, das Wahrnehmungsgewichtungsfiltermodul 314 und
den Charakterisierungsabschnitt 318 geliefert. Jedoch ist
einiges der Verarbeitung innerhalb des Charakterisierungsabschnitts 318 von
der Verarbeitung abhängig,
die innerhalb des gesteuerten Tonhöhenschätzungsmoduls 316 stattfindet.
Der LSF Generierungsabschnitt 312 schätzt und codiert die spektrale
Repräsentation
des vorverarbeiteten Sprachsignals 308. Das Wahrnehmungsgewichtungsfiltermodul 314 wird
betrieben um Wahrnehmungsgewichtung bzw. wahrnehmungsbezogene Gewichtung
während
der Codierung des vorverarbeiteten Sprachsignals 308 vorzusehen, und
zwar gemäß der natürlichen
Maskierung bzw. Verdeckung, die während der Verarbeitung durch
das menschliche Hörsystem
stattfindet. Das gesteuerte Tonhöhenschätzungsmodul 316 bestimmt
den gesteuerten Tonhöhenabstand
(open loop pitch lag) für
jeden Rahmen. Der Charakterisierungsabschnitt 318 analysiert
den Rahmen des vorverarbeiteten Sprachsignals 308 und charakterisiert
den Rahmen um die nachfolgende Verarbeitung zu optimieren.
-
Während und
nach dem Verarbeiten durch den Charakterisierungsabschnitt 318 können die
resultierenden Charakterisierungen des Rahmens durch das Tonhöhenvorverarbeitungsmodul 322 verwendet
werden, um Parameter zu generieren, die bei der Generierung des
geregelten Tonhöhenabstands
(closed loop pitch lag) verwendet werden. Zusätzlich wird die Charakterisierung
des Rahmens durch das Ratenauswahlmodul 320 zum Bestimmen
der Ratenauswahl verwendet. Basierend auf Parametern des Tonhöhenabstands, die
durch das Tonhöhenvorverarbeitungsmodul 322 und
die Charakterisierungen bestimmt wurden, wird die Typklassifizierung
durch das Typklassifikationsmodul 324 bestimmt.
-
3.1 LPC Analysemodul
-
Das
vorverarbeitete Sprachsignal 308 wird durch das LPC Analysemodul 330 innerhalb
des LSF Generierungsabschnitts 312 empfangen. Das LPC Analysemodul 330 bestimmt
die Kurzzeitprädiktionsparameter,
die verwendet werden, um die LSF Komponenten 312 zu generieren.
Innerhalb eines-Ausführungsbeispiels
des LPC Analysemoduls 330 gibt es drei LPC Analysen 10ter
Ordnung, die für
einen Rahmen des vorverarbeiteten Sprachsignals 308 durchgeführt werden.
Die Analysen können
zentriert sein, und zwar innerhalb des zweiten Viertels des Rahmens,
des vierten Viertels des Rahmens und einer Vorausschau (lookahead).
Die Vorausschau ist ein Sprachsegment, das in den nächsten Rahmen
hinüberhängt (overhangs)
um Übergangseffekte
(transitional effects) zu reduzieren. Die Analyse innerhalb der
Vorausschau umfasst Abtastungen aus dem aktuellen Rahmen und aus
dem nächsten
Rahmen des vorverarbeiteten Sprachsignals 308.
-
Unterschiedliche
Fenster können
für jede
LPC Analyse innerhalb eines Rahmens verwendet werden, um die Linearprädiktionskoeffizienten
zu berechnen. Die LPC Analysen in einem Ausführungsbeispiel werden unter
Verwendung des Autokorrelationsverfahrens zum Berechnen der Autokorrelationskoeffizienten
durchgeführt.
Die Autokorrelationskoeffizienten können aus einer Vielzahl von
Datenabtastungen innerhalb jedes Fensters berechnet werden. Während der
LPC Analyse kann eine Bandbreitenerweiterung von 60 Hz und ein Korrekturfaktor
für weißes Rauschen
von 1,0001 auf die Autokorrelationskoeffizienten angewendet werden. Die
Bandbreitenerweiterung liefert zusätzliche Robustheit gegen Signal-
und Rundungsfehler, während
nachfolgender Codierung. Der Korrekturfaktor für weißes Rauschen addierte gewissermaßen ein
Grund- bzw. Hintergrundrauschen (noise floor) von –40 dB um
den spektralen Dynamikbereich zu reduzieren, und ferner Fehler während der
weiteren Codierung zu mildern.
-
Eine
Vielzahl von Reflektionskoeffizienten kann aus den Autokorrelationskoeffizienten
unter Verwendung eines Leroux-Gueguen Algorithmus berechnet werden.
Die Reflektionskoeffizienten können
dann in die Linearprädiktionskoeffizienten
konvertiert werden. Die Linearprädiktonskoeffizienten
können
ferner in die LSFs (Line Spectrum Frequencies Linienspektrumfrequenzen)
konvertiert werden, wie vorher erörtert wurde. Die innerhalb
des vierten Viertels berechneten LSFs können quantisiert werden, und
an das Decodiersystem 16 als die LSF Komponente 140, 172, 202, 240 gesendet
werden. Die innerhalb des zweiten Viertels berechneten LSFs können verwendet
werden, um den Interpolationspfad für den Vollratenencoder 36 zu
bestimmen und zwar für
als Typ Null klassifizierte Rahmen. Der Interpolationspfad ist auswählbar und
kann mit dem Interpolationselement 158 identifiziert werden.
Zusätzlich
können
die innerhalb dem zweiten Viertel und der Vorausschau berechneten
LSFs in dem Codiersystem 12 verwendet werden, um den Kurzzeitrest
und eine gewichtete Sprache zu generieren, die später beschrieben
werden wird.
-
3.2 LSF Glättungsmodul
(LSF Smoothing Module)
-
Während stationärem Hintergrundrauschen
können
die innerhalb des vierten Viertels des Rahmens berechneten LSFs
durch das LSF Glättungsmodul 322 vor
der Quantisierung der LSFs geglättet
werden. Die LSF werden geglättet,
um die wahrnehmbaren Charakteristika des Hintergrundrauschens besser
zu erhalten. Die Glättung
wird gesteuert durch eine Sprachaktivitätsbestimmung, die von dem VAD
Modul 326 geliefert wird, das später beschrieben wird und durch
eine Analyse der Evolution der spektralen Darstellung des Rahmens.
Ein LSF Glättungsfaktor
wird mit βlsf bezeichnet. In einem beispielhaften Ausführungsbeispiel
gilt:
- 1. Am Beginn der „glatten" Hintergrundrauschsegmente wird der
Glättungsfaktor
quadratisch hochgefahren (ramped) und zwar von 0 bis 0,9 über 5 Rahmen.
- 2. Während „glatten" Hintergrundrauschsegmenten
kann der Glättungsfaktor
0,9 sein.
- 3. Am Ende der „glatten" Hintergrundrauschsegmente
kann der Glättungsfaktor
unmittelbar auf 0 reduziert werden.
- 4. Während
nicht „glatter
Hintergrundrauschsegmente kann der Glättungsfaktor 0 sein. Gemäß dem LSF Glättungsfaktor
können
die LSFs für
die Quantisierung wie folgt berechnet werden:
wobei lsfn (k) und lsfn–1(k)
die geglätteten
LSFs des aktuellen bzw. vorhergehenden Rahmens repräsentieren und
lsf2(k) repräsentiert die LSFs des LPC Analyse,
die beim letzten Viertel des aktuellen Rahmens zentriert ist.
-
3.3 LSF Quanitisierungsmodul
-
Das
LPC Modell 10ter Ordnung, das durch die geglätteten LSFs (Gleichung 2) gegeben
ist, kann in dem LSF Bereich (LSF domain) durch das LSF Quantisierungsmodul 334 quantisiert
werden. Der Quantisierungswert ist eine Vielzahl von quantisierten
LPC Koeffizienten Aq(z) 342. Das
Quantisierungsschema verwendet einen Prädiktor mit gleitendem Mittelwert
n-ter Ordnung. In einem Ausführungsbeispiel
verwendet das Quantisierungsschema einen Prädiktor mit gleitendem Mittelwert
zweiter Ordnung für
den Vollraten-Codec 22 und den Viertelraten-Codec 26.
Für den
Halbraten-Codec 24 kann ein geschalteter Prädiktor mit
gleitendem Mittelwert vierter Ordnung (4th order
moving average switched predictor) verwendet werden. Für den Achtelraten-Codec 28 kann
ein Prädiktor
mit gleitendem Mittelwert vierter Ordnung verwendet werden. Die
Quantisierung der LSF Prädiktionsfehler
kann durch mehrstufige Codebücher
durchgeführt
werden, und zwar in den entsprechenden Codecs wie vorher erörtert wurde.
-
Das
Fehlerkriterium für
die LSFs Quantisierung ist ein gewichtetes mittleres quadratisches
Fehlermaß. Die
Gewichtung für
den gewichteten mittleren quadratischen Fehler ist eine Funktion
des LPC Größenspektrums
(magnitude spectrum). Entsprechend kann das Ziel der Quantisierung
angegeben werden durch:
wobei
die Gewichtung wie folgt sein kann:
und |P(f)| das Leistungsspektrum
bei der Frequenz f ist (der Index n bezeichnet die Rahmennummer).
In dem beispielhaften Ausführungsbeispiel
gibt es 10 Koeffizienten.
-
In
einem Ausführungsbeispiel
werden die Ordnungseigenschaften der quantisierten LPC Koeffizienten Aq(z) 342 überprüft. Falls ein LSF Paar umgedreht
(flipped) ist, können
sie umgeordnet werden. Wenn zwei oder mehr LSF Paare umgedreht sind,
können
die quantisierten LPC Koeffizienten Aq(z) 342 als
gelöscht
erklärt
werden, und können
rekonstruiert werden und zwar unter Verwendung der Rahmenlöschungsverschleierung
des Decodiersystems 16, die später diskutiert wird. In einem
Ausführungsbeispiel
kann ein Minimalabstand von 50 Hz zwischen benachbarten Koeffizienten
der quantisierten LPC Koeffizienten Aq(z) 342 erzwungen werden.
-
3.4 Prädiktorschaltmodul (Predictor
Switch Module)
-
Das
Prädiktorschaltmodul 336 wird
innerhalb des Halbraten-Codec 24 betrieben. Die vorhergesagte (predicted)
LSFs können
generiert werden, unter Verwendung von Prädiktorkoeffizienten mit gleitendem
Mittelwert, wie vorher erörtert
wurde. Die Prädiktorkoeffizienten
bestimmen wieviel der LSFs vergangener Rahmen (passed frames) verwendet
werden, um die LSFs des aktuellen Rahmens vorherzusagen. Das Prädiktorschaltmodul 336 ist
mit dem LSFs Quantisierungsmodul 334 gekoppelt, um die
Prädiktorkoeffizienten
zu liefern, die den Quantisierungsfehler minimieren, wie vorher
erörtert
wurde.
-
3.5 LSF Interpolationsmodul
(Interpolation Module)
-
Die
quantisierten und unquantisierten LSFs können auch für jeden Unterrahmen innerhalb
des Vollraten-Codec 22 interpoliert werden. Die quantisierten
und unquantisierten LSFs werden interpoliert um quantisierte und
unquantisierte lineare Prädiktionsparameter
für jeden
Unterrahmen vorzusehen. Das LSF Interpolationsmodul 338 wählt einen
Interpolationspfad für
Rahmen des Vollraten-Codec 22 mit der Typ Null Klassifikation,
wie vorher erörtert
wurde. Für
alle anderen Rahmen kann ein vorherbestimmter linearer Interpolationspfad
verwendet werden.
-
Das
LSF Interpolationsmodul 338 analysiert die LSFs des aktuellen
Rahmens mit Bezug auf die LSF der vorhergehenden Rahmen und der
LSFs, die im zweiten Viertel des Rahmens berechnet wurden. Ein Interpolationspfad
kann gewählt
werden, und zwar basierend auf dem Grad der Variationen, in der
Spektraleinhüllenden
zwischen den Unterrahmen. Die unterschiedlichen Interpolationspfade
stellen die Gewichtung der LSFs des vorhergehenden Rahmens ein und
stellen die Gewichtung der LSFs des aktuellen Rahmens für den aktuellen
Unterrahmen ein, wie vorher erörtert
wurde. Nach der Einstellung durch das LSF Interpolationsmodul 338 können die
interpolierten LSFs in Prädiktorkoeffizienten
für jeden
Unterrahmen konvertiert werden.
-
Für Typ Eins
Klassifikation innerhalb des Vollraten-Codec 22, wie auch
für den
Halbraten-Codec 24, den Viertelraten-Codec 26 und
den Achtelraten-Codec 28 kann
der vorherbestimmte lineare Interpolationspfad verwendet werden,
um die Gewichtung einzustellen. Die interpolierten LSFs können in ähnlicher
Weise in Prädiktorkoeffizienten
nach der Interpolation konvertiert werden. Zusätzlich können die Prädiktorkoeffizienten ferner
gewichtet werden, um die Koeffizienten zu kreieren, die von dem
Wahrnehmungsgewichtungsfiltermodul 314 verwendet werden.
-
3.6 Wahrnehmungsgewichtungsfiltermodul
(Perceptual Weighting Filter Module
-
Das
Wahrnehmungsgewichtungsfiltermodul
314 wird betrieben um
das vorverarbeitete Sprachsignal
308 zu empfangen und zu
filtern. Die Filterung durch das Wahrnehmungsgewichtungsfiltermodul
314 kann durchgeführt werden
durch Betonen bzw. Anheben der Talgebiete (valley areas) und Dämpfen bzw.
Zurücknehmen
(de-emphasizing) der Spitzengebiete (peak areas) des vorverarbeiteten
Sprachsignals
308. Ein Ausführungsbeispiel des Wahrnehmungsgewichtungsfiltermoduls
314 besitzt
zwei Teile. Der erste Teil kann der herkömmliche Pol-Nullstellenfilter
sein, angegeben durch:
wobei
A(z/γ
1) und 1/A(z/γ
2) ein
Nullstellenfilter bzw. ein Polfilter sind. Die Prädiktionskoeffizienten
für den Null-Stellenfilter
und den Polfilter können
von den interpolierten LSFs für
jeden Unterrahmen erhalten werden, und mit
γ1 bzw.
γ2 gewichtet
werden. In einem beispielhaften Ausführungsbeispiel des Wahrnehmungsgewichtungsfiltermoduls
314 ist
die Gewichtung
γ1 =
0,9 und
γ2 =
0,5. Der zweite Teil des Wahrnehmungsgewichtungsfiltermoduls
314 kann
ein adaptiver Tiefpassfilter sein, gegeben durch:
wobei
n eine Funktion der stationären
langzeitspektralen Eigenschaften ist, die später erörtert wird. In einem Ausführungsbeispiel,
falls die stationären
langzeitspektralen Eigenschaften die typische Neigung (tilt) besitzen,
die mit öffentlichen
Telefonnetzwerken (public switched telephone network, PSTN) assoziiert
ist, dann ist n = 0,2, andernfalls n = 0,0. Die typische Neigung
wird im Allgemeinen als eine modifizierte IRS Charakteristik oder
spektrale Neigung bezeichnet: nach der Verarbeitung durch das Wahrnehmungsgewichtungsfiltermodul
314 kann
das vorverarbeitete Sprachsignal
308 als ein gewichtetes
Sprachsignal
344 beschrieben werden. Die gewichtete Sprache
344 wird
an das gesteuerte Tonhöhenschätzungsmodul
316 geliefert.
-
3.7 Gesteuerte Tonhöhenschätzungsmodul
(Open Loop Pitch Estimation Module
-
Das
gesteuerte Tonhöhenschätzungsmodul 316 generiert
den gesteuerten Tonhöhenabstand
(open loop pitch lag) für
einen Rahmen. In einem Ausführungsbeispiel
umfasst der gesteuerte Tonhöhenabstand
tatsächlich
drei gesteuerte Tonhöhenabstände, nämlich einen
ersten Tonhöhenabstand
für die
erste Hälfte
des Rahmens, einen zweiten Tonhöhenabstand
für die
zweite Hälfte
des Rahmens und einen dritten Tonhöhenabstand für den Vorausschauanteil
(look ahead portion) des Rahmens.
-
Für jeden
Rahmen werden die zweiten und dritten Tonhöhenabstände durch das gesteuerte Tonhöhenschätzungsmodul 316 geschätzt, und
zwar basierend auf dem aktuellen Rahmen. Der erste gesteuerte Tonhöhenabstand
ist der dritte gesteuerte Tonhöhenabstand
(die Vorausschau) aus dem vorhergehenden Rahmen, der weiter eingestellt
werden kann. Die drei gesteuerten Tonhöhenabstände werden geglättet um eine
kontinuierliche Tonhöhenkontur
(continuous pitch contour) vorzusehen. Die Glättung der gesteuerten Tonhöhenabstände verwendet
einen Satz heuristischer und ad-hoc Entscheidungsregeln, um die
optimale Tonhöhenkontur
des Rahmens zu erhalten. Die gesteuerte Tonhöhenschätzung basiert auf der gewichteten
Sprache 344, die mit sw(n) bezeichnet
ist. Die durch das gesteuerte Tonhöhenschätzungsmodul 316 in
einem Ausführungsbeispiel
geschätzten
Werte sind Abstände
(lags), die von 17 bis 148 reichen.
-
Die
ersten, zweiten und dritten gesteuerten Tonhöhenabstände können unter Verwendung einer
normalisierten Korrelation, R(k) bestimmt werden, die wie folgt
berechnet werden kann:

wobei
in dem beispielhaften Ausführungsbeispiel
n = 79 ist, um die Anzahl der Abstastungen in dem Unterrahmen zu
repräsentieren.
Die maximale normalisierte Korrelation R(k) wird für jeden
einer Vielzahl von Regionen bzw. Gebieten bestimmt. Die Gebiete
können
vier Gebiete sein, die vier Unterbereiche innerhalb dem Bereich der
möglichen
Abstände
repräsentieren.
Beispielsweise kann ein erstes Gebiet von 17–33 Abständen reichen, ein zweites Gebiet
von 34–67
Abständen
reichen, ein drittes Gebiet von 68–137 Abständen reichen und ein viertes
Gebiet von 138–148
Abständen
reichen. Ein gesteuerter Tonhöhenabstand
entsprechend dem Abstand, der die normalisierten Korrelationswerte
R(k) aus jedem Gebiet maximiert, sind die initialen Tonhöhenabstandskandidaten.
Ein bester Kandidat von den initialen Tonhöhenabstandskandidaten wird
ausgewählt
und zwar basierend auf der normalisierten Korrelation, Charakterisierungsinformation
und der Geschichte des gesteuerten Tonhöhenabstands. Diese Prozedur
kann für
den zweiten Tonhöhenabstand
und für
den dritten Tonhöhenabstand
durchgeführt
werden.
-
Schließlich können die
ersten, zweiten und dritten gesteuerten Tonhöhenabstände eingestellt werden, und
zwar für
eine optimale Anpassung (fitting) an die gesamte Tonhöhenkontur
(overall pitch contour) und zum Bilden des gesteuerten Tonhöhenabstands
für den
Rahmen. Der gesteuerte Tonhöhenabstand
wird an das Tonhöhenvorverarbeitungsmodul 322 zur
weiteren Verarbeitung geliefert, die später beschrieben wird. Das gesteuerte
Tonhöhenschätzmodul 316 liefert
auch den Tonhöhenabstand
und normalisierte Korrelationswerte beim Tonhöhenabstand. Die normalisierten
Korrelationswerte beim Tonhöhenabstand
werden eine Tonhöhenkorrelation
genannt und wer den mit Rp bezeichnet. Die
Tonhöhenkorrelation
Rp wird verwendet beim Charakterisieren
des Rahmens innerhalb des Charakterisierungsabschnitts 318.
-
3.8 Charakterisierungsabschnitt
(Characterization Section)
-
Der
Charaktersierungsabschnitt 318 ist betreibbar zum Analysieren
und Charakterisieren jedes Rahmens des vorverarbeiteten Sprachsignals 308.
Die Charakterisierungsinformation wird von einer Vielzahl von Modulen
verwendet, und zwar innerhalb des initialen Rahmenverarbeitungsmoduls 44,
wie auch durch das Anregungsverarbeitungsmodul 54. Speziell
wird die Charakterisierungsinformation in dem Ratenauswahlmodul 320 und
dem Typklassifikationsmodul 324 verwendet. Zusätzlich kann
die Charakterisierungsinformation während der Quantisierung und
Codierung verwendet werden, insbesondere beim Betonen der wahrnehmungswichtigen
Merkmale der Sprache unter Verwendung eines klassenabhängigen Gewichtungsansatzes,
der später
beschrieben wird.
-
Charakterisierung
des vorverarbeiteten Sprachsignals 308 durch den Charakterisierungsabschnitt 318 findet
für jeden
Rahmen statt. Der Betrieb eines Ausführungsbeispiels des Charakterisierungsabschnitts 318 kann
im Allgemeinen beschrieben werden als Sechs-Analysekategorien des
vorverarbeiteten Sprachsignals 308. Die sechs Kategorien
sind: Spachaktivitätsbestimmung,
Identifizierung stimmloser rauschähnlicher Sprache, eine 6-Klassensignalcharakterisierung,
Ableitung eines Rausch-zu-Singnalverhältnisses,
eine 4-gradige bzw. 4-stufige (4-grade) Charakterisierung und eine
Charakterisierung einer stationären
Langzeitspektralcharakteristik.
-
3.9 Sprachaktivitätdetektions
(Voice Acitivity Detection, VAD) Modul
-
Das
Sprachaktivitätsdetektions
(VAD) Modul 326 führt
Sprachaktivitätsbestimmung
als den ersten Schritt der Charakterisierung durch. Das VAD Modul 326 wird
betrieben zum Bestimmen ob das vorverarbeitete Sprachsignal 308 eine
Form von Sprache ist, oder ob es bloß Ruhe bzw. Stille oder Hintergrundrauschen ist.
Ein Ausführungsbeispiel
des VAD Moduls 326 detektiert Sprachaktivität durch
Nachführen
des Verhaltens des Hintergrundrauschens. Das VAD Modul 326 überwacht
den Unterschied zwischen Parametern des aktuellen Rahmens und Parametern,
die das Hintergrundrauschen repräsentieren.
Unter Verwendung eines Satzes von vorherbestimmten Schwellwerten
kann der Rahmen als ein Sprachrahmen oder als ein Hintergrundrauschrahmen
klassifiziert werden.
-
Das
VAD Modul 326 wird betrieben zum Bestimmen der Sprachaktivität und zwar
basierend auf Überwachung
einer Vielzahl von Parametern, wie beispielsweise dem Maximum des
absoluten Wertes der Abtastungen in dem Rahmen, wie auch den Reflektionskoeffizienten,
dem Prädiktionsfehler,
den LSFs und den Autokorrelationskoeffizienten zehnter Ordnung,
die durch das LPC Analysemodul 330 geliefert werden. Zusätzlich verwendet
ein beispielhaftes Ausführungsbeispiel
des VAD Moduls 326 die Parameter des Tonhöhenabstands
und die adaptive Codebuchverstärkung
von letzten (recent) Rahmen. Die Tonhöhenabstände und die adaptiven Codebuchgewinne,
die vom VAD Modul 326 verwendet werden, sind aus den vorhergehenden
Rahmen, da Tonhöhenabstände und
adaptive Codebuchgewinne des aktuellen Rahmens jetzt noch nicht
verfügbar
sind. Die durch das VAD Modul 326 durchgeführte Sprachaktivitätsbestimmung
kann verwendet werden, um mehrere Aspekte des Codiersystems 12 zu
steuern, wie auch einen Teil einer endgültigen Klassencharakterisierungsentscheidung
durch das Charakterisierungsmodul 328 zu bilden.
-
3.10 Charakterisierungsmodul
-
Nach
der Sprachaktivitätsbestimmung
durch das VAD-Modul 326 wird das Charakterisierungsmodul 328 aktiviert.
Das Charakterisierungsmodul 328 führt die zweite, dritte, vierte
und fünfte
Kategorie der Analyse des vorverarbeiteten Sprachsignals 308 durch,
wie vorher erörtert
wurde. Die zweite Kategorie ist die Detektion stimmloser rauschähnlicher
Sprachrahmen.
-
3.10.1 Detektion stimmloser
rauschähnlicher
Sprache (Unvoiced Noise-Like Speech Detection)
-
Im
Allgemeinen umfassen stimmlose rauschähnliche Sprachrahmen nicht
eine harmonische Struktur, wohingegen stimmhafte Rahmen dies tun.
Die Detektion eines stimmlosen rauschähnlichen Sprachrahmens basiert,
in einem Ausführungsbeispiel,
auf dem vorverarbeiteten Sprachsignal
308 und ein gewichtetes
Restsignal R
w(z) ist gegeben durch:
wobei A(z/γ
1)
ein gewichtetes Nullstellen-Filter mit der Gewichtung γ
1 repräsentiert
und S(z) ist das vorverarbeitete Sprachsignal
308. Eine
Vielzahl von Parametern, wie beispielsweise die folgenden sechs
Parameter, können
verwendet werden um zu bestimmen, ob der aktuelle Rahmen stimmlose
rauschähnliche
Sprache ist:
- 1. Die Energie des vorverarbeiteten
Sprachsignals 308 über
die ersten ¾ des
Rahmens.
- 2. Eine Zählung
der Sprachabtastungen innerhalb des Rahmens, die unter einer vorherbestimmten
Schwelle sind.
- 3. Eine Restschärfe
(residual sharpness), die bestimmt wird unter Verwendung eines gewichteten
Restsignals und der Rahmengröße. Die
Schärfe
ist durch das Verhältnis
des Durchschnitts der Absolutwerte der Abtastungen zu dem Maximum
der Absolutwerte der Abtastungen gegeben. Das gewichtete Restsignal kann
aus Gleichung 8 bestimmt werden.
- 4. Ein erster Reflektionskoeffizient, der die Neigung des Größenspektrums
(magnitude spectrum) des vorverarbeiteten Sprachsignals 308 repräsentiert.
- 5. Die Nulldurchgangsrate des vorverarbeiteten Sprachsignals 308.
- 6. Eine Prädiktionsmessung
zwischen dem vorverarbeiteten Sprachsignal 308 und dem
gewichteten Restsignal.
-
In
einem Ausführungsbeispiel
wird ein Satz vorherbestimmter Schwellwerte mit den oben aufgeführten Parametern
verglichen, um die Determination bzw. Bestimmung zu machen, ob ein
Rahmen stimmlose rauschähnliche
Sprache ist. Die resultierende Determination kann verwendet werden
beim Steuern des Tonhöhenvorverarbeitungsmoduls 322 und
bei der fixierten Codebuchsuche, die beide später beschrieben werden. Zusätzlich wird
die Determination stimmloser rauschähnlicher Sprache beim Bestimmen
der 6-klassigen Signalcharakterisierung des vorverarbeiteten Sprachsignals 308 verwendet.
-
3.10.2 6-Klassige Signalcharakterisierung
(6-Class Signal Characterization)
-
Das
Charakterisierungsmodul 328 kann auch die dritte Kategorie
der Analyse durchführen,
die die 6-klassige Signalcharakterisierung ist. Die 6-klassige Signalcharakterisierung
wird durchgeführt
durch Charakterisieren des Rahmens in eine von 6 Klassen, gemäß den dominierenden
Merkmalen des Rahmens. In einem Ausführungsbeispiel können die
6 Klassen wie folgt beschrieben werden:
0. Ruhe/Hintergrundrauschen
1.
Stationäre
rauschähnliche
stimmlose Sprache
2. Nicht-stationär stimmlos
3. Anlaut bzw.
Einschwingen (onset)
4. Nicht-stationär stimmhaft
5. Stationär stimmhaft
-
In
einem alternativen Ausführungsbeispiel
werden auch andere Klassen einbezogen, wie beispielsweise als plosive
charakterisierte Rahmen. Anfänglich
unterscheidet das Charakterisierungsmodul 328 zwischen Ruhe/Hintergrundrauschrahmen
(Klasse 0), nicht-stationären
stimmlosen Rahmen (Klasse 2), Anlautrahmen (Klasse 3) und stimmhaften
Rahmen, die durch Klasse 4 und 5 repräsentiert sind. Charakterisierung
stimmhafter Rahmen als nicht-stationär (Klasse 4) und als stationär (Klasse
5) können
während
der Aktivierung des Tonhöhenvorverarbeitungsmoduls 322 durchgeführt werden.
Des weiteren kann bzw. könnte
das Charakterisierungsmodul 328 anfänglich nicht zwischen stationären rauschähnlichen
stimmlosen Rahmen (Klasse 1) und nicht-stationären stimmlosen Rahmen (Klasse
2) unterscheiden. Diese Charakterisierungsklasse kann also auch
während
der Verarbeitung durch das Tonhöhenvorverarbeitungsmodul 322 identifiziert
werden, und zwar unter Verwendung der Bestimmung durch den vorher
erörterten
stimmlosen rauschähnlichen
Sprachalgorithmus.
-
Das
Charakterisierungsmodul 328 führt die Charakterisierung durch,
unter Verwendung von, beispielsweise dem vorverarbeiteten Sprachsignal 308 und
der Sprachaktivitätsdetektion
durch das VAD Modul 326. Zusätzlich kann das Charakterisierungsmodul 328 den
gesteuerten Tonhöhenabstand
für den
Rahmen und die normalisierte Korrelation Rp entsprechend
dem zweiten gesteuerten Tonhöhenabstand
verwenden.
-
Eine
Vielzahl spektraler Neigungen und eine Vielzahl absoluter Maxima
können
durch das Charakterisierungsmodul 328 von dem vorverarbeiteten
Sprachsignal 308 abgeleitet werden. In einem beispielhaften Ausführungsbeispiel
werden die spektralen Neigungen für 4 überlappte Segmente, die jeweils
80 Abtastungen aufweisen, berechnet. Die 4 überlappten Segmente können durch
ein Hamming-Fenster mit 80 Abtastungen gewichtet werden. Die absoluten
Maxima eines beispielhaften Ausführungsbeispiels
werden aus 8 überlappten Segmenten
des vorverarbeiteten Sprachsignal 308 abgeleitet. Im Allgemeinen
ist die Länge
jedes der 8 überlappten
Segmente ungefähr
1,5 mal die Periode des gesteuerten Tonhöhenabstands. Die absoluten
Maxima können
verwendet werden, um eine geglättete
Kontur der Amplitudeneinhüllenden
zu kreieren.
-
Die
spektrale Neigung, das absolute Maximum und die Tonhöhenkorrelation
Rp Parameter können aktualisiert oder interpoliert
werden, und zwar mehr mals pro Rahmen. Durchschnittswerte für diese
Parameter können
auch mehrmals für
Rahmen berechnet werden, die durch das VAD Modul 326 als
Hintergrundrauschen charakterisiert wurden. In einem beispielhaften
Ausführungsbeispiel
werden 8 aktualisierte Schätzungen
jedes Parameters unter Verwendung von 8 Segmenten mit jeweils 20
Abtastungen erhalten. Die Schätzungen
der Parameter für
das Hintergrundrauschen können
von den Schätzungen
der Parameter für
nachfolgende, nicht als Hintergrundrauschen charakterisierte Rahmen
abgezogen werden, um einen Satz von „rauschgereinigten" (noise cleaned)
Parametern zu kreieren.
-
Ein
Satz von auf Statistik bezogenen Entscheidungsparametern kann aus
den „rauschgereinigten" (noise clean) Parametern
und dem gesteuerten Tonhöhenabstand
berechnet werden. Jeder der auf Statistik bezogenen Entscheidungsparameter
repräsentiert
eine statistische Eigenschaft der Originalparameter, wie beispielsweise
Mittelwertbildung, Abweichung, Evolution, Maximum oder Minima. Unter
Verwendung eines Satzes der vorherbestimmten Schwellenparameter
können
initiale Charakterisierungsentscheidungen für den aktuellen Rahmen getroffen
werden, und zwar basierend auf den statistischen Entscheidungsparametern.
Basierend auf der initialen Charakterisierungsentscheidung, vergangenen
Charakterisierungsentscheidungen und der Sprachaktivitätsentscheidung
des VAD Moduls 326 kann eine initiale Klassenentscheidung
für den Rahmen
gemacht werden. Die initiale Klassenentscheidung charakterisiert
den Rahmen als einen der Klassen 0, 2, 3 oder als einen durch Klassen
4 und 5 repräsentierten
stimmhaften Rahmen.
-
3.10.3 Rausch-zu-Signal
Verhältnisableitung
(Noise-to-Signal Ratio Derivation)
-
Zusätzlich zu
der Rahmencharakterisierung führt
das Charakterisierungsmodul 328 eines Ausführungsbeispiels
auch die vierte Kategorie der Analyse durch, und zwar durch Ableiten
eines Rausch-zu-Signal Verhältnisses
(noise-to-signal
ratio, NSR). Das NSR ist ein herkömmliches Störungs- bzw. Verzerrungskriterium,
das berechnet werden kann als das Verhältnis zwischen einer Schätzung der
Hintergrundrauschenergie und der Energie eines Rahmens. Ein Ausführungsbeispiel
der NSR Berechnung stellt sicher, dass nur wirkliches Hintergrundrauschen
in das Verhältnis
einbezogen wird, und zwar unter Verwendung einer modifizierten Sprachaktivitätsentscheidung.
Die modifizierte Sprachaktivitätsentscheidung
wird abgeleitet unter Verwendung der initialen Sprachaktivitätsentscheidung
durch das VAD Modul 326, die Energie des Rahmens des vorverarbeiteten
Sprachsignals 308 und den für den Vorausschauanteil berechneten
LSFs. Falls die modifizierte Sprachaktivitätsentscheidung anzeigt, dass
der Rahmen Hintergrundrauschen ist, wird die Energie des Hintergrundrauschens
aktualisiert.
-
Das
Hintergrundrauschen wird aus der Rahmenenergie aktualisiert, unter
Verwendung von, beispielsweise gleitendem Mittelwert. Falls der
Energiepegel des Hintergrundrauschens größer ist als der Energiepegel der
Rahmenenergie wird es durch die Rahmenenergie ersetzt. Die Ersetzung
durch die Rahmenenergie kann zur Folge haben, dass der Energiepegel
des Hintergrundrauschens nach unten verlagert wird, und das Ergebnis
abgeschnitten wird. Das Ergebnis repräsentiert die Schätzung der
Hintergrundrauschenergie, die bei der Berechnung des NSR verwendet
werden kann.
-
Nach
der Berechnung des NSR führt
das Charakterisierungsmodul 328 eine Korrektur der initialen Klassenentscheidung
zu einer modifizierten Klassenentscheidung durch. Die Korrektur
kann durchgeführt
werden unter Verwendung der initialen Klassenentscheidung, der Sprachaktivitätsbestimmung
und der stimmlosen rauschähnlichen
Sprachbestimmung. Zusätzlich
repräsentieren
die vorher berechneten Parameter beispielsweise das durch die Reflektionskoeffizienten
ausgedrückte
Spektrum, die Tonhöhenkorrelation
Rp, das NSR, die Energie des Rahmens, die
Energie der vorhergehenden Rahmen, die Restschärfe bzw. verbleibende Schärfe (residual
sharpness) und eine Schärfe
der gewichteten Sprache kann auch verwendet werden. Die Korrektur
der initialen Klassenentscheidung wird Charakterisierungsabstimmung
(tuning) genannt. Charakterisierungsabstimmung kann die initiale
Klassenentscheidung ändern,
wie auch einen Einsatzbedingungsmarker (onset condition flag) und
einen stimmhaften Rauschmarker (noisy voiced flag) setzen, wenn
diese Bedingungen identifiziert werden. Zusätzlich kann das Abstimmen auch
eine Änderung
in der Sprachaktivitätsentscheidung
durch das VAD Modul 326 auslösen.
-
3.10.4 4-gradige Charakterisierung
-
Das
Charakterisierungsmodul 328 kann auch die fünfte Kategorie
der Charakterisierung, und zwar die 4-gradige Charakterisierung
generieren. Die 4-gradige
Charakterisierung ist ein Parameter, der das Tonhöhenvorverarbeitungsmodul 322 steuert.
Ein Ausführungsbeispiel
der 4-gradigen Charakterisierung unterscheidet zwischen 4 Kategorien.
Die Kategorien können
nummerisch von 1 bis 4 bezeichnet werden. Die Kategorie mit der
Bezeichnung 1 wird verwendet, um das Tonhöhenvorverarbeitungsmodul 322 zurückzusetzen
und zwar um eine akkumulierte Verzögerung zu vermeiden, die ein
Verzögerungsbudget
während
der Tonhöhenvorverarbeitung überschreitet.
Im Allgemeinen zeigen die verbleibenden Kategorien zunehmende stimmhafte
Stärke an.
Zunehmende stimmhafte Stärke
ist ein Maß der
Periodizität
der Sprache. In einem alternativen Ausführungsbeispiel könnten mehr
oder weniger Kategorien berücksichtigt
werden, um die Pegel der stimmhaften Stärke (voicing strength) anzuzeigen.
-
3.10.5 Stationäre Langzeitspektraleigenschaften
(Stationary Long-Term Spectral Characteristics)
-
Das
Charakterisierungsmodul 328 kann auch die sechste Kategorie
der Analyse durchführen,
und zwar durch Bestimmen der stationären Langzeitspektraleigenschaften
des vorverarbeiteten Sprachsignals 308. Die stationäre Langzeitspektraleigenschaft
wird über
eine Vielzahl von Rahmen bestimmt, beispielsweise unter Verwendung
von spektraler Information, wie die LSFs, die 6-klassige Signalcharakterisierung
und die gesteuerte Tonhöhenverstärkung. Die
Bestimmung basiert auf Langzeitdurchschnitten dieser Parameter.
-
3.11 Ratenauswahlmodul
(Rate Selection Module)
-
Nach
der modifizierten Klassenentscheidung durch das Charakterisierungsmodul 328 kann
das Ratenselektionsmodul 320 eine initiale Ratenselektion
durchführen,
die eine gesteuerte Ratenselektion genannt wird. Das Ratenselektionsmodul 320 kann
beispielsweise die modifizierte Klassenentscheidung, das NSR, den Einsatzmarker,
die Restenergie, die Schärfe,
die Tonhöhenkorrelation
Rp und spektrale Parameter, wie die Reflektionskoeffizienten
beim Bestimmen der gesteuerten Ratenauswahl verwenden. Die gesteuerte
Ratenauswahl kann auch gewählt
werden, basierend auf dem Modus innerhalb dessen das Sprachkomprimierungssystem 10 betrieben
wird. Das Ratenselektionsmodul bzw. Ratenauswahlmodul 320 wird
abgeglichen, und zwar zum Liefern der gewünschten Durchschnittsbitrate,
wie von jedem der Modi angezeigt wird. Die initiale Ratenauswahl
kann modifiziert werden, und zwar nach der Verarbeitung durch das
Tonhöhenvorverarbeitungsmodul 322,
das später
beschrieben wird.
-
3.12 Tonhöhenvorverarbeitunpsmodul
(Pitch Pre-Processing Module)
-
Das
Tonhöhenvorverarbeitungsmodul 322 wird
auf einer Rahmenbasis betrieben, um Analyse und Modifikation der
gewichteten Sprache 344 durchzuführen. Das Tonhöhenvorverarbeitungsmodul 322 kann
beispielsweise Kompression oder Dilatationstechniken bzw. Erweiterungstechniken
auf Tonhöhenzyklen
der gewichteten Sprache 344 verwenden um den Codierprozess
zu verbessern. Der gesteuerte Tonhöhenabstand wird durch das Tonhöhenvorverarbeitungsmodul 322 quantisiert,
um die gesteuerte adaptive Codebuchkomponente 144a oder 176a zu
generieren, wie vorher mit Bezug auf 2, 4 und 5 erörtert wurde.
Falls die endgültige
Typklassifikation des Rahmens von Typ Eins ist, repräsentiert
diese Quantisierung den Tonhöhenabstand
für den
Rahmen. Falls jedoch die Typklassifikation nach der Verarbeitung
durch das Tonhöhenvorverarbeitungsmodul 322 geändert wird,
wird die Tonhöhenabstandsquantisierung
auch geändert,
um die gesteuerte adaptive Code buchkomponente 144 oder 176 zu
repräsentieren,
wie vorher mit Bezug auf 2, 4 und 5 erörtert wurde.
-
Der
gesteuerte Tonhöhenabstand
für den
Rahmen, der durch das gesteuerte Tonhöhenschätzmodul 316 generiert
wurde, wird quantisiert und interpoliert um eine Tonhöhenspur 348 zu
kreieren. Im Allgemeinen versucht das Tonhöhenvorverarbeitungsmodul 322 die
gewichtete Sprache 344 zu modifizieren, und zwar zum Anpassen
an die Tonhöhenspur 348.
Falls die Modifikation erfolgreich ist, ist die endgültige Typklassifikation des
Rahmens vom Typ Eins. Falls die Modifikation nicht erfolgreich ist,
ist die endgültige
Typklassifikation des Rahmens vom Typ Null.
-
Wie
später
weiter ausgeführt
wird, kann die Tonhöhenvorverarbeitungsmodifikationsprozedur
kontinuierliche Zeitverformungen (time warping) der gewichteten
Sprache 344 durchführen.
Die Verformung führt
eine variable Verzögerung
ein. In einem beispielhaften Ausführungsbeispiel ist die maximale
variable Verzögerung innerhalb
des Codiersystems 12 20 Abtastungen (2,5 ms). Die gewichtete
Sprache 344 kann auf einer tonhöhenzyklusweisen Basis modifiziert
werden, und zwar mit einer bestimmten Überlappung zwischen benachbarten
Tonhöhenzyklen,
um Diskontinuitäten
zwischen den rekonstruierten/modifizierten Segmenten zu vermeiden.
Die gewichtete Sprache 344 kann gemäß der Tonhöhenspur 348 modifiziert
werden, und zwar um eine modifizierte gewichtete Sprache 350 zu
generieren. Zusätzlich
werden eine Vielzahl unquantisierter Tonhöhenverstärkungen 352 durch
das Tonhöhenvorverarbeitungsmodul 322 generiert.
Falls die Typklassifikation des Rahmens der Typ Eins ist, werden
die unquantisierten Tonhöhenverstärkungen 352 verwendet,
um die Typ Eins adaptive Codebuchverstärkungskomponente 148 (für Vollraten-Codec 22)
oder 180 (für
Halbraten-Codec 24) zu generieren. Die Tonhöhenspur 348,
die modifizierte gewichtete Sprache 350 und die unquantisierten Tonhöhenverstärkungen 352 werden
an das Anregungsverarbeitungsmodul 54 geliefert.
-
Wie
vorher erörtert,
steuert die 4-gradige Charakterisierung durch das Charakterisierungsmodul 328 die
Tonhöhenvorverarbeitung.
In einem Ausführungsbeispiel,
falls der Rahmen überwiegend
Hintergrundrauschen oder stimmlos mit niedriger Tonhöhenkorrelation,
wie beispielsweise Kategorie 1 ist, bleibt der Rahmen unverändert und
die akkumulierte Verzögerung
der Tonhöhenvorverarbeitung
wird auf Null zurückgesetzt. Falls
der Rahmen überwiegend
impulsähnlich
stimmlos, wie beispielsweise Kategorie 2 ist, kann die akkumulierte
Verzögerung
erhalten bleiben, und zwar ohne jede Verformung (warping) des Signals,
außer
einer einfachen Zeitverschiebung. Die Zeitverschiebung kann gemäß der akkumulierten
Verzögerung
des Eingangssprachsignals 18 bestimmt werden. Für Rahmen
mit den verbleibenden 4-gradigen
Charakterisierungen, kann der Kern des Tonhöhenvorverarbeitungsalgorithmuses
ausgeführt
werden, um das Signal optimal zu verwinden bzw. verformen (warp).
-
Im
Allgemeinen führt
der Kern des Tonhöhenvorverarbeitungsmoduls 322 in
einem Ausführungsbeispiel
drei Hauptaufgaben durch. Erstens wird die gewichtete Sprache 344 modifiziert
und zwar in einem Versuch mit der Tonhöhenspur 348 übereinzustimmen.
Zweitens werden eine Tonhöhenverstärkung und
eine Tonhöhenkorrelation
für das
Signal geschätzt.
Schließlich
wird die Charakterisierung des Sprachsignals 18 und die
Ratenauswahl verfeinert, und zwar basierend auf der zusätzlichen
Signalinformation, die während
der Tonhöhenvorverarbeitungsanalyse
erlangt wurde. In einem anderen Ausführungsbeispiel kann zusätzliche
Tonhöhenvorverarbeitung
enthalten sein, wie beispielsweise Wellenforminterpolation. Im Allgemeinen
kann Wellenforminterpolation verwendet werden, um bestimmte irreguläre Übergangssegmente
zu modifizieren, und zwar unter Verwendung von Vorwärts-Rückwärts-Wellenforminterpolationstechniken
zum Herausheben der Regelmässigkeiten
und zum Unterdrücken
der Unregelmäßigkeiten
der gewichteten Sprache 344.
-
3.12.1 Modifikation
-
Modifikation
der gewichteten Sprache 344 liefert eine genauere Anpassung
der gewichteten Sprache 344 in ein Tonhöhencodierungsmodell, das dem
Relaxed Code Excited Linear Prediction (RCEPL) Sprachcodierungsansatz ähnlich ist.
Ein Beispiel einer Implementierung der RCEPL Sprachcodierung wird
im TIA (Telecommunications Industry Association) IS-127 Standard
geliefert. Die Leistungsfähigkeit
der Modifikation ohne irgendeinen Verlust der wahrnehmbaren Qualität, kann
eine genaue Tonhöhensuche,
Schätzung
einer Segmentgröße, Zielsignalverformung
und Signalverformung umfassen. Die genaue Tonhöhensuche kann auf einer Rahmenebenenbasis
durchgeführt
werden, während
die Schätzung
einer Segmentgröße, die
Zielsignalverformung und die Signalverformung für jeden Tonhöhenzyklus
ausgeführt
werden können.
-
3.12.1.1 Genaue Tonhöhensuche
(Fine Pitch Search)
-
Die
genaue Tonhöhensuche
kann auf der gewichteten Sprache 344 durchgeführt werden,
und zwar basierend auf den vorher bestimmten zweiten und dritten
Tonhöhenabstände, der
Ratenauswahl und der akkumulierten Tonhöhenvorverarbeitungsverzögerung.
Die genaue Tonhöhe
sucht nach Bruchteilstonhöhenabständen (fractional
pitch lags). Die Bruchteilstonhöhenabstände sind
nicht ganzzahlige Tonhöhenabstände, die mit
der Quantisierung der Abstände
kombiniert werden. Die Kombination wird abgeleitet durch Durchsuchen der
Quantisierungstabellen der Abstände,
die verwendet werden zum Quantisieren der gesteuerten Tonhöhenabstände, und
durch Finden der Abstände,
die die Tonhöhenkorrelation
der gewichteten Sprache 344 maximieren. In einem Ausführungsbeispiel
wird die Suche für
jeden Codec unterschiedlich durchgeführt, und zwar aufgrund der
unterschiedlichen Quantisierungstechniken, die mit den unterschiedlichen
Ratenauswahlen assoziiert sind. Die Suche wird in einem Suchgebiet
durchgeführt,
das durch den gesteuerten Tonhöhenabstand identifiziert
wird, und das durch die akkumulierte Verzögerung gesteuert wird.
-
3.12.1.2 Geschätzte Segmentgröße
-
Die
Segmentgröße folgt
der Tonhöhenperiode
und zwar mit einigen kleineren Anpassungen. Im Allgemeinen wird
der Tonhöhenkomplex
(der Hauptimpulse) des Tonhöhenzykluses
zum Ende eines Segments hin lokalisiert, um die maximale Genauigkeit
der Verformung des wichtigsten wahrnehmbaren Teils, des Tonhöhenkomplexes,
zu erlauben. Für
ein gegebenes Segment ist der Startpunkt fixiert, und der Endpunkt
kann verschoben werden, um die beste Modellanpassung zu erhalten.
Die Verschiebung des Endpunkts dehnt oder komprimiert gewissermaßen die
Zeitskala. Infolgedessen werden die Abtastungen am Beginn des Segments kaum
verschoben, und die größte Verschiebung
wird zum Ende des Segments hin stattfinden.
-
3.12.1.3 Zielsignal zur
Verformung (Target Signal for Warping)
-
Ein
Ausführungsbeispiel
des Zielsignals für
zeitliche Verformung ist eine Synthese des abgeleiteten aktuellen
Segments, und zwar abgeleitet aus der modifizierten gewichteten
Sprache
350, die durch s'
w(n) repräsentiert
ist, und der Tonhöhenspur
348,
die durch L
p(n) repräsentiert ist. Gemäß der Tonhöhenspur
348, L
p(n), kann jeder Abtastwert des Zielsignals
s
w(n), n = 0, .... N
s-
1 kann durch Interpolation der modifizierten
gewichteten Sprache
350 erhalten werden, und zwar unter
Verwendung eines Hamming-gewichteten-Sinc-Fensters 21
ter Ordnung,
wobei
i(L
p(n)) und f(L
p(n))
die ganzzahligen bzw. Bruchteile des Tonhöhenabstands sind; w
s(f,i) das Hamming-gewichtete-Sinc-Fenster
(Hamming weighted Sinc window) ist und n
s die
Länge des
Segments ist. Ein gewichtetes Ziel (weighted target) s
wt w(n) ist gegeben durch s
wt w(n) = w
c(n)·s
t w(n). Die Gewichtungsfunktion, w
c(n) kann eine zweistückige lineare Funktion sein,
die den Tonhöhenkomplex
anhebt bzw. betont und das „Rauschen" zwischen Tonhöhenkomplexen
dämpft
bzw. reduziert (de-emphasizes). Die Gewichtung kann gemäß der 4-gradigen
Klassifikation angepasst werden und zwar durch Erhöhen der
Betonung auf dem Tonhöhenkomplex
für Segmente
höherer
Periodizität.
-
Die
ganzzahlige Verschiebung, die die normalisierte Kreuzkorrelation
zwischen dem gewichteten Ziel swt w(n) und der gewichteten Sprache 344 ist
sw(n + τacc), wobei sw(n
+ τacc) die gewichtete Sprache 344 ist,
die verschoben (shifted) werden kann und zwar gemäß einer
akkumulierten Verzögerung τacc,
die gefunden werden kann durch Maximieren von
-
-
Eine
verfeinerte (Bruchteils-) Verschiebung kann bestimmt werden, und
zwar durch Suchen einer hochgetasteten (upsampled) Version von R(τshift)
in der Nähe
von τshift. Das kann zu einer endgültigen optimalen Verschiebung τopt und
der entsprechenden normalisierten Kreuzkorrelation Rn(τopt)
führen.
-
3.12.1.4 Signalverformung
(Signal Warping)
-
Die
modifizierte gewichtete Sprache
350 für das Segment kann rekonstruiert
werden, und zwar gemäß der Abbildung,
die gegeben ist durch
wobei τ
c ein
Parameter ist, der die Verformungsfunktion definiert. Im Allgemeinen
spezifiziert τ
c den Anfang des Tonhöhenkomplexes. Die durch Gleichung
11 angegebene Abbildung spezifiziert eine Zeitverformung und die durch
Gleichung 12 angegebene Abbildung spezifiziert eine zeitliche Verschiebung
(keine Verformung). Beide können
unter Verwendung einer Hamming-gewichteten-Sinc-Fensterfunktion
durchgeführt
werden.
-
3.12.2 Tonhöhenverstärkungs-
und Tonhöhenkorrelationsschätzung (Pitch
Gain and Pitch Correlation Estimation)
-
Die
Tonhöhenverstärkung und
Tonhöhenkorrelation
kann auf einer Zyklusbasis geschätzt
werden und werden durch Gleichungen 11 bzw. 12 definiert. Die Tonhöhenverstärkung wird
geschätzt
um den mittleren quadratischen Fehler zu minimieren und zwar zwischen
dem durch Gleichung 9 definierten Ziel st w(n) und dem durch Gleichungen 11 und 12
definierten endgültigen
modifizierten Signal s'w(n) und kann angegeben werden durch
-
-
Die
Tonhöhenverstärkung wird
durch das Anregungsverarbeitungsmodul 54 geliefert, und
zwar in der Form der unquantisierten Tonhöhenverstärkungen 352. Die Tonhöhenkorrelation
kann angegeben werden durch
-
-
Beide
Parameter sind auf einer Tonhöhen
(Pitch)-Zyklusbasis verfügbar,
und können
linear interpoliert werden.
-
3.12.3 Verfeinerte Klassifikation
und verfeinerte Ratenauswahl (Refined Classification and Refined
Rate Selection)
-
Nach
der Tonhöhenvorverarbeitung
durch das Tonhöhenvorverarbeitungsmodul 322 werden
die durchschnittliche Tonhöhenkorrelation
und die Tonhöhenverstärkungen
an das Charakterisierungsmodul 328 und das Ratenauswahlmodul 320 geliefert.
Das Charakterisierungsmodul 328 und das Ratenauswahlmodul 320 kreieren
eine endgültige
Charakterisierungsklasse bzw. eine endgültige Ratenauswahl und zwar
unter Verwendung der Tonhöhenkorrelation
und der Tonhöhenverstärkungen.
Die endgültige
Charakterisierungsklasse und die endgültige Ratenauswahl können bestimmt
werden durch Verfeinern der 6-klassigen Signalcharakterisierung
und der gesteuerten Ratenauswahl des Rahmens.
-
Speziell
bestimmt das Charakterisierungsmodul 328 ob ein Rahmen
mit einer Charakterisierung als ein stimmhafter Rahmen als ein Klasse
4 „nicht-stationär stimmhaft" oder Klasse 5 „stationär stimmhaft" charakterisiert
werden sollte. Zusätzlich
kann eine endgültige
Bestimmung stattfinden, dass ein spezieller Rahmen stationär rauschähnlich stimmlose
Sprache ist, und zwar basierend auf der vorhergehenden Bestimmung, dass
der spezielle Rahmen modifizierte stimmlose rauschähnliche
Sprache ist. Rahmen, die als rauschähnliche stimmlose Sprache bestätigt wurden,
können
als Klasse 1 „stationäre rauschähnliche
stimmlose Sprache" charakterisiert
werden.
-
Basierend
auf der endgültigen
Charakterisierungsklasse, der gesteuerten Ratenauswahl durch das Ratenauswahlmodul 320 und
dem Halbratensignalisiermarker auf der Halbratensignalisierleitung 30 (1) kann
eine endgültige
Ratenauswahl bestimmt werden. Die endgültige Ratenauswahl wird an
das Anregungsverarbeitungsmodul 54 als ein Ratenauswahlindikator 354 geliefert.
Zusätzlich
wird die endgültige
Charakterisierungsklasse für
den Rahmen an das Anregungsverarbeitungsmodul 54 als Steuerinformation 356 geliefert.
-
3.13 Typklassifikationsmodul
-
Für den Vollraten-Codec 22 und
den Halbraten-Codec 24 kann die endgültige Charakterisierungsklasse
auch durch das Typklassifikationsmodul 324 verwendet werden.
Ein Rahmen mit einer endgültigen
Charakterisierungsklasse der Klasse 0 bis 4 wird bestimmt ein Typ
Null Rahmen zu sein, und ein Rahmen der Klasse 5 wird bestimmt,
ein Typ Eins Rahmen zu sein. Die Typklassifikation wird an das Anregungsverarbeitungsmodul 54 als
ein Typ Indikator 358 geliefert.
-
4.0 Anregungsverarbeitungsmodul
(Excitation Processing Module)
-
Der
Typ Indikator 358 vom Typklassifikationsmodul 324 aktiviert
selektiv entweder das Vollratenmodul 54 oder das Halbratenmodul 56,
wie in 2 dargestellt ist, und zwar
abhängig
von der Ratenauswahl. 10 zeigt ein Blockdiagramm,
das das in 2 dargestellte F0 oder H0 erste
Unterrahmenverarbeitungsmodul 70 oder 80 repräsentiert,
das für
die Typ 0 Klassifikation aktiviert wird. In ähnlicher Weise zeigt 11 ein Blockdiagramm, das das F1 oder H1 erste
Rahmenverarbeitungsmodul 72 oder 82, das F1 oder
H1 zweite Unterrahmenverarbeitungsmodul 74 oder 84 und
das F1 oder H1 zweite Rahmenverarbeitungsmodul 76 oder 86 repräsentiert,
die für
Typ 1 Klassifikation aktiviert werden. Wie vorher erörtert, repräsentieren
das „F" und „H" den Vollraten-Codec 22 bzw.
den Halbraten-Codec 24.
-
Die
Aktivierung des Viertelratenmoduls 60 und des Achtelratenmoduls 62,
wie in 2 dargestellt, kann auf der
Ratenauswahl basieren. In einem Ausführungsbeispiel wird eine pseudozufällige Sequenz
(pseudo-random sequence) generiert und skaliert, um die Kurzzeitanregung
zu repräsentieren.
Die Energiekomponente 204 und 242 (2)
repräsentiert
die Skalierung der Pseudozufallssequenz, wie vorher diskutiert.
In einem Ausführungsbeispiel
wird der „Keim" (seed), der zum
Generieren der Pseudozufallssequenz verwendet wird, aus dem Bitstrom
extrahiert, um dadurch Synchronität zwischen dem Codiersystem 12 und
dem Decodiersystem 16 vorzusehen.
-
Wie
vorher erörtert,
empfängt
das Anregungsverarbeitungsmodul 54 auch die modifizierte
gewichtete Spache 350, die unquantisierten Tonhöhenverstärkungen 352,
den Ratenindikator 354 und die Steuerinformation 356.
Die Viertel- und Achtenraten-Codecs 26 und 28 verwenden
diese Signale nicht während
der Verarbeitung. Jedoch können
diese Signale verwendet werden, um Rahmen des Sprachsignals 18 innerhalb
des Vollraten-Codecs 22 und des Halbraten-Codecs 24 weiterzuverarbeiten.
Die Verwendung dieser Parameter durch den Vollraten-Codec 22 und
den Halbraten-Codec 24, wie später beschrieben, beruht auf
der Typklassifikation des Rahmens als Typ 0 oder Typ 1.
-
4.1 Anregungsverarbeitungsmodul
für Type
Null Rahmen des Vollraten-Codecs
und des Halbraten-Codecs
-
Jetzt
bezugnehmend auf 10, umfasst ein Ausführungsbeispiel
des F0 oder H0 ersten Unterrahmenverarbeitungsmoduls 70, 80 einen
adaptiven Codebuchabschnitt 362, einen fixierten bzw. festen
(fixed) Codebuchabschnitt 364 und einen Verstärkungsquantisierungsabschnitt 366.
Die Verarbeitung und Codierung für
Rahmen vom Typ 0 ist einigermaßen ähnlich zu
der herkömmlichen
CELP Codierung, beispielsweise dem TIA (Telecommunication Industry
Association) Standard IS-127. Für
den Vollraten-Codec 22 kann der Rahmen in vier Unterrahmen
unterteilt werden, während
der Rahmen für
den Halbraten-Codec 24 in zwei Unterrahmen unterteilt werden
kann, wie vorher erörtert
wurde. Diese in 10 repräsentierten Funktionen werden
auf einer Unterrahmenbasis ausgeführt.
-
Das
F0 oder H0 erste Unterrahmenverarbeitungsmodul 70 und 80 (2)
werden betrieben zum Bestimmen des geregelten Tonhöhenabstands
und des entsprechenden adaptiven Codebuchgewinns für das adaptive
Codebuch. Zusätzlich
wird der Langzeitrest unter Verwendung des fixierten Codebuchs quantisiert
und die entsprechende fixierte Codebuchverstärkung wird auch bestimmt. Die
Quantisierung des geregelten Tonhöhenabstands und gemeinsame
Quantisierung der adaptiven Codebuchverstärkung und der fixierten Codebuchverstärkung werden
auch durchgeführt.
-
4.1.1 Adaptiver Codebuchabschnitt
-
Der
adaptive Codebuchabschnitt 362 umfasst ein adaptives Codebuch 368,
einen ersten Multiplizierer 370, ein erstes Synthesefilter 372,
ein erstes Wahrnehmungsgewichtungsfilter 374, einen ersten
Subtrahierer 376 und ein erstes Minimierungsmodul 378.
Der adaptive Codebuchabschnitt 362 führt eine Suche für den besten
geregelten Tonhöhenabstand
aus dem adaptiven Codebuch 362 durch und zwar unter Verwendung des
Analyse-durch-Synthese
(ABS) Ansatzes.
-
Ein
Segment aus dem adaptiven Codebuch 368 entsprechend dem
geregelten Tonhöhenabstand kann
als ein adaptiver Codebuchvektor (va) 382 bezeichnet
werden. Die Tonhöhenspur 348 aus
dem Tonhöhenvorverarbeitungsmodul 322 der 9 kann
verwendet werden zum Identifizieren eines Gebiets in dem adaptiven
Codebuch 368, und zwar zum Suchen für Vektoren für den adaptiven
Codebuchvektor (va) 382. Der erste
Multiplizierer 370 multipliziert den ausgewählten adaptiven
Codebuchvektor (va) 382 durch eine
Verstärkung
(ga) 384. Die Verstärkung (ga) 384 ist unquantisiert und repräsentiert
eine initiale adaptive Codebuchverstärkung, die berechnet wird,
wie später
beschrieben wird. Das resultierende Signal wird an den ersten Synthesefilter 372 gegeben,
der eine Funktion durchführt,
die die Inverse der vorher erörterten
LPC Analyse ist. Das erste Synthesefilter 372 empfängt die
quantisierten LPC Koeffizienten Aq(z) 342 von
dem LSF Quantisierungsmodul 334 und zusammen mit dem ersten
Wahrnehmungsgewichtungsfiltermodul 374 erzeugt es ein erstes
re-synthetisiertes Sprachsignal 386. Der erste Subtrahierer 376 subtrahiert
das erste re-synthetisierte Sprachsignal 386 von der modifizierten
gewichteten Sprache 350 um ein Langzeitfehlersignal 388 zu
erzeugen. Die modifizierte gewichtete Sprache 350 ist das
Zielsignal für
die Suche in dem adaptiven Codebuch 368.
-
Das
erste Minimierungsmodul 378 empfängt das Langzeitfehlersignal 388,
das ein Vektor ist, der den Fehler beim Quantisieren des geregelten
Tonhöhenabstands
repräsentiert.
Das erste Minimierungsmodul 378 führt die Berechnung der Energie
des Vektors und die Bestimmung des entsprechenden gewichteten mittleren quadratischen
Fehlers durch. Zusätzlich
steuert das erste Minimierungsmodul 378 die Suche und Auswahl
von Vektoren aus dem adaptiven Codebuch 368, für den adaptiven
Codebuchvektor (va) 382, um die
Energie des Langzeitfehlersignals 388 zu reduzieren.
-
Der
Suchprozess wird wiederholt bis das erste Minimierungsmodul 378 den
besten Vektor für
den adaptiven Codebuchvektor (va) 382 aus
dem adaptiven Codebuch 368 für jeden Unterrahmen ausgewählt hat. Die
Indexstelle des besten Vektors für
den adaptiven Codebuchvektor (va) 382 innerhalb
des adaptiven Codebuchs 368 bildet Teil der geregelten
(closed loop) adaptiven Codebuchkomponente 144b, 176b (2).
Dieser Suchprozess minimiert effektiv die Energie des Langzeitfehlersignals 388.
Der beste geregelte Tonhöhenabstand
wird ausgewählt
durch Auswahl des besten adaptiven Codebuchvektors (va) 382 aus
dem adaptiven Codebuch 368. Das resultierende Langzeitfehlersignal 388 ist
das modifizierte gewichtete Sprachsignal 350, abzüglich (less)
des gefilterten besten Vektors für
den adaptiven Codebuchvektor (va) 382.
-
4.1.1.1 Gesteuerte (Closed-Loop)
adaptive Codebuchsuche für
den Vollraten-Codec
-
Der
gesteuerte Tonhöhenabstand
für den
Vollraten-Codec 22 wird in dem Bitstrom durch die gesteuerte
adaptive Codebuchkomponente 144b repräsentiert. Für ein Ausführungsbeispiel des Vollraten-Codec 22 werden
die gesteuerten Tonhöhenabstände für die ersten
und die dritten Unterrahmen mit 8 Bits repräsentiert, und die gesteuerten
Tonhöhenabstände für die zweiten
und vierten Unterrahmen werden mit 5 Bits repräsentiert, wie vorher erörtert wurde.
In einem Ausführungsbeispiel
ist der Abstand in dem Bereich von 17 bis 148 Abständen. Die
8 Bits und die 5 Bits können
die gleiche Tonhöhenauflösung repräsentieren.
Die 8 Bits können jedoch
auch den vollen Bereich des geregelten Tonhöhenabstands für einen
Unterrahmen repräsentieren
und die 5 Bits können
einen limitierten Wert der geregelten Tonhöhenabstände um den geregelten Tonhöhenabstand
des vorhergehenden Unterrahmens herum repräsentieren. In einem beispielhaften
Ausführungsbeispiel ist
die Auflösung
des geregelten Tonhöhenabstands
0,2 und zwar einheitlich zwischen Abstand 17 und Abstand 33. Von
Abstand 33 bis Abstand 91 des beispielhaften Ausführungsbeispiels
wird die Auflösung
allmählich
von 0,2 auf 0,5 erhöht,
und die Auflösung
von Abstand 91 bis Abstand 148 ist einheitlich 1,0.
-
Der
adaptive Codebuchabschnitt
362 führt eine ganzzahlige Abstandssuche
für geregelte
ganzzahlige Tonhöhenabstände durch.
Für die
ersten und die dritten Unterrahmen (d.h. jene, die mit 8 Bits dargestellt
sind) kann die ganzzahlige Abstandssuche im Bereich von [L
p – 3,
... L
p + 3] durchgeführt werden, wobei L
p der Unterrahmentonhöhenabstand ist. Der Unterrahmentonhöhenabstand
wird von der Tonhöhenspur
348 erhalten, die
verwendet wird um einen Vektor in dem adaptiven Codebuch
368 zu
identifizieren. Die Kreuzkorrelationsfunktion R(I) für den ganzzahligen
Abstandssuchbereich kann berechnet werden gemäß
wobei
t(n) das Zielsignal ist, das die modifizierte gewichtete Sprache
350 ist,
e(n) ist der durch den adaptiven Codebuchvektor (v
a)
382 repräsentierte
adaptive Codebuchbeitrag, h(n) ist die kombinierte Antwort des ersten Synthesefilters
372 und
des Wahrnehmungsgewichtungsfilters
374. In dem beispielhaften
Ausführungsbeispiel
gibt es 40 Abtastungen in einem Unterrahmen, obwohl mehr oder weniger
Abtastungen verwendet werden könnten.
-
Der
geregelte ganzzahlige Tonhöhenabstand
der R(I) maximiert, kann als ein verfeinerter ganzzahliger Abstand
(refined integer lag) gewählt
werden. Der beste Vektor aus dem adaptiven Codebuch
368 für den adaptiven
Codebuchvektor (v
a)
382 kann durch
Hochtasten (upsampling) der Kreuzkorrelationsfunktion R(I) bestimmt
werden, und zwar unter Verwendung eines Hamminggewichteten-Sinc
neunter Ordnung. Hochtastung wird von einer Suche nach den Vektoren
innerhalb des adaptiven Codebuchs
368 gefolgt, die den
geregelten Tonhöhenabständen entsprechen,
die innerhalb 1 Abtastung des verfeinerten ganzzahligen Abstands
sind. Die Indexstelle innerhalb des adaptiven Codebuchs
368 des
besten Vektors für
den adaptiven Codebuchvektor (v
a)
382 für jeden
Unterrahmen wird durch die geregelte adaptive Codebuchkomponente
144b in
dem Bitstrom repräsentiert.
Die initiale adaptive Codebuchverstärkung kann geschätzt werden
gemäß:
wobei
L
p opt den Abstand
des besten Vektors für
den adaptiven Codebuchvektor (v
a)
382 repräsentiert,
und e(n – L
p opt) repräsentiert
den besten Vektor für
den adaptiven Codebuchvektor (v
a)
382.
Zusätzlich
wird in diesem beispiel haften Ausführungsbeispiel die Schätzung durch
0,0 ≤ g ≤ 1,2 begrenzt,
und n repräsentiert
40 Abtastungen in einem Unterrahmen. Eine normalisierte adaptive
Codebuchkorrelation wird durch R(I) gegeben, wenn I = L
p opt ist. Die initiale adaptive Codebuchverstärkung kann
ferner normalisiert werden, gemäß der normalisierten
adaptiven Codebuchkorrelation, der initialen Klassenentscheidung
und der Schärfe
des adaptiven Codebuchbeitrags. Die Normalisierung führt zu der
Verstärkung
(g
a)
384. Die Verstärkung (g
a)
384 ist unquantisiert und repräsentiert
die anfängliche
adaptive Codebuchverstärkung
für den
geregelten Tonhöhenabstand.
-
4.1.1.2 Geregelte adaptive
Codebuchsuche für
Halbraten-Codierung
-
Der
geregelte Tonhöhenabstand
für den
Halbraten-Codec 24 wird durch die geregelte adaptive Codebuchkomponente 176b (2)
repräsentiert.
Für den
Halbraten-Codec 24 eines Ausführungsbeispiels werden die
geregelten Tonhöhenabstände für jeden
der zwei Unterrahmen in 7 Bits codiert, wobei jeder einen Abstand in
dem Bereich von 17 bis 127 Abständen
repräsentiert.
Die ganzzahlige Abstandssuche kann im Bereich von [Lp – 3, ...,
Lp + 3] durchgeführt werden, im Gegensatz zu
der Bruchteilsuche, die im Vollraten-Codec 22 durchgeführt wird.
Die Kreuzkorrelationsfunktion R(I) kann wie in Gleichung 15 berechnet
werden, wobei die Summierung über
eine Unterrahmengröße des beispielhaften
Ausführungsbeispiels
von 80 Abtastungen durchgeführt
wird. Der geregelte Tonhöhenabstand,
der R(I) maximiert, wird als der verfeinerte ganzzahlige Abstand gewählt. Die
Indexstelle innerhalb des adaptiven Codebuchs 368 des besten
Vektors für
den adaptiven Codebuchvektor (va) 382 für jeden
Unterrahmen wird durch die geregelte adaptive Codebuchkomponente 176b in dem
Bitstrom repräsentiert.
-
Der
Initialwert für
die adaptive Codebuchverstärkung
kann gemäß Gleichung
16 berechnet werden, wobei die Summierung über eine Unterrahmengröße des beispielhaften
Ausführungsbeispiels
von 80 Abtastungen durchgeführt
wird. Die Normalisierungsprozeduren, wie vorher erörtert, können dann
angewendet werden, und führen
zu der Verstärkung
(ga) 384, die unquantisiert ist.
-
Das
von entweder dem Vollratentcodec 22 oder dem Halbraten-Codec 24 generierte
Langzeitfehlersignal 388 wird während der Suche durch den fixierten
Codebuchabschnitt 364 verwendet. Vor der fixierten Codebuchsuche
wird die Sprachaktivitätsentscheidung
erlangt, und zwar von dem VAD Modul 326 aus 9,
das auf den Rahmen anwendbar ist. Die Sprachaktivitätsentscheidung
für den
Rahmen kann in eine Unterrahmensprachaktivitätsentscheidung für jeden
Unterrahmen unterteilt werden. Die Unterrahmensprachaktivitätsentscheidung
kann verwendet werden, um die Wahrnehmungswahl des Beitrags des
fixierten Codebuchs zu verbessern.
-
4.1.2 Fixierter Codebuchabschnitt
-
Der
fixierte Codebuchabschnitt 364 umfasst ein fixiertes Codebuch 390,
einen zweiten Multiplizierer 392, ein zweites Synthesefilter 394,
ein zweites Wahrnehmungsgewichtungsfilter 396, einen zweiten
Subtrahierer 398 und ein zweites Minimierungsmodul 400.
Die Suche für
den fixierten Codebuchbeitrag durch den fixierten Codebuchabschnitt 364 ist ähnlich der
Suche innerhalb des adaptiven Codebuchabschnitts 362.
-
Ein
fixierter Codebuchvektor (vc) 402,
der den Langzeitrest für
einen Unterrahmen repräsentiert,
wird vom fixierten Codebuch 390 geliefert. Der zweite Multiplizierer 392 multipliziert
den fixierten Codebuchvektor (vc) 402 mit
einer Verstärkung
(gc) 404. Die Verstärkung (gc) 404 ist unquantisiert und ist
eine Repräsentation des
Initialwerts der fixierten Codebuchverstärkung, die wie später beschrieben
wird, berechnet werden kann. Das resultierende Signal wird an das
zweite Synthesefilter 394 geliefert. Das zweite Synthesefilter 394 empfängt die
quantisierten LPC Koeffizienten Aq(z) 342 von
dem LSF Quantisierungsmodul 334 und zusammen mit dem zweiten
Wahrnehmungsgewichtungsfilter 396 kreiert es ein zweites
re-synthetisiertes Sprachsignal 406. Der zweite Subtrahierer 398 subtrahiert
das re-synthetisierte Sprachsignal 406 aus dem Langzeitfehlersignal 388,
um einen Vektor zu erzeugen, der ein fixiertes Codebuchfehlersignal 408 ist.
-
Das
zweite Minimierungsmodul 400 empfängt das fixierte Codebuchfehlersignal 408,
das den Fehler beim Quantisieren des Langzeitrests durch das fixierte
Codebuch 390 repräsentiert.
Das zweite Minimierungsmodul 400 verwendet die Energie
des fixierten Codebuchfehlersignals 408 um die Auswahl
von Vektoren für den
fixierten Codebuchvektor (vc) 402 aus
dem fixierten Codebuch 292 zu steuern, und zwar um die
Energie des fixierten Codebuchfehlersignals 408 zu reduzieren.
Das zweite Minimierungsmodul 400 empfängt auch die Steuerinformation 356 aus
dem Charakterisierungsmodul 328 der 9.
-
Die
endgültige
Charakterisierungsklasse, die in der Steuerinformation 356 enthalten
ist, steuert wie das zweite Minimierungsmodul 400 Vektoren
für den
fixierten Codebuchvektor (vc) 402 aus
dem fixierten Codebuch 390 auswählt. Der Prozess wird wiederholt
bis die Suche durch das zweite Minimierungsmodul 400 den
besten Vektor für
den fixierten Codebuchvektor (vc) 402 aus
dem fixierten Codebuch 390 für jeden Unterrahmen ausgewählt hat.
Der beste Vektor für
den fixierten Codebuchvektor (vc) 402 minimiert
den Fehler in dem zweiten re-synthetisierten Sprachsignal 406 bezüglich des
Langzeitfehlersignals 388. Die Indizes identifizieren den
besten Vektor für
den fixierten Codebuchvektor (vc) 402 und,
wie vorher erörtert,
können
zum Bilden der fixierten Codebuchkomponente 146a und 178a verwendet
werden.
-
4.1.2.1 Fixierte Codebuchsuche
für den
Vollraten-Codec
-
Wie
vorher mit Bezug auf 2 und 4 erörtert, kann
die fixierte Codebuchkomponente 146a für Rahmen der Type Null Klassifikation
jede von vier Unterrahmen des Vollraten-Codec 22 unter
Verwendung der drei 5-Impulscodebücher 160 repräsentieren.
Wenn die Suche initiiert wird, können
Vektoren für
den fixierten Codebuchvektor (vc) 402 innerhalb
des fixierten Codebuchs 390 bestimmt werden, und zwar unter
Verwendung des Langzeitfehlersignals 338, das dargestellt
wird durch:
-
-
Tonhöhenverstärkung kann
auf die drei 5-Impulscodebücher 160 (in 4 dargestellt)
innerhalb des fixierten Codebuchs 390 in der Vorwärtsrichtung
während
der Suche angewendet werden. Die Suche ist eine iterative Suche
mit gesteuerter Komplexität
nach dem besten Vektor für
den fixierten Codebuchvektor (vc) 402. Ein
Initialwert für
die durch die Verstärkung
(gc) 404 repräsentierte fixierte Codebuchverstärkung kann
gleichzeitig mit der Suche nach dem besten Vektor für den fixierten
Codebuchvektor (vc) 402 gefunden
werden.
-
In
einem beispielhaften Ausführungsbeispiel
wird die Suche für
den besten Vektor für
den fixierten Codebuchvektor (vc) 402 in
jedem der drei 5-Impulscodebücher 160 vollendet.
Beim Abschluss des Suchprozesses innerhalb jedes der drei 5-Impulscodebücher 160 sind
beste Kandidatenvektoren für
den fixierten Codebuchvektor (vc) 402 identifiziert
worden. Die Auswahl eines der drei 5-Impulscodebücher 160 und welcher
der entsprechenden besten Kandidatenvektoren verwendet wird, kann
bestimmt werden, und zwar unter Verwendung des entsprechenden fixierten
Codebuchfehlersignals 408 für jeden der besten Kandidatenvektoren
(candidate best vectors). Die Bestimmung des gewichteten mittleren
quadratischen Fehlers (weighted mean squared error, WMSE) für jeden
der entsprechenden fixierten Codebuchfehlersignale 408 durch
das zweite Minimierungsmodul 400 wird zuerst durchgeführt. Für die Zwecke
dieser Erörterung
werden die gewichteten mittleren quadratischen Fehler (WMSEs) für jeden
der besten Kandidatenvektoren von jedem der drei 5-Impulscodebücher 160 als
erste, zweite und dritte fixierte Codebuch WMSEs bezeichnet.
-
Die
ersten, zweiten und dritten fixierten Codebuch WMSEs können zuerst
gewichtet werden. Innerhalb des Vollraten-Codec 22 können für als Typ
Null klassifizierte Rahmen die ersten, zweiten und dritten fixierten Codebuch
WMSEs durch die Unterrahmensprachaktivitätsentscheidung gewichtet wer den.
Zusätzlich
kann die Gewichtung vorgesehen werden durch ein Schärfemaß (sharpness
measure) jedes der ersten, zweiten und dritten fixierten Codebuch
WMSEs und dem NSR aus dem Charakterisierungsmodul 328 von 9.
Basierend auf der Gewichtung kann eines der drei 5-impulsfixierten
Codebücher 160 und
der beste Kandidatenvektor in dem Codebuch selektiert bzw. ausgewählt werden.
-
Das
selektierte 5-Impulscodebuch 160 kann dann für eine endgültige Entscheidung
des besten Vektors für
den fixierten Codebuchvektor (vc) 402 genau
bzw. fein durchsucht werden. Die genaue Suche wird auf den Vektoren
in dem selektierten einen der drei 5-Impulscodebücher 160, die in der
Nähe bzw.
Umgebung des gewählten
besten Kandidatenvektors durchgeführt. Die Indizes, die den besten
Vektor identifizieren, und zwar für den fixierten Codebuchvektor
(vc) 402 innerhalb des ausgewählten einen
der drei 5-Impulscodebücher 160 sind
Teil der fixierten Codebuchkomponente 178a in dem Bitstrom.
-
4.1.2.2 Fixierte Codebuchsuche
für den
Halbraten-Codec
-
Für Rahmen
der Type Null Klassifikation repräsentiert die fixierte Codebuchkomponente 178a jeden der
zwei Unterrahmen des Halbraten-Codecs 24. Wie vorher mit
Bezug auf 5 erörtert wurde, kann die Repräsentation
auf den Impulscodebüchern 192, 194 und
dem gaussförmigen
Codebuch 195 basiert werden. Das initiale Ziel für die durch
die Verstärkung
(gc) 404 repräsentierte fixierte Codebuchverstärkung kann
in ähnlicher
Weise wie beim Vollraten-Codec 22 bestimmt
werden. Zusätzlich
kann die Suche für
den fixierten Codebuchvektor (vc) 402 innerhalb
des fixierten Codebuchs 390 ähnlich wie beim Vollraten-Codec 22 gewichtet
werden. Beim Halbraten-Codec 24 kann die Gewichtung auf
die besten Kandidatenvektoren von jedem der Impulscodebücher 192 und 194 wie
auch dem gaussförmigen
Codebuch 195 angewendet werden. Die Gewichtung wird angewendet
um den am besten geeigneten fixierten Codebuchvektor (vc) 402 zu
bestimmen, und zwar aus einer Perspektive der Wahrnehmung. Zusätzlich kann
die Gewichtung des gewich teten mittleren quadratischen Fehlers (weighted
mean squared error, WMSE) beim Halbraten-Codec 24 weiter
angehoben werden, um die Wahrnehmungsperspektive hervorzuheben.
Weitere Betonung kann erreicht werden durch Einbeziehen zusätzlicher
Parameter in die Gewichtung. Die zusätzlichen Faktoren können der
geregelte Tonhöhenabstand
und die normalisierte adaptive Codebuchkorrelation sein.
-
Zusätzlich zur
angehobenen bzw. betonten Gewichtung können vor der Suche der Codebücher 192, 194, 195 nach
den besten Kandidatenvektoren einige Charakteristika in die Einträge der Impulscodebücher 192, 194 eingebaut
werden. Diese Charakteristika können
weitere Betonung bzw. Steigerung der wahrnehmbaren Qualität vorsehen.
In einem Ausführungsbeispiel
kann gesteigerte Wahrnehmungsqualität bzw. wahrnehmbare Qualität während dem
Suchen erreicht werden, und zwar durch Modifizieren der Filterantwort
des zweiten Synthesefilters 394, unter Verwendung dreier
Steigerungen (enhancements). Die erste Steigerung kann erreicht
werden durch Einkoppeln von hochfrequentem Rauschen in das fixierte
Codebuch, was das Hochfrequenzband modifiziert. Die Einkopplung
von Hochfrequenzrauschen kann in die Antwort des zweiten Synthesefilters 394 einbezogen
werden, und zwar durch Falten der hochfrequenten Rauschimpulsantwort
mit der Impulsantwort des zweiten Synthesefilters 394.
-
Die
zweite Steigerung kann verwendet werden, um zusätzliche Impulse an Stellen
einzubeziehen, die durch hohe Korrelationen in dem vorher quantisierten
Unterrahmen bestimmt werden können.
Die Amplitude der zusätzlichen
Impulse kann gemäß der Korrelationsstärke eingestellt
werden, dadurch dem Codiersystem 16 erlaubend, die gleiche
Operation ohne die Notwendigkeit zusätzlicher Information von dem
Codiersystem 12 durchzuführen. Der Beitrag von diesen
zusätzlichen
Impulsen kann auch in die Impulsantwort des zweiten Synthesefilters 394 einbezogen
werden. Die dritte Steigerung filtert das fixierte Codebuch 390 mit
einem schwachen Kurzzeitspektralfilter und zwar zum Kompensieren
der Reduktion der Formantschärfe,
die aus der Bandbreitenerweiterung und der Quantisierung der LSFs
resultiert.
-
Die
Suche nach dem besten Vektor für
den fixierten Codebuchvektor (vc) 402 basiert
auf dem Minimieren der Energie des fixierten Codebuchfehlersignals 408,
wie zuvor erörtert
wurde. Die Suche kann zuerst auf dem 2-Impulscodebuch 192 durchgeführt werden.
Das 3-Impulscodebuch 194 kann als nächstes durchsucht werden, und
zwar in zwei Schritten. Der erste Schritt kann ein Zentrum für den zweiten
Schritt bestimmen, der als eine fokussierte Suche bezeichnet werden
kann. Rückwärts und
vorwärts
gewichtete Tonhöhensteigerung kann
für die
Suche in beiden Impulscodebüchern 192 und 194 angewendet
werden. Das gaussförmige
Codebuch 195 kann als letztes durchsucht werden, und zwar
unter Verwendung einer schnellen Suchroutine, die zum Bestimmen
der zwei orthogonalen Basisvektoren zur Codierung verwendet wird,
wie vorher erörtert
wurde.
-
Die
Auswahl eines der Codebücher 192, 194 und 195 und
dem besten Vektor für
den fixierten Codebuchvektor (vc) 402 kann
in ähnlicher
Weise wie beim Vollraten-Codec 22 durchgeführt werden.
Die Indices, die den besten Vektor für den fixierten Codebuchvektor
(vc) 402 innerhalb des ausgewählten Codebuchs
identifizieren, sind Teil der fixierten Codebuchkomponente 178a in
dem Bitstrom.
-
An
dieser Stelle sind die besten Vektoren für den adaptiven Codebuchvektor
(va) 382 und den fixierten Codebuchvektor
(vc) 402 gefunden worden, und zwar
innerhalb der adaptiven bzw. fixierten Codebücher 368, 390.
Die unquantisierten Initialwerte für die Verstärkung (ga) 384 und
die Verstärkung
(gc) 404 können jetzt durch die besten
Verstärkungswerte
ersetzt werden. Die besten Verstärkungswerte
können
bestimmt werden und zwar basierend auf den besten Vektoren für den adaptiven
Codebuchvektor (va) 382 fixierten
Codebuchvektor (vc) 402 und zwar
wie vorher bestimmt. Nach der Bestimmung der besten Verstärkungen
werden diese gemeinsam quantisiert. Die Verstärkung und Quantisierung der
Verstärkungen
findet innerhalb des Verstärkungsquantisierungsabschnitts 366 statt.
-
4.1.3 Verstärkungsguantisierungsabschnitt
-
Der
Verstärkungsquantisierungsabschnitt 366 eines
Ausführungsbeispiels
umfasst ein 2D VQ Verstärkungscodebuch 412,
einen dritten Multiplizierer 414, einen vierten Multiplizierer 416,
einen Addierer 418, ein drittes Synthesefilter 420,
ein drittes Wahrnehmungsgewichtungsfilter 422, einen dritten
Subtrahierer 424, ein drittes Minimierungsmodul 426 und
einen Energiemodifizierungsabschnitt 428. Der Energiemodifizierungsabschnitt 428 eines
Ausführungsbeispiels
umfasst ein Energieanalysemodul 430 und ein Energieeinstellmodul 432.
Die Bestimmung und Quantisierung der fixierten und adaptiven Codebuchverstärkungen
kann innerhalb des Verstärkungsquantisierungsabschnitts 366 durchgeführt werden.
Zusätzlich
findet eine weitere Modifikation der modifizierten gewichteten Sprache 350 in
dem Energiemodifikationsabschnitt 428 statt, wie noch erörtert wird,
und zwar um ein modifiziertes Zielsignal 434 zu bilden,
das für
die Quantisierung verwendet werden kann.
-
Die
Bestimmung und Quantisierung umfasst das Suchen zum Bestimmen eines
quantisierten Verstärkungsvektors
(g ^
ac)
433, der die gemeinsame Quantisierung
(joint quantization) der adaptiven Codebuchverstärkung und der fixierten Codebuchverstärkung repräsentiert.
Für die
Suche können
die adaptiven und fixierten Codebuchverstärkungen erlangt werden durch
Minimieren des gewichteten mittleren quadratischen Fehlers, gemäß:
wobei
v
a(n) der beste Vektor für den adaptiven Codebuchvektor
(v
a)
382 ist und v
c(n)
der beste Vektor für
den fixierten Codebuchvektor (v
c)
402 ist,
wie vorher erörtert
wurde. In dem beispielhaften Ausführungsbeispiel basiert die
Summierung auf einem Rahmen der 80 Abtastungen enthält, wie
beispielsweise in einem Ausführungsbeispiel
des Halbraten-Codecs
24. Die Minimie rung kann gemeinsam
erlangt werden (Erlangen von g
a und g
c gleichzeitig) oder sequentiell erlangt
werden (Erlangen von g
a zuerst und dann
von g
c) und zwar abhängig von einem Schwellwert
der normalisierten adaptiven Codebuchkorrelation. Die Verstärkungen
können dann
teilweise modifiziert werden, und zwar um die Fluktuationen der
rekonstruierten Sprache bei vorhandenem Hintergrundrauschen zu glätten. Die
modifizierten Verstärkungen
werden als g'
a und g'
c bezeichnet. Das modifizierte Zielsignal
434 kann
unter Verwendung der modifizierten Verstärkungen wie folgt generiert
werden:
-
-
Eine
Suche nach dem besten Vektor für
den quantisierten Verstärkungsvektor
(g ^
ac)
433 wird innerhalb des 2D
VQ Verstärkungscodebuchs
412 durchgeführt. Das
2D VQ Verstärkungscodebuch
412 kann
die vorher erörterte
2D Verstärkungsquantisierungstabelle
sein, wie in Tabelle 4 dargestellt. Das 2D VQ Verstärkungscodebuch
412 wird
nach Vektoren für
den quantisierten Verstärkungsvektor
(g ^
ac)
433, der den mittleren quadratischen
Fehler minimiert, durchsucht, d.h. Minimieren von
wobei
eine quantisierte fixierte Codebuchverstärkung (g ^
a)
435 und
eine quantisierte adaptive Codebuchverstärkung (g ^
c)
436 von
dem 2D VQ Verstärkungscodebuch
412 abgeleitet
werden kann. In dem beispielhaften Ausführungsbeispiel basiert die
Summierung auf einem Rahmen, der 80 Abtastungen aufweist, wie beispielsweise
in einem Ausführungsbeispiel
des Halbraten-Codecs
24.
Die quantisierten Vektoren in dem 2D VQ Verstärkungscodebuch
412 repräsentieren
tatsächlich
die adaptive Codebuchverstärkung
und einen Korrekturfaktor für
die fixierte Codebuchverstärkung,
wie vorher erörtert
wurde.
-
Nach
der Bestimmung des modifizierten Zielsignals 434 wird der
quantisierte Verstärkungsvektor
(g ^ac) 433 an Multiplizierer 414 und 416 gegeben.
Der dritte Multiplizierer 414 multipliziert den besten
Vektor für
den adaptiven Codebuchvektor (va) 482 aus
dem adaptiven Codebuch 368 mit der quantisierten adaptiven
Codebuchverstärkung
(g ^a) 435. Der Ausgang vom dritten
Multiplizierer 414 wird an den Addierer 418 geliefert. Ähnlich multipliziert
der vierte Multiplizierer 416 die quantisierte fixierte
Codebuchverstärkung
(g ^c) 436 mit dem besten Vektor für den fixierten
Codebuchvektor (vc) 402 aus dem
fixierten Codebuch 390. Der Ausgang vom vierten Multiplizierer 416 wird
auch an den Addierer 418 geliefert. Der Addierer 418 addiert
die Ausgänge
von den Multiplizierern 414, 416 und liefert das
resultierende Signal an das dritte Synthesefilter 420.
-
Die
Kombination des dritten Synthesefilters 420 und des Wahrnehmungsgewichtungsfilters 422 generiert
ein drittes re-synthetisiertes Sprachsignal 438. Wie bei
den ersten und zweiten Synthesefiltern 372 und 394 empfängt das
dritte Synthesefilter 420 die quantisierten LPC Koeffizienten
Aq(z) 342. Der dritte Subtrahierer 424 subtrahiert
das dritte re-synthetisierte Sprachsignal 438 von dem modifizierten
Zielsignal 434 um ein drittes Fehlersignal 442 zu
generieren. Das dritte Minimierungsmodul 426 empfängt das
dritte Fehlersignal 442, das den Fehler repräsentiert,
der aus der gemeinsamen Quantisierung der fixierten Codebuchverstärkung und
der adaptiven Codebuchverstärkung
durch das 2D VQ Verstärkungscodebuch 412 resultiert.
Das dritte Minimierungsmodul 426 verwendet die Energie
des dritten Fehlersignals 442 um die Suche und Auswahl
der Vektoren aus dem 2D VQ Verstärkungscodebuch 412 zu
steuern, und zwar um die Energie des dritten Fehlersignals 442 zu
reduzieren.
-
Der
Prozess wird wiederholt bis das dritte Minimierungsmodul 426 den
besten Vektor von dem 2D VQ Verstärkungscodebuch 412 für jeden
Unterrahmen, der die Energie des dritten Fehlersignals 442 minimiert, selektiert
bzw. ausgewählt
hat. Sobald die Energie des dritten Fehlersignals 442 für jeden
Unterrahmen minimiert worden ist, werden die Indexstellen der gemeinsam
quanti sierten Verstärkungen
(g ^a) und (g ^c) 435 und 436 verwendet
zum Generieren der Verstärkungskomponente 147, 179 für den Rahmen.
Für den
Vollraten-Codec 22 ist
die Verstärkungskomponente 147 die
fixierte und adaptive Verstärkungskomponente 148a, 150a und
für den
Halbraten-Codec 24 ist die Verstärkungskomponente 179 die
adpative und fixierte Verstärkungskomponente 180a und 182a.
-
Die
Synthesefilter 372, 394 und 420, die
Wahrnehmungsgewichtungsfilter 374, 396 und 422,
die Minimierungsmodule 378, 400 und 426,
die Multiplizierer 370, 392, 414 und 416,
die Addierer 418 und die Subtrahierer 376, 398 und 424 (wie
auch irgendwelche anderen in dieser Anmeldung beschriebenen Filter,
Minimierungsmodule, Multiplizierer, Addierer und Subtrahierer) können durch
irgendein anderes Gerät
ersetzt werden oder modifiziert werden, in einer Art und Weise,
die dem Fachmann bekannt ist, und zwar dem Fachmann, der für die spezielle
Anmeldung geeignet ist.
-
4.2 Anregungsverarbeitungsmodul
für Typ
Eins Rahmen des Vollraten-Codecs und des Halbraten-Codecs
-
In 11 umfassen die F1, H1 ersten Rahmenverarbeitungsmodule 72 und 82 ein
3D/4D gesteuertes (open loop) VQ Modul 454. Die F1, H1
zweite Unterrahmenverarbeitungsmodule 74 und 84 eines
Ausführungsbeispiels
umfassen das adaptive Codebuch 368, das fixierte Codebuch 390,
einen ersten Multiplizierer 456, einen zweiten Multiplizierer 458,
ein erstes Synthesefilter 460 und ein zweites Synthesefilter 462.
Zusätzlich
umfassen die F1, H1 zweite Unterrahmenverarbeitungsmodule 74 und 84,
ein erstes Wahrnehmungsgewichtungsfilter 464, ein zweites
Wahrnehmungsgewichtungsfilter 466, einen ersten Subtrahierer 468,
einen zweiten Subtrahierer 470, ein erstes Minimierungsmodul 472 und
ein Energieeinstellmodul 474. Die F1, H1 zweiten Rahmenverarbeitungsmodule 76 und 86 umfassen
einen dritten Multiplizierer 476, einen vierten Multiplizierer 478,
einen Addierer 480, ein drittes Synthesefilter 482,
ein drittes Wahrnehmungsgewichtungsfilter 484, einen dritten
Subtrahierer 486, ein Zwischenspeichermodul bzw. Buffermodul
(buffering module) 488, ein zweites Minimierungsmodul 490 und
ein 3D/4D VQ Verstärkungscodebuch 492.
-
Die
Verarbeitung von als Typ Eins klassifizierten Rahmen innerhalb des
Anregungsverarbeitungsmoduls 54 sieht eine Verarbeitung
sowohl auf einer Rahmenbasis als auch einer Unterrahmenbasis vor,
wie vorher erörtert.
Um der Kürze
willen wird sich folgende Erörterung
auf die Module innerhalb des Vollraten-Codecs 22 beziehen.
Die Module in dem Halbraten-Codec 24 können als genauso funktionierend
betrachtet werden, außer
es wird anders angegeben. Die Quantisierung der adaptiven Codebuchverstärkung durch
das F1 erste Rahmenverarbeitungsmodul 72 generiert die
adaptive Verstärkungskomponente 148b.
Das F1 zweite Unterrahmenverarbeitungsmodul 74 und das
F1 zweite Rahmenverarbeitungsmodul 76 werden betrieben
um den fixierten Codebuchvektor bzw. die korrespondierende fixierte
Codebuchverstärkung
zu bestimmen, wie vorher angegeben. Das F1 zweite Unterrahmenverarbeitungsmodul 74 verwendet
die Spurtabellen, wie vorher erörtert,
zum Erzeugen der fixierten Codebuchkomponente 146b, wie
in 2 dargestellt ist.
-
Das
F1 zweite Rahmenverarbeitungsmodul 76 quantisiert die fixierte
Codebuchverstärkung
um die fixierte Verstärkungskomponente 150b zu
generieren. In einem Ausführungsbeispiel
verwendet der Vollraten-Codec 22 10 Bits für die Quantisierung
von vier fixierten Codebuchverstärkungen
und der Halbraten-Codec 24 verwendet 8 Bits für die Quantisierung
von den drei fixierten Codebuchverstärkungen. Die Quantisierung
kann unter Verwendung von Prädiktion
mit begleitendem Mittelwert durchgeführt werden. Im Allgemeinen werden,
bevor die Prädiktion
und die Quantisierung durchgeführt
werden, die Prädiktionszustände (prediction states)
in eine geeignete Dimension konvertiert.
-
4.2.1 Erstes Rahmenverarbeitungsmodul
-
Ein
Ausführungsbeispiel
des 3D/4D gesteuerten VQ Moduls 454 kann der vorher erörterte vierdimensionale
Vorvektorquantisierer (4D pre VQ) 166 und die assoziierte
Vorverstärkungsquantisierungstabelle
für den
Vollraten-Codec 22 sein. Ein anderes Ausführungsbeispiel
für das
3D/4D gesteuerte VQ Modul 454 kann der vorher erörterte dreidimensionale
Vorvektorquantisierer (3D pre VQ) 198 und die
assoziierte Vorverstärkungsquantisierungstabelle
für den
Halbraten-Codec 24 sein. Das 3D/4D gesteuerte VQ Modul 454 empfängt die
unquantisierten Tonhöhenverstärkungen 352 von
dem Tonhöhenvorverarbeitungsmodul 322.
Die unquantisierten Tonhöhenverstärkungen 352 repräsentieren
die adaptive Codebuchverstärkung
für den
gesteuerten Tonhöhenabstand,
wie vorher erörtert.
-
Das
3D/4D gesteuerte VQ Modul 454 quantisiert die unquantisierten
Tonhöhenverstärkungen 352 um eine
quantisierte Tonhöhenverstärkung (g ^k a) 496 zu
generieren, wie die besten quantisierten Tonhöhenverstärkungen für jeden Unterrahmen repräsentiert,
wobei k die Anzahl der Unterrahmen ist. In einem Ausführungsbeispiel
gibt es vier Unterrahmen für
den Vollraten-Codec 22 und drei Unterrahmen für den Halbraten-Codec 24,
die vier quantisierten Verstärkungen
(g ^1 a, g ^2 a, g ^3 a, g ^4 a) bzw. drei quantisierten
Verstärkungen
(g ^1 a, g ^2 a, g ^3 a) von
jedem Unterrahmen entsprechen. Die Indexstelle der quantisierten
Tonhöhenverstärkung (g ^k a) 496 innerhalb
der Vorverstärkungsquantisierungstabelle
repräsentiert
die adaptive Verstärkungskomponente 148b für den Vollraten-Codec 22 oder
die adaptive Verstärkungskomponente 180b für den Halbraten-Codec 24.
Die quantisierte Tonhöhenverstärkung (g ^k a) 496 wird
an das F1 zweite Unterrahmenverarbeitungsmodul 74 oder das
H1 zweite Unterrahmenverarbeitungsmodul 84 geliefert.
-
4.2.2 Zweites Unterrahmenverarbeitungsmodul
-
Das
F1 oder H1 zweite Unterrahmenverarbeitungsmodul 74 oder 84 verwendet
die durch das Tonhöhenvorverarbeitungsmodul 322 gelieferte
Tonhöhenspur 384 um
einen adaptiven Codebuchvektor (vk a) 498 zu identifizieren. Der adaptive
Codebuchvektor (vk a) 498 repräsentiert
den adaptiven Codebuchbeitrag für
jeden Unterrahmen, wobei k gleich der Unterrahmennummer ist. In
einem Ausführungsbeispiel
gibt es vier Unterrahmen für
den Vollraten-Codec 22 und drei Unterrahmen für den Halbraten-Codec 24,
die vier Vektoren (v1 a,
v2 a, v3 a, v4 a)
bzw. drei Vektoren (v1 a,
v2 a, v3 a) für
den adaptiven Codebuchbeitrag für
jeden Unterrahmen entsprechen.
-
Der
für den
adaptiven Codebuchvektor (v
k a)
498 ausgewählte Vektor
kann aus vergangenen Vektoren abgeleitet werden, die in dem adaptiven
Codebuch
368 und der Tonhöhenspur
348 lokalisiert
sind. Wobei die Tonhöhenspur
348 interpoliert
sein kann, und durch L
p(n) repräsentiert
wird. Demgemäß ist keine
Suche nötig. Der
adaptive Codebuchvektor (v
k a)
498 kann
erhalten werden, durch Interpolieren der vergangenen adaptiven Codebuchvektoren
(v
k a)
498 in
dem adaptiven Codebuch mit einem Hamming-gewichteten-Sinc-Fenster (Hamming
weighted Sinc window) der 21
ten Ordnung,
wie folgt:
wobei
e(n) die vergangene Anregung, i(L
p(n)) und
f(L
p(n)) die ganzzahligen bzw. Bruchteile
des Tonhöhenabstands
sind, und w
s(f,i) das Hamming-gewichtete-Sinc-Fenster
ist.
-
Der
adaptive Codebuchvektor (vk a) 498 und
die quantisierte Tonhöhenverstärkung (g ^k a) 496 werden durch
den ersten Multiplizierer 456 multipliziert. Der erste
Multiplizierer 456 generiert ein Signal, das durch das erste
Synthesefilter 460 und das erste Wahrnehmungsgewichtungsfiltermodul 464 verarbeitet
wird, und zwar zum Liefern eines ersten re-synthetisierten Sprachsignals 500.
Der erste Synthesefilter 460 empfängt die quantisierten LPC Koeffizienten
Aq(z) 342 aus dem LSF Quantisierungsmodul 344 als
Teil der Verarbeitung. Der erste Subtrahierer 468 subtrahiert
das erste re-synthetisierte Sprachsignal 500 aus der modifizierten
gewichteten Sprache 350, die durch das Tonhöhenvorverarbeitungsmodul 322 geliefert
wird, um ein Langzeitfehlersignal 502 zu generieren.
-
Das
F1 oder H1 zweite Unterrahmenverarbeitungsmodul 74 oder 84 führt auch
eine Suche nach dem fixierten Codebuchbeitrag durch, die ähnlich der
durch das F0 oder H0 erste Unterrahmenverarbeitungsmodul 70 und 80 durchgeführten ist,
wie vorher erörtert.
Vektoren für
einen fixierten Codebuchvektor (vk c) 504 der den Langzeitrest für einen
Unterrahmen repräsentiert,
werden aus dem fixierten Codebuch 390 während der Suche ausgewählt. Der
zweite Multiplizierer 458 multipliziert den fixierten Codebuchvektor
(vk c) 504 mit
einer Verstärkung
(gk c) 506,
wobei k die Unterrahmennummer ist. Die Verstärkung (gk c) 506 ist unquantisiert und repräsentiert
die fixierte Codebuchverstärkung
für jeden
Unterrahmen. Das resultierende Signal wird durch das zweite Synthesefilter 462 und
das zweite Wahrnehmungsgewichtungsfilter 466 verarbeitet,
um ein zweites re-synthetisiertes Sprachsignal 508 zu generieren.
Das zweite re-synthetisierte Sprachsignal 508 wird von
dem Langzeitfehlersignal 502 subtrahiert und zwar durch
den zweiten Subtrahierer 470, um ein fixiertes Codebuchfehlersignal 510 zu
erzeugen.
-
Das
fixierte Codebuchfehlersignal 510 wird von dem ersten Minimierungsmodul 472 zusammen
mit der Steuerinformation 356 empfangen. Das erste Minimierungsmodul 472 wird
genauso betrieben wie das vorher erörterte zweite Minimierungsmodul 400,
das in 10 dargestellt ist. Der Suchprozess
wird wiederholt bis das erste Minimierungsmodul 472 den
besten Vektor für
den fixierten Codebuchvektor (vk c) 504 aus dem fixierten Codebuch 390 für jeden
Unterrahmen selektiert hat. Der beste Vektor für den fixierten Codebuchvektor
(vk c) 504 minimiert
die Energie des fixierten Codebuchfehlersignals 510. Die
Indizes identifizieren den besten Vektor für den fixierten Codebuchvektor
(vk c) 504,
wie vorher erörtert,
und bilden die fixierte Codebuchkomponente 146b und 178b.
-
4.2.2.1 Fixierte Codebuchsuche
für den
Vollraten-Codec
-
In
einem Ausführungsbeispiel
wird das in 4 dargestellte 8-Impuls Codebuch 162 für jeden
der vier Unterrahmen für
Rahmen des Typs 1 durch den Vollraten-Codec 22 verwendet,
wie vorher erörtert.
Das Ziel für
den fixierten Codebuchvektor (vk c) 504 ist das Langzeitfehlersignal 502,
wie vorher beschrieben. Das durch t'(n) repräsentierte Langzeitfehlersignal 502 wird
bestimmt, basierend auf der durch t(n) repräsentierten modifizierten gewichteten
Sprache 350, wobei der adaptive Codebuchbeitrag von dem
initialen Rahmenverarbeitungsmodul 44 entfernt wird, und
zwar gemäß:
-
-
Während der
Suche nach dem besten Vektor für
den fixierten Codebuchvektor (vk c) 504 kann die Tonhöhenanhebung
bzw. -steigerung in die Vorwärtsrichtung
angewendet werden. Zusätzlich
minimiert die Suchprozedur den fixierten Codebuchrest 508 unter
Verwendung einer iterativen Suchprozedur mit gesteuerter Komplexität, um den
besten Vektor für
den fixierten Codebuchvektor (vk c) 504 zu bestimmen. Eine durch
die Verstärkung
(gk c) 506 repräsentierte
initiale fixierte Codebuchverstärkung
wird während
der Suche bestimmt. Die Indices identifizieren den besten Vektor
für den
fixierten Codebuchvektor (vk c) 504 und
bilden die fixierte Codebuchkomponente 146b, wie vorher
erörtert.
-
4.2.2.2 Fixierte Codebuchsuche
für Halbraten-Codec
-
In
einem Ausführungsbeispiel
wird der Langzeitrest mit 13 Bits für jeden der drei Unterrahmen
für als Typ
1 klassifizierte Rahmen für
den Halbraten-Codec 24 repräsentiert, wie vorher erörtert. Der
Langzeitrest kann in ähnlicher
Weise wie die fixierte Codebuchsuche bei dem Vollraten-Codec 22 bestimmt
werden. Ähnlich der
fixierten Codebuchsuche für
den Halbraten-Codec 24 für Rahmen vom Typ Null können die
Einspeisung hochfrequenten Rauschens, die zusätzlichen Impulse, die durch
hohe Korrelation in dem vorhergehenden Unterrahmen bestimmt werden,
und der schwache Kurzzeitspektralfilter in die Impulsantwort des
zweiten Synthesefilters 462 eingeführt werden. Zusätzlich kann
auch eine Vorwärtstonhöhenanhebung
in die Impulsantwort des zweiten Synthesefilters 462 eingeführt werden.
-
In
einem Ausführungsbeispiel
wird eine volle Suche für
das 2-Impulscodebuch 196 und das 3-Impulscodebuch 197 durchgeführt, wie
in 5 dargestellt ist. Das Impulscodebuch 196, 197 und
der beste Vektor für
den fixierten Codebuchvektor (vk c) 504, der das fixierte Codebuchfehlersignal 510 minimiert,
werden zur Repräsentation
des Langzeitrests für
jeden Unterrahmen ausgewählt.
Zusätzlich
kann eine durch die Verstärkung (gk c) 506 repräsentierte
initiale fixierte Codebuchverstärkung
während
der Suche bestimmt werden, und zwar ähnlich dem Vollraten-Codec 22.
Die Indices identifizieren den besten Vektor für den fixierten Codebuchvektor (vk c) 504 und
bilden die fixierte Codebuchkomponente 178b.
-
Wie
vorher erörtert,
wird das F1 oder H1 zweite Unterrahmenverarbeitungsmodul 74 oder 84 auf
einer Unterrahmenbasis betrieben. Jedoch wird das F1 oder H1 zweite
Rahmenverarbeitungsmodul 76 oder 86 auf einer
Rahmenbasis betrieben. Entsprechend können durch das F1 oder H1 zweite
Unterrahmenverarbeitungsmodul 74 oder 84 bestimmte
Parameter in dem Zwischenspeichermodul 488 zur späteren Verwendung
auf einer Rahmenbasis gespeichert werden. In einem Ausführungsbeispiel
sind die gespeicherten Parameter der beste Vektor für den adaptiven
Codebuchvektor (vk a) 498 und
der beste Vektor für
den fixierten Codebuchvektor (vk c) 504. Zusätzlich können ein modifiziertes Zielsignal 512 und
die Verstärkungen
(g ^k a), (gk c) 496 und 506, die
die initialen adaptiven und fixierten Codebuchverstärkungen
repräsentieren,
gespeichert werden. Die Generierung des modifizierten Zielsignals 512 wird
später
beschrieben.
-
Bis
jetzt sind der beste Vektor für
den adaptiven Codebuchvektor (vk a) 498, der beste Vektor für den fixierten
Codebuchvektor (vk c) 504 und
die beste Tonhöhenverstärkungen
für die
quantisierte Tonhöhenverstärkung (g ^k a) 496 identifiziert
worden. Unter Verwendung dieser besten Vektoren und besten Tonhöhenverstärkungen
können
die besten fixierten Codebuchverstärkungen für die Verstärkung (gk c) 506 bestimmt werden. Die besten
fixierten Codebuchverstärkungen
für die
Verstärkung
(gk c) 506 werden
die vorher für
die Verstärkung
(gk c) 506 bestimmten
unquantisierten initialen fixierten Code buchverstärkungen
ersetzen. Um die besten fixierten Codebuchverstärkungen zu bestimmen, wird
eine gemeinsame verzögerte
Quantisierung der fixierten Codebuchverstärkungen für jeden Unterrahmen durchgeführt, und
zwar unter das zweiten Rahmenverarbeitungsmodul 76 und 78.
-
4.2.3 Zweites Rahmenverarbeitungsmodul
-
Das
zweite Rahmenverarbeitungsmodul 76 und 86 wird
auf einer Rahmenbasis betrieben, und zwar um die durch die fixierten
Verstärkungskomponenten 150 und 182 repräsentierte
fixierte Codebuchverstärkung zu
generieren. Das modifizierte Ziel 512 wird zuerst bestimmt,
und zwar in einer Weise ähnlich
der Verstärkungsbestimmung
und Quantisierung der als Typ Null klassifizierten Rahmen. Das modifizierte
Ziel 512 wird für
jeden Unterrahmen bestimmt und wird durch t''(n)
repräsentiert.
Das modifizierte Ziel kann abgeleitet werden unter Verwendung der
besten Vektoren für
den adaptiven Codebuchvektor (vk a) 498 und dem Codebuchvektor (vk c) 504,
wie auch der adaptiven Codebuchverstärkung und dem Initialwert der
fixierten Codebuchverstärkung
und zwar abgeleitet aus Gleichung 18 durch:
-
-
Ein
Initialwert für
die fixierte Codebuchverstärkung
für jeden
Unterrahmen, der bei der Suche verwendet werden soll, kann durch
Minimierung erhalten werden:
wobei
v
a(n) der adaptive Codebuchbeitrag für einen
bestimmten Unterrahmen und v
c(n) der fixierte
Codebuchbeitrag für
einen bestimmten Unterrahmen ist. Zusätzlich ist g ^
a die
quantisierte und normalisierte adaptive Codebuchverstärkung für einen
bestimmten Unterrahmen, die eines der Elemente einer quanti sierten
fixierten Codebuchverstärkung
(g ^
k c)
513 ist.
Die berechnete fixierte Codebuchverstärkung g
c wird
weiter normalisiert und korrigiert, und zwar zum Liefern der besten
Energieübereinstimmung
bzw. Anpassung zwischen dem dritten re-synthetisierten Sprachsignal
und dem modifizierten Zielsignal
512, das zwischengespeichert
worden ist. Unquantisierte fixierte Codebuchverstärkungen
aus den vorhergehenden Unterrahmen können verwendet werden zum Generieren
des adaptiven Codebuchvektors (v
k a)
498 für die Verarbeitung des nächsten Unterrahmens
gemäß Gleichung
21.
-
Die
Suche nach Vektoren für
die quantisierte fixierte Codebuchverstärkung (g ^k c) 513 wird innerhalb des 3D/4D
VQ Verstärkungscodebuchs 492 durchgeführt. Das
3D/4D VQ Verstärkungscodebuch 492 kann
der vorher erörterte
mehrdimensionale Verstärkungsquantisierer
und die zugeordnete Verstärkungsquantisierungstabelle
sein. In einem Ausführungsbeispiel
kann das 3D/4D VQ Verstärkungscodebuch 492 der
vorher erörterte
4D verzögerte
VQ Verstärkungsquantisierer 168 für den Vollraten-Codec 22 sein.
Wie vorher erörtert, kann
der 4D verzögerte
VQ Verstärkungsquantisierer 168 betrieben
werden unter Verwendung der assoziierten verzögerten Verstärkungsquantisierungstabelle,
die als Tabelle 5 dargestellt ist. In einem anderen Ausführungsbeispiel
kann das 3D/4D VQ Verstärkungscodebuch 492 der
vorher erörterte
3D verzögerte
VQ Verstärkungsquantisierer 200 für den Halbraten-Codec 24 sein.
Der 3D verzögerter
VQ Verstärkungsquantisierer 200 kann
betrieben werden unter Verwendung der verzögerten Verstärkungsquantisierungstabelle,
die als die vorher erörterte
Tabelle 8 dargestellt ist.
-
Das
3D/4D VQ Verstärkungscodebuch 492 kann
nach Vektoren für
die quantisierte fixierte Codebuchverstärkung (g ^k c) 513 durchsucht werden, die die
Energie ähnlich
dem vorher erörterten
2D VQ Verstärkungscodebuch 412 der 10 minimiert. Die quantisierten Vektoren in dem
3D/4D VQ Verstärkungscodebuch 492 repräsentieren
tatsächlich
einen Korrekturfaktor für
die vorhergesagte fixierte Codebuchverstärkung, wie vorher erörtert. Während der
Suche multipliziert der dritte Multiplizierer 476 den adaptiven
Codebuchvektor (vk a) 498 mit
der quantisierten Tonhöhenverstärkung (g ^k a) 496 und
zwar nach der Bestimmung des modifizierten Ziels 512. Zusätzlich multipliziert
der vierte Multiplizierer 478 den fixierten Codebuchvektor
(vk c) 504 mit
der quantisierten fixierten Codebuchverstärkung (g ^k c) 513. Der Addierer 480 addiert
die resultierenden Signale von den Multiplizierern 476 und 478.
-
Das
resultierende Signal aus dem Addierer 480 wird durch das
dritte Synthesefilter 482 und das Wahrnehmungsgewichtungsfiltermodul 484 gegeben,
um ein drittes re-synthesiertes Sprachsignal 514 zu erzeugen.
Wie bei den ersten und zweiten Synthesefiltern 460, 462 empfängt das
dritte Synthesefilter 482 die quantisierten LPC Koeffizienten
Aq(z) 342 von dem LSF Quantisierungsmodul 334 als
Teil der Verarbeitung. Der dritte Subtrahierer 486 subtrahiert
das dritte re-synthetisierte Sprachsignal 514 von dem modifizierten
Zielsignal 512, das vorher in dem Zwischenspeichermodul 488 gespeichert
wurde. Das resultierende Signal ist der gewichtete mittlere quadratische
Fehler, der als ein drittes Fehlersignal 516 bezeichnet
wird.
-
Das
dritte Minimierungsmodul 490 empfängt das dritte Fehlersignal 516,
das den Fehler repräsentiert, der
aus der Quantisierung der fixierten Codebuchverstärkung durch
das 3D/4D VQ Verstärkungscodebuch 492 resultiert.
Das dritte Minimierungsmodul 490 verwendet das dritte Fehlersignal 516,
und zwar zum Steuern der Suche und Selektion von Vektoren, aus dem
3D/4D VQ Verstärkungscodebuch 492,
um die Energie des dritten Fehlersignals 516 zu reduzieren.
Der Suchprozess wird wiederholt bis das dritte Minimierungsmodul 490 den besten
Vektor selektiert hat und zwar aus dem 3D/4D VQ Verstärkungscodebuch 492 für jeden
Unterrahmen, der den Fehler in dem dritten Fehlersignal 516 minimiert.
Sobald die Energie des dritten Fehlersignals 516 minimiert
worden ist, wird die Indexstelle der quantisierten fixierten Codebuchverstärkung (g ^k c) 513 in
dem 3D/4D VQ Verstärkungscodebuch 492 ver
wendet, und zwar zum Generieren der fixierten Codebuchverstärkungskomponente 150b für den Vollraten-Codec 22 und
der fixierten Codebuchverstärkungskomponente 182b für den Halbraten-Codec 24.
-
4.2.3.1 3D/4D VQ Verstärkungscodebuch
-
In
einem Ausführungsbeispiel,
wenn das 3D/4D VQ Verstärkungscodebuch
492 ein
vierdimensionales Codebuch ist, kann es durchsucht werden, um Folgendes
zu minimieren:
wobei
die quantisierten Tonhöhenverstärkungen
{g ^
1 a, g ^
2 a, g ^
3 a, g ^
4 a} vom initialen
Rahmenverarbeitungsmodul
44 stammen, und {t
1(n),
t
2(n), t
3(n), t
4(n)}, {v
1 a(n), v
2 a(n),
v
3 a(n), v
4 a(n)} und {v
1 c(n), v
2 c(n), v
3 c(n),
v
4 c(n)} während der Unterrahmenverarbeitung
zwischengespeichert werden können,
wie vorher erörtert.
In einem beispielhaften Ausführungsbeispiel
werden die fixierten Codebuchverstärkungen {g ^
1 c, g ^
2 c, g ^
3 c, g ^
4 c} von einem 10-Bitcodebuch abgeleitet, wobei
die Einträge
des Codebuchs einen vierdimensionalen Korrekturfaktor für die vorhergesagten fixierten
Codebuchverstärkungen
enthalten, wie vorher erörtert.
Zusätzlich
gilt n = 40 um 40 Abtastungen pro Rahmen zu repräsentieren.
-
In
einem anderen Ausführungsbeispiel,
wenn das 3D/4D VQ Verstärkungscodebuch
492 ein
dreidimensionales Codebuch ist, kann es durchsucht werden, um Folgendes
zu minimieren:
wobei
die quantisierten Tonhöhenverstärkungen
{g ^
1 a, g ^
2 a, g ^
3 a}
von dem initialen Rahmenverarbeitungsmodul
44 herkommen
und {t
1(n), t
2(n),
t
3(n)}, {v
1 a(n), v
2 a(n),
v
3 a(n)} und {v
1 c(n), v
2 c(n), v
3 c(n)}
während
der Unterrahmenverarbeitung zwischengespeichert werden können, wie
vorher erörtert.
In einem beispielhaften Ausführungsbeispiel
werden die fixierten Codebuchverstärkungen {g ^
1 c, g ^
2 c, g ^
3 c} von einem 8-Bit-Codebuch
abgeleitet, wobei die Einträge
des Codebuchs einen dreidimensionalen Korrekturfaktor für die vorhergesagten
fixierten Codebuchverstärkungen
beinhalten. Die Prädiktion
der fixierten Codebuchverstärkungen
kann auf gleitender Mittelwertprädiktion
der fixierten Codebuchenergie in dem log-Bereich (log domain) basieren.
-
5.0 Decodiersystem
-
Jetzt
bezugnehmend auf 12 wird ein erweitertes Blockdiagramm
dargestellt, das die Voll- und Halbratendecoder 90 und 92 der 3 repräsentiert.
Die Voll- oder Halbratendecoder 90 oder 92 umfassen die
Anregungsrekonstruktionsmodule 104, 106, 114 und 116 und
die Linearprädiktionskoeffizienten
(LPC) Rekonstruktionsmodule 107 und 118. Ein Ausführungsbeispiel
jedes der Anregungsrekonstruktionsmodule 104, 106, 114 und 116 umfasst
das adaptive Codebuch 368, das fixierte Codebuch 390,
das 2D VQ Verstärkungscodebuch 412,
das 3D/4D gesteuerte VQ Codebuch 454 und das 3D/4D VQ Verstärkungscodebuch 492.
Die Anregungsrekonstruktionsmodule 104, 106, 114 und 116 umfassen
auch einen ersten Multiplizierer 530, einen zweiten Multiplizierer 532 und
einen Addierer 534. In einem Ausführungsbeispiel umfassen die
LPC Rekonstruktionsmodule 107, 118 ein LSF Decodiermodul 536 und
ein LSF Konvertierungsmodul 538. Zusätzlich umfasst der Halbraten- Codec 24 das
Prädiktorschaltmodul 336 und
der Vollraten-Codec 22 umfasst das Interpolationsmodul 338.
-
In 12 sind auch das Synthesefiltermodul 98 und
das Nachverarbeitungsmodul 100 dargestellt. In einem Ausführungsbeispiel
umfasst das Nachverarbeitungsmodul 100 ein Kurzzeitnachfiltermodul 540,
ein Langzeitfiltermodul 542, ein Neigungskompensationsfiltermodul
(tilt compensation filter module) 544 und ein adaptives
Verstärkungssteuermodul 546.
Gemäß der Ratenauswahl
kann der Bitstrom decodiert werden, um die nachverarbeitete synthetisierte
Sprache 20 zu generieren. Die Decoder 90 und 92 führen eine
inverse Abbildung (inverse mapping) der Komponenten des Bitstroms
auf Algorithmusparametern durch. Die inverse Abbildung kann von
einer typklassifikationsabhängigen
Synthese innerhalb der Voll- und Halbraten-Codecs 22 und 24 gefolgt
werden.
-
Die
Decodierung für
den Viertelraten-Codec 26 und den Achtelraten-Codec 28 ist ähnlich der
für die Voll-
und Halbraten-Codecs 22 und 24. Jedoch verwenden
die Viertel- und Achtelraten-Codecs 26 und 28 Vektoren ähnlicher,
jedoch zufälliger
Zahlen, und die Energieverstärkung,
wie vorher erörtert,
und zwar anstelle der adaptiven und der fixierten Codebücher 368 und 390,
und assoziierter Gewinne. Die Zufallszahlen und die Energieverstärkung können verwendet
werden, um eine Anregungsenergie zu rekonstruieren, die die Kurzzeitanregung
eines Rahmens repräsentiert.
Die LPC Rekonstruktionsmodule 122 und 126 sind
auch ähnlich
jenen des Voll- und Halbraten-Codecs 22, 24 mit
der Ausnahme des Prädiktorschaltmoduls 336 und
dem Interpolationsmodul 338.
-
5.1 Anrepungsrekonstruktion
(Excitation Reconstruction)
-
Innerhalb
der Voll- und Halbratendecoder 90 und 92 ist der
Betrieb der Anregungsrekonstruktionsmodule 104, 106, 114 und 116 weitgehend
abhängig
von der Typklassifikation, die durch die Typkomponente 142 und 174 geliefert
wird. Das adaptive Codebuch 368 empfängt die Tonhöhenspur 348.
Die Ton höhenspur 348 wird
durch das Decodiersystem 16 rekonstruiert, und zwar aus
der adaptiven Codebuchkomponente 144 und 176,
die in dem Bitstrom durch das Codiersystem 12 geliefert
wird. Abhängig
von der durch die Typkomponente 142 und 174 gelieferte
Typklassifikation liefert das adaptive Codebuch 368 einen
quantisierten adaptiven Codebuchvektor (vk a) 550 an den Multiplizierer 530.
Der Multiplizierer 530 multipliziert den quantisierten
adaptiven Codebuchvektor (vk a) 550 mit
einem adaptiven Codebuchverstärkungsvektor
(gk a) 552.
Die Auswahl des adaptiven Codebuchverstärkungsvektors (gk a) 552 hängt auch von der durch die
Typkomponente 142 und 174 gelieferten Typklassifikation
ab.
-
In
einem beispielhaften Ausführungsbeispiel,
falls der Rahmen beim Vollraten-Codec 22 als
Typ Null klassifiziert wird, liefert das 2D VQ Verstärkungscodebuch 412 den
adaptiven Codebuchverstärkungsvektor (gk a) 552 an
den Multiplizierer 530. Der adaptive Codebuchverstärkungsvektor
(gk a) 552 wird
aus der adaptiven und fixierten Codebuchverstärkungskomponente 148a und 150a bestimmt.
Der adaptive Codebuchverstärkungsvektor
(gk a) 552 ist
der gleiche als Teil des besten Vektors für den quantisierten Verstärkungsvektor
(g ^ac) 433, der durch den Verstärkungs-
und Quantisierungsabschnitt 366 des F0 ersten Unterrahmenverarbeitungsmoduls 70 bestimmt
wird, und zwar wie vorher erörtert.
Der quantisierte adaptive Codebuchvektor (vk a) 550 wird von der geregelten adaptiven
Codebuchkomponente 144b bestimmt. In ähnlicher Weise ist der quantisierte
adaptive Codebuchvektor (vk a) 550 der
gleiche wie der beste Vektor für
den adaptiven Codebuchvektor (va) 382,
der durch das F0 erste Unterrahmenverarbeitungsmoduls 70 bestimmt
wird.
-
Das
2D VQ Verstärkungscodebuch 412 ist
zweidimensional und liefert den adaptiven Codebuchverstärkungsvektor
(gk a) 552 an
den Multiplizierer 553 und einen fixierten Codebuchverstärkungsvektor
(gk c) 554 an
den Multiplizierer 532. Der fixierte Codebuchverstärkungsvektor
(gk c) 554 wird
in gleicher Weise aus der adaptiven und fixierten Codebuchverstärkungskomponente 148a und 150a bestimmt
und ist Teil des besten Vektors für den quantisierten Verstärkungsvektor
(g ^ac) 433. Auch basierend auf der
Typklassifikation liefert das fixierte Codebuch 390 einen
quantisierten fixierten Codebuchvektor (vk a) 556 an den Multiplizierer 532.
Der quantisierte fixierte Codebuchvektor (vk a) 556 wird rekonstruiert aus der
Codebuchidentifikation, den Impulsstellen (oder dem gaussförmigen Codebuch 195 für den Halbraten-Codec 24)
und den Impulsvorzeichen, die durch die fixierte Codebuchkomponente 146a geliefert
werden. Der quantisierte fixierte Codebuchvektor (vk a) 556 ist der gleiche wie der beste
Vektor für
den fixierten Codebuchvektor (vc) 402,
der durch das F0 erste Unterrahmenverarbeitungsmodul 70 bestimmt
wird, und zwar wie vorher erörtert.
Der Multiplizierer 532 multipliziert den quantisierten
fixierten Codebuchvektor (vk a) 556 mit
dem fixierten Codebuchverstärkungsvektor
(gk c) 554.
-
Falls
die Typklassifikation des Rahmens Typ Eins ist, liefert ein mehrdimensionaler
Vektorquantisierer den adaptiven Codebuchverstärkungsvektor (gk a) 552 an den Multiplizierer 530.
Dabei ist die Anzahl der Dimensionen in dem Mehrdimensionalen Vektorquantisierer
von der Anzahl der Unterrahmen abhängig. In einem Ausführungsbeispiel
kann der mehrdimensionale Vektorquantisierer die 3D/4D gesteuerte
VQ 454 sein. In ähnlicher
Weise liefert ein mehrdimensionaler Vektorquantisierer den fixierten
Codebuchverstärkungsvektor (gk c) 554 an
den Multiplizierer 532. Der adaptive Codebuchverstärkungsvektor
(gk a) 552 und
der fixierte Codebuchverstärkungsvektor
(gk c) 554 werden
durch die Verstärkungskomponente 147 und 179 geliefert,
und sind die gleichen wie die quantisierte Tonhöhenverstärkung (g ^k a) 496 bzw. die quantisierte fixierte
Codebuchverstärkung
(g ^k c) 513.
-
Bei
den als Typ Eins oder Typ Null klassifizierten Rahmen wird die Ausgabe
vom ersten Multiplizierer 530 durch den Addierer 534 empfangen
und wird zu der Ausgabe vom zweiten Multiplizierer 532 addiert.
Die Ausgabe vom Addierer 534 ist die Kurzzeitanregung.
Die Kurzzeitanregung wird an das Synthesefiltermodul 98 auf
der Kurzzeitanregungsleitung 128 geliefert.
-
5.2 LPC Rekonstruktion
-
Die
Generierung der Kurzzeit (LPC) Prädiktionskoeffizienten in den
Decodern 90 und 92 ist ähnlich der Verarbeitung in
dem Codiersystem 12. Das LSF Decodiermodul 536 rekonstruiert
die quantisierten LSFs aus der LSF Komponente 140 und 172.
Das LSF Decodiermodul 536 verwendet die gleiche LSF Prädiktionsfehlerquantisierungstabelle
und LSF Prädiktorkoeffiziententabellen,
die vom Codiersystem 12 verwendet werden. Für den Halbraten-Codec 24 wählt das
Prädiktorschaltmodul 336 einen
der Sätze
der Prädiktorkoeffizienten und
zwar um die vorhergesagten LSFs wie durch die LSF Komponente 140, 172 angewiesen,
zu berechnen. Die Interpolation der quantisierten LSFs findet statt
unter Verwendung des gleichen linearen Interpolationspfads, der
im Codiersystem 12 verwendet wird. Für den Vollraten-Codec 22 für als Typ
Null klassifizierte Rahmen wählt
das Interpolationsmodul 338 einen der gleichen Interpolationspfade,
die im Codiersystem 12 verwendet werden, und zwar wie durch
die LSF Komponente 140 und 172 angewiesen. Der
Gewichtung der quantisierten LSFs folgt eine Konvertierung in die
quantisierten LPC Koeffizienten Aq(z) 342 und
zwar innerhalb des LSF Konvertierungsmoduls 538. Die quantisierten
LPC Koeffizienten Aq(z) 342 sind
die Kurzzeitprädiktionskoeffizienten,
die an das Synthesefilter 98 auf der Kurzzeitprädiktionskoeffizientenleitung 130 geliefert werden.
-
5.3 Synthesefilter
-
Die
quantisierten LPC Koeffizienten Aq(z) 342 können durch
das Synthesefilter 98 zum Filtern der Kurzzeitprädiktionskoeffizienten
verwendet werden. Das Synthesefilter 98 kann ein kurzzeitinverses
Prädiktionsfilter
sein, das synthetisierte Sprache vor der Nachverarbeitung generiert.
Die synthetisierte Sprache kann dann durch das Nachverarbeitungsmodul 100 gegeben
werden. Die Kurzzeitprädikitonskoeffizienten
können auch
an das Nachverarbeitungsmodul 100 geliefert werden.
-
5.4 Nachverarbeitung (Post-Processing)
-
Das
Nachverarbeitungsmodul
100 verarbeitet die synthetisierte
Sprache, basierend auf der Ratenauswahl bzw. Ratenselektion und
den Kurzzeitprädiktionskoeffizienten.
Das Kurzzeitnachfiltermodul
540 kann das erste zum Verarbeiten
der synthetisierten Sprache sein. Filterparameter innerhalb des
Kurzzeitnachfiltermoduls
540 können angepasst werden und zwar
gemäß der Ratenauswahl
und der durch das Charakterisierungsmodul
328 bestimmten
Langzeitspektralcharakteristik und zwar wie vorher mit Bezug auf
9 erörtert. Der
Kurzzeitnachfilter kann beschrieben werden durch:
wobei
in einem beispielhaften Ausführungsbeispiel γ
1,n =
0,75·γ
1,n–1 +
0,25·r
0 und γ
2 = 0,75 und r
0 bestimmt
wird, und zwar basierend auf der Ratenauswahl und der Langzeitspektralcharakteristik.
Die Verarbeitung wird in dem Langzeitfiltermodul
542 fortgesetzt.
-
Das
Langzeitfiltermodul 542 führt eine Feinabstimmungssuche
(fine tuning search) für
die Tonhöhenperiode
in der synthetisierten Sprache durch. In einem Ausführungsbeispiel
wird die Feinabstimmungssuche durchgeführt unter Verwendung einer
Tonhöhenkorrelation
und einer ratenabhängigen
verstärkungsgesteuerten
harmonischen Filterung. Die harmonische Filterung wird für den Viertelraten-Codec 26 und
den Achtelraten-Codec 28 deaktiviert bzw. abgeschaltet.
Das Neigungskompensationsfiltermodul 544 ist in einem Ausführungsbeispiel
ein Filter erster Ordnung mit endlicher Impulsantwort (first-order
finite impulse response (FIR) filter). Das FIR Filter kann abgestimmt
werden und zwar gemäß der spektralen
Neigung des Wahrnehmungsfiltermoduls 314, das vorher mit
Bezug auf 9 erörtert wurde. Das Filter kann
auch gemäß der Langzeitspektralcharakteristik
abgestimmt werden, die durch das Charak terisierungsmodul 328 bestimmt
wurde, das auch mit Bezug auf 9 erörtert wurde.
-
Die
Nachfilterung kann mit einem adaptiven Verstärkungssteuermodul 546 beendet
werden. Das adaptive Verstärkungssteuermodul 546 bringt
den Energiepegel der synthetisierten Sprache, die innerhalb des Nachverarbeitungsmoduls 100 verarbeitet
worden ist, auf den Pegel der synthetisierten Sprache vor der Nachverarbeitung.
Pegelglättung
und Adaptionen können
auch innerhalb des adaptiven Verstärkungssteuerungsmoduls 546 durchgeführt werden.
Das Ergebnis der Verarbeitung durch das Nachverarbeitungsmodul 100 ist die
nachverarbeitete synthetisierte Sprache 20.
-
In
einem Ausführungsbeispiel
des Decodiersystems 16 werden durch das Decodiersystem 16 empfangene
Rahmen, die gelöscht
wurden, beispielsweise aufgrund von Verlust des Signals während der
Funkübertragung,
durch das Decodiersystem 16 identifiziert. Das Decodiersystem 16 kann
danach eine Rahmenlöschungsverschleierungsoperation
durchführen.
Die Operation umfasst das Interpolieren von Sprachparametern für den gelöschten Rahmen
aus dem vorherigen Rahmen. Die extra polierten Sprachparameter können zum
Synthetisieren des gelöschten
Rahmens verwendet werden. Zusätzlich
kann Parameterglättung
durchgeführt
werden, um kontinuierliche Sprache für die Rahmen, die dem gelöschten Rahmen
folgen, sicherzustellen. In einem anderen Ausführungsbeispiel umfasst das
Decodiersystem 16 auch Bestimmungsfähigkeiten für schlechte Rate (bad rate).
Identifikation einer schlechten Ratenauswahl für einen Rahmen, der durch das
Decodiersystem 16 empfangen wird, wird erreicht durch Identifizieren
illegaler Bitsequenzen in dem Bitstrom und Deklarieren, dass der
spezielle Rahmen gelöscht
ist.
-
Die
vorher erörterten
Ausführungsbeispiele
des Sprachkomprimierungssystems 10 führen eine Sprachkomprimierung
mit variabler Rate durch, und zwar unter Verwendung des Vollraten-Codecs 22,
des Halbraten-Codecs 24, des Viertelraten-Codecs 26 und
des Achtelraten-Codec 28. Die Codecs 22, 24, 26 und 28 operieren
mit unterschiedlichen Bitzuordnungen und Bitraten, unter Verwendung
unterschiedlicher Codieransätze,
zum Codieren von Rahmen des Sprachsignals 18. Der Codieransatz
der Voll- und Halbraten-Codecs 22 und 24 besitzt
unterschiedliche Wahrnehmungsanpassung, unterschiedliche Wellenformanpassung
und unterschiedliche Bitzuordnungen, und zwar abhängig von
der Typklassifikation eines Rahmens. Die Viertel- und Achtelraten-Codecs 26 und 28 codieren
Rahmen nur unter Verwendung von parametrischer Wahrnehmungsrepräsentationen.
Ein Modussignal identifiziert eine gewünschte durchschnittliche Bitrate
für das Sprachkomprimierungssystem 10.
Das Sprachkomprimierungssystem 10 aktiviert die Codecs 22, 24, 26 und 28 selektiv,
und zwar zum Ausgleichen bzw. Abwägen zwischen der gewünschten
durchschnittlichen Bitrate und der Optimierung der wahrnehmbaren
Qualität
der nachbearbeiteten synthetisierten Sprache 20 um ein Gleichgewicht
herzustellen.
-
Während verschiedene
Ausführungsbeispiele
der Erfindung beschrieben wurden, ist es dem Fachmann klar, dass
viele weitere Ausführungsbeispiele
und Implementierungen möglich
sind, die im Rahmen dieser Erfindung liegen. Entsprechend soll die
Erfindung nicht beschränkt
sein außer
angesichts der angehängten Ansprüche und
ihrer Äquivalente.