DE69934320T2 - Sprachkodierer und verfahren zur codebuch-suche - Google Patents

Sprachkodierer und verfahren zur codebuch-suche Download PDF

Info

Publication number
DE69934320T2
DE69934320T2 DE69934320T DE69934320T DE69934320T2 DE 69934320 T2 DE69934320 T2 DE 69934320T2 DE 69934320 T DE69934320 T DE 69934320T DE 69934320 T DE69934320 T DE 69934320T DE 69934320 T2 DE69934320 T2 DE 69934320T2
Authority
DE
Germany
Prior art keywords
codebook
index
speech
pulse
der
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69934320T
Other languages
English (en)
Other versions
DE69934320D1 (de
Inventor
Yang Mission Viejo GAO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HTC Corp
Original Assignee
Mindspeed Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mindspeed Technologies LLC filed Critical Mindspeed Technologies LLC
Application granted granted Critical
Publication of DE69934320D1 publication Critical patent/DE69934320D1/de
Publication of DE69934320T2 publication Critical patent/DE69934320T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/005Correction of errors induced by the transmission channel, if related to the coding algorithm
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/012Comfort noise or silence coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/083Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being an excitation gain
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • G10L19/125Pitch excitation, e.g. pitch synchronous innovation CELP [PSI-CELP]
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/26Pre-filtering or post-filtering
    • G10L19/265Pre-filtering, e.g. high frequency emphasis prior to encoding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Processing of the speech or voice signal to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/02Speech enhancement, e.g. noise reduction or echo cancellation
    • G10L21/0316Speech enhancement, e.g. noise reduction or echo cancellation by changing the amplitude
    • G10L21/0364Speech enhancement, e.g. noise reduction or echo cancellation by changing the amplitude for improving intelligibility
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/09Long term prediction, i.e. removing periodical redundancies, e.g. by using adaptive codebook or pitch predictor
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0004Design or structure of the codebook
    • G10L2019/0005Multi-stage vector quantisation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0007Codebook element generation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0011Long term prediction filters, i.e. pitch estimation

Description

  • 1. Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf Sprachcodierung und -decodierung in Zellenmobilfunk-Kommunikationssystemen; und bezieht sich insbesondere auf verschiedene Technik der Verwendung von Untercodebüchern für die impulsartige Anregung bei der Sprachereproduktion durch einen Kommunikationskanal mit begrenzter Bitrate.
  • 2. Stand der Technik
  • Die Signalmodellierung und die Parameterschätzung spielen wichtige Rollen beim Austausch von Sprachinformationen mit beschränkten Bandbreitenrandbedingungen. Um grundlegende Sprachgeräusche zu modellieren, werden Sprachsignale als diskrete Wellenform abgetastet, um digital verarbeitet zu werden. In einer typischen Signalcodierungstechnik, die als Linearvorhersagecodierung (LPC, Linear Predictive Coding) bezeichnet wird, wird der Signalwert zu irgendeinem beliebigen Zeitpunkt als eine lineare Funktion der vorangehenden Werte modelliert. Ein nachfolgendes Signal ist somit entsprechend einem vergangenen Wert linear vorhersagbar. Als Ergebnis können effiziente Signaldarstellungen bestimmt werden, indem bestimmte Vorhersageparameter zum Darstellen des Signals geschätzt und angewendet werden.
  • Bei der Sprachcodierung und -decodierung ist wohlbekannt, dass eine impulsartige Anregung für stimmhafte Sprache eine bessere Qualität liefert als eine rauschartige Anregung. Früher wurde ausschließlich eine impulsarti ge Anregung mit ACELP-Systemen (ACELP, Adaptive Code Excited Linear Predictive = adaptive code-erregte lineare Vorhersage) verwendet, in denen Codebücher mit festen Impulsanzahlen, fester Impulspositionsauflösung und fester Impulsgröße genutzt wurden. Trotzdem funktionierten ACELP-Systeme bei bestimmten Typen von Sprachsignalen nicht gut.
  • Die vorliegende Erfindung zielt auf diese Probleme, in dem sie erkennt, dass in Abhängigkeit von den Umständen entweder die Anzahl der Impulse oder die Impulspositionsauflösung wichtiger sein kann. Dementsprechend sind Untercodebücher so gestaltet, dass entweder die Frequenz der Impulse oder die Impulsauflösung hervorgehoben werden können.
  • Weitere Einschränkungen und Nachteile herkömmlicher Systeme werden Fachleuten deutlich bei Betrachtung des Rests der vorliegenden Anmeldung mit Bezug auf die Zeichnungen.
  • Salami u. a. ("Real-time implementation of a 9 kbit/s ACELP wideband speech coder", Proc. Of Globecom 1992, Bd. 1, S. 447–451) beschreibt eine Sprachcodiererimplementierung unter Verwendung eines ACELP-Lösungsansatzes mit zwei Codebüchern.
  • Laflamme C. u. a.: "16 kbps wideband speech coding technique based on algebraic CELP", ICASSP 1991, offenbart eine fokussierte Codebuchsuchstrategie.
  • Überblick über die Erfindung
  • Gemäß der Erfindung wird ein Sprachcodierer geschaffen, wie in Anspruch 1 ausgeführt ist, sowie ein Verfahren, wie in Anspruch 8 ausgeführt ist. Bevorzugte Ausführungsformen sind in den abhängigen Ansprüche ausgeführt.
  • Kurzbeschreibung der Zeichnungen
  • 1a ist ein schematisches Blockdiagramm eines Sprachkommunikationssystems, das die Verwendung der Quellcodierung und -decodierung gemäß der vorliegenden Erfindung zeigt.
  • 1b ist ein schematisches Blockdiagramm, das eine beispielhafte Kommunikationsvorrichtung zeigt, die die Quellcodierungs- und Decodierungsfunktion der 1a nutzt.
  • 24 sind Funktionsblockdiagramme, die einen mehrstufigen Codierungslösungsansatz zeigen, der von einer Ausführungsform des in den 1a und 1b dargestellten Sprachcodierers verwendet wird. Genauer ist 2 ein Funktionsblockdiagramm, das eine erste Stufe von Operationen zeigt, die von einer Ausführungsform des Sprachcodierers der 1a und 1b ausgeführt werden. 3 ist ein Funktionsblockdiagramm einer zweiten Stufe von Operationen, während 4 eine dritte Stufe zeigt.
  • 5 ist ein Blockdiagramm einer Ausführungsform des in den 1a und 1b gezeigten Sprachdecodierers mit einer Funktionalität entsprechend derjenigen, die in den 24 gezeigt ist.
  • 6 ist ein Blockdiagramm einer alternativen Ausführungsform eines Sprachcodierers, der gemäß der vorliegenden Erfindung aufgebaut ist.
  • 7 ist ein Blockdiagramm einer Ausführungsform eines Sprachdecodierers mit einer Funktionalität entsprechend derjenigen des Sprachcodierers der 6.
  • 8a ist ein Blockdiagramm, das eine Ausführungsform des Sprachcodierungssystems gemäß der vorliegenden Erfindung zeigt.
  • 8b ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Auffinden und anschließenden Fixieren von Impulspositionen eines gegebenen Impulsindex zeigt, wie es von einem gemäß der vorliegenden Erfindung aufgebauten Sprachcodierer ausgeführt wird.
  • 8c ist ein Flussdiagramm, das eine genaue Beschreibung einer spezifischen Ausführungsform des Verfahrens der Auswahl des Untercodebuches der 8a durch Verwenden des Suchverfahrens der 8b bietet.
  • 9 demonstriert die Codebuchstruktur mit zwei Untercodebüchern im Modus mit 11 kBits/s.
  • 10 demonstriert die Codebuchstruktur mit zwei Untercodebüchern im Modus mit 8 kBits/s.
  • 11a demonstriert die Codebuchstruktur, wenn im Modus mit 6,65 kBits/s auf den PP-Modus geschaltet wird.
  • 11b demonstriert die Codebuchstruktur, wenn im Modus mit 6,65 kBits/s auf den LPT-Modus geschaltet wird.
  • 12 demonstriert die Codebuchstruktur mit drei Untercodebüchern im Modus mit 5,8 kBits/s.
  • 13 demonstriert die Codebuchstruktur mit drei Untercodebüchern im Modus mit 4,44 kBits/s.
  • GENAUE BESCHREIBUNG
  • 1a ist ein schematisches Blockdiagramm eines Sprachkommunikationssystems, das die Verwendung einer Quellcodierung und -decodierung gemäß der vorliegenden Erfindung zeigt. Hierbei unterstützt ein Sprachkommunikationssystem 100 den Austausch und die Wiedergabe von Sprache über einen Kommunikationskanal 103. Obwohl der Kommunikationskanal 103 z. B. einen Draht, eine Faser oder eine optische Verbindung umfassen kann, umfasst er typischerweise wenigstens zum Teil eine Hochfrequenzverbindung, die häufig mehrfache, gleichzeitige Sprachaustauschvorgänge unterstützen muss, die Betriebsmittel mit gemeinsam genutzter Bandbreite erfordern, wie sie z. B. bei Mobilfunkanlagen zu finden sind.
  • Obwohl nicht gezeigt, kann eine Speichervorrichtung mit dem Kommunikationskanal 103 gekoppelt sein, um vorübergehend Sprachinformationen für eine verzögerte Reproduktion oder Wiedergabe zu speichern, um z. B. eine Anrufbeantworterfunktion, eine Sprach-Elektronikpost und dergleichen bereitzustellen. In ähnlicher Weise kann der Kommunikationskanal 103 durch eine solche Speichervorrichtung in einer Einzelvorrichtungsausführungsform des Kommunikationssystems 100 ersetzt werden, die z. B. lediglich Sprache für eine nachfolgende Wiedergabe aufzeichnet und speichert.
  • Genauer erzeugt ein Mikrophon 111 ein Sprachsignal in Echtzeit. Das Mikrophon 111 liefert das Sprachsignal zu einem A/D-(Analog-zu-Digital)-Wandler 115. Der A/D-Wandler 115 wandelt das Sprachsignal in eine digitale Form und liefert anschließend das digitalisierte Sprachsignal an einen Sprachcodierer 117.
  • Der Sprachcodierer 117 codiert die digitalisierte Sprache unter Verwendung eines Ausgewählten einer Mehrzahl von Codierungsmodi. Jeder der mehreren Codierungsmodi nutzt bestimmte Techniken, die versuchen, die Qualität der resultierenden reproduzierten Sprache zu optimieren. Während der Sprachcodierer 117 in irgendeinem der mehreren Modi arbeitet, erzeugt er eine Reihe von Modellierungs- und Parameterinformationen (im Folgenden "Sprachindizes") und liefert die Sprachindizes zu einem Kanalcodierer 119.
  • Der Kanalcodierer 119 stimmt sich mit einem Kanaldecodierer 131 ab, um die Sprachindizes über den Kommunikationskanal 103 zu liefern. Der Kanaldecodierer 131 leitet die Sprachindizes zu einem Sprachdecodierer 133 weiter. Während der Sprachdecodierer 133 in einem Modus arbeitet, der demjenigen des Sprachcodierers 117 entspricht, versucht er, die ursprüngliche Sprache aus den Sprachindizes möglichst genau an einem Lautsprecher 137 über einen D/A-(Digital-zu-Analog)-Wandler 135 wieder zu erzeugen.
  • Der Sprachcodierer 117 wählt adaptiv einen der Mehrzahl von Betriebsmodi auf der Grundlage von Datenratenbeschränkungen über den Kommunikationskanal 103 aus. Der Kommunikationskanal umfasst eine Bandbreitenzuweisung zwischen dem Kanalcodierer 119 und dem Kanaldecodierer 131. Die Zuweisung wird z. B. bewerkstelligt durch Telephonvermittlungsnetze, wobei viele solche Kanäle zugewiesen und freigegeben werden können, wenn Bedarf entsteht. In einer solchen Ausführungsform kann entweder eine Kanalbandbreite von 22,8 kbps (Kilobits pro Sekunde), d. h. ein Vollratenkanal, oder eine Kanalbandbreite mit 11,4 kbps, d. h. einem Halbratenkanal, zugewiesen werden.
  • Mit der Zuweisung der Vollratenkanalbandbreite kann der Sprachcodierer 117 adaptiv einen Codierungsmodus auswählen, der eine Bitrate von 11,0, 8,0, 6,65 oder 5,8 kbps unterstützt. Der Sprachcodierer 117 wählt adaptiv einen Codierungsbitratenmodus mit 8,0, 6,65, 5,8 oder 4,5 kbps aus, wenn ein Halbratenkanal zugewiesen worden ist. Selbstverständlich sind diese Codierungsbitraten und die obenerwähnten Kanalzuweisungen nur repräsentativ für die vorliegende Ausführungsform. Andere Variationen sind denkbar, um die Ziele anderer Ausführungsformen zu erreichen.
  • Mit entweder der vollen oder der halben Ratenzuweisung versucht der Sprachcodierer 117, unter Verwendung des Modus mit der höchsten Codierungsbitrate, die der zugewiesene Kanal unterstützt, zu kommunizieren. Wenn der zugewiesene Kanal rauscht oder rauschend wird oder anderweitig für die höchste oder höhere Codierungsbitraten einschränkend ist, passt der Sprachcodierer 117 an, indem er einen Codierungsmodus mit niedriger Bitrate auswählt. In ähnlicher Weise passt sich der Sprachcodierer 117 an, wenn der Kommunikationskanal 103 besser wird, durch Umschalten auf einen Codierungsmodus mit höherer Bitrate.
  • Bei Codierung mit niedrigerer Bitrate enthält der Sprachcodierer 117 verschiedene Techniken, um eine bessere Sprachreproduktion bei niedriger Bitrate zu erzeugen. Viele der Techniken, die angewendet werden beruhen auf Eigenschaften der Sprache selbst. Zum Beispiel klassifiziert der Sprachcodierer 117 bei einer Codierung mit niedrigerer Bitrate Rauschen, stimmlose Sprache und stimmhafte Sprache, so dass ein geeignetes Modellierungsschema entsprechend einer bestimmten Klassifikation ausgewählt und implementiert werden kann. Somit wählt der Sprachcodierer 117 adaptiv unter einer Mehrzahl von Modellierungsschemen, die für die aktuelle Sprache am besten geeignet sind. Der Sprachcodierer 117 wendet ferner verschiedene andere Techniken an, um die Modellierung zu optimieren, wie im Folgenden genauer erläutert wird.
  • 1b ist ein schematisches Blockdiagramm, das mehrere Variationen einer beispielhaften Kommunikationsvorrichtung zeigt, die die Funktionalität der 1a verwendet. Eine Kommunikationsvorrichtung 151 umfasst sowohl einen Sprachcodierer als auch -decodierer für die gleichzeitige Aufnahme und Wiedergabe von Sprache. Typischerweise kann die Kommunikationsvorrichtung 151 innerhalb eines einzigen Gehäuses z. B. ein Mobiltelephon, ein tragbares Telephon, ein Berechnungssystem und dergleichen umfassen. Alternativ, mit einer bestimmten Modifikation, um z. B. ein Speicherelement zum Speichern codierter Sprachinformationen zu enthalten, kann die Kommunikationsvorrichtung 151 einen Anrufbeantworter, eine Aufzeichnungsvorrichtung, ein Sprachnachrichtensystem und dergleichen umfassen.
  • Ein Mikrophon 155 und ein A/D-Wandler 157 stimmen sich ab, um ein digitales Sprachsignal zu einem Codierungssystem 159 zu liefern. Das Codierungssystem 159 führt eine Sprach- und Kanalcodierung durch und liefert resultierende Sprachinformationen an den Kanal. Die gelieferten Sprachinformationen können für eine weitere Kommunikationsvorrichtung (nicht gezeigt) an einem entfernten Ort bestimmt sein.
  • Wenn Sprachinformationen empfangen werden, führt ein Decodierungssystem 165 eine Kanal- und Sprachdecodierung durch, und stimmt sich anschließend mit einem D/A-Wandler 167 und einem Lautsprecher 169 ab, um etwas zu reproduzieren, das der ursprünglich aufgenommenen Sprache ähnlich klingt.
  • Das Codierungssystem 159 umfasst sowohl eine Sprachverarbeitungsschaltung 185, die eine Sprachcodierung durchführt, als auch eine Kanalverarbeitungsschaltung 187, die eine Kanalcodierung durchführt. In ähnlicher Weise umfasst das Decodierungssystem 165 eine Sprachverarbeitungsschaltung 189, die eine Sprachdecodierung durchführt, und eine Kanalverarbeitungsschaltung 191, die eine Kanaldecodierung durchführt.
  • Obwohl die Sprachverarbeitungsschaltung 185 und die Kanalverarbeitungsschaltung 187 separat dargestellt sind, können sie in einem Teil kombiniert sein oder in einer einzelnen Einheit zusammengefasst sein. Zum Beispiel können die Sprachverarbeitungsschaltung 185 und die Kanalverarbeitungsschaltung 187 einen einzelnen DSP (digitaler Signalprozessor) und/oder eine andere Verarbeitungsschaltung gemeinsam nutzen. In ähnlicher Weise können die Sprachverarbeitungsschaltung 189 und die Kanalverarbeitungs schaltung 191 vollständig getrennt sein oder in einem Teil oder insgesamt kombiniert sein. Außerdem können Kombinationen insgesamt oder teilweise auf die Sprachverarbeitungsschaltungen 185 und 189, die Kanalverarbeitungsschaltungen 187 und 191, die Verarbeitungsschaltungen 185, 187, 189 und 191 oder anderes angewendet werden.
  • Das Codierungssystem 159 und das Decodierungssystem 165 verwenden beide einen Speicher 161. Die Sprachverarbeitungsschaltung 185 verwendet ein festes Codebuch 181 und ein adaptives Codebuch 183 eines Sprachspeichers 177 im Sprachcodierungsprozess. Die Kanalverarbeitungsschaltung 187 verwendet einen Kanalspeicher 175, um eine Kanalcodierung durchzuführen. In ähnlicher Weise verwendet die Sprachverarbeitungsschaltung 189 das feste Codebuch 181 und das adaptive Codebuch 183 im Quellcodierungsprozess. Die Kanalverarbeitungsschaltung 187 verwendet den Kanalspeicher 175, um eine Kanaldecodierung durchzuführen.
  • Obwohl der Sprachspeicher 177 wie gezeigt gemeinsam genutzt wird, können separate Kopien desselben für die Verarbeitungsschaltungen 185 und 189 zugewiesen sein. In ähnlicher Weise kann ein separater Kanalspeicher beiden Verarbeitungsschaltungen 187 und 191 zugewiesen sein. Der Speicher 161 enthält ferner Software, die von den Verarbeitungsschaltungen 185, 187, 189 und 191 genutzt wird, um verschiedene Funktionen auszuführen, die in den Quell- und Kanal-Codierungs- und -decodierungsprozessen erforderlich sind.
  • Die 24 sind Funktionsblockdiagramme, die eine mehrstufige Codierungsannäherung zeigen, die von einer Ausführungsform des in den 1a und 1b dargestellten Sprachcodierers verwendet wird. Genauer ist 2 ein Funktionsblockdiagramm, das eine erste Stufe von Operationen zeigt, die von einer Ausführungsform des in den 1a und 1b gezeigten Sprachcodierers ausgeführt werden. Der Sprachcodierer, der eine Codiererverarbeitungsschaltung umfasst, arbeitet typischerweise in Übereinstimmung mit einer Softwareanweisung, die die folgende Funktionalität ausführt.
  • Bei einem Block 215 führt die Quellcodiererverarbeitungsschaltung eine Hochpassfilterung eine Sprachsignals 211 durch. Das Filter verwendet eine Eckfrequenz von etwa 80 Hz, um z. B. die Netzleitungsstörung von 60 Hz und andere niedrigere Frequenzsignale zu beseitigen. Nach einer solchen Filterung wendet die Quellcodiererverarbeitungsschaltung ein Wahrnehmungsgewichtungsfilter an, wie durch einen Block 219 dargestellt ist. Das Wahrnehmungsgewichtungsfilter arbeitet so, dass es Talbereiche des gefilterten Sprachsignals anhebt.
  • Wenn die Codiererverarbeitungsschaltung eine Operation in einem Schrittvorverarbeitungs-(PP)-Modus auswählt, wie mit einem Steuerblock 245 gezeigt ist, wird eine Schrittvorverarbeitungsoperation mit dem gewichteten Sprachsignal im Block 225 durchgeführt. Die Schrittvorverarbeitungsoperation verwendet ein Verzerren des gewichteten Sprachsignals, um interpolierte Schrittwerte anzugleichen, die von der Decodiererverarbeitungsschaltung erzeugt werden. Wenn eine Schrittvorverarbeitung angewendet wird, wird dem verzerrten Sprachsignal ein erstes Sollsignal 229 zugewiesen. Wenn keine Schrittvorverarbeitung ausgewählt ist, leitet der Steuerblock 245 das gewichtete Sprachsignal über den Block 225 weiter, ohne eine Schrittvorverarbeitung, und weist es dem ersten Sollsignal 229 zu.
  • Wie durch einen Block 255 dargestellt ist, wendet die Codiererverarbeitungsschaltung einen Prozess an, in welchem ein Beitrag von einem adaptiven Codebuch 257 zusammen mit einem entsprechenden Verstärkungsfaktor 257 ausgewählt wird, welche ein erstes Fehlersignal 253 minimieren. Das erste Fehlersignal 253 umfasst die Differenz zwischen dem ersten Sollsignal 229 und einem gewichteten synthetisierten Beitrag vom adaptiven Codebuch 257.
  • Bei den Blöcken 247, 249 und 251 wird der resultierende Anregungsvektor nach einer adaptiven Verstärkungsfaktorreduktion an sowohl ein Synthesefilter als auch ein Gewichtungsfilter angelegt, um ein modelliertes Signal zu erzeugen, das am besten zum ersten Sollsignal 229 passt. Die Codiererverarbeitungsschaltung verwendet eine LPC-(Linearvorhersagecodierungs)-Analyse, wie durch einen Block 239 gezeigt ist, um Filterparameter für die Synthese- und Gewichtungsfilter zu erzeugen. Die Gewichtungsfilter 219 und 251 sind in der Funktion äquivalent.
  • Als Nächstes weist die Codiererverarbeitungsschaltung das erste Fehlersignal 253 als ein zweites Sollsignal zu für den Abgleich unter Verwendung von Beiträgen von einem festen Codebuch 261. Die Codiererverarbeitungsschaltung durchsucht wenigstens eines der Mehrzahl von Teilcodebüchern innerhalb des ersten Codebuches 261 bei einem Versuch, einen am besten geeigneten Beitrag auszuwählen, während sie im Allgemeinen versucht, das zweite Sollsignal anzugleichen.
  • Genauer wählt die Codierungsverarbeitungsschaltung einen Anregungsvektor aus, dessen entsprechendes Codebuch und Verstärkungsfaktor auf einer Vielfalt von Faktoren beruhen. Zum Beispiel werden die Codierungsbitrate, der Minimierungsgrad und die Eigenschaften der Sprache selbst, wie durch einen Block 279 repräsentiert, von der Codiererverarbeitungsschaltung am Steuerblock 275 berücksichtigt. Obwohl viele andere Faktoren berücksichtigt werden können, umfassen beispielhafte Eigenschaften eine Sprachklassifikation, Rauschpegel, Schärfe, Periodizität und dergleichen. Durch Betrachten solcher anderer Faktoren kann somit ein erstes Teilcodebuch mit seinem besten Anregungsvektor ausgewählt werden, statt einen besten Anregungsvektor eines zweiten Teilcodebuches, auch wenn derjenige des zweiten Teilcodebuches das zweite Sollsignal 265 besser minimiert.
  • 3 ist ein Funktionsblockdiagramm, das eine zweite Stufe von Operationen zeigt, die von der Ausführungsform des in 2 gezeigten Sprachcodierers ausgeführt werden. In der zweiten Stufe verwendet die Sprachcodierungsschaltung gleichzeitig sowohl Vektoren des adaptiven als auch des festen Codebuches, für die in der ersten Stufe von Operationen festgestellt wurde, dass sie ein drittes Fehlersignal 311 minimieren.
  • Die Sprachcodierungsschaltung sucht nach optimalen Verstärkungsfaktorwerten für die vorher identifizierten Anregungsvektoren (in der ersten Stufe) von beiden adaptiven und festen Codebüchern 257 und 261. Wie durch die Blöcke 307 und 309 gezeigt ist, identifiziert die Sprachcodierungsschaltung den optimalen Verstärkungsfaktor durch Erzeugen eines synthetisierten und gewichteten Signals, d. h. über einen Block 301 und 303, das am besten zum ersten Sollsignal 229 passt (das das dritte Fehlersignal 311 minimiert). Wenn die Verarbeitungsfähigkeiten es erlauben, können selbstverständlich die erste und die zweite Stufe kombiniert werden, wobei eine verknüpfte Optimierung sowohl des Verstärkungsfaktors als auch der Vektorauswahl des adaptiven und des festen Codebuches verwendet werden kann.
  • 4 ist ein Funktionsblockdiagramm, das eine dritte Stufe von Operationen zeigt, die von der Ausführungsform des in den 2 und 3 gezeigten Sprachcodierers ausgeführt werden. Die Codiererverarbeitungsschaltung wendet eine Verstärkungsfaktornormalisierung, eine Glättung und eine Quantisierung an, wie durch die Blöcke 401, 403 bzw. 405 dargestellt ist, für die verknüpft optimierten Verstärkungsfaktoren, die in der zweiten Stufe der Codiererverarbeitung identifiziert worden sind. Die Vektoren des adaptiven und des festen Codebuches, die verwendet werden, sind wieder diejenigen, die in der ersten Stufe der Verarbeitung identifiziert worden sind.
  • Mit der angewendeten Normalisierung, Glättung und Quantisierungsfunktion hat die Codiererverarbeitungsschaltung den Modellierungsprozess abgeschlossen. Die identifizierten Modellierungsparameter werden somit dem Decodierer mitgeteilt. Genauer liefert die Codiererverarbeitungsschaltung einen Index auf den ausgewählten Vektor des adaptiven Codebuches an den Kanalcodierer über einen Multiplexer 419. In ähnlicher Weise liefert die Codiererverarbeitungsschaltung den Index auf den ausgewählten Vektor des ersten Codebuches, resultierende Verstärkungsfaktoren, Synthesefilterparameter und dergleichen an den Multiplexer 419. Der Multiplexer 419 erzeugt einen Bitstrom 421 aus solchen Informationen für die Lieferung zum Kanalcodierer für die Kommunikation über den Kanal und den Sprachdecodierer der Empfangsvorrichtung.
  • 5 ist ein Blockdiagramm einer Ausführungsform, die die Funktion eines Sprachdecodierers mit einer entsprechenden Funktion, wie in den 24 gezeigt, darstellt. Wie beim Sprachcodierer arbeitet der Sprachdecodierer, der eine Decodiererverarbeitungsschaltung umfasst, typischerweise entsprechend einer Softwareanweisung, die die folgende Funktionalität ausführt.
  • Ein Demultiplexer 511 empfängt einen Bitstrom 513 der Sprachmodellierungsindizes von einem meist entfernten Codierer über einen Kanaldecodierer. Wie vorher beschrieben worden ist, hat der Codierer jeden Indexwert während des mehrstufigen Codierungsprozesses, der oben mit Bezug auf die 24 beschrieben worden ist, ausgewählt. Die Decodiererverarbeitungsschaltung verwendet Indizes, um z. B. Anregungsvektoren aus einem adaptiven Codebuch 515 und einem festen Codebuch 519 auszuwählen, die Verstärkungsfaktoren des adaptiven und des festen Codebuches im Block 521 zu setzen, und die Parameter für ein Synthesefilter 531 zu setzen.
  • Mit solchen Parametern und Vektoren, die ausgewählt oder gesetzt worden sind, erzeugt die Decodiererverarbeitungsschaltung ein reproduziertes Sprachsignal 539. Genauer erzeugen die Codebücher 513 und 519 Anregungsvektoren, die durch die Indizes vom Demultiplexer 511 identifiziert werden. Die Decodiererverarbeitungsschaltung wendet die indizierten Verstärkungsfaktoren beim Block 521 auf die summierten Vektoren an. Beim Block 527 modifiziert die Decodiererverarbeitungsschaltung die Verstärkungsfaktoren, um den Beitrag des Vektors vom adaptiven Codebuch 515 anzuheben. Beim Block 529 wird eine adaptive Spektralverzerrungskompensation auf die kombinierten Vektoren angewendet, mit dem Ziel des Abflachens des Anregungsspektrums. Die Decodiererverarbeitungsschaltung führt eine Synthesefilterung beim Block 531 unter Verwendung des abgeflachten Anregungssignals durch. Um schließlich das reproduzierte Sprachsignal 539 zu erzeugen, wird eine Nachfilterung beim Block 535 angewendet, die die Talbereiche des reproduzierten Sprachsignals 539 entzerrt, um den Effekt der Verzerrung zu reduzieren.
  • In der beispielhaften Mobiltelephon-Ausführungsform der vorliegenden Erfindung verwendet der A/D-Wandler 115 (1a) im Allgemeinen eine einheitliche Analog-Digital-PCM, die enthält: 1) eine Eingangspegeleinstellvorrichtung; 2) einen Eingangs-Anti-Aliasing-Filter; 3) eine Abtasthalteschaltung, die mit 8 kHz abtastet; und 4) eine einheitliche Analog-zu-Digital-Wandlung in eine 13-Bit-Darstellung.
  • In ähnlicher Weise verwendet der D/A-Wandler 135 im Allgemeinen eine einheitliche Digital-PCM-zu-Analog-Wandlung, enthaltend: 1) Wandlung von 13-Bit/8kHz-Einheits-PCM nach Analog; 2) eine Haltevorrichtung; 3) ein Rekonstruktionsfilter, das eine x/sin(x)-Korrektur enthält; und 4) eine Ausgangspegeleinstellvorrichtung.
  • Im Endgerät kann die A/D-Funktion erreicht werden durch direkte Wandlung in das 13-Bit-Einheits-PCM-Format, oder durch Wandlung in das 8-Bit-A-Gesetz-Verbundformat. Für die D/A-Operation findet die umgekehrte Operation statt.
  • Der Codierer 117 empfängt Datenabtastwerte mit einer Auflösung von 13 Bits, die in einem 16-Bit-Wort links ausgerichtet sind. Die drei niedrigstwertigen Bits sind auf Null gesetzt. Der Decodierer 133 gibt Daten im gleichen Format aus. Außerhalb des Sprachcodierers/Decodierers kann eine weitere Verarbeitung angewendet werden, um Verkehrsdaten mit einer anderen Darstellung aufzunehmen.
  • Eine spezifische Ausführungsform eines AMR-Codierers/Decodierers (AMR = adaptive mehrfache Rate) mit der in den 25 gezeigten Betriebsfunktion verwendet fünf Quellcodierer/Decodierer mit Bitraten von 11,0, 8,0, 6,65, 5,8 und 4,55 kbps. Vier der höchsten Quellcodierungs-Bitraten werden im Vollratenkanal verwendet, während die vier niedrigsten Bitraten im Halbratenkanal verwendet werden.
  • Alle fünf Quellcodierer/Decodierer innerhalb des AMR-Codierer/Decodierers beruhen im Allgemeinen auf einem code-angeregten Linearvorhersage-Codierungsmodell (CELP). Eine lineare vorhersage (LP, linear prediction) zehnter Ordnung oder ein Kurzzeit-Synthesefilter, das z. B. an den Blöcken 249, 267, 301, 407 und 531 (der 25) verwendet wird, wird verwendet, was gegeben ist durch:
    Figure 00130001
    wobei âi, i = 1, ..., m die (quantisierten) Linearvorhersage-(LP)-Parameter sind.
  • Ein Langzeitfilter (d. h. das Schrittsynthesefilter, ist unter Verwendung entweder eines Lösungsansatzes mit adaptivem Codebuch oder eines Lösungsansatzes mit einer Schrittvorverarbeitung implementiert. Das Schrittsynthesefilter ist gegeben durch:
    Figure 00140001
    wobei T die Schrittverzögerung ist und gp der Schrittverstärkungsfaktor ist.
  • Wie in 2 gezeigt ist, wird das Anregungssignal am Eingang des Kurzzeit-LP-Synthesefilters am Block 249 erstellt durch Addieren zweier Anregungsvektoren vom adaptiven und vom festen Codebuch 257 bzw. 261. Die Sprache wird synthetisiert durch Zuführen dieser zwei geeignet ausgewählten Vektoren aus diesen Codebüchern über das Kurzzeitsynthesefilter am Block 249 bzw. 267.
  • Die optimale Anregungssequenz in einem Codebuch wird unter Verwendung einer Analyse-durch-Synthese-Suchprozedur gewählt, in der der Fehler zwischen der ursprünglichen und der synthetisierten Sprache entsprechend einem wahrnehmungsgewichteten Verzerrungsmaß minimiert wird. Das Wahrnehmungsgewichtungsfilter, z. B. an dem Blöcken 251 und 268, das in der Analyse-durch-Synthese-Suchtechnik verwendet wird, ist gegeben durch:
    Figure 00140002
    wobei A(z) das unquantisierte LP-Filter ist und 0 < γ2 < γ1 ≤ 1 die Wahrnehmungsgewichtungsfaktoren sind. Die Werte γ1 = [0,9, 0,94] und γ1 = 0,6 werden verwendet. Das Gewichtungsfilter, z. B. an den Blöcken 251 und 258, verwendet die unquantisierten LP-Parameter, während das Formantensynthesefilter, z. B. an den Blöcken 249 und 267, die quantisierten LP-Parameter verwendet. Sowohl die unquantisierten als auch die quantisierten LP-Parameter werden beim Block 239 erzeugt.
  • Die vorliegende Codiererausführungsform arbeitet mit Sprachrahmen von 20 ms (Millisekunden), entsprechend 160 Abtastwerten bei der Abtastfrequenz von 8.000 Abtastungen pro Sekunde. Bei jeweils 160 Sprachabtastwerten wird das Sprachsignal analysiert, um die Parameter des CELP-Modells, d. h. die LP-Filterkoeffizienten, adaptive und feste Codebuchindizes und Verstärkungsfaktoren, zu extrahieren. Diese Parameter werden codiert und übertragen. Am Decodierer werden diese Parameter decodiert, wobei Sprache synthetisiert wird durch Filtern des rekonstruierten Anregungssig nals durch das LP-Synthesefilter.
  • Genauer wird die LP-Analyse beim Block 239 zweimal pro Rahmen durchgeführt, jedoch wird nur ein einzelner Satz von LP-Parametern zu Linienspektrumfrequenzen (LSF) konvertiert und unter Verwendung der Vorhersage-Mehrfachstufen-Quantisierung (PMVQ) vektor-quantisiert. Der Sprachrahmen wird in Unterrahmen unterteilt. Die Parameter vom adaptiven und vom festen Codebuch 257 und 261 werden für jeden Unterrahmen übertragen. Die quantisierten und unquantisierten LP-Parameter oder ihre interpolierten Versionen werden in Abhängigkeit vom Unterrahmen verwendet. Eine Offenschleifen-Schrittverzögerung wird beim Block 241 einmal oder zweimal pro Rahmen für jeweils den PP-Modus oder den LTP-Modus geschätzt.
  • Für jeden Unterrahmen werden wenigstens die folgenden Operationen wiederholt. Erstens, die Codiererverarbeitungsschaltung (die entsprechend einer Softwareanweisung arbeitet) berechnet x(n), das erste Sollsignal 229, durch Filtern des LP-Residuums durch das gewichtete Synthesefilter W(z)H(z), wobei die Anfangszustände der Filter durch Filterung des Fehlers zwischen LP-Residuum und Anregung aktualisiert worden sind. Dies ist äquivalent zu einem anderen Lösungsansatz des Subtrahierens der Null-Eingang-Antwort des gewichteten Synthesefilters auf das gewichtete Sprachsignal.
  • Zweitens, die Codiererverarbeitungsschaltung berechnet die Impulsantwort h(n) des gewichteten Synthesefilters. Drittens, im LTP-Modus wird eine Geschlossenschleife-Schrittanalyse durchgeführt, um die Schrittverzögerung und den Verstärkungsfaktor zu finden, unter Verwendung des ersten Sollsignals 229 x(n) und der Impulsantwort h(n) durch Suchen um die Offenschleife-Schrittverzögerung. Es wird eine Bruchschrittweite mit verschiedenen Abtastungsauflösungen verwendet.
  • Im PP-Modus wurde das eingegebene ursprüngliche Signal schrittvorverarbeitet, um die interpolierte Schrittkontur anzupassen, so dass keine Geschlossenschleife-Suche erforderlich ist. Der LTP-Anregungsvektor wird unter Verwendung der interpolierten Schrittkontur und der vergangenen synthetisierten Anregung berechnet.
  • Viertens, die Codiererverarbeitungsschaltung erzeugt ein neues Sollsignal x2(n), das zweite Sollsignal 253, durch Entfernen des Beitrags des adaptiven Codebuches (gefilterter adaptiver Codevektor) aus x(n). Die Codiererverarbeitungsschaltung verwendet das zweite Sollsignal 253 in der Festcodebuchsuche, um die optimale Innovation zu suchen.
  • Fünftens, für den Modus mit 11,0 kbps Bitrate werden die Verstärkungsfaktoren des adaptiven und des festen Codebuches skalar quantisiert mit vier bzw. fünf Bits (mit Bewegen der mittleren Vorhersage, die auf den Verstärkungsfaktor des festen Codebuches angewendet wird). Für die anderen Modi werden die Verstärkungsfaktoren des adaptiven und des festen Codebuches vektor-quantisiert (mit Bewegen der mittleren Vorhersage, die auf den Verstärkungsfaktor des festen Codebuches angewendet wird).
  • Schließlich werden die Filterspeicher unter Verwendung des ermittelten Anregungssignals aktualisiert, um das erste Sollsignal im nächsten Unterrahmen zu finden.
  • Die Bitzuweisung der AMR-Codierer/Decodierer-Modi ist in Tabelle 1 gezeigt. Zum Beispiel werden für jeden Sprachrahmen von 20 ms 200, 160, 133, 116 oder 91 Bits erzeugt, entsprechend den Bitraten von 11,0, 8,0, 6,65, 5,8 oder 4,55 kbps.
  • Tabelle 1: Bitzuweisung des AMR-Codierungsalgorithmus für 20 ms-Rahmen
    Figure 00170001
  • Wie in 5 gezeigt ist, rekonstruiert die Decodiererverarbeitungsschaltung, die einer Softwaresteuerung folgt, das Sprachsignal unter Verwendung der übermittelten Modellierungsindizes, die aus dem empfangenen Bitstrom vom Demultiplexer 511 extrahiert werden. Die Decodiererverarbeitungsschaltung decodiert die Indizes, um die Codiererparameter bei jedem Übertragungsrahmen zu erhalten. Parameter sind die LSF-Vektoren, die Stückelungsschrittverzögerungen, die Neuerungscodevektoren und die zwei Verstärkungsfaktoren.
  • Die LSF-Vektoren werden zu den LP-Filterkoeffizienten konvertiert und interpoliert, um LP-Filter bei jedem Unterrahmen zu erhalten. Bei jedem Unterrahmen konstruiert die Decodiererverarbeitungsschaltung das Anregungssignal durch: 1) Identifizieren der adaptiven und innovativen Codevektoren aus den Codebüchern 515 und 519; 2) Skalieren der Beiträge durch ihre jeweiligen Verstärkungsfaktoren am Block 521; 3) Summieren der skalierten Beiträge; und 4) Modifizieren und Anwenden einer adaptiven Spektralverzerrungskompensation bei den Blöcken 527 und 529. Das Sprachsignal wird ferner auf einer Unterrahmenbasis rekonstruiert durch Filtern der Anregung durch die LP-Synthese beim Block 531. Schließlich wird das Sprachsignal über ein adaptives Nachfilter beim Block 535 geleitet, um das reproduzierte Sprachsignal 539 zu erzeugen.
  • Der AMR-Codierer erzeugt die Sprachmodellierungsinformationen in eindeutiger Folge und Format, wobei der AMR-Decodierer die gleichen Informationen in der gleichen Weise empfängt. Die verschiedenen Parameter der codierten Sprache und ihre individuellen Bits weisen eine ungleichmäßige Wichtigkeit bezüglich der subjektiven Qualität auf. Bevor die Bits an die Kanalcodierungsfunktion übergeben werden, werden sie in der Folge der Wichtigkeit umgeordnet.
  • Zwei Vorverarbeitungsfunktionen werden vor dem Codierungsprozess angewendet: eine Hochpassfilterung und eine Signalabwärtsskalierung. Die Abwärtsskalierung umfasst das Teilen der Eingabe durch einen Faktor von 2, um die Möglichkeit von Überläufen in der Festkommaimplementierung zu reduzieren. Die Hochpassfilterung im Block 215 (2) dient als Vorsorge gegen unerwünschte Niederfrequenzkomponenten. Ein Filter mit einer Eckfrequenz von 80 Hz wird verwendet und ist gegeben durch:
    Figure 00180001
  • Die Skalierung und die Hochpassfilterung sind kombiniert durch Dividieren der Koeffizienten des Zählers von Hhl(z) durch 2.
  • Eine Analyse mit Kurzzeitvorhersage oder linearer Vorhersage (LP) wird zweimal pro Sprachrahmen unter Verwendung des Autokorrelationsansatzes mit 30 ms-Fenstern durchgeführt. Genauer werden zwei LP-Analysen zweimal pro Rahmen unter Verwendung zweier verschiedener Fenster durchgeführt. In der ersten LP-Analyse (LP_Analyse_1) wird ein Hybridfenster verwendet, das ein auf dem vierten Unterrahmen konzentriertes Gewicht aufweist. Das Hybridfenster besteht aus zwei Teilen. Der erste Teil ist ein halbes Hamming-Fenster, und der zweite Teil ist ein Viertel eines Cosinuszyklus. Das Fenster ist gegeben durch:
    Figure 00190001
  • In der zweiten LP-Analyse (LP_Analyse_2) wird ein symmetrisches Hamming-Fenster verwendet
    Figure 00190002
  • In jeder LP-Analyse werden die Autokorrelationen der gefensterten Sprache s'(n), n = 0,239 berechnet durch:
    Figure 00190003
  • Es wird eine Bandbreitenerweiterung um 60 Hz mittels Verzögerungsfensterung verwendet, wobei die Autokorrelationen das Fenster verwenden:
    Figure 00190004
  • Außerdem wird r(0) mit einem Weißes-Rauschen-Korrekturfaktor 1,0001 multipliziert, was äquivalent ist zum Addieren eines Rauschteppichs bei –40 dB.
  • Die modifizierten Autokorrelationen r(0) = 1,0001 r(0) und r(k) = r(k)wlag(k), k = 1,10 werden verwendet, um die Reflexionskoeffizienten k und die LP-Filterkoeffizienten ai, i = 1,10 unter Verwendung des Levinson-Durbin-Algorithmus zu erhalten. Ferner werden die LP-Filterkoeffizienten ai verwen det, um die Linienspektralfrequenzen (LSFs) zu erhalten.
  • Die interpolierten unquantisierten LP-Parameter werden erhalten durch Interpolieren der LSF-Koeffizienten, die von der LP_Analyse_1 erhalten werden, und derjenigen, von der LP_Analyse_2 als: q1(n) = 0,5q4(n – 1) + 0,5q2(n) q3(n) = 0,5q2(n + 0,5q4(n)wobei q1(n) die interpolierte LSF für den Unterrahmen 1 ist. q2(n) ist die LSF des Unterrahmens 2, erhalten aus der LP_Analyse_2 des aktuellen Rahmens. q3(n) ist die interpolierte LSF für den Unterrahmen 3. q4(n – 1) ist die LSF (Cosinusbereich) von der LP_Analyse_1 des vorangehenden Rahmens, während q4(n) die LSF für den Unterrahmen 4 ist, erhalten aus der LP_Analyse_1 des aktuellen Rahmens. Die Interpolation wird im Cosinusbereich ausgeführt.
  • Ein VAD-Algorithmus (VAD, Voice Aktivity Detection = Sprachaktivitätserfassung) wird verwendet, um beim Block 235 eingegebene Sprachrahmen in entweder aktive Sprachrahmen oder inaktive Sprachrahmen (Hintergrundgeräusch oder Stille) zu klassifizieren (2).
  • Die eingegebene Sprache s(n) wird verwendet, um ein gewichtetes Sprachsignal sw(n) zu erhalten durch Leiten von s(n) durch ein Filter:
    Figure 00200001
    d. h., in einem Unterrahmen der Größe L_SF ist die gewichtete Sprache gegeben durch:
    Figure 00200002
  • Eine Stimmhaft/Stimmlos-Klassifizierung und Modusentscheidung innerhalb des Blocks 279, die die eingegebene Sprache s(n) und das Residuum rw(n) verwendet, wird abgeleitet, wobei:
    Figure 00210001
  • Die Klassifizierung beruht auf vier Messgrößen: 1) Sprachschärfe P1_SHP; 2) eine normalisierte 1-Verzögerungskorrelation P2_R1; 3) eine normalisierte Nulldurchgangsrate P3_ZC; und 4) eine normalisierte LP-Residuumsenergie P4_RE.
  • Die Sprachschärfe ist gegeben durch:
    Figure 00210002
    wobei Max das Maximum von abs(rw(n)) über dem spezifizierten Intervall der Länge L ist. Die normalisierte 1-Verzögerungskorrelation und die normalisierte Nulldurchgangsrate sind gegeben durch:
    Figure 00210003
    wobei sgn die Vorzeichenfunktion ist, deren Ausgabe entweder 1 oder –1 ist, in Abhängigkeit davon, ob der Eingangsabtastwert positiv oder negativ ist. Schließlich ist die normalisierte LP-Residuumsenergie gegeben durch: P4_RF = 1 – √lpc_gain wobei
    Figure 00210004
    gilt, und wobei ki die aus der LP_Analyse_1 erhaltenen Reflexionskoeffizienten sind.
  • Die Stimmhaft/Stimmlos-Entscheidung wird abgeleitet, wenn die folgenden Bedingungen erfüllt sind:
    wenn P2_R1 < 0,6 und P1_SHP > 0,2, setze Modus = 2,
    wenn P3_ZC < 0,4 und P1_SHP > 0,18, setze Modus = 2,
    wenn P4_RE < 0,4 und P1_SHP > 0,2, setze Modus = 2,
    wenn (P2_R1 < –1,2 + 3,2 P1_SHP), setze VUV = –3,
    wenn (P4_RE < –0,21 + 1,4286 P1_SHP), setze VUV = –3,
    wenn (P3_ZC > 0,8 – 0,6 P1_SHP), setze VUV = –3,
    wenn (P4_RE < 0,1), setze VUV = –3.
  • Eine Offenschleife-Schrittanalyse wird einmal oder zweimal (alle 10 ms) pro Rahmen durchgeführt, in Abhängigkeit von der Codierungsrate, um Schätzwerte der Schrittverzögerung beim Block 241 zu finden (2). Sie beruht auf dem gewichteten Sprachsignal sw(n + nm), n = 0, 1, ..., 79, wobei nm den Ort dieses Signals auf den ersten Halbrahmen oder den letzten Halbrahmen definiert. Im ersten Schritt werden vier Maxima der Korrelation:
    Figure 00220001
    in den vier Bereichen 17 ... 33, 34 ... 67, 68 ... 135 bzw. 136 ... 145 gefunden. Die festgehaltenen Maxima Cki, i = 1, 2, 3, 4, werden normalisiert durch Dividieren durch jeweils:
    Figure 00220002
  • Die normalisierten Maxima und die entsprechenden Verzögerungen werden mit (Ri, ki), i = 1, 2, 3, 4, bezeichnet.
  • Im zweiten Schritt wird eine Verzögerung kl unter den vier Kandidaten ausgewählt durch Maximieren der vier normalisierten Korrelationen. Im dritten Schritt wird kl wahrscheinlich zu kl (i < l) korrigiert durch Bevorzugen der niedrigeren Bereiche. Das heißt, ki (i < l) wird ausgewählt, wenn ki innerhalb von [kl/m-4, kl/m+4], m = 2, 3, 4, 5, liegt, und wenn ki < kl 0,95l-1 D, i < l, ist, wobei D gleich 1,0, 0,85 oder 0,65 ist, in Abhängigkeit davon, ob der vorangehende Rahmen stimmlos ist, der vorangehende stimmhaft ist und ki in der Nachbarschaft (spezifiziert durch ±8) der vorangehenden Schrittverzögerung liegt, oder die vorangehenden zwei Rahmen stimmhaft sind und ki in der Nachbarschaft der vorangehenden zwei Schrittverzögerungen liegt. Die endgültig ausgewählte Schrittverzögerung wird mit Top bezeichnet.
  • Für jeden Rahmen wird entschieden, entweder die LTP (Langzeitvorhersage) als traditionellen CELP-Ansatz (LTP_Modus = 1) zu betreiben, oder einen modifizierten Zeitverzerrungsansatz (LTP_Modus = 0), hier bezeichnet als PP (Schrittvorverarbeitung). Für Codierungsbitraten von 4,55 und 5,8 kbps ist LTP_Modus zu allen Zeiten auf 0 gesetzt. Für 8,0 und 11,0 kbps ist LTP_Modus zu allen Zeitpunkten auf 1 gesetzt. Währenddessen entscheidet der Codierer für eine Codierungsbitrate von 6,65 kbps, ob er im LTP- oder PP-Modus arbeitet. Während des PP-Modus wird nur eine Schrittverzögerung pro Codierungsrahmen übertragen.
  • Für 6,65 kbps ist der Entscheidungsalgorithmus wie folgt. Zuerst wird im Block 241 eine Vorhersage der Schrittverzögerung pit für den aktuellen Rahmen wie folgt bestimmt:
    wenn (LTP_MODE_m = 1)
    pit = lagl1 + 2.4*(lag_f[3] – lagl1);
    sonst
    pit = lag_f[1] + 2.75*(lag_f[3] – lag_f[1]);
    wobei LTP_mode_m der vorangehende Rahmen LTP_mode ist, lag_f[1], lag_f[3] die vergangenen Geschlossenschleifen-Schrittverzögerungen für jeweils den zweiten und den vierten Unterrahmen sind, lagl die Offenschleifen-Schrittverzögerung des aktuellen Rahmens bei der zweiten Hälfte des Rahmens ist, und lagl1 die Offenschleifen-Schrittverzögerung des vorangehenden Rahmens bei der ersten Hälfte des Rahmens ist.
  • Zweitens, es wird eine normalisierte Spektraldifferenz zwischen den Linienspektrumfrequenzen (LSF) eines aktuellen und eines vorangehenden Rahmens berechnet als:
    Figure 00230001
    wenn (abs(pit – lagl) < TH und abs(lag_f[3] – lagl) < lagl*0.2)
    wenn (Rp > 0.5 && pgain_past > 0.7 und e_lsf < 0.5/30) LTP_mode = 0;
    sonst LTP_mode = 1;
    wobei Rp die normalisierte Schrittkorrelation des aktuellen Rahmens ist, pgain_past der quantisierte Schrittverstärkungsfaktor vom vierten Unterrahmen des vergangenen Rahmens ist, wobei TH = MIN(lagl·0,1, 5) und TH = MAX(2,0, TH) gilt.
  • Die Schätzung der genauen Schrittverzögerung am Ende des Rahmens beruht auf der normalisierten Korrelation:
    Figure 00240001
    wobei sw(n + n1), n = 0, 1, ... L – 1, das letzte Segment des gewichteten Sprachsignals repräsentiert, das die Vorausschau enthält (die Vorausschaulänge ist 25 Abtastwerte), und die Größe L entsprechend der Offenschleifen-Schrittverzögerung Top mit der entsprechenden normalisierten Korrelation CTop definiert ist:
    wenn (
    Figure 00240002
    > 0.6)
    L = max{50, Top}
    L = min{80, L}
    sonst
    L = 80
  • Im ersten Schritt wird eine ganze Zahl lag k ausgewählt, die Rk im Bereich k ∊ [Top – 10, Top – 10] begrenzt durch [17, 145] maximiert. Anschließend werden die genaue Schrittverzögerung pm und der entsprechende Index Im für den aktuellen Rahmen um die Ganzzahlverzögerung, [k – 1, k + 1], durch Aufwärtsabtastung von Rk gesucht.
  • Die möglichen Kandidaten der genauen Schrittverzögerung werden aus der Tabelle erhalten, bezeichnet als PitLagTab8b[i], i = 0, 1, ..., 127. Im letzten Schritt wird die genaue Schrittverzögerung pm = PitLagTab8b[Im] möglicherweise modifiziert durch Prüfen der akkumulierten Verzögerung τacc aufgrund der Modifikation des Sprachsignals:
    wenn (τacc > 5) Im ⇐ min{Im + 1, 127}, und
    wenn(τacc < –5) Im ⇐ max{Im – 1,0}.
  • Die genaue Schrittverzögerung kann wieder modifiziert werden:
    wenn (τacc > 10) Im ⇐ min{Im + 1, 127}, und
    wenn (τacc < –10) Im ⇐ max{Im – 1,0}.
  • Der erhaltene Index Im wird zum Decodierer gesendet.
  • Die Schrittverzögerungskontur τc(n) ist definiert unter Verwendung sowohl der aktuellen Verzögerung Pm als auch der vorangehenden Verzögerung Pm-1:
    wenn (|Pm – Pm-1| < 0.2 min{Pm, Pm-1})
    τc(n) = Pm-1 + n(Pm – Pm-1)/Lf, n = 0, 1, ..., Lf – 1
    τc(n) = Pm, n = Lf, ..., 170
    sonst
    τc(n) = Pm-1, n = 0, 1, ..., 39;
    τc(n) = Pm, n = 40, ..., 170
    wobei Lf = 160 die Rahmengröße ist.
  • Ein Rahmen wird in drei Unterrahmen für die Langzeitvorverarbeitung unterteilt. Für die ersten zwei Unterrahmen ist die Unterrahmengröße Ls gleich 53, und die Unterrahmengröße für das Suchen Lsr = 70. Für den letzten Unterrahmen ist Ls gleich 54 und Lsr gleich: Lsr = min{70, Ls + Lkhd – 10 – τacc(n)},wobei Lkhd = 25 die Vorausschau ist und das Maximum der akkumulierten Verzögerung τacc auf 14 begrenzt ist.
  • Das Ziel für den Modifikationsprozess der gewichteten Sprache, vorübergehend gespeichert in: {ŝw(m0 + n), n = 0, 1, ..., Lsr – 1} wird berechnet durch Verzerren des letzten modifizierten gewichteten Sprachpuffers, ŝw(m0 + n), n < 0, mit der Schrittverzögerungskontur, τc(n + m·Ls), m = 0, 1, 2,
    Figure 00250001
    wobei TC(n) und TIC(n) berechnet werden durch: Tc(n) = trunc{τc(n + m·Ls)}, TIC(n) = τc(n) – TC(n),m ist die Unterrahmennummer, Is(i, TIC(n)) ist ein Satz von Interpolationskoeffizienten, und fl ist gleich 10. Anschließend wird das Ziel für die Anpassung ŝt(n), n = 0, 1, ..., Lsr – 1, n = 0, 1, ... Lsr – 1, berechnet durch Gewichten von ŝw{m0 + n), n = 0, 1, ..., Lsr – 1 im Zeitbereich: ŝt(n) = n·ŝw(m0 + n)/Ls, n = 0, 1, ..., Ls – 1, ŝt(n) = ŝw(m0 + n), n = Ls, ..., Lsr – 1
  • Der lokale Ganzzahlverschiebungsbereich [SR0, SR1] zum Suchen der besten lokalen Verzögerung wird wie folgt berechnet:
    wenn Sprache stimmlos
    SR0 = –1,
    SR1 = 1,
    sonst
    SR0 = round{–4 min(1.0, max(0.0, 1 – 0.4(Psh – 0.2)}}},
    SR1 = round(4 min(1.0, max(0.0, 1 – 0.4(Psh – 0.2)}}},
    wobei Psh = max{Psh1, Psh2} ist, Psh1 ist der Mittelwert zum Spitzenverhältnis (d. h. Schärfe) vom Sollsignal:
    Figure 00260001
    und Psh2 ist die Schärfe vom gewichteten Sprachsignal:
    Figure 00260002
    wobei n0 = trunc{m0 + τacc + 0,5} gilt (hierbei ist m die Unterrahmennummer und τacc ist die vorherige akkumulierte Verzögerung).
  • Um die beste lokale Verzögerung τopt am Ende des aktuellen verarbeiteten Unterrahmens zu finden, wird ein normalisierter Korrelationsvektor zwischen dem ursprünglichen gewichteten Sprachsignal und dem modifizierten Anpassungsziel definiert als:
    Figure 00260003
  • Eine beste lokale Verzögerung im Ganzzahlbereich kopt wird ausgewählt durch Maximieren von RI(k) im Bereich von k ∊ [SR=, SR1], was der realen Verzögerung entspricht: kr = kopt + n0 – m0 – τacc
  • Wenn RI(kopt) < 0,5 ist, wird kr auf 0 gesetzt.
  • Um eine genauere lokale Verzögerung im Bereich von {kr – 0,75 + 0,1j, j = 0, 1, ... 15} um kr zu erhalten, wird RI(k) interpoliert, um den Bruchkorrelationsvektor Rf(j) zu erhalten, mittels:
    Figure 00270001
    wobei {If(i, j)} ein Satz von Interpolationskoeffizienten ist. Der optimale Bruchverzögerungsindex jopt wird ausgewählt durch Maximieren von Rf(j). Schließlich ist die beste lokale Verzögerung τopt am Ende des aktuellen verarbeiteten Unterrahmens gegeben durch τopt = kr – 0,75 + 0,1jopt
  • Die lokale Verzögerung wir anschließend angepasst durch:
    Figure 00270002
  • Die modifizierte gewichtete Sprache des aktuellen Unterrahmens, gespeichert in {ŝw(m0 + n), n = 0, 1, ..., Ls – 1} zum Aktualisieren des Puffers und Erzeugen des zweiten Sollsignals 253 für die Durchsuchung des festen Codebuches 261, wird erzeugt durch Verzerren der ursprünglichen gewichteten Sprache {sw(n)} aus dem ursprünglichen Zeitbereich,
    [m0 + τacc, m0 + τacc + Ls + τopt],
    in den modifizierten Zeitbereich
    [m0, m0 + Ls]:
    Figure 00270003
    wobei TW(n) und TIW(n) berechnet werden durch: TW(n) = trunc{τacc + n·τopt/Ls}, TIW(n) = τacc + n·τopt/Ls – TW(n),{Is(i, TIW(n))} ist ein Satz von Interpolationskoeftizienten.
  • Nachdem die Modifikation der gewichteten Sprache für den aktuellen Unterrahmen abgeschlossen ist, wird der modifizierte gewichtete Zielsprachpuffer wie folgt aktualisiert: ŝw(n) ⇐ ŝw(n + Ls), n = 0, 1, ..., nm – 1.
  • Die akkumulierte Verzögerung am Ende des aktuellen Unterrahmens wird erneuert durch: τacc ⇐ τacc + τopt.
  • Vor der Quantisierung werden die LSFs geglättet, um die Wahrnehmungsqualität zu verbessern. Im Prinzip wird während Sprache und Segmenten mit schnellen Variationen in der Spektralhüllkurve keine Glättung angewendet. Während Nicht-Sprache mit langsamen Variationen in der Spektralhüllkurve wird eine Glättung angewandt, um unerwünschte Spektralvariationen zu reduzieren. Unerwünschte Spektralvariationen können typischerweise während der Schätzung der LPC-Parameter und der LSF-Quantisierung auftreten. Als Beispiel wird in stationären rauschartigen Signalen mit konstanter Spektralhüllkurve das Einführen selbst sehr kleiner Variationen in der Spektralhüllkurve vom menschlichen Gehör leicht aufgenommen und als lästige Modulation wahrgenommen.
  • Die Glättung der LSFs wird als laufender Mittelwert bewerkstelligt, entsprechend: lsfi(n) = β(n)·lsfi(n – 1) + (1 – β(n))·lsf_esti(n), i = 1, ..., 10wobei lsf_esti(n) die i-te geschätzte LSF des Rahmens n ist und lsfi(n) die i-te LSF für die Quantisierung des Rahmens n ist. Der Parameter β(n) steuert das Maß der Glättung, z. B. wird keine Glättung angewendet, wenn β(n) gleich 0 ist.
  • β(n) wird aus der VAG-Information (im Block 235 erzeugt) und zwei Schätzwerten der Evolution der Spektralhüllkurve berechnet. Die zwei Schätzwerte der Evolution sind definiert als:
    Figure 00280001
    ma_lsfi(n) = β(n)·ma_lsfi(n – 1) + (1 – β(n))·lsf_esti(n), i = 1, ..., 10
  • Der Parameter β(n) wird durch die folgende Logik gesteuert: Schritt 1:
    Figure 00290001
    Schritt 2:
    Figure 00290002
    wobei k1 der erste Reflexionskoeffizient ist.
  • Im Schritt 1 prüft die Codiererverarbeitungsschaltung die VAD und die Evolution der Spektralhüllkurve, und führt eine vollständige oder teilweise Rücksetzung der Glättung durch, falls erforderlich. Im Schritt 2 aktualisiert die Codiererverarbeitungsschaltung den Zähler Nmode_frm(n) und berechnet den Glättungsparameter β(n). Der Parameter β(n) variiert zwischen 0,0 und 0,9, und ist für Sprache, Musik, tonartige Signale und nicht stationäres Hintergrundrauschen gleich 0,0, und steigt in Richtung 0,9 an, wenn stationäres Hintergrundrauschen auftritt.
  • Die LSFs werden einmal pro 20 ms-Rahmen unter Verwendung einer vorhersagenden mehrstufigen Vektorquantisierung quantisiert. Eine minimale Beabstandung von 50 Hz ist zwischen jeweils zwei benachbarten LSFs vor der Quantisierung sichergestellt. Ein Satz von Gewichtungen wird aus den LSFs berechnet, gegeben durch wi = K|P(fi)|0,4, wobei fi der i-te LSF-Wert ist und P(fi) das LPC-Leistungsspektrum bei fi ist (K ist eine irrelevante multiplikative Konstante). Der Kehrwert des Spektrums wird erhalten durch (bis zu einer multiplikativen Konstante):
    Figure 00300001
    wobei die Leistung von –0,4 anschließend unter Verwendung einer Nachschlagtabelle und einer kubischen Kurveninterpolation zwischen den Tabelleneinträgen berechnet wird.
  • Ein Vektor der Mittelwerte wird von den LSFs subtrahiert, wobei ein Vektor des Vorhersagefehlervektors fe aus dem vom Mittelwert befreiten LSF-Vektor berechnet wird, unter Verwendung eines Vollmatrix-AR(2)-Prädiktors. Ein einzelner Prädiktor wird für die Codierer mit den Raten 5,8, 6,65, 8,0 und 11,0 kbps verwendet, während zwei Sätze von Prädiktionskoeffizienten als mögliche Prädiktoren für den Codierer mit 4,55 kbps getestet werden.
  • Der Vektor des Vorhersagefehlers wird unter Verwendung eines mehrstufigen VQ quantisiert, mit mehrfach überlebenden Kandidaten von jeder Stufe zur nächsten Stufe. Die zwei möglichen Sätze von Vorhersagefehlervektoren, die für den Codierer mit 4,55 kbps erzeugt werden, werden als überlebende Kandidaten für die nächste Stufe betrachtet.
  • Die ersten vier Stufen weisen jeweils 64 Einträge auf, wobei die fünfte und letzte Tabelle 16 Einträge aufweist. Die ersten drei Stufen werden für die Codierer mit 4,55 kbps verwendet, die ersten Stufen werden für die Codierer mit 5,8, 6,65 und 8,0 kbps verwendet, und alle fünf Stufen werden für den Codierer mit 11,50 kbps verwendet. Die folgende Tabelle fasst die Anzahl der Bits zusammen, die für die Quantisierung der LSFs für jede Rate verwendet werden.
  • Figure 00310001
  • Die Anzahl der überlebenden Kandidaten für jede Stufe ist in der folgenden Tabelle zusammengefasst:
    Figure 00310002
  • Die Quantisierung in jeder Stufe wird bewerkstelligt durch Minimieren des gewichteten Verzerrungsmaßes, gegeben durch:
    Figure 00310003
  • Der Codevektor mit dem Index kmin, der εk minimiert, so dass εkmin < εk für alle k gilt, wird so gewählt, dass er den Vorhersage/Quantisierungsfehler repräsentiert (fe repräsentiert in dieser Gleichung sowohl den anfänglichen Vorhersagefehler für die erste Stufe als auch den nachfolgenden Quantisierungsfehler von jeder Stufe zur nächsten).
  • Die endgültige Auswahl der Vektoren aus allen überlebenden Kandidaten (und für den Codierer mit 4,55 kbps – also der Prädiktor) wird am Ende bewerkstelligt, nachdem die letzte Stufe durchsucht worden ist, indem ein kombinierter Satz von Vektoren (und Prädiktor) ausgewählt wird, der den Gesamtfehler minimiert. Der Beitrag von allen Stufen wird summiert, um den quantisierten Vorhersagefehlervektor zu bilden, wobei der quantisierte Vorhersagefehler zu den Vorhersagezuständen und den mittleren LSF-Werten addiert wird, um den quantisierten LSF-Vektor zu erzeugen.
  • Für den Codierer mit 4,55 kbps wird die Anzahl der Größenordnungssprünge der LSFs als Ergebnis der Quantisierung gezählt, wobei dann, wenn die Anzahl der Sprünge größer als 1 ist, der LSF-Vektor durch 0,9·(LSFs des vorhergehenden Rahmens) + 0,1·(mittlerer LSF-Wert) ersetzt wird. Für alle Raten werden die quantisierten LSFs geordnet und mit einer minimalen Beabstandung von 50 Hz beabstandet.
  • Die Interpolation der quantisierten LSF wird im Cosinusbereich auf zwei Wegen in Abhängigkeit vom LTP_Modus durchgeführt. Wenn der LTP_Modus gleich 0 ist, wird eine lineare Interpolation zwischen dem quantisierten LSF-Satz des aktuellen Rahmens und dem quantisierten LSF-Satz des vorangehenden Rahmens durchgeführt, um den LSF-Satz für die ersten, zweiten und dritten Unterrahmen zu erhalten als: q 1(n) = 0.75q 4(n – 1) + 0.25q 4(n) q 2(n) = 0.5q 4(n – 1) + 0.5q 4(n) q 3(n) = 0.25q 4(n – 1) + 0.75q 4(n)wobei q 4(n – 1) und q 4(n) die Cosinuswerte der quantisierten LSF-Sätze jeweils des vorangehenden und des aktuellen Rahmens sind, und q 1(n), q 2(n) und q 3(n) die interpolierten LSF-Sätze im Cosinusbereich für jeweils die ersten, zweiten und dritten Unterrahmen sind.
  • Wenn der LTP Modus gleich 1 ist, wird eine Suche des besten Interpolationspfades durchgeführt, um die interpolierten LSF-Sätze zu erhalten. Die Suche beruht auf einer gewichteten mittleren Absolutdifferenz zwischen einem Referenz-LSF-Satz r l(n) und dem LSF-Satz, der von der LP-Analyse_2 l(n) erhalten wird. Die Gewichtungen w werden wie folgt berechnet w(0) = (1 – l(0))(1 – l(1) + l(0)) w(9) = (1 - l(9))(1 – l(9) + l(8))for i = 1 to 9 w(i) =(1 – l(i))(1 – Min(l(i + 1) – l(i), l(i) – l(i – 1)))wobei Min(a, b) den kleineren Wert von a und b zurückgibt.
  • Es gibt vier verschiedene Interpolationspfade. Für jeden Pfad wird ein Referenz-LSF-Satz r q(n) im Cosinusbereich wie folgt erhalten: rq(n) = α(k)q 4(n) + (1 – α(k))q 4(n – 1), k = 1 bis 4ᾱ = [0,4, 0,5, 0,6, 0,7) für jeden Pfad. Anschließend wird das folgende Abstandsmaß für jeden Pfad berechnet als: D = |rl(n) – l(n)|T w
  • Der Pfad, der zum minimalen Abstand D führt, wird ausgewählt, wobei der entsprechende Referenz-LSF-Satz r q(n) erhalten wird als: rq(n) = αopt q 4(n) + (1 – αopt)q 4(n – 1)
  • Die interpolierten LSF-Sätze im Cosinusbereich sind dann gegeben durch: q 1(n) = 0.5q 4(n – 1) + 0.5rq(n) q 2(n) = rq(n) q 3(n) = 0.5rq(n) + 0.5q 4(n)
  • Die Impulsantwort h(n) des gewichteten Synthesefilters H(z)W(z) = A(z/γ1)/[Ā(z)A(z/γ2)) wird für jeden Unterrahmen berechnet. Die Impulsantwort ist notwendig für die Durchsuchung des adaptiven und des festen Codebuches 257 und 261. Die Impulsantwort h(n) wird berechnet durch Filtern des Vektors der Koeffizienten des Filter A(z/γ1) erweitert durch Nullen durch die zwei Filter 1/Ā(z) und 1/A(zγ2).
  • Das Sollsignal für jede Durchsuchung des adaptiven Codebuches 257 wird gewöhnlich berechnet durch Subtrahieren der Nulleingangsantwort des gewichteten Synthesefilters H(z)W(z) aus dem gewichteten Sprachsignal sw(n). Diese Operation wird auf Rahmenbasis durchgeführt. Eine äquivalente Prozedur zum Berechnen des Sollsignals ist die Filterung des LP-Residuumsignals r(n) durch die Kombination aus dem Synthesefilter 1/Ā(z) und dem Gewichtungsfilter W(z).
  • Nach der Bestimmung der Anregung für den Unterrahmen werden die Anfangszustände dieser Filter aktualisiert durch Filterung der Differenz zwischen dem LP-Residuum und der Anregung. Das LP-Residuum ist gegeben durch:
    Figure 00340001
  • Das Residuum im Signal r(n), das zum Auffinden des Zielvektors erforderlich ist, wird ebenfalls bei der Durchsuchung des adaptiven Codebuchs verwendet, um den Vergangenheitsanregungspuffer zu erweitern. Dies vereinfacht die Durchsuchungsprozedur für das adaptive Codebuch für Verzögerungen kleiner als die Unterrahmengröße von 40 Abtastwerten.
  • In der vorliegenden Ausführungsform gibt es zwei Möglichkeiten, einen LTP-Beitrag zu erzeugen. Eine verwendet die Schrittvorverarbeitung (PP), wenn der PP-Modus ausgewählt ist, und eine weitere wird ähnlich der traditionellen LTP berechnet, wenn der LTP-Modus ausgewählt ist. Mit dem PP-Modus besteht keine Notwendigkeit, die Durchsuchung des adaptiven Codebuches durchzuführen, wobei die LTP-Anregung direkt entsprechend der vergangenen synthetisierten Anregung berechnet wird, da die interpolierte Schrittkontur für jeden Rahmen gesetzt wird. Wenn der AMR-Codierer im LTP-Modus arbeitet, ist die Schrittverzögerung innerhalb eines Unterrahmens konstant, und es wird auf einer Unterrahmenbasis durchsucht und codiert.
  • Angenommen, die vergangene synthetisierte Anregung ist in {ext(MAX_LAG + n), n < 0} gespeichert, was auch als adaptives Codebuch bezeichnet wird. Der LTP-Anregungs-Codevektor, der vorübergehend in {ext(MAX_LAG + n), 0 ≤ n < L_SF} gespeichert ist, wird berechnet durch Interpolieren der vergangenen Anregung (adaptives Codebuch) mit der Schrittverzögerungskontur τc(n + m·L_SF), m = 0, 1, 2, 3. Die Interpolation wird durchgeführt unter Verwendung eines FIR-Filters (Hamming-gefensterte sinc-Funktionen):
    Figure 00340002
    wobei TC(n) und TIC(n) berechnet werden durch Tc(n) = trunc{τc(n + m·L_SF)}, TIC(n) = τc(n) – TC(n),wobei m die Unterrahmennummer ist, {Is(i, TIC(n))} ein Satz von Interpolati onskoeffizienten ist, fl gleich 10 ist, MAX_LAG gleich 145 + 11 ist, und L_SF = 40 die Unterrahmengröße ist. Es ist zu beachten, dass die interpolierten Werte {ext(MAX_LAG + n), 0 ≤ n < L_SF – 17 + 11} wieder verwendet werden können, um die Interpolation durchzuführen, wenn die Schrittverzögerung klein ist. Sobald die Interpolation beendet ist, wird der adaptive Codevektor Va = {va(n), n = 0 bis 39} erhalten durch Kopieren der interpolierten Werte: va(n) = ext(MAX_LAG + n), 0 <= n < L_SF
  • Die Durchsuchung des adaptiven Codebuches wird auf Unterrahmenbasis durchgeführt. Sie umfasst die Durchführung einer Geschlossenschleife-Schrittverzögerungssuche, und das anschließende Berechnen des adaptiven Codevektors durch Interpolieren der vergangenen Anregung bei der ausgewählten Bruchschrittverzögerung. Die LTP-Parameter (oder die adaptiven Codebuchparameter) sind die Schrittverzögerung (oder die Verzögerung) und der Verstärkungsfaktor des Schrittfilters. In der Durchsuchungsstufe wird die Anregung durch das LP-Residuum erweitert, um die Geschlossenschleifensuche zu vereinfachen.
  • Für die Bitrate von 11,0 kbps wird die Schrittverzögerung mit neun Bits für den ersten und den dritten Unterrahmen codiert, und die relative Verzögerung der anderen Unterrahmen wird mit sechs Bits codiert. Eine Bruchschrittverzögerung wird im ersten und dritten Unterrahmen mit den Auflösungen verwendet: 1/6 im Bereich [17,93 4/6], und nur ganze Zahlen im Bereich [94,145]. Für den zweiten und vierten Unterrahmen wird immer eine Schrittauflösung von 1/6 für die Rate 11,0 kbps im Bereich [T1 – 5 3/6, T1 + 4 3/6] verwendet, wobei T1 die Schrittverzögerung des vorangehenden (ersten oder dritten) Unterrahmens ist.
  • Die Geschlossenschleife-Schrittsuche wird durchgeführt durch Minimieren des Mittlere-Quadrate-Gewichtungsfehlers zwischen der ursprünglichen und der synthetisierten Sprache. Dies wird erreicht durch Maximieren des Ausdrucks:
    Figure 00360001
    wobei Tgs(n) das Sollsignal ist und yk(n) die vergangene gefilterte Anregung bei der Verzögerung k ist (vergangene Anregung, gefaltet mit h(n)). Die Faltung yk(n) wird für die erste Verzögerung tmin im Suchbereich berechnet, und für die anderen Verzögerungen im Suchbereich k = tmin + 1, ..., tmax unter Verwendung der rekursiven Beziehung aktualisiert: yk(n) = yk-1(n – 1) + u(–)h(n)wobei u(n), n = –(143 + 11) bis 39 der Anregungspuffer ist.
  • Es ist zu beachten, dass in der Durchsuchungsstufe die Abtastwerte u(n), n = 0 bis 39 nicht verfügbar sind und für Schrittverzögerungen kleiner als 40 benötigt werden. Um die Durchsuchung zu vereinfachen, wird das LP-Residuum nach u(n) kopiert, um die Beziehung in den Berechnungen für alle Verzögerungen gültig zu machen. Sobald die optimale Ganzzahlschrittverzögerung bestimmt ist, werden die Bruchteile, wie oben definiert, um diese ganze Zahl getestet. Die Bruchteilschrittdurchsuchung wird durchgeführt durch Interpolieren der normalisierten Korrelation und Suche nach deren Maximum.
  • Sobald die Bruchteilschrittverzögerung bestimmt ist, wird der adaptive Codebuchvektor v(n) berechnet durch Interpolieren der vergangenen Anregung u(n) bei der gegebenen Phase (Bruchteil). Die Interpolationen werden durchgeführt unter Verwendung zweier FIR-Filter (Hamminggefensterte sinc-Funktionen), eines für die Interpolation des Ausdrucks in den Berechnungen, um die Bruchteilschrittverzögerung zu finden, und das andere für die Interpolation der vergangenen Anregung, wie vorher beschrieben worden ist. Der Verstärkungsfaktor des adaptiven Codebuchs gp ist vorübergehend anschließend gegeben durch:
    Figure 00360002
    begrenzt durch 0 < gp < 1,2, wobei y(n) = v(n)*h(n) der gefilterte adaptive Codebuchvektor ist (Nullzustandsantwort von H(z)W(z) auf v(n)). Der Verstärkungsfaktor des adaptiven Codebuchs könnte aufgrund einer verknüpften Optimierung der Verstärkungsfaktoren, einer Verstärkungsfaktornormalisierung und einer Glättung erneut modifiziert werden. Der Ausdruck y(n) wird hier auch mit Cp(n) bezeichnet.
  • Mit herkömmlichen Lösungsansätzen kann die Schrittverzögerungs-Maximierungskorrelation zum Zweifachen oder Mehrfachen der Richtigen führen. Somit wird mit solchen herkömmlichen Lösungsansätzen der Kandidat mit kürzerer Schrittverzögerung bevorzugt durch Gewichten der Korrelationen der verschiedenen Kandidaten mit konstanten Gewichtungskoeffizienten. Manchmal korrigiert dieser Lösungsansatz nicht die doppelte oder dreifache Schrittverzögerung, da die Gewichtungskoeffizienten nicht aggressiv genug sind, oder kann zu einer Halbierung der Schrittverzögerung führen, aufgrund von starken Gewichtungskoeffizienten.
  • In der vorliegenden Ausführungsform werden diese Gewichtungskoeffizienten adaptiv durch Prüfen, ob der vorliegende Kandidat in der Nachbarschaft der vorangehenden Schrittverzögerungen liegt (wenn die vorangehenden Rahmen stimmhaft sind), und ob der Kandidat mit kürzerer Verzögerung in der Nachbarschaft des Wertes liegt, der erhalten wird durch Dividieren der längeren Verzögerung (die die Korrelation maximiert) durch eine ganze Zahl.
  • Um die Wahrnehmungsqualität zu verbessern, wird ein Sprachklassifizierer verwendet, um die Durchsuchungsprozedur des festen Codebuches (wie durch die Blöcke 275 und 279 gezeigt) zu leiten und um die Verstärkungsfaktornormalisierung zu steuern (wie im Block 401 der 4 gezeigt ist). Der Sprachklassifizierer dient zum Verbessern der Hintergrundrauschfähigkeit für die Codierer mit niedrigerer Bitrate, und zum Erhalten eines schnellen Anlaufs der Rauschpegelschätzung. Der Sprachklassifizierer unterscheidet stationäre rauschähnliche Segmente von Segmenten von Sprache, Musik oder tonartigen Signalen, nichtstationärem Rauschen und dergleichen.
  • Die Sprachklassifikation wird in zwei Schritten durchgeführt. Eine anfängliche Klassifizierung (speech_mode) wird erhalten auf der Grundlage des modifizierten Eingangssignals. Die endgültige Klassifizierung (exc_mode) wird erhalten aus der anfänglichen Klassifizierung und dem Residuumsignal, nachdem der Schrittbeitrag entfernt worden ist. Die zwei Ausgaben von der Sprachklassifizierung sind der Anregungsmodus exc_mode und der Parameter βsub(n), der verwendet wird, um die Glättung der Verstärkungsfaktoren auf Unterrahmenbasis zu steuern.
  • Die Sprachklassifikation wird verwendet, um den Codierer entsprechend den Eigenschaften des Eingangssignals zu leiten, und muss nicht zum Decodierer übertragen werden. Somit bleiben die Bitzuweisung, die Codebücher und die Decodierung gleich, unabhängig von der Klassifizierung. Der Codierer hebt die für die Wahrnehmung wichtigen Merkmale des Eingangssignals auf Unterrahmenbasis an durch Anpassen der Codierung in Reaktion auf solche Merkmale. Es ist wichtig, zu beachten, dass eine Fehlklassifikation nicht zu katastrophalen Sprachqualitätsbeeinträchtigungen führt. Im Gegensatz zu VAD 235 ist der Sprachklassifizierer, der innerhalb des Blocks 279 (2) identifiziert ist, für eine optimale Wahrnehmungsqualität dafür ausgelegt, etwas aggressiver zu sein.
  • Der anfängliche Klassifizierer (speech_classifier) weist adaptive Schwellenwerte auf und wird in sechs Schritten ausgeführt:
    • 1. Anpassen der Schwellen:
      Figure 00390001
    • 2. Berechnen der Parameter: Schrittkorrelation:
      Figure 00390002
      laufender Mittelwert der Schrittkorrelation: ma_cp(n) = 0.9·ma_cp(n – 1) + 0.1·cp Maximum der Signalamplitude im aktuellen Schrittzyklus: max(n) = max{|s ~(i)|, i = start, ..., L_SF – 1}wobei start = min{L_SF – lag, 0} Summe der Signalamplituden im aktuellen Schrittzyklus:
      Figure 00400001
      Maß des relativen Maximums:
      Figure 00400002
      Maximum der Langzeitsumme:
      Figure 00400003
      Maximum in Gruppen von drei Unterrahmen für die vergangenen 15 Unterrahmen: max_group(n, k) = max{max(n – 3·(4 – k) – j), j = 0, ..., 2},Gruppenmaximum zu Minimum der vorangehenden vier Gruppenmaxima:
      Figure 00400004
      Steigung von fünf Gruppenmaxima:
      Figure 00400005
    • 3. Klassifizieren des Unterrahmens:
      Figure 00410001
    • 4. Prüfen auf Änderung im Hintergrundrauschpegel, d. h. Rücksetzung erforderlich: Prüfen auf Verringerung des Pegels:
      Figure 00410002
      Prüfen auf Erhöhung des Pegels:
      Figure 00410003
    • 5. Aktualisieren des laufenden Mittelwertes des Maximums von Klasse-1-Segmenten, d. h. stationärem Rauschen:
      Figure 00420001
    • 6. Aktualisieren des laufenden Mittelwertes des Maximums von Klasse-2-Segmenten, d. h. Sprache, Musik, tonartige Signale, nichtstationäres Rauschen und dergleichen, fortgesetzt von oben:
      Figure 00420002
  • Der endgültige Klassifizierer (exc_preselect) stellt die endgültige Klassifizierung ext_mode und den auf dem Unterrahmen basierenden Glättungsparameter βsub(n) zur Verfügung. Der weist drei Schritte auf:
    • 1. Berechnen der Parameter: Maximale Amplitude der idealen Anregung im aktuellen Unterrahmen: maxres2(n) = max{|res2(i)|, i = 0, ..., L_SF – 1Maß des relativen Maximums:
      Figure 00430001
    • 2. Klassifizieren des Unterrahmens und Berechnung der Glättung:
      Figure 00430002
    • 3. Aktualisieren des laufenden Mittelwertes des Maximums:
      Figure 00440001
  • Wenn dieser Prozess abgeschlossen ist, stehen die auf dem Unterrahmen basierende endgültige Klassifizierung exc_mode und der Glättungsparameter βsub(n) zur Verfügung.
  • Um die Qualität der Durchsuchung des festen Codebuches 261 zu verbessern, wird das Sollsignal Tg(n) erzeugt durch vorübergehendes Reduzieren des LTP-Beitrags mit einem Versterkungsfaktor Gr: Tg(n) = Tgs(n) – Gr*gp*Ya(n), n = 0, 1, ..., 39wobei Tgs(n) das ursprüngliche Sollsignal 253 ist, Ya(n) das gefilterte Signal vom adaptiven Codebuch ist, gp der LTP-Verstärkungsfaktor für den ausgewählten adaptiven Codebuchvektor ist, wobei der Verstärkungsfaktor entsprechend dem normalisierten LTP-Verstärkungsfaktor Rp und der Bitrate bestimmt wird:
    Figure 00440002
    Figure 00450001
    und wobei der normalisierte LTP-Verstärkungsfaktor Rp definiert ist als:
    Figure 00450002
  • Ein weiterer Faktor, der beim Steuerblock 275 während der Durchführung der Durchsuchung des festen Codebuches und beim Block 401 (4) während der Verstärkungsfaktornormalisierung berücksichtigt wird, ist der Rauschpegel +")", der gegeben ist durch:
    Figure 00450003
    wobei Es die Energie des aktuellen Eingangssignals einschließlich Hintergrundrauschen ist und En ein laufender mittlerer Energiewert des Hintergrundrauschens ist. En wird nur dann aktualisiert, wenn das Eingangssignal wie folgt als Hintergrundrauschen festgestellt wird:
    wenn (erster Hintergrundrauschrahmen ist wahr) En = 0,75Es;sonst wenn (Hintergrundrauschrahmen ist wahr) En = 0,75En_m + 0,25Es;wobei En_m die letzte Schätzung der Hintergrundrauschenergie ist.
  • Für jeden Bitratenmodus besteht das feste Codebuch 261 (2) zwei oder mehr Teilcodebüchern, die mit unterschiedlicher Struktur aufgebaut sind. Zum Beispiel enthalten in der vorliegenden Ausführungsform bei höheren Raten alle Teilcodebücher nur Impulse. Bei niedrigeren Bitraten ist eines der Teilcodebücher mit Gaußschem Rauschen belegt. Für die niedrigeren Bitraten (z. B. 6,65, 5,8, 4,55 kbps) zwingt der Sprachklassifizierer den Codierer, aus dem Gaußschen Teilcodebuch im Fall stationärer rauschartiger Unterrahmen exc_mode = 0 auszuwählen. Für exc_mode = 1 werden alle Teilcodebücher unter Verwendung einer adaptiven Gewichtung durchsucht.
  • Für die Impuls-Teilcodebücher wird ein schneller Durchsuchungslösungsansatz verwendet, um ein Teilcodebuch auszuwählen und das Codewort für den aktuellen Unterrahmen auszuwählen. Die gleiche Durchsuchungsroutine wird für alle Bitratenmodi mit unterschiedlichen Eingangsparametern verwendet.
  • Genauer wird das Langzeitsteigerungsfilter Fp(z) verwendet, um die ausgewählte Impulsanregung durchzufiltern. Das Filter ist definiert als Fp(z) = 1/(1 – βz–T), wobei T der ganzzahlige Anteil der Schrittverzögerung in der Mitte des aktuellen Unterrahmens ist, und β der Schrittverstärkungsfaktor des vorangehenden Unterrahmens ist, begrenzt durch [0,2, 1,0]. Vor der Codebuchdurchsuchung enthält die Impulsantwort h(n) das Filter Fp(z).
  • Für die Gaußschen Teilcodebücher wird eine spezielle Struktur verwendet, um die Speicheranforderungen und die Berechnungskomplexität zu verringern. Ferner wird keine Schrittsteigerung auf die Gaußschen Teilcodebücher angewendet.
  • Es gibt zwei Arten von Impuls-Teilcodebüchern in der vorliegenden AMR-Codierer-Ausführungsform. Alle Impulse weisen die Amplituden +1 oder –1 auf. Jeder Impuls weist null, eins, zwei, drei oder vier Bits auf, um die Impulsposition zu codieren. Die Vorzeichen einiger Impulse werden zum Codierer übertragen, wobei ein Bit ein Vorzeichen codiert. Die Vorzeichen der anderen Impulse werden in einer Weise ermittelt, die sich auf die codierten Vorzeichen und deren Impulspositionen bezieht.
  • In der ersten Art von Impuls-Teilcodebuch weist jeder Impuls drei oder vier Bits auf, um die Impulsposition zu codieren. Die möglichen Orte einzelner Impulse werden definiert durch zwei grundsätzliche nicht-regelmäßige Spuren und anfängliche Phasen: POS(np, i) = TRACK(mp, i) + PHAS(np, phas_mode),wobei i = 0, 1, ..., 7 oder 15 (entsprechend drei oder vier Bits zum Codieren der Position) der mögliche Positionsindex ist, np = 0, ..., Np – 1 (Np ist die Gesamtzahl der Impulse) die verschiedene Impulse unterscheidet, mp = 0 oder 1 zwei Spuren definiert, und phase_mode = 0 oder 1 zwei Phasenmodi spezifiziert.
  • Für drei Bits zum Codieren der Impulsposition sind die zwei grundsätzlichen Spuren:
    {TRACK(0, i)} = {0, 4, 8, 12, 18, 24, 30, 36}, und
    {TRACK(1, i)} = {0, 6, 12, 18, 22, 26, 30, 34}.
  • Wenn die Position jedes Impulses mit vier Bits codiert ist, sind die grundsätzlichen Spuren:
    {TRACK(0, i)} = {0, 2, 4, 6, 8, 10, 12, 14, 17, 20, 23, 26, 29, 32, 35, 38}, und
    {TRACK(1, i)} = {0, 3, 6, 9, 12, 15, 18, 21, 23, 25, 27, 29, 31, 33, 35, 37},
  • Die anfängliche Phase jedes Impulses ist fixiert als: PHAS(np, 0) = modulus(np/MAXPHAS) PHAS(np, 1) = PHAS(Np – 1 – np, 0)wobei MAXPHAS der maximale Phasenwert ist.
  • Für irgendein Impuls-Teilcodebuch wird wenigstens das erste Vorzeichen für den ersten Impuls SIGN(np), np = 0, codiert, da das Verstärkungsfaktorvorzeichen eingebettet ist. Angenommen, Nsing ist die Anzahl der Impulse mit codierten Vorzeichen; d. h. SIGN(np) für np < Nsign ≤ Np ist codiert, während SIGN(np) für np ≥ Nsign nicht codiert ist. Im Allgemeinen können alle Vorzeichen in der folgenden Weise bestimmt werden: SIGN(np) = –SIGN(np – 1), für np ≥ Nsign,da die Impulspositionen unter Verwendung eines Iterationsansatzes von np = 0 bis np = Np – 1 sequentiell durchsucht werden. Wenn zwei Impulse in der gleichen Spur lokalisiert werden, während nur das Vorzeichen des ersten Impulses in der Spur codiert ist, hängt das Vorzeichen des zweiten Impulses von seiner Position relativ zum ersten Impuls ab. Wenn die Position des zweiten Impulses kleiner ist, weist es ein entgegengesetztes Vorzeichen auf, während es ansonsten das gleiche Vorzeichen wie der erste Impuls aufweist.
  • In der zweiten Art von Impuls-Teilcodebuch enthält der Innovationsvektor zehn vorzeichenbehaftete Impulse. Jeder Impuls weist null, eins oder zwei Bits auf, um die Impulsposition zu codieren. Ein Unterrahmen mit der Größe von 40 Abtastwerten wird in zehn kleine Segmente mit der Länge von vier Abtastwerten unterteilt. Zehn Impulse werden jeweils in zehn Segmenten lokalisiert. Da die Position jedes Impulses auf innerhalb eines Segments beschränkt ist, sind die möglichen Orte für die mit np nummerierten Impulse {4np}, {4np, 4np + 2} oder {4np, 4np + 1, 4np + 2, 4np + 3}, jeweils für null, eins oder zwei Bits zum Codieren der Impulsposition. Aller Vorzeichen für alle zehn Impulse werden codiert.
  • Das feste Codebuch 261 wird durchsucht durch Minimieren des mittleren quadratischen Fehlers zwischen der gewichteten eingegebenen Sprache und der gewichteten synthetisierten Sprache. Das für die LTP-Anregung verwendete Sollsignal wird aktualisiert durch Subtrahieren des adaptiven Codebuchbeitrags. Das heißt: x2(n) = x(n) – ĝpy(n), n = 0, ..., 39,wobei y(n) = v(n)*h(n) der gefilterte adaptive Codebuchvektor ist und ĝp der modifizierte (reduzierte) LTP-Verstärkungsfaktor ist.
  • Wenn ck der Codevektor beim Index k aus dem festen Codebuch ist, dann wird das Impulscodebuch durchsucht durch maximieren des Ausdrucks:
    Figure 00480001
    wobei d = Htx2 die Korrelation zwischen dem Sollsignal x2(n) und der Impulsantwort h(n) ist, H die untere Toepliz-Faltung-Dreiecksmatrix mit der Diagonalen h(0) und den unteren Diagonalen h(1), ..., h(39) ist, und Φ = HtH die Matrix der Korrelationen von h(n) ist. Der Vektor d (rückwärts gefiltertes Ziel) und die Matrix Φ werden vor der Codebuchdurchsuchung berechnet. Die Elemente des Vektors D werden berechnet durch:
    Figure 00490001
    wobei die Elemente der symmetrischen Matrix Φ berechnet werden durch:
    Figure 00490002
  • Die Korrelation im Zähler ist gegeben durch:
    Figure 00490003
    wobei mi die Position des i-ten Impulses ist und ϑ dessen Amplitude ist. Aus Komplexitätsgründen werden alle Amplituden {ϑi} auf +1 oder –1 gesetzt; d. h. ϑi = SIGN(i), i = np = 0, ..., Np – 1.
  • Die Energie im Nenner ist gegeben durch:
    Figure 00490004
  • Um die Durchsuchungsprozedur zu vereinfachen, werden die Impulsvorzeichen unter Verwendung des Signals b(n) voreingestellt, welches eine gewichtete Summe des normalisierten Vektors d(n) und des normalisierten Sollsignals von x2(n) im Residuumbereich res2(n) ist:
    Figure 00490005
  • Wenn das Vorzeichen des i-ten Impulses (i = np), der bei mi angeordnet ist, codiert wird, wird es auf das Vorzeichen des Signals bn bei dieser Position gesetzt, d. h. SIGN(i) = sign[b(mi)].
  • In der vorliegenden Ausführungsform weist das feste Codebuch 261 zwei oder drei Teilcodebücher für jede der Codierungsbitraten auf. Selbstverständlich können in anderen Ausführungsformen viel mehr verwendet werden. Selbst mit mehreren Teilcodebüchern ist jedoch die Durchsuchung des festen Codebuches 261 unter Verwendung der folgenden Prozedur sehr schnell. In einem ersten Suchdurchlauf durchsucht die Codiererverarbeitungsschaltung die Impulspositionen sequentiell vom ersten Impuls (np = 0) bis zum letzten Impuls (np = Np – 1) mittels Betrachtung des Einflusses aller existierender Impulse.
  • In einem zweiten Suchdurchlauf korrigiert die Codiererverarbeitungsschaltung jede Impulsposition sequentiell vom ersten Impuls zum letzten Impuls durch Überprüfen des Kriteriumwertes Ak, der von allen Impulsen beigetragen wird, für alle möglichen Orte des aktuellen Impulses. In einem dritten Durchlauf wird die Funktionalität des zweiten Suchdurchlaufes ein letztes Mal wiederholt. Selbstverständlich können weitere Durchläufe verwendet werden, wenn die zusätzliche Komplexität sich nicht verbietet.
  • Der obige Durchsuchungsansatz erweist sich als sehr effizient, da nur eine Position eines Impulses verändert wird, was zu Änderungen in nur einem Ausdruck im Kriteriumsnenner C und einigen Ausdrücken im Kriteriumszähler ED für jede Berechnung von Ak führt. Als Beispiel sei ein Impuls-Teilcodebuch angenommen, das mit vier Impulsen und drei Bits pro Impuls zum Codieren der Position konstruiert ist. Es müssen nur 96 (4 Impulse × 23 Positionen pro Impuls × 3 Durchläufe = 96) vereinfachte Berechnungen des Kriteriums Ak durchgeführt werden.
  • Um außerdem Komplexität einzusparen, wird gewöhnlich eines der Teilcodebücher im festen Codebuch 261 nach Beenden des ersten Suchdurchlaufs ausgewählt. Weitere Suchdurchläufe werden nur mit dem ausgewählten Teilcodebuch durchgeführt. In anderen Ausführungsformen kann eines der Teilcodebücher nur nach dem zweiten Suchdurchlauf oder danach ausgewählt werden, sollten die Verarbeitungsbetriebsmittel dies erlauben.
  • Das Gaußsche Codebuch ist so strukturiert, dass es die Speicheranforderung und die Berechnungskomplexität reduziert. Es wird eine Kammstruktur mit zwei Basisvektoren verwendet. In der Kammstruktur sind die Basisvektoren orthogonal, was eine Durchsuchung mit niedriger Komplexität erleichtert. Im AMR-Codierer belegt der erste Basisvektor die geraden Abtastpositionen (0, 2, ..., 38), während der zweite Basisvektor die ungeraden Abtastpositionen belegt (1, 3, ..., 39).
  • Das gleiche Codebuch wird für beide Basisvektoren verwendet, wobei die Länge der Codebuchvektoren zwanzig Abtastwerte (die Hälfte der Unterrahmengröße) beträgt.
  • Alle Raten (6,65, 5,8 und 4,55 kbps) verwenden das gleiche Gaußsche Codebuch. Das Gaußsche Codebuch CBGauss weist nur zehn Einträge auf, so dass die Speicheranforderung gleich 1020 = 200 16-Bit-Wörter beträgt. Aus den zehn Einträgen werden nicht weniger als 32 Codevektoren erzeugt. Ein Index idxδ auf einen Basisvektor 22 belegt den entsprechenden Teil eines Codevektors cidxδ in der folgenden Weise:
    Figure 00510001
    wobei der Tabelleneintrag I und die Verschiebung τ aus dem Index idxδ berechnet werden entsprechend: τ = trunc{idxδ/10} l = idxδ – 10·τund wobei δ für den ersten Basisvektor gleich 0 ist und für den zweiten Basisvektor gleich 1 ist. Außerdem wird auf jeden Basisvektor ein Vorzeichen angewendet.
  • Grundsätzlich kann jeder Eintrag in der Gaußschen Tabelle nicht weniger als zwanzig eindeutige Vektoren erzeugen, alle mit der gleichen Energie, aufgrund der zirkulären Verschiebung. Die zehn Einträge sind alle normalisiert, so dass sie eine identische Energie von 0,5 aufweisen, d. h.
    Figure 00510002
  • Das bedeutet, dass dann, wenn beide Basisvektoren ausgewählt worden sind, der kombinierte Codevektor cidx0,idx1 eine Energieeinheit aufweist und somit der endgültige Anregungsvektor aus dem Gaußschen Teilcodebuch eine Energieeinheit aufweist, da keine Schrittsteigerung auf Kandidatenvektoren aus dem Gaußschen Teilcodebuch angewendet wird.
  • Die Durchsuchung des Gaußschen Codebuches nutzt die Struktur des Codebuches, um eine Suche mit geringer Komplexität zu erleichtern. Anfangs werden die Kandidaten für die zwei Basisvektoren unabhängig auf der Grundlage der idealen Anregung res2 gesucht. Für jeden Basisvektor werden die zwei besten Kandidaten zusammen mit den entsprechenden Vorzeichen gemäß dem mittleren quadratischen Fehler gefunden. Dies wird beispielhaft verdeutlicht durch die Gleichungen zum Auffinden des besten Kandidatenindex idxδ und dessen Vorzeichen sidxδ:
    Figure 00520001
    wobei NGauss die Anzahl der Kandidateneinträge für den Basisvektor ist. Die übrigen Parameter sind oben erläutert worden. Die Gesamtzahl von Einträgen im Gaußschen Codebuch beträgt 2·2·NGauss 2. Die feine Durchsuchung minimiert den Fehler zwischen der gewichteten Sprache und der gewichteten synthetisierten Sprache unter Berücksichtigung der möglichen Kombination von Kandidaten für die zwei Basisvektoren anhand der Vorauswahl. Wenn Ck0,k1 der Gaußsche Codevektor aus den Kandidatenvektoren ist, die durch die Indizes k0 und k1 repräsentiert werden, und den entsprechenden Vorzeichen für die zwei Basisvektoren, dann wird der endgültige Gaußsche Codevektor ausgewählt durch Maximieren des Ausdrucks:
    Figure 00520002
    über die Kandidatenvektoren. d = Htx2 ist die Korrelation zwischen dem Sollsignal x2(n) und der Impulsantwort h(n) (ohne die Schrittsteigerung), wobei H die untere Toepliz-Faltung-Dreiecksmatrix mit der Diagonalen h(0) und den unteren Diagonalen h(1, ...), h(39) ist, und wobei Φ = htH die Matrix der Korrelationen von h(n) ist.
  • Genauer sind in der vorliegenden Ausführungsform im festen Codebuch 231 mit 31 Bits im Codierungsmodus mit 11 kbps zwei Teilcodebücher enthalten (oder werden verwendet). Im ersten Teilcodebuch enthält der Innovationsvektor acht Impulse. Jeder Impuls weist drei Bits zum Codieren der Impulsposition auf. Die Vorzeichen der sechs Impulse werden zum Decodierer mit sechs Bits übertragen. Das zweite Teilcodebuch enthält Innovationsvektoren, die zehn Impulse umfassen. Zwei Bits für jeden Impuls werden zugewiesen, um die Impulsposition zu codieren, die auf eines der zehn Segmente begrenzt ist. Zehn Bits werden für zehn Vorzeichen der zehn Impulse verwendet. Die Bitzuweisung für die Teilcodebücher, die im festen Codebuch 261 verwendet wird, kann wie folgt zusammengefasst werden:
    Teilcodebuch 1: 8 Impulse × 3 Bits/Impuls + 6 Vorzeichen = 30 Bits
    Teilcodebuch 2: 10 Impulse × 2 Bits/Impuls + 10 Vorzeichen = 30 Bits
  • Eines der zwei Codebücher wird beim Block 275 (2) gewählt durch Bevorzugen des zweiten Teilcodebuches unter Verwendung einer adaptiven Gewichtung, die angewendet wird, wenn der Kriteriumswert F1 vom ersten Teilcodebuch mit dem Kriteriumswert F2 vom zweiten Teilcodebuch verglichen wird:
    wenn (Wc·F1 > F2), wird das erste Teilcodebuch gewählt,
    sonst wird das zweite Teilcodebuch gewählt,
    wobei die Gewichtung 0 < Wc ≤ 1 definiert ist als:
    Figure 00530001
    PNSR ist das Verhältnis von Hintergrundrauschen zu Sprachsignal (d. h. der "Rauschpegel" im Block 279), Rp ist der normalisierte LTP-Verstärkungsfaktor, und Psharp ist der Schärfeparameter der idealen Anregung res2(n) (d. h. die "Schärte" im Block 279).
  • Im Modus mit 8 kbps sind zwei Teilcodebücher im festen Codebuch 261 mit 20 Bits enthalten. Im erste Teilcodebuch enthält der Innovationsvektor vier Impulse. Jeder Impuls besitzt vier Bits zum Codieren der Impulsposition. Die Vorzeichen der drei Impulse werden zum Decodierer mit drei Bits übertragen. Das zweite Teilcodebuch enthält Innovationsvektoren mit zehn Impulsen. Ein Bit für jeden von neun Impulsen ist zugewiesen zum Codieren der Impulsposition, die auf eines der zehn Segmente beschränkt ist. Zehn Bits werden für zehn Vorzeichen der zehn Impulse verwendet. Die Bitzuweisung für das Teilcodebuch kann wie folgt zusammengefasst werden:
    Teilcodebuch 1: 4 Impulse × 4 Bits/Impuls + 3 Vorzeichen = 19 Bits
    Teilcodebuch 2: 9 Impulse × 1 Bit/Impuls + 1 Impuls × 0 Bit + 10 Vorzeichen = 19 Bits
  • Eines der zwei Teilcodebücher wird ausgewählt durch Bevorzugen des zweiten Teilcodebuchs unter Verwendung einer adaptiven Gewichtung, die angewendet wird, wenn der Kriteriumwert F1 vom ersten Teilcodebuch mit dem Kriteriumwert F2 vom zweiten Teilcodebuch verglichen wird, wie im Modus mit 11 kbps. Die Gewichtung 0 < Wc ≤ 1 ist definiert als: Wc = 1.0 – 0.6PNSR(1.0 – 0.5Rp)·min{Psharp + 0.5, 1.0}.
  • Der Modus mit 6,65 kbps arbeitet unter Verwendung der Langzeitvorverarbeitung (PP) oder der traditionellen LTP. Ein Impuls-Teilcodebuch mit 18 Bits wird im PP-Modus verwendet. Es werden insgesamt 13 Bits für drei Teilcodebücher zugewiesen, wenn im LTP-Modus gearbeitet wird. Die Bitzuweisung für die Teilcodebücher kann wie folgt zusammengefasst werden:
    PP-Modus:
    Teilcodebuch: 5 Impulse × 3 Bits/Impuls + 3 Vorzeichen = 18 Bits
    LTP-Modus:
    Teilcodebuch 1: 3 Impulse × 3 Bits/Impuls + 3 Vorzeichen = 12 Bits, phase_mode = 1,
    Teilcodebuch 2: 3 Impulse × 3 Bits/Impuls + 2 Vorzeichen = 11 Bits, phase_mode = 0,
    Teilcodebuch 3: Gaußsches Teilcodebuch mit 11 Bits.
  • Eines der drei Teilcodebücher wird ausgewählt durch Bevorzugen des Gaußschen Teilcodebuches, wenn mit dem LTP-Modus durchsucht wird. Es wird eine adaptive Gewichtung angewendet, wenn der Kriteriumwert von den zwei Teilcodebüchern mit dem Kriteriumwert aus dem Gaußschen Teilcodebuch verglichen wird. Die Gewichtung 0 < Wc ≤ 1 ist definiert als:
    Figure 00550001
  • Der Codierungsmodus mit 5,8 kbps arbeitet nur mit der Langzeitvorverarbeitung (PP). Es werden insgesamt 14 Bits für drei Teilcodebücher zugewiesen. Die Bitzuweisung für die Teilcodebücher kann wie folgt zusammengefasst werden:
    Teilcodebuch 1: 4 Impulse × 3 Bits/Impuls + 1 Vorzeichen = 13 Bits, phase_mode = 1,
    Teilcodebuch 2: 3 Impulse × 3 Bits/Impuls + 3 Vorzeichen = 12 Bits, phase_mode = 0,
    Teilcodebuch 3: Gaußsches Teilcodebuch mit 12 Bits.
  • Eines der drei Teilcodebücher wird ausgewählt, wobei das Gaußsche Teilcodebuch mit adaptiver Gewichtung bevorzugt wird, die angewendet wird, wenn der Kriteriumwert von den zwei Impuls-Teilcodebüchern mit dem Kriteriumwert vom Gaußschen Codebuch verglichen wird. Die Gewichtung 0 < Wc ≤ 1 ist definiert als:
    Figure 00550002
  • Der Codierungsmodus mit 4,55 kbps arbeitet nur mit der Langzeitvorverarbeitung (PP). Es werden insgesamt 10 Bits für drei Teilcodebücher zugewiesen. Die Bitzuweisung für die Teilcodebücher kann wie folgt zusammengefasst werden:
    Teilcodebuch 1: 2 Impulse × 4 Bits/Impuls + 1 Vorzeichen = 9 Bits, phase_mode = 1,
    Teilcodebuch 2: 2 Impulse × 3 Bits/Impuls + 2 Vorzeichen = 8 Bits, phase_mode = 0,
    Teilcodebuch 3: Gaußsches Teilcodebuch mit 8 Bits.
  • Eines der drei Teilcodebücher wird ausgewählt, wobei das Gaußsche Teilcodebuch mit adaptiver Gewichtung bevorzugt wird, die angewendet wird, wenn der Kriteriumwert von den zwei Impuls-Teilcodebüchern mit dem Kriteriumwert vom Gaußschen Codebuch verglichen wird. Die Gewichtung 0 < Wc ≤ 1 ist definiert als:
    Figure 00560001
  • Für die Codierungsmodi mit 4,55, 5,8, 6,65 und 8,0 kbps Bitrate wird eine Verstärkungsfaktor-Reoptimierungsprozedur durchgeführt, um die adaptiven und festen Codebuchverstärkungsfaktoren gp und gc verknüpft zu optimieren, wie in 3 gezeigt ist. Die optimalen Verstärkungsfaktoren werden aus den folgenden Korrelationen erhalten, gegeben durch:
    Figure 00560002
    wobei R1 = < C p, T gs>, R2 = <C c, C c>, R3 = <C p, C c>, R4 = <C c, T gs> und R5 = <C p, C p>, und C c , C p , T gs , die gefilterte Anregung des festen Codebuches, die gefilterte Anregung des adaptiven Codebuches und das Sollsignal für die Durchsuchung des adaptiven Codebuches sind.
  • Für die Codierung mit 11 kbps Bitrate bleibt der Verstärkungsfaktor des adaptiven Codebuches gp der gleiche wie derjenigen, der in der Geschlossenschleife-Schrittdurchsuchung berechnet worden ist. Der Verstärkungsfaktor des festen Codebuches gc wird erhalten als:
    Figure 00560003
    wobei R6 = <C c, T g> und T g = T gsg p C p .
  • Der ursprüngliche CELP-Algorithmus beruht auf dem Prinzip der Analyse mittels Synthese (Wellenformabgleich). Bei niedriger Bitrate, oder wenn rauschhafte Sprache codiert wird, wird der Wellenformabgleich schwierig, so dass die Verstärkungsfaktoren auf und ab gehen, was häufig zu unnatürlichen Geräuschen führt. Um dieses Problem zu kompensieren, müssen die in der Analyse mittels Synthese in geschlossener Schleife erhaltenen Verstär kungsfaktoren manchmal modifiziert oder normalisiert werden.
  • Es gibt zwei grundsätzliche Verstärkungsfaktornormalisierungs-Lösungsansätze. Einer wird als Offenschleife-Lösungsansatz bezeichnet, der die Energie der synthetisierten Anregung auf die Energie des unquantisierten Residuumsignals normalisiert. Ein weiterer ist der Geschlossenschleife-Lösungsansatz, mit dem die Normalisierung unter Berücksichtigung der Wahrnehmungsgewichtung durchgeführt wird. Der Verstärkungsfaktor-Normalisierungsfaktor ist eine lineare Kombination des einen aus dem Geschlossenschleife-Lösungsansatz und des einen aus dem Offenschleife-Lösungsansatz; die Gewichtungskoeffizienten die für die Kombination verwendet werden, werden entsprechend dem LPC-Verstärkungsfaktor gesteuert.
  • Die Entscheidung, die Verstärkungsfaktornormalisierung durchzuführen, wird getroffen, wenn eine der folgenden Bedingungen erfüllt ist: (a) die Bitrate beträgt 8,0 oder 6,65 kbps, und es liegt rauschartige, stimmlose Sprache vor; (b) der Rauschpegel PNSR ist größer als 0,5; (c) die Bitrate beträgt 6,65 kbps, und der Rauschpegel PNSR ist größer als 0,2; und (d) die Bitrate beträgt 5,8 oder 4,45 kbps.
  • Die Residuumenergie Eres und die Sollsignalenergie ETgs sind jeweils definiert als:
    Figure 00570001
  • Anschließend werden die geglättete Offenschleife-Energie und die geglättete Geschlossenschleife-Energie bewertet durch:
    Figure 00580001
    wobei βsub der Glättungskoeffizient ist, der entsprechend der Klassifikation bestimmt wird. Nach Erhalten der Referenzenergie wird der Offenschleife-Verstärkungsfaktor-Normalisierungsfaktor berechnet:
    Figure 00580002
    wobei Col für die Bitrate 11,0 kbps gleich 0,8 ist, und für die anderen Bitraten Col gleich 0,7 ist, und wobei v(n) die Anregung ist: v(n) = va(n)gp + vc(n)gc, n = 0,1, ..., L_SF – 1. wobei gp und gc die unquantifizierten Verstärkungsfaktoren sind. In ähnlicher Weise ist der Geschlossenschleife-Verstärkungsfaktor-Normalisierungsfaktor gleich:
    Figure 00580003
    wobei Ccl für die Bitrate 11,0 kbps gleich 0,9 ist, für die anderen Raten Ccl gleich 0,8 ist, und y(n) das gefilterte Signal (y(n) = v(n)*h(n)) ist: y(n) = ya(n)gp + yc(n)gc, n = 0,1, ..., L_SF – 1.
  • Der endgültige Verstärkungsfaktor-Normalisierungsfaktor gf ist eine Kombination aus Cl_g und Ol_g, gesteuert in Ausdrücken eines LPC-Verstärkungsfaktorparameters CLPC,
    wenn (Sprache wahr ist oder die Rate gleich 11 kbps ist) gf = CLPCOl_g + (1 – CLPC)Cl_g gf = MAX(1.0, gf) gf = MIN(gf, 1 + CLPC)wenn (Hintergrundrauschen wahr ist und die Rate kleiner als 11 kbps ist) gf = 1.2MIN(Cl_g, Ol_g)wobei CLPC definiert ist als: CLPC = MIN(sqrt(Eres/ETgs), 0.8}/0.8
  • Sobald der Verstärkungsfaktor-Normalisierungsfaktor bestimmt ist, werden die unquantisierten Verstärkungsfaktoren modifiziert: gp = gp·gf
  • Für die Codierung mit 4,55, 5,8, 6,65 und 8,0 kbps Bitrate werden der adaptive Codebuchverstärkungsfaktor und der feste Codebuchverstärkungsfaktor unter Verwendung von 6 Bits für die Rate mit 4,55 kbps und von 7 Bits für die anderen Raten vektor-quantisiert. Die Verstärkungsfaktor-Codebuchdurchsuchung wird bewerkstelligt durch Minimieren des mittleren quadratischen gewichteten Fehlers Err zwischen dem ursprünglichen und dem rekonstruierten Sprachsignal: Err =||T gs – gp C p – gc C c||2.
  • Für die Rate mit 11,0 kbps wird eine skalare Quantisierung durchgeführt, um sowohl den adaptiven Codebuchverstärkungsfaktor gp unter Verwendung von 4 Bits als auch den festen Codebuchverstärkungsfaktor gc unter Verwendung von 5 Bits jeweils zu quantisieren.
  • Der feste Codebuchverstärkungsfaktor gc wird erhalten durch MA-Vorhersage der Energie der skalierten Anregung des festen Codebuches in der folgenden Weise. Es sei E(n) die mittlere entnommene Energie der skalierten Anregung des festen Codebuches in (dB) beim Unterrahmen n gegeben durch:
    Figure 00600001
    wobei c(i) die unskalierte Anregung des festen Codebuches ist, und Ē = 30 dB die mittlere Energie der skalierten Anregung des festen Codebuches ist.
  • Die vorhergesagte Energie ist gegeben durch:
    Figure 00600002
    wobei [b1, b2, b3, b4] = [0,68 0,58 0,34 0,19] die MA-Vorhersagekoeffizienten sind und R ^(n) der quantisierte Vorhersagefehler beim Unterrahmen n ist.
  • Die vorhergesagte Energie wird verwendet, um einen vorhergesagten festen Codebuchverstärkungsfaktor gc zu berechnen (durch Ersetzen von E(n) durch Ē(n) und gc durch g'c). Dies wird wie folgt bewerkstelligt. Zuerst wird die mittlere Energie der unskalierten Anregung des festen Codebuches berechnet als:
    Figure 00600003
    woraufhin der vorhergesagte Verstärkungsfaktor g'c erhalten wird als:
    Figure 00600004
  • Ein Korrelationsfaktor zwischen der Verstärkung gc und der geschätzten Verstärkung g'c ist gegeben durch: γ = gc/g'c.
  • Er bezieht sich ferner auf den Vorhersagefehler als: R(n) = E(n) – Ẽ(n) = 20log γ.
  • Die Codebuchsuche für die Codierungsbitraten von 4,55, 5,8, 6,65 und 8,0 kbps umfasst zwei Schritte (im ersten Schritt wird eine binäre Suche eines einzelnen Tabelleneintrags durchgeführt, der den quantisierten Vorhersagefehler repräsentiert. Im zweiten Schritt wird der Index Index_1 des optimalen Eintrags, der dem unquantisierten Vorhersagefehler im Sinne eines mittleren quadratischen Fehlers am Nächsten liegt, verwendet, um die Suche auf die zweidimensionale VQ-Tabelle zu beschränken, die den adaptiven Codebuchverstärkungsfaktor und den Vorhersagefehler repräsentiert. Unter Nutzung des Vorteils der besonderen Anordnung und Reihenfolge der VQ-Tabelle wird eine schnelle Suche unter Verwendung weniger Kandidaten um den Eintrag, auf den von Index_1 gezeigt wird, durchgeführt. Tatsächlich wird nur etwa die Hälfte der VQ-Tabelleneinträge getestet, um zum optimalen Eintrag mit dem Index_2 zu kommen. Nur Index_2 wird übertragen.
  • Für den Codierungsmodus mit 11,0 kbps Bitrate wird eine volle Durchsuchung beider skalarer Verstärkungsfaktorcodebücher verwendet, um gp und gc zu quantisieren. Für gp wird die Suche durchgeführt durch Minimieren des Fehlers Err = abs(gp – ḡp). Hingegen wird für gc die Suche durchgeführt durch Minimieren des Fehlers Err = ||T gs – ḡp C p – gc C c||2 .
  • Eine Aktualisierung der Zustände der Synthese- und Gewichtungsfilter ist erforderlich, um das Sollsignal für den nächsten Unterrahmen zu berechnen. Nachdem die zwei Verstärkungsfaktoren quantisiert worden sind, wird das Anregungssignal u(n) im vorliegenden Unterrahmen berechnet als: u(n) = ḡpv(n) + ḡcc(n), n = 0,39,wobei ḡp und ḡc jeweils die quantisierten und adaptiven festen Codebuchverstärkungsfaktoren sind, v(n) die Anregung des adaptiven Codebuches ist (interpolierte vergangene Anregung), und c(n) die Anregung des festen Codebuches ist. Der Zustand der Filter kann aktualisiert werden durch Filtern des Signals r(n)-u(n) durch die Filter 1/Ā(z) und W(z) für den Unterrahmen mit 40 Abtastwerten und Sichern der Zustände der Filter. Dies würde normalerweise drei Filterungen erfordern.
  • Ein einfacher Lösungsansatz, der nur eine Filterung erfordert, ist folgender. Die lokale synthetisierte Sprache beim Codierer ŝ(n) wird berechnet durch Filtern des Anregungssignals durch 1/Ā(z). Die Ausgabe des Filters aufgrund der Eingabe r(n)-u(n) ist äquivalent zu e(n) = s(n) – ŝ(n), so dass die Zustände des Synthesefilters 1/Ā(z) gegeben sind durch e(n), n = 0,39. Die Aktualisierung der Zustände des Filters WZ kann bewerkstelligt werden durch Filtern des Fehlersignals e(n) durch dieses Filter, um den wahrnehmungsge wichteten Fehler ew(n) zu finden. Das Signal ew(n) kann jedoch äquivalent gefunden werden durch: ew(n) = Tgs(n) – ḡpCp(n) – ḡcCc(n).
  • Die Zustände des Gewichtungsfilters werden aktualisiert durch Berechen von ew(n) für n = 30 bis 39.
  • Die Funktion des Decodierers umfasst das Decodieren der übertragenen Parameter (dLP-Parameter, adaptiver Codebuchvektor und dessen Verstärkungsfaktor, fester Codebuchvektor und dessen Verstärkungsfaktor) und das Durchführen der Synthese, um die rekonstruierte Sprache zu erhalten. Die rekonstruierte Sprache wird anschließend nachgefiltert und aufskaliert.
  • Der Decodierungsprozess wird in der folgenden Reihenfolge durchgeführt. Zuerst werden die LP-Filterparameter codiert. Die empfangenen Indizes der LSF-Quantisierung werden verwendet, um den quantisierten LSF-Vektor zu rekonstruieren. Es wird eine Interpolation durchgeführt, um vier interpolierte LSF-Vektoren zu erhalten (entsprechend den vier Unterrahmen). Für jeden Unterrahmen wird der interpolierte LSF-Vektor in den LP-Filterkoeffizientenbereich ak konvertiert, der verwendet wird, um die rekonstruierte Sprache im Unterrahmen zu synthetisieren.
  • Für die Codierungsmodi mit den Bitraten 4,55, 5,8 und 6,65 kbps (während des PP-Modus) wird der empfangene Schrittindex verwendet, um die Schrittverzögerung über dem gesamten Unterrahmen zu interpolieren. Die folgenden drei Schritte werden für jeden Unterrahmen wiederholt:
    • 1) Decodieren der Verstärkungsfaktoren: Für die Bitraten 4,55, 5,8, 6,65 und 8,0 kbps wird der empfangene Index verwendet, um den quantisierten adaptiven Codebuchverstärkungsfaktor ḡp aus der zweidimensionalen VQ-Tabelle zu finden. Der gleiche Index wird verwendet, um den Festcodebuch-Verstärkungsfaktor-Korrekturfaktor γ aus der gleichen Quantisierungstabelle zu erhalten. Der quantisierte feste Codebuchverstärkungsfaktor ḡc wird diesen Schritten folgend erhalten:
    • – die vorhergesagte Energie wird berechnet
      Figure 00620001
    • – die Energie der unskalierten Anregung des festen Codebuches wird berechnet als
      Figure 00630001
      und
    • – der vorhergesagte Verstärkungsfaktor g'(c) wird erhalten als
      Figure 00630002
      Der quantisierte feste Codebuchverstärkungsfaktor ist gegeben als c = γgc'. Für die Bitrate 11 kbps wird der empfangene adaptive Codebuchverstärkungsfaktorindex verwendet, um leicht den quantisierten adaptiven Verstärkungsfaktor ḡp aus der Quantisierungstabelle zu finden. Der empfangene feste Codebuchverstärkungsfaktorindex liefert den festen Codebuchverstärkungsfaktor-Korrekturfaktor γ'. Die Berechnung des quantisierten festen Codebuchverstärkungsfaktors ḡc folgt den gleichen Schritten wie bei den anderen Raten.
    • 2) Decodieren des adaptiven Codebuchvektors: Für Codierungsmodi mit 8,0, 11,0 und 6,65 kbps Bitrate (während LTP_mode = 1) wird der empfangene Schrittindex (adaptiver Codebuchindex) verwendet, um die ganzzahligen Anteile und Bruchanteile der Schrittverzögerung zu finden. Der adaptive Codebuchvektor v(n) wird gefunden durch Interpolieren der vergangenen Anregung u(n) (bei der Schrittverzögerung) unter Verwendung der FIR-Filter.
    • 3) Decodieren des festen Codebuchvektors: Die empfangenen Codebuchindizes werden verwendet, um den Typ des Codebuchs (Impuls oder Gauß) und entweder die Amplituden und Positionen der Anregungsimpulse oder die Basen und Vorzeichen der Gaußschen Anregung zu extrahieren. In jedem Fall ist die rekonstruierte Anregung des festen Codebuches gegeben als c(n). Wenn der ganzzahlige Anteil der Schrittverzögerung kleiner ist als die Unterrahmengröße 40 und die gewählte Anregung der Impulstyp ist, wird die Schrittschärfung angewendet. Diese verschiebt durch Modifizieren von c(n) als c(n) = c(n) + βc(n – T), wobei β der decodierte Schrittverstärkungsfaktor ḡp vom vorangehenden Unterrahmen ist, der begrenzt ist durch [0,2, 1,0].
  • Die Anregung am Eingang des Synthesefilters ist gegeben durch u(n) = ḡpv(n) + ḡcc(n), n = 0,39. Vor der Sprachsynthese wird eine Nachverar beitung der Anregungselemente durchgeführt. Dies bedeutet, dass die Gesamtanregung modifiziert wird durch Anheben des Beitrags des adaptiven Codebuchvektors:
    Figure 00640001
  • Eine adaptive Verstärkungsfaktorsteuerung (AGC) wird verwendet, um die Verstärkungsfaktordifferenz zwischen der unangehobenen Anregung u(n) und der angehobenen Anregung ū(n) zu kompensieren. Der Verstärkungsfaktor-Skalierungsfaktor η für die angehobene Anregung wird berechnet durch:
    Figure 00640002
  • Die verstärkungsskalierte angehobene Anregung ū(n) ist gegeben durch: ū'(n) = ηū(n).
  • Die rekonstruierte Sprache ist gegeben durch:
    Figure 00640003
    wobei āi die interpolierten LP-Filterkoeffizienten sind. Die synthetisierte Sprache s(n) wird anschließend über ein adaptives Nachfilter geleitet.
  • Die Nachverarbeitung umfasst zwei Funktionen: Eine adaptive Nachfilterung und eine Signal-Aufskalierung. Das adaptive Nachfilter ist eine Kaskade von drei Filtern: ein Formanten-Nachfilter und zwei Spektralverzerrungskompensationsfilter. Das Nachfilter wird bei jedem Unterrahmen von 5 ms aktualisiert. Das Formanten-Nachfilter ist gegeben durch:
    Figure 00640004
    wobei Ā(z) das empfangene quantisierte und interpolierte LP-Inversfilter ist und γn und γd das Maß der Formanten-Nachfilterung steuern.
  • Das erste Spektralverzerrungskompensationsfilter Hr1(z) kompensiert die Spektralverzerrung im Formanten-Nachfilter Hf(z) und ist gegeben durch: Hr1(z) = (1 – μz–1)wobei μ = γr1k1 ein Spektralverzerrungsfaktor ist, mit k1 als erstem Reflexionskoeffizienten, der auf der abgeschnittenen Impulsantwort hf(n) des Formanten-Nachfilters
    Figure 00650001
    berechnet wird mit:
    Figure 00650002
  • Der Nachfilterungsprozess wird wie folgt durchgeführt. Zuerst wird die synthetisierte Sprache s(n) invers gefiltert durch Ā(z/γn), um das Residuumsignal r(n) zu erzeugen. Das Signal r(n) wird mittels des Synthesefilters 1/Ā(z/γdn) gefiltert und an das erste Spektralverzerrungskompensationsfilters hr1(z) weitergeleitet, was zum nachgefilterten Sprachsignal s f(n) führt.
  • Eine adaptive Verstärkungsfaktorsteuerung (AGC) wird verwendet, um die Verstärkungsfaktordifferenz zwischen dem synthetisierten Sprachsignal s(n) und dem nachgefilterten Signal s f(n) zu kompensieren. Der Verstärkungsfaktorskalierungsfaktor γ für den vorliegenden Unterrahmen wird berechnet durch:
    Figure 00650003
  • Das verstärkungsfaktorskalierte nachgefilterte Signal s'(n) ist gegeben durch: s'(n) = β(n)s f(n)wobei β(n) von Abtastwert zu Abtastwert aktualisiert wird und gegeben ist durch: β(n) = αβ(n – 1) + (1 – α)γ wobei α ein AGC-Faktor mit einem Wert von 0,9 ist. Schließlich umfasst die Aufskalierung das Multiplizieren der nachgefilterten Sprache mit einem Faktor 2, um die Abwärtsskalierung durch 2 rückgängig zu machen, die auf das Ausgangssignal angewendet wird.
  • Die 6 und 7 sind Zeichnungen einer anderen Ausführungsform eines Sprachcodierer/Decodierers für 4 kbps, die ebenfalls verschiedene Aspekte der vorliegenden Erfindung zeigt. Genauer ist 6 ein Blockdiagramm eines Sprachcodierers 601, der entsprechend der vorliegenden Erfindung aufgebaut ist. Dieser Sprachcodierer 601 beruht auf dem Prinzip der Analyse mittels Synthese. Um eine gute Qualität bei 4 kbps zu erreichen, weicht der Sprachcodierer 601 vom strengen Wellenformanpassungskriterium der regulären CELP-Codierer ab und strebt danach, die für die Wahrnehmung wirklichen Merkmale des Eingangssignals zu erfassen.
  • Der Sprachcodierer 601 arbeitet mit einer Rahmengröße von 20 ms mit drei Unterrahmen (zwei mit 6,625 ms und einer mit 6,75 ms). Es wird eine Vorausschau von 15 ms verwendet. Die Einweg-Codierungsverzögerung des Codierer/Decodierers addiert sich auf bis zu 55 ms.
  • Beim Block 615 wird die Spektralhüllkurve durch eine LPC-Analyse zehnter Ordnung für jeden Rahmen repräsentiert. Die Vorhersagekoeffizienten werden in die Linienspektrumfrequenzen (LSFs) für die Quantisierung transformiert. Das Eingangssignal wird ohne Qualitätsverlust modifiziert, so dass es besser zum Codierungsmodell passt. Diese Verarbeitung wird als "Signalmodifikation" bezeichnet, wie durch einen Block 621 gezeigt ist. Um die Qualität des rekonstruierten Signals zu verbessern, werden für die Wahrnehmung wichtige Merkmale geschätzt und während der Codierung angehoben.
  • Das Anregungssignal für ein LPC-Synthesefilter 625 wird aus den zwei traditionellen Komponenten erstellt: 1) dem Schrittbeitrag; und 2) dem Innovationsbeitrag. Der Schrittbeitrag wird bereitgestellt durch Verwenden eines adaptiven Codebuches 627. Ein Innovationscodebuch 629 weist mehrere Teilcodebücher auf, um eine Robustheit gegenüber einem weiten Bereich von Eingangssignalen zu schaffen. Auf jeden der zwei Beiträge wird ein Verstärkungsfaktor angewendet, der multipliziert mit ihren entsprechenden Codebuchvektoren und summiert das Anregungssignal liefert.
  • Die LSFs und die Schrittverzögerung werden auf Rahmenbasis codiert, wobei die übrigen Parameter (der Innovationscodebuchindex, die Schrittverstärkung und der Innovationscodebuchverstärkungsfaktor) für jeden Unterrahmen codiert werden. Der LSF-Faktor wird unter Verwendung einer Vorhersagevektorquantisierung codiert. Die Schrittverzögerung weist einen ganzzahligen Anteil und einen Bruchanteil auf, die die Schrittperiode bilden. Die quantisierte Schrittperiode weist eine ungleichmäßige Auflösung mit höherer Dichte der quantisierten Werte bei niedrigeren Verzögerungen auf. Die Bitzuweisung für die Parameter ist in der folgenden Tabelle gezeigt.
  • Tabelle der Bitzuweisung
    Figure 00670001
  • Wenn die Quantisierung aller Parameter für einen Rahmen abgeschlossen ist, werden die Indizes multipliziert, um die 80 Bits für den seriellen Bitstrom zu bilden.
  • 7 ist ein Blockdiagramm eines Decodierers 701 mit einer Funktion, die derjenigen des Codierers der 6 entspricht. Der Decodierer 701 empfängt die 80 Bits auf Rahmenbasis von einem Demultiplexer 711. Bei Empfang der Bits prüft der Decodierer 701 das Synchronwort auf die Anzeige eines schlechten Rahmens, und entscheidet, ob die gesamten 80 Bits verworfen und eine Rahmenlöschungs-Unterschlagung angewendet werden soll. Wenn der Rahmen nicht als Rahmenlöschung deklariert wird, werden die 80 Bits auf die Parameterindizes des Codierer/Decodierers abgebildet, wobei die Parameter aus den Indizes unter Verwendung der inversen Quantisierungs schemen des Codierers der 6 decodiert werden.
  • Wenn die LSFs, die Schrittverzögerung, die Schrittverstärkungsfaktoren, die Innovationsvektoren und die Verstärkungsfaktoren für die Innovationsvektoren decodiert sind, wird das Anregungssignal über einen Block 715 rekonstruiert. Das Ausgangssignal wird synthetisiert durch Leiten des rekonstruierten Anregungssignals durch ein LPC-Synthesefilter 721. Um die Wahrnehmungsqualität des rekonstruierten Signals zu verbessern, wird sowohl eine kurzzeitige als auch eine langzeitige Nachverarbeitung beim Block 731 angewendet.
  • Bezüglich der Bitzuweisung des Codierer/Decodierers mit 4 kbps (wie in der vorherigen Tabelle gezeigt) werden die LSFs und die Schrittverzögerung mit 21 bzw. 8 Bits pro 20 ms quantifiziert. Obwohl die drei Unterrahmen eine unterschiedliche Größe aufweisen, werden die restlichen Bits gleichmäßig unter diesen zugewiesen. Somit wird der Innovationsvektor mit 13 Bits pro Unterrahmen quantifiziert. Dies summiert sich auf insgesamt 80 Bits pro 20 ms, äquivalent zu 4 kbps.
  • Die geschätzten Komplexitätszahlen für den vorgeschlagenen Codierer/Decodierer mit 4 kbps sind in der folgenden Tabelle aufgelistet. Alle Zahlen gelten unter der Annahme, dass der Codierer/Decodierer auf kommerziell erhältlichen 16-Bit-Festkomma-DSPs im Vollduplexmodus implementiert ist. Alle Speicherzahlen gelten unter der Annahme von 16-Bit-Wörtern, wobei die Komplexitätsschätzungen auf den Fließkomma-C-Quellcode des Codierer/Decodierers beruhen.
  • Tabelle der Komplexitätsschätzungen
    Figure 00680001
  • Der Decodierer 701 umfasst eine Decodiererverarbeitungsschaltung, die im Allgemeinen entsprechend einer Softwaresteuerung arbeitet. In ähnlicher Weise umfasst der Codierer 601 (6) eine Codiererverarbeitungsschal tung, die ebenfalls entsprechend einer Softwaresteuerung arbeitet. Eine solche Verarbeitungsschaltung kann wenigstens teilweise innerhalb einer einzigen Verarbeitungseinheit, wie z. B. eines einzelnen DSP, koexistieren.
  • 8a ist ein Blockdiagramm, das eine Ausführungsform des Sprachcodierungssystems gemäß der vorliegenden Erfindung zeigt. Ein festes Codebuch 811 umfasst ein erstes Untercodebuch 813, ein zweites Untercodebuch 815, und kann zusätzliche Untercodebücher bis einem N-ten Untercodebuch 819 enthalten.
  • 8b ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Auffinden und anschließenden Fixieren von Impulspositionen eines gegebenen Impulsindex zeigt, wie es von einem Sprachcodierer ausgeführt wird, der gemäß der vorliegenden Erfindung aufgebaut ist. Genauer beginnt die Codiererverarbeitungsschaltung, die gemäß einer Softwareanweisung arbeitet, den Prozess des Identifizierens der Impulspositionen in einem Block 831 durch Finden und anschließendes Fixieren einer anfänglichen Impulsposition.
  • Sobald eine anfängliche Impulsposition fixiert worden ist, wird in einem Block 835 eine nachfolgende Impulsposition gefunden und fixiert. Zusätzliche Impulse werden gefunden und anschließend fixiert, bis die Codiererverarbeitungsschaltung bei einem Block 839 die Anzahl der Impulse vergleicht, um zu bestimmen, ob alle Impulse gefunden und fixiert worden sind. Wenn weniger als die Gesamtzahl der Impulse verarbeitet worden ist, fährt die Codiererverarbeitungsschaltung damit fort, Impulse zu finden und zu fixieren, bis alle Impulse verarbeitet worden sind.
  • Wenn alle Impulspositionen eines Durchlaufs gefunden und fixiert sind, bestimmt die Sprachverarbeitungsschaltung bei einem Block 849, ob der letzte Durchlauf der Suche abgeschlossen ist. Wenn zusätzliche Durchläufe der Suche übrig bleiben, startet die Softwareanweisung erneut den Prozess des Auffindens und anschließenden Fixierens der anfänglichen Impulsposition eines zusätzlichen Impulsindex, bis alle Durchläufe der Suche abgeschlossen sind.
  • 8c ist ein Flussdiagramm, das eine genaue Beschreibung einer spezifischen Ausführungsform des Verfahrens zur Auswahl der Untercodebücher der 8a durch Verwenden des Suchverfahrens der 8b bereitstellt. Die Codiererverarbeitungsschaltung arbeitet gemäß einer Softwareanweisung und beginnt den Prozess der Auswahl der Untercodebücher bei einem Block 851 durch Auswählen eines ersten Untercodebuches (SCB). Die Codiererverarbeitungsschaltung beginnt den Prozess des Identifizierens der Impulspositionen des ausgewählten ersten Untercodebuches bei einem Block 855 durch Auffinden und anschließendes Fixieren einer anfänglichen Impulsposition des ersten Untercodebuches.
  • Sobald eine anfängliche Impulsposition fixiert worden ist, wird bei einem Block 859 die anschließende Impulsposition gefunden und fixiert. Zusätzliche Impulse werden gefunden und anschließend fixiert, bis die Codiererverarbeitungsschaltung die Anzahl der Impulse vergleicht, um bei einem Block 863 zu bestimmen, ob alle Impulse gefunden und fixiert worden sind. Wenn weniger als die Gesamtzahl der Impulse verarbeitet worden ist, fährt die Codiererverarbeitungsschaltung fort, Impulse zu finden und zu fixieren, bis alle Impulse verarbeitet worden sind.
  • Wenn alle Impulspositionen eines Durchlaufs gefunden und fixiert worden sind, bestimmt die Codiererverarbeitungsschaltung in einem Block 867, ob eine spezifizierte Anzahl von Durchläufen abgeschlossen ist. Wenn die spezifizierte Anzahl von Durchläufen noch nicht abgeschlossen worden ist, bestimmt die Codiererverarbeitungsschaltung in einem Block 871, ob der letzte SCB durchsucht worden ist.
  • Wenn der letzte SCB durchsucht worden ist, wird anschließend der erste SCB erneut im Block 851 ausgewählt. Wenn der letzte SCB nicht durchsucht worden ist, wird anschließend der nächste SCB im Block 875 ausgewählt und die Codiererverarbeitungsschaltung beginnt den Prozess des Identifizierens der Impulspositionen des neu ausgewählten SCB beim Block 855 durch Finden und anschließendes Fixieren einer anfänglichen Impulsposition des neu ausgewählten Blocks SCB.
  • Wenn die spezifizierte Anzahl von Durchläufen abgeschlossen ist, bestimmt die Codiererverarbeitungsschaltung, ob der beste SCB ausgewählt worden ist, in einem Block 879. Wenn der beste SCB ausgewählt worden ist, bestimmt die Codiererverarbeitungsschaltung anschließend in einem Block 883, ob der letzte Durchlauf stattgefunden hat. Wenn der letzte Durchlauf nicht abgeschlossen ist, wiederholt die Codiererverarbeitungsschaltung den Prozess des Findens und anschließenden Fixierens einer Anfangsposition des derzeit ausgewählten SCB. Wenn der beste SCB nicht ausgewählt worden ist, dann wird im Block 887 ein bester SCB ausgewählt, woraufhin die Codiererverarbeitungsschaltung im Block 883 bestimmt, ob der letzte Durchlauf abgeschlossen ist. Wenn der letzte Durchlauf abgeschlossen ist, ist anschließend das Verfahren der Auswahl des Untercodebuches abgeschlossen.
  • 9 zeigt die Codebuchstruktur mit zwei Untercodebüchern im Modus mit 11 kbits/s. Der Anregungsvektor im ersten Untercodebuch SCB1 enthält acht Impulse von jeweils 3 Bits. 6 Bits werden verwendet, um die Vorzeichen von 6 Impulsen zum Decodierer zu übermitteln. Das zweite Untercodebuch SCB2 wird mit 10 Impulsen von jeweils zwei Bits codiert, mit 10 zusätzlichen Bits, die für die Vorzeichen der 10 Impulse verwendet werden.
  • 10 demonstriert die Codebuchstruktur mit zwei Untercodebüchern im Modus 8 kbits/s. Die Anregung im ersten Untercodebuch SBC1 enthält vier Impulse von jeweils 4 Bits, wobei drei Bits verwendet werden, um die Vorzeichen von drei Impulsen zu übermitteln. Das zweite Untercodebuch SBC1 ist mit 10 Impulsen codiert, wobei jeweils ein Bit für neun der Impulse verwendet wird, wobei die Impulsposition auf eines der 10 Bits beschränkt ist. 10 zusätzliche Bits werden für die Vorzeichen der 10 Impulse verwendet.
  • 11a demonstriert die Codebuchstruktur, wenn auf dem PP-Modus im Modus mit 6,65 kbits/s umgeschaltet wird. Fünf Impulse von jeweils 3 Bits werden zusammen mit drei Vorzeichenbits verwendet. Im LPT-Modus werden drei Untercodebücher verwendet, wie in 11b gezeigt ist. Das erste Untercodebuch SCB1 enthält drei Impulse von jeweils drei Bits mit drei Vorzeichenbits, das zweite Untercodebuch SCB2 enthält drei Impulse von jeweils drei Bits mit zwei Vorzeichenbits, und das dritte Untercodebuch SCB3 enthält 11 Bits an Gaußschem Rauschen.
  • 12 demonstriert die Codebuchstruktur mit drei Untercodebüchern im Modus mit 5,8 kbits/s. Das erste Untercodebuch SCB1 enthält vier Impulse von jeweils drei Bits mit einem Vorzeichenbit, das zweite Untercodebuch SCB2 enthält drei Impulse von jeweils 3 Bits mit drei Vorzeichenbits, und das Untercodebuch SCB3 enthält 12 Bits an Gaußschem Rauschen.
  • Schließlich demonstriert 13 die Codebuchstruktur mit drei Untercodebüchern im Modus mit 4,44 kbits/s. Das erste Untercodebuch SCB1 enthält zwei Impuls von jeweils 4 Bits mit einem Vorzeichenbit, das zweite Untercodebuch SCB2 enthält zwei Impulse von jeweils 3 Bits mit zwei Vorzeichenbits, und das Untercodebuch SCB3 enthält 8 Bits an Gaußschem Rauschen.
  • Selbstverständlich sind auch viele andere Modifikationen und Variationen möglich. Im Hinblick auf die obige genaue Beschreibung der vorliegenden Erfindung und der zugehörigen Zeichnungen sind solche anderen Modifikationen und Variationen für Fachleute offensichtlich. Es ist ferner offensichtlich, dass solche anderen Modifikationen und Variationen bewerkstelligt werden können, ohne vom Umfang der vorliegenden Erfindung, wie durch die Ansprüche definiert, abzuweichen.
  • Außerdem bietet der folgende Anhang A eine Liste von vielen Definitionen, Symbolen und Abkürzungen, die in dieser Anmeldung verwendet werden. Die Anhänge B und C bieten jeweils Quell- und Kanalbitordnungsinformationen bei verschiedenen Codierungsbitraten, die in einer Ausführungsform der vorliegenden Erfindung verwendet werden. Die Anhänge A, B und C bilden einen Teil der genauen Beschreibung der vorliegenden Anmeldung.
  • Anhang A
  • Für die Zwecke dieser Anmeldung gelten die folgenden Symbole, Definitionen und Abkürzungen:
    • adaptives Codebuch: Das adaptive Codebuch enthält Anregungsvektoren, die für jeden Unterrahmen angepasst sind. Das adaptive Codebuch wird aus dem Langzeitfilterzustand abgeleitet. Der Schrittverzögerungswert kann als ein Index in das adaptive Codebuch betrachtet werden.
    • adaptives Nachfilter: Das adaptive Nachfilter wird auf den Ausgang des Kurzzeitsynthesefilters angewendet, um die Wahrnehmungsqualität der rekonstruierten Sprache zu verbessern. Im adaptiven Mehrfachraten-Codierer/Decodierer (AMR) ist das adaptive Nachfilter eine Kaskade von zwei Filtern: ein Formanten-Nachfilter und ein Spektralverzerrungskompensationsfilter.
    • adaptiver Mehrfachraten-Codierer/Decodierer: Der adaptive Mehrfachraten-Codierer (AMR) ist ein Sprach- und Kanal-Codierer/Decodierer, der fähig ist, im groben mit Bitraten von 11,4 kbps ("Halbrate") und 22,8 kbps ("Vollrate") zu arbeiten. Außerdem kann der Codierer/Decodierer bei verschiedenen Kombinationen von Bitraten für jeden Kanalmodus bei Sprach- und Kanalcodierung (Codierer/Decodierer/Modus) arbeiten.
    • AMR-Übergabe: die Übergabe zwischen den Vollraten- und Halbraten-Kanalmodi zum Optimieren der AMR-Operation.
    • Kanalmodus: Halbratenbetrieb (HR) oder Vollratenbetrieb (FR).
    • Kanalmodusanpassung: Die Steuerung und Auswahl des Kanalmodus (FR oder HR).
    • Kanalumpacken: Umpacken von Funkkanälen HR (und FR) einer gegebenen Funkzelle, um eine höhere Kapazität innerhalb der Zelle zu erreichen.
    • Geschlossenschleife-Schrittanalyse: Dies ist die adaptive Codebuchsuche, d. h. ein Prozess des Schätzens des Schritt-(Verzögerungs)-Wertes anhand der gewichteten Eingangssprache und des Langzeitfilterzustands. In der Geschlossenschleife-Suche wird die Verzögerung gesucht unter Verwendung einer Fehlerminimierungsschleife (Analyse mittels Synthese). Im adaptiven Mehrfachraten-Codierer/Decodierer wird die Geschlossenschleife-Schrittsuche für jeden Unterrahmen durchgeführt.
    • Codierer/Decodierer-Modus: Für einen gegebenen Kanalmodus die Bitunterteilung zwischen Sprach- und Kanal-Codierer/Decodierern.
    • Codierer/Decodierer-Modusanpassung: Die Steuerung und Auswahl der Codierer/Decodierer-Modusbitraten. Normalerweise wird keine Änderung des Kanalmodus impliziert.
    • Direktformkoeffizienten: Eines der Formate zum Speichern der Kurzzeitfilterparameter. Im adaptiven Mehrfachraten-Codierer/Decodierer verwenden alle Filter, die zum Modifizieren von Sprachabtastwerten verwendet werden, Direktformkoeffizienten.
    • festes Codebuch: Das feste Codebuch enthält Anregungsvektoren für Sprachsynthesefilter. Die Inhalte des Codebuches sind nicht-adaptiv (d. h. fixiert). Im adaptiven Mehrfachraten-Codierer/Decodierer ist das feste Codebuch für eine spezifische Rate unter Verwendung eines Multifunktionsbuches implementiert.
    • Bruchverzögerung: Ein Satz von Verzögerungswerten mit Unter-Abtastwert-Auflösung. Im adaptiven Mehrfachraten-Codierer/Decodierer wird eine Unter-Abtastwert-Auflösung zwischen 1/6 und 1,0 eines Abtastwertes verwendet.
    • Vollrate (FR): Vollratenkanal oder Kanalmodus.
    • Rahmen: Ein Zeitintervall von 20 ms (160 Abtastwerte bei einer Abtastrate von 8 kHz).
    • Grobe Bitrate: Die Bitrate des gewählten Kanalmodus (22,8 kbps oder 11,4 kbps).
    • Halbrate (HR): Halbratenkanal oder Kanalmodus.
    • In-Band-Signalisierung: Signalisieren für DTX, Verbindungssteuerung, Kanal oder Codierer/Decodierer-Modusmodifikation und dergleichen, die innerhalb des Verkehrs befördert wird.
    • Ganzzahlverzögerungen: Ein Satz von Verzögerungswerten mit ganzer Abtastwertauflösung.
    • Interpolationsfilter: Ein FIR-Filter, das verwendet wird, um einen Schätzwert von Unter-Abtastwert-Auflösung-Abtastwerten zu erzeugen, bei einem gegebenen Eingang, der mit einer Ganzzahlabtastwert- Auflösung abgetastet wird.
    • Inversfilter: Dieses Filter entfernt die Kurzzeitkorrelation aus dem Sprachsignal. Das Filter modelliert eine inverse Frequenzantwort des Stimmtraktes.
    • Verzögerung: Die Langzeitfilterverzögerung. Dies ist typischerweise die wahre Verzögerungsperiode, oder deren Vielfaches oder Unter-Vielfaches.
    • Linienspektrumfrequenzen: (siehe Linienspektralpaar)
    • Linienspektralpaar: Transformation von LPC-Parametern. Linienspektralpaare werden erhalten durch Zerlegen der inversen Filterübertragungsfunktion A(z) in einen Satz von zwei Übertragungsfunktionen, eine mit gerade Symmetrie und die andere mit ungerader Symmetrie. Die Linienspektralpaare (auch als Linienspektralfrequenzen bezeichnet) sind die Wurzeln dieser Polynome auf dem z-Einheitskreis.
    • LP-Analysefenster: Für jeden Rahmen werden Kurzzeitfilterkoeffizienten berechnet unter Verwendung der hochpassgefilterten Sprachabtastwerte innerhalb des Analysefensters. Im adaptiven Mehrfachraten-Codierer/Decodierer ist die Länge des Analysefensters immer gleich 240 Abtastwerte. Für jeden Rahmen werden zwei asymmetrische Fenster verwendet, um zwei Sätze von LP-Koeffizient-Koeffizienten zu erzeugen, die im LSF-Bereich interpoliert werden, um das Wahrnehmungsgewichtungsfilter zu bilden. Nur ein einzelner Satz von LP-Koeffizienten pro Rahmen wird quantisiert und zum Decodierer übertragen um das Synthesefilter zu erhalten. Eine Vorausschau von 25 Abtastwerten wird sowohl für HR als auch FR verwendet.
    • LP-Koeffizienten: Linearvorhersage-(LP)-Koeffizienten (auch als Linearvorhersagecodierungs-(LPC)-Koeffizienten bezeichnet) ist ein generischer beschreibender Ausdruck zur Beschreibung der Kurzzeitfilterkoeffizienten.
    • LTP-Modus: Der Codierer/Decodierer arbeitet mit traditioneller LTP.
    • Modus: Allein verwendet bezieht sich dies auf den Quell-Codierer/Decodierer-Modus, d. h. auf einen der Quell-Codierer/Decodierer, die im AMR-Codierer/Decodierer verwendet werden. (Siehe auch Codierer/Decodierer-Modus und Kanalmodus).
    • Multifunktions-Codebuch: Ein festes Codebuch bestehend aus mehreren Teilcodebüchern, die mit unterschiedlichen Arten von Impulsinnovationsvektorstrukturen und Rauschinnovationsvektoren konstruiert sind, wobei ein Codewort aus dem Codebuch verwendet wird, um die Anregungsvektoren zu synthetisieren.
    • Offenschleife-Schrittsuche: ein Prozess des Schätzens der nahezu optimalen Schrittverzögerung direkt aus der gewichteten Eingangssprache. Dies wird bewerkstelligt, um die Schrittanalyse zu vereinfachen und die Geschlossenschleife-Schrittsuche auf eine kleine Anzahl von Verzögerungen um die geschätzten Offenschleife-Verzögerungen zu beschränken. Im adaptiven Mehrfachraten-Codierer/Decodierer wird die Offenschleife-Schrittsuche einmal pro Rahmen für den PP-Modus und zweimal pro Rahmen für den LTP-Modus durchgeführt.
    • Außer-Band-Signalisierung: Signalisierung auf den GSM-Steuerkanälen zum Unterstützen der Verbindungssteuerung.
    • PP-Modus: Codierer/Decodierer arbeitet mit Schrittvorverarbeitung.
    • Residuum: Das aus einer inversen Filterungsoperation resultierende Ausgangssignal.
    • Kurzzeitsynthesefilter: Dieses Filter führt in das Anregungssignal eine Kurzzeitkorrelation ein, die die Impulsantwort des Stimmtraktes modelliert.
    • Wahrnehmungsgewichtungsfilter: Dieses Filter wird in der Analyse-mittels-Synthese-Suche des Codebuches verwendet. Das Filter nutzt die Rauschmaskierungseigenschaften der Formanten (Stimmtraktresonanzen) mittels Gewichtung des Fehlers in geringerem Maße in Bereichen nahe der Formantenfrequenzen und in stärkerem Maße in Bereichen entfernt von diesen.
    • Unterrahmen: Ein Zeitintervall gleich 5–10 ms (20–80 Abtastwerte bei einer Abtastrate von 8 kHz).
    • Vektorquantisierung: Ein Verfahren der Gruppierung mehrerer Parameter in einem Vektor und des gleichzeitigen Quantisierens derselben.
    • Nulleingangsantwort: Die Ausgabe eines Filters aufgrund vergangener Eingaben, d. h. aufgrund des vorliegenden Zustands des Filters, unter der Voraussetzung, dass am Eingang Nullen angelegt werden.
    • Nullzustandsantwort: Die Ausgabe eines Filters aufgrund der vorliegenden Eingabe, unter der Voraussetzung, dass kei ne früheren Eingaben angelegt worden sind, d. h. unter der Voraussetzung, dass die Zustandsinformationen im Filter alle Nullen sind.
    • A(z) – Das inverse Filter mit unquantifizierten Koeffizienten
    • Ā(z) – Das inverse Filter mit quantisierten Koeffizienten
    • H(z) = 1/Â(z) – Das Sprachsynthesefilter mit quantisierten Koeffizienten
    • Ai – Die unquantisierten linearen Vorhersageparameter (direkt vom Koeffizienten)
    • âi – Die quantisierten linearen Vorhersageparameter
    • 1/B(z) – Das Langzeitsynthesefilter
    • W(z) – Das Wahrnehmungsgewichtungsfilter (unquantisierte Koeffizienten)
    • γ1, γ2 – Die Wahrnehmungsgewichtungsfaktoren
    • Fe(z) – adaptives Vorfilter
    • T – Die nächstliegende ganzzahlige Schrittverzögerung zur Geschlossenschleife-Bruchschrittverzögerung des Unterrahmens
    • β⎕ – Der adaptive Vorfilterkoeffizient (der quantisierte Schrittverstärkungsfaktor)
    • Figure 00800001
      – Das Formanten-Nachfilter
    • γn – Steuerkoeffizient für das Maß der Formanten-Nachfilterung
    • γd – Steuerkoeffizient für das Maß der Formanten- Nachfilterung
    • Ht(z) – Spektralverzerrungskompensationsfilter
    • γt – Steuerkoeffizient für das Maß der Spektralverzer rungskompensationsfilterung
    • μ = γtk1' – Ein Spektralverzerrungsfaktor, wobei k1' der erste Reflexionskoeffizient ist
    • hf(n) – Die abgeschnittene Pulsantwort des Formanten-Nachfilters
    • Lh – Die Länge von hf(n)
    • rh(i) – Die Autokorrelationen von hf(n)
    • Â(z/γn) – Der Inversfilter-(Zähler)-Teil des Formanten-Nachfilters
    • 1/Â(z/γd) – Der Synthesefilter-(Nenner)-Teil des Formanten-Nachfilters
    • r ^(n) – Das Residuumsignal des inversen Filters Â(z/γn)
    • ht(z) – Impulsantwort des Spektralverzerrungskompensationsfilters
    • βsc(n) – Der AGC-gesteuerte Verstärkungsfaktor- Skalierungsfaktor des adaptiven Nachfilters
    • α – Der ACG-Faktor des adaptiven Nachfilters
    • HHl(z) – Vorverarbeitungs-Hochpassfilter
    • wI(n), wII(n) – LP-Analysefenster
    • L1 ( I ) – Länge des ersten Teils des LP-Analysefensters wI(n)
    • L2 (I) – Länge des zweiten Teils des LP-Analysefensters wI(n)
    • L1 (II) – Länge des ersten Teils des LP-Analysefensters wII(n)
    • L2 (II) – Länge des zweiten Teils des LP-Analysefensters wII(n)
    • rac(k) – Die Autokorrelationen der gefensterten Sprache s'(n)
    • wlag(i) – Verzögerungsfenster für die Autokorrelationen (60 Hz-Bandbreiteenroeiterung)
    • f0 – Die Bandbreitenerweiterung in Hz
    • fs – Die Abtastfrequenz in Hz
    • r'ac(k) – Die modifizierten (bandbreitenerweiterten) Autokorrelationen
    • ELD(i) – Der Vorhersagefehler in der i-ten Iteration des Levinson-Algorithmus
    • ki – Der i-te Reflexionskoeffizient
    • aj (i) – Der j-te Direktformkoeftizient in der i-ten Iteration des Levinson-Algorithmus
    • F1'(z) – Symmetrisches LSF-Polynom
    • F2'(z) – Antisymmetrisches LSF-Polynom
    • F1(z) – Polynom F1'(z) mit eliminierter Wurzel z = –1
    • F2(z) – Polynom F2'(z) mit eliminierter Wurzel z = –1
    • qi – Die Linienspektralpaare (LSFs) im Cosinusbereich
    • q – Ein LSF-Vektor im Cosinusbereich
    • q ^(n)i – Der quantisierte LSF-Vektor beim i-ten Unterrahmen des Brahmans n
    • ωi – Die Linienspektralfrequenzen (LSFs)
    • Tm(x) – Ein Tschebyscheff-Polynom m-ter Ordnung
    • f1(i), f2(i) – Die Koeffizienten der Polynome F1(z) und F2(z)
    • f1'(i), f2'(i) – Die Koeffizienten der Polynome F1'(z) und F2'(z)
    • f(i) – Die Koeffizienten von entweder F1(z) oder F2(z)
    • C(x) – Summenpolynom der Tschebyscheff-Polynome
    • x – Cosinus der Winkelfrequenz ω
    • λk – Rekursionskoeffizienten für die Tschebyscheff-Polynombewertung
    • fi – Die Linienspektralfrequenzen (LSFs) in Hz
    • ft = [f1 f2 ... f10] – Die Vektordarstellung der LSFs in Hz
    • z(1)(n), z(2)(n) – Die mittelwertbereinigten LSFs-Vektoren beim Rahmen n
    • r(1)(n), r(2)(n) – Die LSF-Vorhersageresiduumvektoren beim Rahmen n
    • p(n) – Der vorhergesagte LSF-Vektor beim Rahmen n
    • r ^(2)(n – 1) – Der quantisierte zweite Residuumvektor beim vergangenen Rahmen
    • f ^k – Der quantisierte LSF-Vektor beim Quantisierungsindex k
    • ELSP – Der LSF-Quantisierungsfehler
    • wi, i = 1, ..., 10 – LSF-Quantisierungsgewichtungsfaktoren
    • di – Der Abstand zwischen den Linienspektralfrequenzen fi+1 und fi-1
    • h(n) – Die Impulsantwort des gewichteten Synthesefilters
    • Ok – Das Korrelationsmaximum der Offenschleifen-Schrittanalyse bei Verzögerung k
    • Oti, i = 1, ..., 3 – Die Korrelationsmaxima bei Verzögerungen ti, i = 1, ..., 3
    • (Mi, ti), i = 1, ..., 3 – Die normalisierten Korrelationsmaxima Mi und die entsprechenden Verzögerungen ti, i = 1, ..., 3
    • Figure 00840001
      – Das gewichtete Synthesefilter
    • A(z/γ1) – Der Zähler des Wahrnehmungsgewichtungsfilters
    • 1/A(z/γ2) – Der Nenner des Wahrnehmungsgewichtungsfilters
    • T1 – Die nächstliegende ganze Zahl zur Bruchschrittverzögerung des vorangehenden (ersten oder dritten) Unterrahmens
    • s'(n) – Das gefensterte Sprachsignal
    • sw(n) – Das gewichtete Sprachsignal
    • ŝ(n) – Rekonstruiertes Sprachsignal
    • ŝ'(n) – Das verstärkungsfaktorskalierte nachgefilterte Signal
    • ŝf(n) – Nachgefiltertes Sprachsignal (Vorskalierung)
    • x(n) – Das Sollsignal für die Durchsuchung des adaptiven Codebuches
    • x2(n), xt 2 – Das Sollsignal für die Durchsuchung des festen Codebuches
    • resLP(n) – Das LP-Residuumsignal
    • c(n) – Der feste Codebuchvektor
    • v(n) – Der adaptive Codebuchvektor
    • y(n) = v(n)*h(n) – Der gefilterte adaptive Codebuchvektor Der gefilterte feste Codebuchvektor
    • yk(n) – Die vergangene gefilterte Anregung
    • u(n) – Das Anregungssignal
    • û(n) – Das vollständig quantisierte Anregungssignal
    • û'(n) – Das verstärkungsfaktorskalierte angehobene Anregungssignal
    • Top – Die beste Offenschleifen-Verzögerung
    • tmin – Minimaler Verzögerungssuchwert
    • tmax – Maximaler Verzögerungssuchwert
    • R(k) – Korrelationsausdruck, der bei der Durchsuchung des adaptiven Codebuches zu maximieren ist
    • R(k)t – Der interpolierte Werte von R(k) für die ganzzahli ge Verzögerung k und den Bruchteil t
    • Ak – Korrelationsausdruck, der in der Durchsuchung des algebraischen Codebuches beim Index k zu maximieren ist
    • Ck – Die Korrelation im Zähler von Ak beim Index k
    • EDk – Die Energie des Nenners von Ak beim Index k
    • d = Htx2 – Die Korrelation zwischen dem Sollsignal x2(n) und der Impulsantwort h(n), d. h. das rückwärtsgefilterte Ziel
    • H – Die untere Toepliz-Faltung-Dreiecksmatrix mit Diagonale h(0) und unteren Diagonalen h(1) ..., h(39)
    • Φ = HtH – Die Matrix der Korrelationen von h(n)
    • d(n) – Die Elemente des Vektors d
    • ϕ(i, j) – Die Elemente des symmetrischen Matrix Φ
    • ck – Der Innovationsvektor
    • C – Die Korrelation im Zähler von Ak
    • mi – Die Position des i-ten Impulses
    • ϑi – Die Amplitude des i-ten-Impulses
    • Np – Die Anzahl der Impulse in der Anregung des festen Codebuches
    • ED – Die Energie des Nenners von Ak
    • resLTP(n) – Das normalisierte Langzeitvorhersageresiduum
    • b(n) – Die Summe des normalisierten Vektors d(n) und des normalisierten Langzeitvorhersageresiduums resLTP(n)
    • sb(n) – Das Vorzeichensignal für die Durchsuchung des algebraischen Codebuches
    • zt, z(n)– Der feste Codebuchvektor gefaltet von h(n)
    • E(n) – Die mittelwertbereinigte Innovationsenergie (in dB)
    • Ē – Der Mittelwert der Innovationsenergie
    • Ē(n) – Die vorhergesagte Energie
    • [b1 b2 b3 b4] – Die MA-Vorhersagekoeffizienten
    • R ^(k) – Der quantisierte Vorhersagefehler beim Unterrahmen k
    • EI – Die mittlere Innovationsenergie
    • R(n) – Der Vorhersagefehler der Festcodebuchverstärkungsfaktor-Quantisierung
    • EQ – Der Quantisierungsfehler der Festcodebuchverstärkungsfaktor-Quantisierung
    • e(n) – Die Zustände des Synthesefilters 1/Ā(z)
    • ew(n) – Der wahrnehmungsgewichtete Fehler der Analyse-mittels-Synthese-Suche
    • η – Der Verstärkungsfaktor-Skalierungsfaktor für die angehobene Anregung
    • gc – Der Festcodebuch-Verstärkungsfaktor
    • g'c – Der vorgesagte Festcodebuch-Verstärkungsfaktor
    • ĝc – Der quantisierte Festcodebuch-Verstärkungsfaktor
    • gp – Der Adaptivcodebuch-Verstärkungsfaktor
    • ĝp – Der quantisierte Adaptivcodebuch-Verstärkungsfaktor
    • γgc = gc/gc' – Ein Korrekturfaktor zwischen dem Verstärkungsfaktor gc und dem geschätzten gc'
    • γ ^gc – Der optimale Wert für γgc
    • γsc – Verstärkungsfaktor-Skalierungsfaktor
    • AGC – Adaptive Verstärkungsfaktorsteuerung
    • AMR – Adaptive Mehrfachrate
    • CELP – Code-angeregte lineare Vorhersage
    • C/I – Träger-Zu-Störer-Verhältnis
    • DTX – Diskontinuierliche Übertragung
    • EFR – Gesteigerte Vollrate
    • FIR – Finite-Impulse-Antwort
    • FR – Vollrate
    • HR – Halbrate
    • LP – Lineare Vorhersage
    • LPC – Linearvorhersagecodierung
    • LSF – Linienspektralfrequenz
    • LSF – Linienspektralpaar
    • LTP – Langzeitprädiktor (oder Langzeitvorhersage)
    • MA – Bewegter Mittelwert
    • TFO – Tandemfreie Operation
    • VAD – Stimmaktivitätserfassung
  • Anhang B Bitordnung (Quellcodierung) Bitordnung der Ausgabebits vom Quellcodierer (11 kbit/s)
    Figure 00900001
  • Bitordnung der Ausgabebits vom Quellcodierer (8 kbit/s)
    Figure 00910001
  • Bitordnung der Ausgabebits vom Quellcodierer (6,65 kbit/s)
    Figure 00910002
  • Bitordnung der Ausgabebits vom Quellcodierer (5,8 kbit/s)
    Figure 00920001
  • Bitordnung der Ausbagebits vom Quellcodierer (4.55 kbit/s)
    Figure 00920002
  • Anhang C Bitordnung (Kanalcodierung) Ordnung der Bits gemäß der subjektiven Wichtigkeit (11 kbit/s FRTCH)
    Figure 00930001
  • Figure 00940001
  • Figure 00950001
  • Figure 00960001
  • Ordnung der Bits gemäß subjektiver Wichtigkeit (8.0 kbit/s FRTCH)
    Figure 00970001
  • Figure 00980001
  • Figure 00990001
  • Ordnung der Bits gemäß subjektiver Wichtigkeit (6,65 kbit/s FRTCH)
    Figure 01000001
  • Figure 01010001
  • Ordnung der Bits gemäß subjektiver Wichtigkeit (5,8 kbit/s FRTCH)
    Figure 01020001
  • Figure 01030001
  • Ordnung der Bits gemäß subjektiver Wichtigkeit (80 kbit/s HRTC)
    Figure 01040001
  • Figure 01050001
  • Figure 01060001
  • Ordnung der Bits gemäß subjektiver Wichtigkeit (6,65 kbit/s HRTCH)
    Figure 01070001
  • Figure 01080001
  • Ordnung der Bit gemäß subjektiver Wichtigkeit (5.8 kbit/s HRTCH)
    Figure 01090001
  • Figure 01100001
  • Ordnung der Bits gemäß subjektiver Wichtigkeit (4,55 kbit/s HRTCH)
    Figure 01110001
  • Figure 01120001

Claims (16)

  1. Sprachcodierer, der einen Analyse-mittels-Synthese-Codierungsansatz auf ein Sprachsignal anwendet, wobei der Sprachcodierer umfasst: ein erstes Codebuch, das eine erste Mehrzahl von Codevektoren umfasst, wobei jeder der ersten Mehrzahl von Codevektoren einen ersten Impulsindex und einen zweiten Impulsindex umfasst; und eine Codiererverarbeitungsschaltung, die mit dem ersten Codebuch gekoppelt ist, und die einen Codevektor aus der ersten Mehrzahl von Codevektoren identifiziert durch Betrachten des ersten Impulsindex von jedem der ersten Mehrzahl von Codevektoren vor der Betrachtung des zweiten Impulsindex, wobei der zweite Impulsindex irgendeiner aus der Mehrzahl von Codevektoren ist.
  2. Sprachcodierer nach Anspruch 1, bei dem die Codiererverarbeitungsschaltung nach Betrachtung jedes ersten Impulsindex wenigstens einen Abschnitt des zweiten Impulsindex betrachtet.
  3. Sprachcodierer nach Anspruch 1, bei dem die Codiererverarbeitungsschaltung nach Betrachtung wenigstens eines Abschnitts des zweiten Impulsindex erneut wenigstens einen Abschnitt des ersten Impulsindex betrachtet.
  4. Sprachcodierer nach irgendeinem der Ansprüche 1, 2 und 3, der ferner ein zweites Codebuch umfasst, das eine zweite Mehrzahl von Codevektoren umfasst, wobei jeder der zweiten Mehrzahl von Codevektoren wenigstens einen ersten Impulsindex und einen zweiten Impulsindex umfasst.
  5. Sprachcodierer nach irgendeinem der Ansprüche 1, 2 und 3, der ferner ein zweites Codebuch umfasst, das eine zweite Mehrzahl von Codevektoren umfasst, wobei jeder der zweiten Mehrzahl von Codevektoren wenigstens einen ersten Impulsindex und einen zweiten Impulsindex umfasst, und wobei die Codiererverarbeitungsschaltung, die mit dem zweiten Codebuch gekoppelt ist, einen Codevektor aus der Mehrzahl von Codevektoren identifiziert durch Betrachten des ersten Impulsindex aus jedem der mehreren Codevektoren vor Betrachtung des zweiten Impulsindex von irgendeinem der mehreren Codevektoren.
  6. Sprachcodierer nach irgendeinem der Ansprüche 1, 2 und 3, der ferner ein zweites Codebuch umfasst, das eine zweite Mehrzahl von Codevektoren umfasst, wobei die Codiererverarbeitungsschaltung nach Betrachtung des ersten Codebuches und des zweiten Codebuches eines der ersten und zweiten Codebücher für eine weitere Betrachtung auswählt.
  7. Sprachcodierer nach irgendeinem der Ansprüche 1, 2 und 3, der ferner ein zweites Codebuch umfasst, das eine zweite Mehrzahl von Codevektoren umfasst, wobei beim Auswählen eines der Codebücher für die weitere Betrachtung ein Gewichtungsfaktor angewendet wird.
  8. Verfahren des Durchsuchens eines ersten Codebuches eines Sprachcodierers, der einen Analyse-mittels-Synthese-Codierungsansatz auf ein Sprachsignal anwendet, wobei das erste Codebuch eine erste Mehrzahl von Codevektoren umfasst, wobei jeder der ersten Mehrzahl von Codevektoren einen ersten Impulsindex und einen zweiten Impulsindex umfasst, und wobei das Verfahren umfasst: Identifizieren eines Codevektors von der ersten Mehrzahl von Codevektoren durch Betrachten des ersten Impulsindex von jedem der ersten Mehrzahl von Codevektoren vor der Betrachtung des zweiten Impulsindex, wobei der zweite Impulsindex von irgendeinem der Mehrzahl von Codevektoren stammt.
  9. Verfahren des Suchens nach Anspruch 8, ferner umfassend: erneutes Zuordnen und anschließendes Fixieren einer Mehrzahl von nachfolgenden Impulspositionen.
  10. Verfahren des Suchens nach Anspruch 8, das ferner das Auswählen eines ersten Untercodebuches umfasst.
  11. Verfahren des Suchens nach Anspruch 10, das ferner das Auswählen eines zweiten Untercodebuches umfasst.
  12. Verfahren des Suchens nach Anspruch 8, das ferner das Verwenden eines Gewichtungsfaktors zum Auswählen eines Untercodebuches umfasst.
  13. Verfahren des Suchens nach Anspruch 8, bei dem eine Mehrzahl von Iterationen ausgeführt wird.
  14. Verfahren des Suchens nach irgendeinem der Ansprüche 8 und 13, bei dem ein Suchdurchlauf ausgeführt wird.
  15. Verfahren des Suchens nach Anspruch 8, bei dem nach Betrachtung wenigstens eines Abschnitts des zweiten Impulsindex das Verfahren ferner das erneute Betrachten wenigstens eines Abschnitts des ersten Impulsindex umfasst.
  16. Sprachcodierer nach Anspruch 1, bei dem eine Mehrzahl von Iterationen ausgeführt wird.
DE69934320T 1998-08-24 1999-08-24 Sprachkodierer und verfahren zur codebuch-suche Expired - Lifetime DE69934320T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US9756998P 1998-08-24 1998-08-24
US97569P 1998-08-24
US09/156,814 US6173257B1 (en) 1998-08-24 1998-09-18 Completed fixed codebook for speech encoder
PCT/US1999/019591 WO2000011657A1 (en) 1998-08-24 1999-08-24 Completed fixed codebook for speech encoder
US156814 2002-05-30

Publications (2)

Publication Number Publication Date
DE69934320D1 DE69934320D1 (de) 2007-01-18
DE69934320T2 true DE69934320T2 (de) 2007-06-06

Family

ID=26793426

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69934320T Expired - Lifetime DE69934320T2 (de) 1998-08-24 1999-08-24 Sprachkodierer und verfahren zur codebuch-suche

Country Status (6)

Country Link
US (1) US6173257B1 (de)
EP (1) EP1105872B1 (de)
DE (1) DE69934320T2 (de)
HK (1) HK1038422A1 (de)
TW (1) TW454169B (de)
WO (1) WO2000011657A1 (de)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058359A (en) * 1998-03-04 2000-05-02 Telefonaktiebolaget L M Ericsson Speech coding including soft adaptability feature
US6182033B1 (en) * 1998-01-09 2001-01-30 At&T Corp. Modular approach to speech enhancement with an application to speech coding
US7392180B1 (en) * 1998-01-09 2008-06-24 At&T Corp. System and method of coding sound signals using sound enhancement
TW376611B (en) * 1998-05-26 1999-12-11 Koninkl Philips Electronics Nv Transmission system with improved speech encoder
US6556966B1 (en) 1998-08-24 2003-04-29 Conexant Systems, Inc. Codebook structure for changeable pulse multimode speech coding
US7072832B1 (en) * 1998-08-24 2006-07-04 Mindspeed Technologies, Inc. System for speech encoding having an adaptive encoding arrangement
US6714907B2 (en) * 1998-08-24 2004-03-30 Mindspeed Technologies, Inc. Codebook structure and search for speech coding
SE9803698L (sv) * 1998-10-26 2000-04-27 Ericsson Telefon Ab L M Metoder och anordningar i ett telekommunikationssystem
US6424938B1 (en) * 1998-11-23 2002-07-23 Telefonaktiebolaget L M Ericsson Complex signal activity detection for improved speech/noise classification of an audio signal
IL129752A (en) * 1999-05-04 2003-01-12 Eci Telecom Ltd Telecommunication method and system for using same
US6381568B1 (en) * 1999-05-05 2002-04-30 The United States Of America As Represented By The National Security Agency Method of transmitting speech using discontinuous transmission and comfort noise
JP2001109489A (ja) * 1999-08-03 2001-04-20 Canon Inc 音声情報処理方法、装置および記憶媒体
US6523002B1 (en) * 1999-09-30 2003-02-18 Conexant Systems, Inc. Speech coding having continuous long term preprocessing without any delay
US6901362B1 (en) * 2000-04-19 2005-05-31 Microsoft Corporation Audio segmentation and classification
JP2004502202A (ja) * 2000-07-05 2004-01-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ラインスペクトル周波数の算出方法
US6529867B2 (en) * 2000-09-15 2003-03-04 Conexant Systems, Inc. Injecting high frequency noise into pulse excitation for low bit rate CELP
WO2002023533A2 (en) * 2000-09-15 2002-03-21 Conexant Systems, Inc. System for improved use of pitch enhancement with subcodebooks
US6980948B2 (en) * 2000-09-15 2005-12-27 Mindspeed Technologies, Inc. System of dynamic pulse position tracks for pulse-like excitation in speech coding
WO2002049218A1 (en) * 2000-12-14 2002-06-20 Sony Corporation Encoder and decoder
JP3404016B2 (ja) * 2000-12-26 2003-05-06 三菱電機株式会社 音声符号化装置及び音声符号化方法
US20040204935A1 (en) * 2001-02-21 2004-10-14 Krishnasamy Anandakumar Adaptive voice playout in VOP
JP3582589B2 (ja) * 2001-03-07 2004-10-27 日本電気株式会社 音声符号化装置及び音声復号化装置
JP2003044098A (ja) * 2001-07-26 2003-02-14 Nec Corp 音声帯域拡張装置及び音声帯域拡張方法
US7647223B2 (en) * 2001-08-16 2010-01-12 Broadcom Corporation Robust composite quantization with sub-quantizers and inverse sub-quantizers using illegal space
US7610198B2 (en) * 2001-08-16 2009-10-27 Broadcom Corporation Robust quantization with efficient WMSE search of a sign-shape codebook using illegal space
US7617096B2 (en) * 2001-08-16 2009-11-10 Broadcom Corporation Robust quantization and inverse quantization using illegal space
EP1388846A3 (de) * 2002-07-17 2008-08-20 STMicroelectronics N.V. Verfahren und Vorrichtung zur Breitbandkodierung von Sprachsignalen geeignet zurunabhängigen Steuerung lang- und kurzzeitiger Verzerrungen
EP1383113A1 (de) * 2002-07-17 2004-01-21 STMicroelectronics N.V. Verfahren und Vorrichtung für Breitbandsprachkodierung geeignet zur Kontrolle von Kurzzeit- und Langzeitverzerrungen
KR100463418B1 (ko) * 2002-11-11 2004-12-23 한국전자통신연구원 Celp 음성 부호화기에서 사용되는 가변적인 고정코드북 검색방법 및 장치
KR100503414B1 (ko) * 2002-11-14 2005-07-22 한국전자통신연구원 고정 코드북의 집중 검색 방법 및 장치
US7698132B2 (en) * 2002-12-17 2010-04-13 Qualcomm Incorporated Sub-sampled excitation waveform codebooks
WO2004084181A2 (en) * 2003-03-15 2004-09-30 Mindspeed Technologies, Inc. Simple noise suppression model
US20050065787A1 (en) * 2003-09-23 2005-03-24 Jacek Stachurski Hybrid speech coding and system
US20050071154A1 (en) * 2003-09-30 2005-03-31 Walter Etter Method and apparatus for estimating noise in speech signals
FR2867649A1 (fr) * 2003-12-10 2005-09-16 France Telecom Procede de codage multiple optimise
US20050147131A1 (en) * 2003-12-29 2005-07-07 Nokia Corporation Low-rate in-band data channel using CELP codewords
KR100656788B1 (ko) * 2004-11-26 2006-12-12 한국전자통신연구원 비트율 신축성을 갖는 코드벡터 생성 방법 및 그를 이용한 광대역 보코더
US20060136202A1 (en) * 2004-12-16 2006-06-22 Texas Instruments, Inc. Quantization of excitation vector
DE102005000828A1 (de) * 2005-01-05 2006-07-13 Siemens Ag Verfahren zum Codieren eines analogen Signals
FR2884989A1 (fr) * 2005-04-26 2006-10-27 France Telecom Procede d'adaptation pour une interoperabilite entre modeles de correlation a court terme de signaux numeriques.
US8027242B2 (en) 2005-10-21 2011-09-27 Qualcomm Incorporated Signal coding and decoding based on spectral dynamics
US8392176B2 (en) 2006-04-10 2013-03-05 Qualcomm Incorporated Processing of excitation in audio coding and decoding
JPWO2007129726A1 (ja) * 2006-05-10 2009-09-17 パナソニック株式会社 音声符号化装置及び音声符号化方法
ATE512437T1 (de) * 2006-11-29 2011-06-15 Loquendo Spa Quellenabhängige codierung und decodierung mit mehreren codebüchern
US8428957B2 (en) 2007-08-24 2013-04-23 Qualcomm Incorporated Spectral noise shaping in audio coding based on spectral dynamics in frequency sub-bands
US20090222268A1 (en) * 2008-03-03 2009-09-03 Qnx Software Systems (Wavemakers), Inc. Speech synthesis system having artificial excitation signal
KR20090122143A (ko) * 2008-05-23 2009-11-26 엘지전자 주식회사 오디오 신호 처리 방법 및 장치
GB2466674B (en) * 2009-01-06 2013-11-13 Skype Speech coding
GB2466675B (en) 2009-01-06 2013-03-06 Skype Speech coding
GB2466673B (en) * 2009-01-06 2012-11-07 Skype Quantization
GB2466671B (en) * 2009-01-06 2013-03-27 Skype Speech encoding
GB2466670B (en) * 2009-01-06 2012-11-14 Skype Speech encoding
GB2466672B (en) * 2009-01-06 2013-03-13 Skype Speech coding
GB2466669B (en) * 2009-01-06 2013-03-06 Skype Speech coding
US8452606B2 (en) * 2009-09-29 2013-05-28 Skype Speech encoding using multiple bit rates
ES2623291T3 (es) 2011-02-14 2017-07-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Codificación de una porción de una señal de audio utilizando una detección de transitorios y un resultado de calidad
RU2586838C2 (ru) 2011-02-14 2016-06-10 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Аудиокодек, использующий синтез шума в течение неактивной фазы
BR112013020324B8 (pt) 2011-02-14 2022-02-08 Fraunhofer Ges Forschung Aparelho e método para supressão de erro em fala unificada de baixo atraso e codificação de áudio
AR085361A1 (es) * 2011-02-14 2013-09-25 Fraunhofer Ges Forschung Codificacion y decodificacion de posiciones de los pulsos de las pistas de una señal de audio
ES2534972T3 (es) 2011-02-14 2015-04-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Predicción lineal basada en esquema de codificación utilizando conformación de ruido de dominio espectral
ES2458436T3 (es) 2011-02-14 2014-05-05 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Representación de señal de información utilizando transformada superpuesta
BR112013020482B1 (pt) 2011-02-14 2021-02-23 Fraunhofer Ges Forschung aparelho e método para processar um sinal de áudio decodificado em um domínio espectral
ES2559040T3 (es) 2011-03-10 2016-02-10 Telefonaktiebolaget Lm Ericsson (Publ) Relleno de subvectores no codificados en señales de audio codificadas por transformada

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868867A (en) * 1987-04-06 1989-09-19 Voicecraft Inc. Vector excitation speech or audio coder for transmission or storage
US5323486A (en) * 1990-09-14 1994-06-21 Fujitsu Limited Speech coding system having codebook storing differential vectors between each two adjoining code vectors
JPH06138896A (ja) 1991-05-31 1994-05-20 Motorola Inc 音声フレームを符号化するための装置および方法
DE69309557T2 (de) 1992-06-29 1997-10-09 Nippon Telegraph & Telephone Verfahren und Vorrichtung zur Sprachkodierung
CA2108623A1 (en) 1992-11-02 1994-05-03 Yi-Sheng Wang Adaptive pitch pulse enhancer and method for use in a codebook excited linear prediction (celp) search loop

Also Published As

Publication number Publication date
EP1105872B1 (de) 2006-12-06
HK1038422A1 (en) 2002-03-15
EP1105872A1 (de) 2001-06-13
DE69934320D1 (de) 2007-01-18
TW454169B (en) 2001-09-11
WO2000011657A1 (en) 2000-03-02
US6173257B1 (en) 2001-01-09

Similar Documents

Publication Publication Date Title
DE69934320T2 (de) Sprachkodierer und verfahren zur codebuch-suche
DE69934608T2 (de) Adaptive kompensation der spektralen verzerrung eines synthetisierten sprachresiduums
US6493665B1 (en) Speech classification and parameter weighting used in codebook search
US6823303B1 (en) Speech encoder using voice activity detection in coding noise
US6330533B2 (en) Speech encoder adaptively applying pitch preprocessing with warping of target signal
US6449590B1 (en) Speech encoder using warping in long term preprocessing
US6260010B1 (en) Speech encoder using gain normalization that combines open and closed loop gains
US6813602B2 (en) Methods and systems for searching a low complexity random codebook structure
US6507814B1 (en) Pitch determination using speech classification and prior pitch estimation
US6188980B1 (en) Synchronized encoder-decoder frame concealment using speech coding parameters including line spectral frequencies and filter coefficients
US6240386B1 (en) Speech codec employing noise classification for noise compensation
US9269365B2 (en) Adaptive gain reduction for encoding a speech signal
US7191123B1 (en) Gain-smoothing in wideband speech and audio signal decoder
US7260521B1 (en) Method and device for adaptive bandwidth pitch search in coding wideband signals
EP1141946B1 (de) Kodierung eines verbesserungsmerkmals zur leistungsverbesserung in der kodierung von kommunikationssignalen
US5884251A (en) Voice coding and decoding method and device therefor
EP1930881A2 (de) Sprachdekodierer mit Rauschkompensation

Legal Events

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

Owner name: HTC CORP., TAOYUAN, TW

8328 Change in the person/name/address of the agent

Representative=s name: 2K PATENTANWAELTE BLASBERG KEWITZ & REICHEL, PARTN