DE69509381T2 - Blocknormalisationsprozessor - Google Patents

Blocknormalisationsprozessor

Info

Publication number
DE69509381T2
DE69509381T2 DE69509381T DE69509381T DE69509381T2 DE 69509381 T2 DE69509381 T2 DE 69509381T2 DE 69509381 T DE69509381 T DE 69509381T DE 69509381 T DE69509381 T DE 69509381T DE 69509381 T2 DE69509381 T2 DE 69509381T2
Authority
DE
Germany
Prior art keywords
value
values
block
codebook
pitch
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
DE69509381T
Other languages
English (en)
Other versions
DE69509381D1 (de
Inventor
Chienchung Chang
Prashant Kantak
John G. Mcdonough
Charles E. Sakamaki
Randeep Singh
Ming-Chang Tsai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22729345&utm_source=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69509381(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of DE69509381D1 publication Critical patent/DE69509381D1/de
Publication of DE69509381T2 publication Critical patent/DE69509381T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • G10L19/07Line spectrum pair [LSP] vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0011Long term prediction filters, i.e. pitch estimation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0013Codebook search algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Gyroscopes (AREA)
  • Electrochromic Elements, Electrophoresis, Or Variable Reflection Or Absorption Elements (AREA)
  • Glass Compositions (AREA)
  • Executing Machine-Instructions (AREA)
  • Saccharide Compounds (AREA)
  • Stored Programmes (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Analogue/Digital Conversion (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Peptides Or Proteins (AREA)
  • Error Detection And Correction (AREA)

Description

    HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung
  • Die vorliegende Anmeldung ist eine Ausscheidungsanmeldung der europäischen Patentanmeldung Nr. 95910296.3 (Patent Nr. EP-B1-0695454). Die Erfindung der Stammanmeldung bezieht sich auf Sprachverarbeitung. Insbesondere bezieht sich die Erfindung der Stammanmeldung auf ein neues und verbessertes Verfahren bzw. eine neue und verbesserte Vorrichtung zur Implementierung eines Vokoders (Sprachkodierer-Dekodierer) in einem anwendungsspezifischen integrierten Schaltkreis (ASIC: applications specific integrated circuit).
  • Die vorliegende Erfindung bezieht sich auf einen Blocknormalisierungsprozessor, der in Verbindung mit der Erfindung der Stammanmeldung nützlich ist.
  • II. Stand der Technik
  • Übertragung von Sprache durch digitale Verfahren ist weit verbreitet, insbesondere bei Ferngesprächen und digitalen Radiotelefonanwendungen. Wenn Sprache durch einfaches Abtasten und Digitalisieren übertragen wird, so ist eine Datenrate in der Größenordnung von 64 Kilobits in der Sekunde (kbps) erforderlich, um die Sprachqualität herkömmlicher analoger Telefone zu erreichen. Durch die Nutzung von Sprachanalyse jedoch, gefolgt durch entsprechendes Kodieren, Übertragung und Synthese am Empfänger, kann eine signifikante Reduktion der Datenrate erzielt werden. Vorrichtungen, die Sprachanalyse und Kodierung am Sender und Synthese am Empfänger ausführen, sind als Vokoder bzw. Sprachkodierer bekannt.
  • Die kürzliche Entwicklung digitaler zellularer Telefonstandards und -systeme hat den Bedarf für diese Vokoder gefördert. Der Wunsch nach fortgeschrittenen Sprachkodieralgorithmen welche die verfügbare Übertragungsbandbreite effizienter nutzen und die Quellsprache genauer am Empfänger reproduzieren hat den Bedarf an Prozessoren mit größerer Rechenkapazität erhöht, die gebraucht wird, um die komplexeren Sprachkodieralgorithmen auszuführen.
  • Vokoder nutzen Langzeit- und Kurzzeitredundanzen in der Sprache aus, die berechnungsmäßig intensive numerische Operationen erfordern. Einige dieser Operationen schließen Langsequenzfaltungen, Matrixinversionen, Langsequenzkorrelationen und so weiter ein. Um diese Operationen in Echtzeit auszuführen, ohne untolerierbare Kodier- und Dekodierverzögerungen in der Sprachübertragung zu bewirken, sind leistungsstarke Rechenresourcen erforderlich.
  • Das Auftreten digitaler Signalprozessoren (DSP) war ein wichtiger Faktor, um Echtzeitimplementierungen von Vokoderalgorithmen zu ermöglichen. DSP sind hocheffizient in der Ausführung arithmetischer Operationen, die für Vokoderalgorithmen üblich sind. Fortschritte in den DSP haben ihre Rechenkapazität auf Raten von 40 Millionen Anweisungen pro Sekunde (MIPS: million instructions per second) und darüber erhöht.
  • Der für Beispielzwecke genutzte Sprachkodieralgorithmus ist der Kode-erregte lineare Vorhersagealgorithmus (CELP: code excited linear prediction) mit variabler Rate, der in US-A 5,414,796 mit dem Titel "Variable rate vocoder" detailliert dargestellt ist.
  • In der Tabelle I in der Folge ist ein Ablaufzeitprofil für einen einzelnen 20 Millisekunden Sprachrahmen des Kodierteils des beispielhaften Sprachkodieralgorithmus gezeigt, wie er unter Verwendung eines typischen DSP implementiert ist. Weil der Kodierteil des beispielhaften Sprachkodieralgorithmus signifikant mehr Verarbeitung erfordert als der Dekodierteil, ist nur der Kodierprozess detailliert in Tabelle I gezeigt. Der DSP, auf den in Tabelle I Bezug genommen wird, ist mit 40 MHz getaktet und führt arithmetische Operationen und andere Operationen aus, und zwar jede in einem oder mehreren Taktzyklen, abhängig von der Operation. Die erste Spalte stellt die Hauptoperationen des beispielhaften Sprachkodieralgorithmus dar. Die zweite Spalte stellt die Anzahl der Taktzyklen dar, die erforderlich ist, um jede spezielle Operation des Vokoderalgorithmus unter Verwendung eines beispielhaften DSP auszuführen oder zu erreichen. Die dritte Spalte stellt den Prozentsatz der Gesamtverarbeitung dar, der durch die spezielle Operation gefordert wird. Der beispielhafte Sprachkodieralgorithmus fordert, daß alle Operationen innerhalb von 20 Millisekunden für Echtzeitoperation des beispielhaften Sprachkodieralgorithmus ausgeführt werden. Dies stellt eine Forderung an den DSP dar, der gewählt wird, um den Algorithmus zu implementieren, so daß der DSP in der Lage ist, bei einer Taktrate von oder über der geforderten zu operieren, um die erforderliche Verarbeitung innerhalb des 20 Millisekunden Rahmens zu vervollständigen. Für den typischen DSP, der in Tabelle I beschrieben ist, beschränkt dies die Taktanzahl auf 800000. TABELLE I
  • Wie aus Tabelle I gesehen werden kann, verbrauchen die Tonhöhensuche und Kodebuchsuche über 75% der Verarbeitungszeit im Kodierteil des Vokoderalgorithmus. Da der Großteil der Rechenlast innerhalb dieser beiden Suchalgorithmen liegt, ist das Hauptziel eines effizienten ASIC, der zum Ausführen von Sprachkodierung entworfen ist, die Taktzyklenanzahl zu verringern, die zur Ausführung dieser zwei Operationen erforderlich ist.
  • Das Verfahren und die Vorrichtung der Erfindung der Stammanmeldung und der vorliegenden Erfindung verringern stark die Anzahl von Anweisungszyklen, die notwendig ist, um diese Suchoperationen auszuführen. Die vorliegende Erfindung und die Erfindung der Stammanmeldung sehen weiterhin Verfahren und Vorrichtungen vor, die optimiert sind zum Ausführen effizienterer Operationen, die von besonderer Bedeutung für Sprachkodieralgorithmen sind. Die Anwendung der Verfahren und Vorrichtungen der vorliegenden Erfindung und der Erfindung der Stammanmeldung sind nicht beschränkt auf die Ausführung der beispielhaften Sprachkodieroperation oder sogar der Ausführung von Sprachkodierung und -dekodierung. Es sei vergegenwärtigt, daß die Verfahren und Vorrichtungen auf jedes System angewendet werden können, das digitale Signalverarbeitungsalgorithmen wie zum Beispiel Echoauslöscher und Kanalausgleicher bzw. -entzerrer nutzt.
  • In der Stammanmeldung ist die beispielhafte Ausführungsform der Erfindung, die hierin beschrieben ist, eine ASIC-Implementierung eines CELP-Algorithmus mit variabler Rate, der in der zuvor erwähnten US-A-5,414,796 detailliert dargelegt ist. Die Merkmale der Erfindung der Stammanmeldung sind gleichermaßen anwendbar auf jeden linearen Vorhersagekodealgorithmus (LPC: linear predictive coding). Die Erfindung führt eine Architektur ein, die optimiert ist, um einen Vokoder-Agorithmus in einer redu zierten Anzahl von Taktzyklen und mit reduziertem Leistungsverbrauch auszuführen. Das endgültige Optimierungsziel war es, den Leistungsverbrauch zu minimieren. Die Reduzierung der Taktanzahl, die erforderlich ist, um den Algorithmus auszuführen, war ebenfalls ein Gesichtspunkt, da die reduzierte Taktrate sowohl direkt als auch indirekt bewirkt, daß der Leistungsverbrauch gesenkt wird. Der direkte Effekt wird durch die Beziehung zwischen dem Leistungsverbrauch und der Taktrate für komplementäre Metalloxidhalbleitereinrichtungen (CMOS) bedingt. Der indirekte Effekt wird durch die quadratische Abhängigkeit bzw. Beziehung zwischen Leistungsverbrauch und Spannung in einer CMOS-Einrichtung bedingt, und durch die Fähigkeit, die Spannung mit sinkender Taktrate zu senken. Die Effizienz des Vokoder ASIC ist ein Maß für die Verarbeitungsmenge, die pro Taktzyklus erreicht bzw. erzielt wird. Das Erhöhen der Effizienz wird dann die Gesamtanzahl der Taktzyklen reduzieren, die erforderlich ist, um den Algorithmus auszuführen.
  • Ein erstes Verfahren, die Effizienz der Leistung des Sprachkodieralgorithmus zu erhöhen, ist eine spezialisierte DSP-Kernarchitektur. Der DSP-Kern der beispielhaften Ausführungsform erhöht den Speicherdurchsatz durch das Vorsehen von 3 Direktzugriffspeicher bzw. Random- Access-Memory-(RAM)Elementen. Jedes dieser 3 RAM-Elemente hat eine eigene Speicheradresserzeugungseinheit. Diese Dreifachteilung des Speichers erlaubt die effiziente Ausführung solcher Operationen wie rekursive Faltung durch Vorsehen von Operanden, Berechnungsergebnissen und Speicherergebnissen, und zwar alle in einem einzelnen Zyklus. Das Herbeiholen der Operanden, die Berechnung der Ergebnisse und die Speicherung der Ergebnisse werden über eine Leitung geleitet, so daß die komplette rekursive Faltung für ein einzelnes Ergebnis über 3 Zyklen ausgeführt wird, wobei aber ein neues Ergebnis in jedem Zyklus erzeugt wird. Der dreifach geteilte Speicher verringert ebenfalls die Taktzyklusanforderungen für andere Operationen im Vokoderalgorithmus. Die effiziente Ausführung der rekursiven Faltung liefert die bedeutensten Einsparungen im Vokoderalgorithmus.
  • Ein zweites Verfahren, die Effizienz der Leistung des Vokoderalgorithmus zu erhöhen, ist es, einen separaten Sklaven- bzw. Hilfsprozessor zum DSP-Kern vorzusehen, der als Minimierungsprozessor bezeichnet wird. Der Minimierungsprozessor führt Korrelationen aus, berechnet mittlere quadratische Fehler (MSE: mean squared errors), und sucht nach den minimalen MSE über die Daten, die an ihn durch den DSP-Kern geliefert werden. Der Minimierungsprozessor teilt die berechnungsmäßig intensive Korrelation und die Minimierungsaufgaben mit dem DSP-Kern. Der Minimierungsprozessor wird mit einem Steuerelement vorgesehen, der die Operation des Minimierungsprozessors überwacht, und er kann die Operation bzw. den Betrieb der MSE-Minimierungsaufgabe unter gewissen Bedingungen kürzen. Diese Bedingungen sind solche, für welche fortgesetztes Suchen keinen MSE unterhalb des aktuellen minimalen MSE liefern kann, und zwar bedingt durch mathematische Einschränkungen. Die Verfahren zum Kürzen der MSE- Minimierungsaufgabe werden als Leistungseinsparmodi des Minimierungsprozessors bezeichnet.
  • Die vorliegende Erfindung bezieht sich auf eine Blocknormalisierung. US-A-5,491,773 an Veldhuis und andere lehrt, daß für das Kodieren eines Subbandes eines Signals, wie beispielsweise digitalen Stereo Signals, das digitale Signal in Subbänder aufgespalten wird, von denen jedes zumindest erste und zweite Subbandsignalkomponenten aufweist. Die Subbandsignalkomponenten in einem Subband m sind durch Blöcke von jeweils q Proben konstituiert, die durch eine bestimmte Anzahl von Bits (nmr, nmi) repräsentiert sind. Die Anzahl der Bits ist das Ergebnis einer Zuweisung basierend auf einer Bestimmung der Bit- Bedürfnisse der Blöcke in jedem Subband. Eine Bestimmung wird dahingehend unternommen, ob oder ob nicht anfängliche Bits einem Signalblock einer Komponente in einem Subband vor der Bit-Zuordnung bzw. Zuweisung zuzuordnen sind, und zwar ohne Berücksichtigung des Bit-Bedarfs für diesen Signalblock. Wenn bestimmt wurde, daß eine anfängliche Bit-Zuweisung für einen besonderen Signalblock in einem Subband erforderlich ist, wird eine anfängliche Bit-Zuordnung ebenso auf zumindest einen zweiten entsprechenden Signalblock in diesem Subband angewendet. Veldhuis lehrt eine herkömmliche, rechenintensive Normalisierung durch Division unter Verwendung eines Dividieres (Bezugszeichen 314 in der Beschreibung). Im Veldhuis- Patent wird Bezug auf die EP-A-0402973 hinsichtlich einer Normalisierung genommen.
  • In der englisch-sprachigen Zusammenfassung der SU-A- 518781, veröffentlicht in Soviet Inventions Illustrated vom 17. Mai 1977, Abschnitt R, Electrical, wird beschrieben, daß eine Recheneinheit mit einer digitalen Integrierungsstruktur vorgesehen wird, die unter anderem einen Normalisierungsblock und einem Block für den Empfang und das Speichern eines Inversionsskalierungssignals besitzt. Im Integrations- bzw. Integrierungsverfahren werden Anfangsdaten auf einen Integrantspeicherblock und auf einem Block zur Speicherung der Ordnung des Ausgangs Inkrements angewendet. Ein Skalierungsblock wendet ein Entscheidungssignal auf den Integrantspeicherblock zur Übertragug der Werte der Ordnungen an einen Integrantinkrementblock an. Eine anfängliche Skalierung wird dann durchgeführt. Wenn der Integrantinkrementblock und ein Inkrementblock für die Variable der Integration ihre Eingänge über Eingangsbusse vermittelt bzw. Übertragen haben, dann wird ein Entscheidungssignal von -1 vom Skalierungsblock summiert, und zwar während einer spezifizierten Anzahl von Skalierungsschritten, und zwar mit den Ordnungen der Inkremente des Integrantinkrementblocks und des Inkrement Blocks für die Variable der Integration. Nach der spezifizierten Anzahl der Skalierungsschritte tritt eine Stabilisierung der Ordnung und Numerische Information auf. Eine automatische Skalierung wird durch den Integrantinkrementblock, den Inkrementblock für die Variable der Integration, den Normalisierungsblock, den Block zur Speicherung der Ordnung des Ausgangsinkrements und den Block zum Empfang und zur Speicherung des Inversionsskalierungssignals bewirkt. Der automatische Skalierungsprozess besteht im heraus arbeiten der Skalierungssignale, Veränderung der Ordnung des Integranten ferner in den Ausgangsinkrementen und in der Variable der Integration und im Verschieben der Mantissa des Integranten, den Ausgangsinkremente und der Variablen der Integration.
  • Die DE-A-40 31 603 beschreibt eine Ergebniszahlschiebeschaltung, welche die Ergebniszahl zusammen mit dem Dezimalpunkt in die korrekte Position bringt. Eine herkömmliche, dezimalpunktfreie Dezimalzahl muß im Anzeigefeld derart erscheinen, daß ihr Platzwert 100 vollkommen auf der linken. Seite ist. Im Gegensatz dazu muß die erste Nummer bzw. Zahl einer Dezimalbruchzahl völlig auf der rechten Seite erscheinen, wenn der Teil nach dem Dezimalpunkt ein endloser Dezimalbruch ist. Die Schiebeschaltung besteht aus Zahlschieberegistern, Dezimalpunktschieberegistern und assoziierten Schaltungselementen. Nach Vollendung einer Addition oder Subtraktion oder Multiplikation oder Division befindet sich die Ergebniszahl in einem Schieberegister ohne eine präzise Positionierung und der assoziierte Dezimalpunkt befindet sich in einem anderen Schieberegister und wird durch eine Taktfrequenz angetrieben. Die Ergebniszahl mit dem kleineren Platzwert an ihrem Anfang wird in ein Nummern- bzw. Zahlschieberegister getaktet und der assoziierte Dezimalpunkt wird in ein Dezimalpunktschieberegister getaktet. Der Taktantrieb wird unterbrochen, sobald entweder eine Zahl (nicht die Zahl 0, jedoch eine Zahl von 1-9) ein spezifiziertes Bit erreicht hat oder der Dezimalpunkt ein alternatives spezifiziertes Bit erreicht hat, um die erforderliche Ausgangsgröße in einem Anzeigefeld zu erreichen.
  • Zusammenfassung der Erfindung.
  • Ein drittes Mittel bzw. Verfahren, um die Effizienz der Leistung des Sprachkodieralgorithmus in der beispielhaften Ausführungsform zu erhöhen, ist der Inhalt der vorliegenden Anmeldung. Die Erfindung in ihrem breitesten Aspekt ist in Anspruch 1 dargelegt. Die Erfindung umfaßt das Vorsehen einer eigenen Hardware für das effiziente Ausführen von Blocknormalisierung vorzusehen. In den Berechnungen des Sprachkodieralgorithmus gibt es einen Bedarf, den höchsten Genauigkeitspegel, der in den Berechnungen möglich ist, beizubehalten. Durch Vorsehen einer eigenen Hardware kann die Blocknormalisierung simultan mit anderen Operationen im Vokoderalgorithmus ausgeführt werden, wobei die Anzahl der Anweisungszyklen, die zum Ausführen des Vokoderalgorithmus notwendig ist, reduziert wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Merkmale, Ziele und Vorteile der vorliegenden Erfindung werden aus der detaillierten Beschreibung im Zusammenhang mit den Zeichnungen ersichtlich, wobei gleiche Bezugszeichen gleiche Teile kennzeichnen. Die Beschreibung ist ein beispielhaftes Ausführungsbeispiel sowohl der Erfindung der Stammanmeldung als auch der vorliegenden Erfindung. Es zeigen:
  • Fig. 1 ein Blockdiagramm der Vorrichtung der vorliegenden Erfindung;
  • Fig. 2 eine funktionale Darstellung der Betriebsweise der vorliegenden Erfindung;
  • Fig. 3 ein Flußdiagramm eines beispielhaften Kodierbetriebs der vorliegenden Erfindung;
  • Fig. 4a-4d einen Satz von Diagrammen, die die Vokoder- Bitzuweisung für verschiedene Raten illustrieren und die Anzahl der Tonhöhen- und Kodebuchunterrahmen anzeigen, die für jede Rate genutzt wird;
  • Fig. 5a-5d Blockdiagramme einer beispielhaften Ausführungsform des DSP-Kerns der vorliegenden Erfindung;
  • Fig. 6a-6b Blockdiagramme einer beispielhaften Ausführungsform des Minimierungsprozessors der vorliegenden Erfindung;
  • Fig. 7 eine Darstellung der Tonhöhensuchoperation, wie in der beispielhaften Ausführungsform der vorliegenden Erfindung ausgeführt;
  • Fig. 8 ein Flußdiagramm der Tonhöhensuchoperation der beispielhaften Ausführungsform der vorliegenden Erfindung;
  • Fig. 9 eine Darstellung der Kodebuchsuchoperation, wie in der Ausführungsform der vorliegenden Erfindung ausgeführt:
  • Fig. 10 ein Flußdiagramm der Kodebuchsuchoperation der beispielhaften Ausführungsform der vorliegenden Erfindung;
  • Fig. 11 ein Blockdiagramm des Dekoders des Kodierers, der verantwortlich ist dafür, daß die Filterspeicherung des Kodierers an einem Ende und des Dekodierers am anderen Ende der Nachrichtenverbindung gleich beibehalten wird in der Sprachkodieroperation der beispielhaften Ausführungsform der vorliegenden Erfindung; und
  • Fig. 12 ein Blockdiagramm des Dekodierers der beispielhaften Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Mit Bezug auf die Figuren ist der DSP-Kern 4 der Fig. 1, der in den Fig. 5a-5d dargestellt ist, um einen dreifach geteilten Random Access-Speicher (RAM = random access memory), (RAM A 104, RAM B 122 und RAM C 182), einen Festwertspeicher (ROM: read only memory) (ROM E 114) und eine effiziente arithmetische logische Einheit (ALU = arithmetic logic unit) (ALU 143) herum entworfen. Der dreifach geteilte RAM liefert eine effizientere ALU- Ausnutzung und eine erhöhte RAM-Bandbreite bezüglich dessen, was mit einem einzelnen RAM erreicht werden kann. Ein eigener ROM, ROM E 114, sieht 16 Bit Konstanten vor. Die RAM-Teilungen RAM A 104, RAM B 122 und RAM C 182 und der ROM, ROM E 114, liefern Daten an die ALU 143. RAM C 182 akzeptiert und liefert 32-Bitdaten von und zur ALU 143, während RAM A 104 und RAM B 122 16-Bitdaten akzeptieren und liefern, was die Berechnungen mit 16-Bit Operanden und die Speicherung von 32-Bit Ergebnissen hoch effizient macht.
  • Jede Teilung hat eine eigene Adresserzeugungseinheit. RAM A 104 hat Adresseinheit A 102, RAM B 122 hat Adresseinheit B 120 und RAM C 182 hat Adresseinheit C 186 und ROM E 114 hat Adresseinheit E 112. Jede der Adresseinheiten weist Register, Multiplexer und Addier/Subtrahierelemente (nicht gezeigt) auf. In einem Taktzyklus kann der DSP- Kern 4 drei Speicheroperationen, drei Adressaktualisierungen, eine arithmetische Operation (zum Beispiel Multiplizieren-Akkumulieren-Normalisieren) und eine Datenbewegung zum Minimierungsprozessor 6 ausführen.
  • Anweisungs-ROM, ROM I 194, speichert Anweisungen, welche die Ausführungssequenz des DSP-Kerns 4 steuern. Die Sequenz der Instruktionen, die in ROM I 194 gespeichert sind, beschreibt die Verarbeitungsfunktionen, die durch den DSP-Kern 4 ausgeführt werden. ROM I 194 hat eine ei gene Adresserzeugungseinheit, einen eigenen IP-Zähler und Stapelspeicher 196.
  • Die RAM-Adresserzeugungseinheiten oder Registerdateien, Adresseinheit A 102, Adresseinheit B 120 und Adresseinheit C 186 liefern Adressen und Daten für entsprechende RAM-Operationen. Daten können von Registerdateielementen zu anderen Registerdateielementen innerhalb der selben Adresseinheit oder zum entsprechenden RAM bewegt werden. In der beispielhaften Ausführungsform liefert Adresseinheit A 102 Daten über den Multiplexer 106 zum RAM 104, Adresseinheit B 120 liefert Daten über Multiplexer 124 an RAM B 122, und Adresseinheit C 186 liefert Daten über Multiplexer 180 an RAM C 182.
  • Registerdateielemente akzeptieren unmittelbare bzw. sofortige Daten IMM (wie in Fig. 5a-d dargestellt), Daten von anderen Registerdateielementen innerhalb der selben Adresseinheit oder Daten vom RAM. Somit betrifft die Erwähnung der Worte "sofortige Daten" in jedem Fall die Daten, die durch den Anweisungsdekodierer 192 geliefert werden. In der beispielhaften Ausführungsform liefert RAM A 104 Daten über den Multiplexer 100 an die Adresseinheit A 102, RAM B 122 liefert Daten über den Multiplexer 118 an Adresseinheit B 120 und Ram C 182 liefert Daten über Multiplexer 184 an Adresseinheit C 186. Jede Adresseinheit liefert ein automatisches Nach-Inkrement und Nach- Dekrement durch einen intern vorgesehenen Addierer/Subtrahierer (nicht gezeigt). In der beispielhaften Ausführungsform liefert die Adresseinehit B 120 automatische Modulo-Adressierung und zwei eigens vorgesehene Registerdateielemente (nicht gezeigt), die als Zeiger für einen Direktspeicherzugriff (DMA = direct memory access) verwendet werden.
  • Adresseiheit E 112 ist für Koeffizientenabfrage optimiert. Sie enthält ein Basisregister, welches sofortige Daten über Multiplexer 110 akzeptiert und ein Offset- Register, welches sofortige Daten über Multiplexer 110 oder Daten eines Akkumulators (C0REG 164 oder C1REG 166) über Multiplexer 168 und 110 akzeptiert. Das Offset-Register sieht ein automatisches Nach-Inkrement und Nach- Dekrement mittels eines internen Addierers/Subtrahierers (nicht gezeigt) vor.
  • IP-Zähler und (Daten-)Stapel(engl: stack) 196 enthält Adressenzeiger, welche die Funktion der Adressierung des ROM 194 ausführen. Die Adressensequentierung wird durch den Anweisungsdekodierer 192 gesteuert. Adressdaten werden entweder innerhalb des IP-Zählers und des Stapels 196 bewegt oder als sofortige Daten akzeptiert.
  • Daten können vom RAM A 104, RAM B 122 oder RAM C 182 zu Registern innerhalb der ALU 143 bewegt werden. Daten können auch vom Akkumulator (C0REG 164 oder CRREG 166) zum RAM A 104, RAM B 122 oder RAM C 182 bewegt werden. Daten können vom OREG 162 zum RAM C 182 bewegt werden.
  • RAM A 104 akzeptiert Daten von der Adresseinheit A 102 über Multiplexer 106. RAM A 104 akzeptiert auch Daten von einem Akkumulator (C0REG 164 oder C1REG 166) über Multiplexer 168 und 106. RAM B 122 akzeptiert Daten von der Adresseinenheit B 120 über Multiplexer 124. RAM B 122 akzeptiert auch Daten von einem Akkumulator (C0REG 164 oder C1REG 166) über Multiplexer 168 und 124. RAM B 122 akzeptiert auch Daten vom DMA INPUT (wie in Fig. 5a-d gezeigt) oder vom INREG 128 über Multiplexer 124. RAM C 182 akzeptiert Daten von Adresseinheit C 186 über Multiplexer 180. RAM C akzeptiert auch Daten von einem Akkumulator (C0REG 164 oder C1REG 166) über Multiplexer 168 und 180. RAM A 104 liefert Daten an Adresseiheit A 102 über Mutliplexer 100 und an AREG 130 über Mutliplexer 108. RAM B 122 liefert Daten an Adresseinheit B 120 über Mutliplexer 118, an RAMB DOUT (wie in Fig. 5a-d gezeigt), an SREG 136 durch Multiplexer 126, BREG an BREG 134 über Multiplexer 116 und an DREG 156 über Multipleyer 158.
  • AREG 130 akzeptiert sofortige Daten, Daten vom ROM E 114 oder Daten vom RAM A 104 über Multiplexer 108. BREG 134 akzeptiert sofortige Daten, Daten von ROM E 114 oder Daten von RAM B 122 über Multiplexer 116. BREG 134 akzeptiert auch Daten von einem Akkumultator (C0REG 164 oder C1REG 166) über Multiplexer 168 und 116.
  • C0REG 164 und C1REG 166 akzeptieren Daten über Multiplexer 148, von RAM C 182, vom Summierer 146, vom logischen UND-Element 144 oder vom logischen ODER-Element 142.
  • Schiebeindexregister SREG 136 akzeptiert sofortige Daten oder Daten vom RAM B 122 über Multiplexer 126.
  • ALU 143 führt Multiplikations-, Additions-, Subtraktions- , Multiplikations-Akkumulations-, Multiplikations-Additions-, Multiplikations-Subtraktions-, Rundungs-, Inkrementierungs-, Lösch-, Negierungs- und logische UND, ODER und Invertierungs-Operationen aus. Die Eingaben an den Multiplizierer 132, AREG 130 und BREG 134 sind gegattert (gating, nicht gezeigt), wobei der Leistungsverbrauch im Multiplizierer 132 reduziert wird, indem sichergestellt wird, daß die Eingaben sich nur ändern, wenn eine Multiplikation ausgeführt wird. ALU 143 sieht zwei 36-Bit Akkumulatoren (C0REG 164 und C1REG 166) für die Effizienz und zwei Barrel-Schieber bzw. Barrelshifter bzw. Schiebelogiken vor, und zwar Barrel-Schifter 140 und Barrel- Schifter 150, und zwar zur Normalisierung. Verschiebungen bis zu 16-Bit Positionen links oder rechts werden durch Barrel-Schifter 140 und Barrel-Schifter 150 vorgesehen. Der Schiebeindex wird entweder explizit über sofortige Daten oder durch einen eigens vorgesehenes Schiebeindexregister SREG 136 über Multiplexer 149 spezifiert. Das Schiebeindexregister, SERG 136, in Verbindung mit Barrel- Schiftern 140 und 150, das bitweise logische OREG-Element 160 und ODER 162 sind vorgesehen, um den Überhang in der Ausführung der Blocknormalisierung zu minieren. ALU 143 sieht einen Status-zu-Anweisungsdekodierer 192 vor, der bedingte Sprünge erlaubt, und zwar basierend auf den arithmetischen und logsichen Zuständen des C0REG 164 und/oder C1REG 166. Zum Beispiel werden in der beispielhaften Ausführungsform die Vorzeichen für die Werte in C0REG 164 und C1REG 166 verglichen, um eine bedingte Sprung-auf-Vorzeichen-Veränderung vorzusehen. Ein Sprung tritt auf, wenn sofortige Daten an den IP-Zähler und Stapel 196 vorgesehen werden. Akkumulatorüberlauf und Akkumulatorunterlauf werden detektiert und Sättigung wird automatisch ausgeführt durch Vorsehen beziehungsweise Liefern des hexadezimalen Wertes 0·7FFFFFFF im Falle des Überlaufs und 0·80000001 im Falle des Unterlaufs entsprechend der Zweierkomplementarithmetik.
  • Die Anweisungsausführungssequenz wird abgerufen, detektiert und ausgeführt. Ein Adressenwert wird durch den IP- Zähler und Stack 146 an den Anweisungs-ROM I 194 geliefert, welcher ansprechend darauf eine Anweisung an Anweisungsdekodierer 192 liefert. Anweisungsdekodierer 192, ansprechend auf diese Eingangsanweisung, dekodiert die Anweisung und liefert Steuersignale an die entsprechenden Elemente innerhalb des DSP-Kerns 4 zur Ausführung der Anweisung.
  • Eigens vorgesehene Schleifenzähler und Stack 190 zusammen mit IP-Zähler und Stapel 196 liefern verschachtelte Subroutinenaufrufe mit geringem Überhang und verschachtelte Schleifen. Der Anweisungsaufruf bzw. Anweisungsabruf wird während einzelner Anweisungsschleifen ausgeschaltet, was den Leistungsverbrauch verringert. Schleifenzähler und Stapel 190 akzeptiert sofortige Daten über Mutliplexer 188 zum Ausführen von Schleifen mit fester Länge. Schleifenzähler und Stapel 190 akzeptieren auch Daten von einem Akkumulator (C0REG 164, C1REG 166) über Multiplexer 168 und 188 zum Ausführen von Schleifen variabler Länge. Ein 256-Wort statischer Anweisungscache (nicht gezeigt) innerhalb des ROM I 194 liefert einen Anweisungsaufruf mit geringer Leistung für die am häufigsten ausgeführten Schleifen und Subroutinen. Eine WAIT-Anweisung (WARTEN- Anweisung) schaltet den Anweisungsaufruf und die Anweisungsdekodierung, wartend auf ein Ereignis, aus, was den Leistungsverbrauch verringert. Beispiele solcher Ereignisse können einen DMA-Transfer, eine Zeitabtastung von der PCM-Schnittstelle 2 oder ein externes Ereignis einschließen.
  • Externe Daten und Steuerung werden an den DSP-Kern 4 über PORT INPUT (wie in Fig. 5a-d gezeigt), DMA INPUT von PCM-Schnittstelle 2 und statische Testbits, die in bedingten Sprunganweisungen verwendet werden, geliefert. Daten werden extern durch den DSP-Kern 4 über CREG (wie in Fig. 5a-d, 6a-b) und RAMB DOUT vorgsehen. DMA zwischen DSP-Kern 4 und PCM-Schnittstelle 2 wird durch Zyklusklau bzw. cycle stealing ausgeführt, wie in der Technik bekannt ist. Daten vom C0REG 164 oder C1REG 166 werden über Multiplexer 168 geliefert, und zwar in Verbindung mit dem OUTREG EN (-Signal) (wie in Fig. 5a-d, 6a-b gezeigt) vom Anweisungsdekodierer 192. Ein aktivies OUTREG EN-Signal kennzeichnet das Vorhandensein gültiger CREG-Daten, die an Minimierungsprozessor 6 geliefert werden.
  • Minimierungsprozessor 6, der in Fig. 6a-b dargestellt ist, unterstützt die rechenintensiven Teile der Tonhöhen- und Kodebuchsuchen. Um eine Minimierungsprozedur auszuführen, empfängt der Minimierungsprozessor 6 eine Sequenz von wahrnehmenden gewichteten Eingangssprachproben, einen Satz von Verstärkungswerten und einen Satz synthetisierter Sprachprobensequenzen vom DSP-Kern 4. Minimierungsprozessor 6 berechnet die Autokorrelation der syntheti sierten Sprache und die Kreuzkorrelation zwischen der synthetisierten Sprache und der wahrnehmenden gewichteten Eingangssprache. Aus diesen Korrelationen wird ein relatives Maß für den mittleren quadratischen Fehler (MSE = mean-square-error) zwischen der synthetisierten Sprache und der Eingangssprache als eine Fuktion der synthetisierten Sprachverstärkung und des Indexes bestimmt. Minimierungsprozessor 6 berichtet den Index und die Verstärkung, die den minimalen MSE ergeben. Leistungseinsparungsmerkmale brechen MSE-Berechnungen ab, wenn eine weitere Minimierung nicht möglich ist. Minimierungsprozessor 6 steht in Vebrindung mit DSP-Kern 4 über CREG, Anschluß I/O und eigens vorgesehene DSP-Kern-Anweisungen.
  • Die Betriebsweise des Minimierungsprozessors 6 wird über Steuerung 220 bestimmt. Steuerung 220 weist folgendes auf: einen Zähler, um aktuelle Indexwerte zu verfolgen, Register, um die optimalen Tonhöhen- oder Kodebuchsuchergebnisse zu halten, Adresserzeugungsschaltung für den Zugriff auf RAM · 212 und Eingangs-/Ausgangs-Schaltungen.
  • Zusätzlich ist das Steuerelement 220 verantwortlich zum Steuern von ausgewählten Signalen auf Multiplexern 224, 234, 230 und 246 und schaltet Auffangregister bzw. Signalspeicher 210, 214, 226, 228, 236, 238, 244 und 250 ein. Steuerung 220 überwacht auch verschiedene Werte innerhalb der Elemente im Minimierungsprozessor 6, steuert Leistungseinsparmodi, welche die Suchen unter gewissen vorbestimmten Suchbeendigungsbedingungen kürzen, und steuert die Zirkulation der Gewinnwerte im Zirkularpuffer 259.
  • Weiterhin ist die Steuerung 220 verantwortlich für die Ausführung von Eingangs-/Ausgangs-Operationen. Steuerung 220 ist verantwortlich für das Liefern der Minimierungsergebnisse zum DSP Kern 4 (d. h., die beste Tonhöhenverzögerung und die beste Tonhöhenverstärkung oder der beste Kodebuchindex und die Kodebuchverstärkung, die in ihren entsprechenden Suchen bestimmt wurden) über Eingangsanschlüsse 12. Das OUTREG EN-Signal wird vorgesehen, um Element 220 zu steuern, um anzuzeigen, daß die Daten auf dem Eingang zum Signalspeicher (engl. latch) 210 gültig sind und auf dem Akkumulator-Ausgangssignal CREG vorhanden sind. Steuerung 220 erzeugt ansprechend darauf ein Einschaltsignal und liefert das Einschaltsignal an Signalspeicher 210, um Daten zu empfangen.
  • Die OUTPORT EN (wie in Fig. 5a-d, 6a-b gezeigt), und PORT ADD-Signale (wie in Fig. 5a-d, 6a-b gezeigt) werden an Steuerelement 220 vom DSP-Kern 4 geliefert. Das PORT ADD-Signal liefert eine Adresse an Minimierungsprozessor 6. Minimierungsprozessor 6 wird Daten vom CREG akzeptieren, wenn der PORT ADD-Wert Daten für den Minimierungsprozessor 6 spezifiziert und OUTPORT EN einen gültigen PORT ADD-Wert anzeigt. Die Steuerung und Daten werden an Minimierungsprozessor 6, wie oben beschrieben, geliefert.
  • Mit Bezug auf Fig. 1, welche ein beispielhaftes Blockdiagramm der Architektur der vorliegenden Erfindung ist, empfängt PCM-Schnittstelle 2 von einem Kodierer/Dekodierer bzw. Codec (nicht gezeigt) Pulskodemodulations-(PCM)- Sprachprobendaten und liefert solche an den Codec, welche in der beispielhaften Ausführungsform in der Form von u- Regel (engl.: u-law) oder A-Regel-(engl.: A-law)-kompandierten Probedaten oder linearen Probedaten sind. Die PCM-Schnittstelle 2 empfängt Zeitinformationen vom Taktgenerator 10 und liefert Daten und Steuerinformationen von der Mikroprozessorschnittstelle 8.
  • Die PCM-Schnittstelle 2 liefert zum DSP-Kern 4 die PCM- Sprachprobendaten, die es vom Codec (nicht gezeigt) zum Kodieren empfängt. Die PCM-Schnittstelle 2 empfängt vom DSP-Kern 4 PCM-Sprachprobendaten, die dann zum Codec (nicht gezeigt) geliefert werden. Die PCM-Daten werden zwischen DSP-Kern 4 und PCM-Schnittstelle 2 über DMA übertragen bzw. transferiert. Die PCM-Schnittstelle 2 liefert Zeitinformationen an Taktgenerator 10, und zwar basierend auf dem Zeitverhalten der Proben, die vom Codec (nicht gezeigt) empfangen werden.
  • Der DSP-Kern 4 liefert Daten und Steuerinformationen an seinen Koprozessor, Minimierungsprozessor 6. Der DSP-Kern 4 liefert auch Daten zu den Ausgangsanschlüssen 14 und empfängt Daten von den Eingangsanschlüssen 12. Der DSP- Kern 4 empfängt Zeitsteuerinformationen vom Taktgenerator 10. Der DSP-Kern 4 ist auch in der Lage externe Adresseninformationen zu liefern und externe Anweisungen und Daten zu empfangen.
  • Der Minimierungsprozessor 6 empfängt Zeitsteuerinformationen vom Taktgenerator 10 und empfängt Daten und Steuerung vom DSP-Kern 4. Der Minimierungsprozessor 6 liefert Ergebnisse der Minimierungsprozeduren an DSP-Kern 4 über Eingangsanschlüsse 12.
  • Der Taktgenerator 10 liefert Zeitsteuerinformationen an alle anderen Blöcke. Der Taktgenerator 10 empfängt externe Taktsignale und empfängt Zeitsteuerinformationen von der Mikroprozessor-Schnittstelle 8 und von der PCM- Schnittstelle 2.
  • Joint Test Action Group (JTAG)-Schnittstelle 16 sieht die Fähigkeit vor, die Funktionalität des ASIC zu testen. Die JTAG-Schnittstelle 16 empfängt externe Daten und Steuerinformationen und liefert externe Daten.
  • Die Ausgangsanschlüsse 14 empfangen Daten vom DSP-Kern 4 und liefern diese Daten an Mikroprozessor-Schnittstelle 8 und können ebenfalls Daten an externe Einrichtungen (nicht gezeigt) liefern.
  • Die Eingangsanschlüsse 12 empfangen Daten von der Mikroprozessor-Schnittstelle 8, vom Minimierungsprozessor 6 und liefern diese Daten zum DSP-Kern 4. Die Eingangsanschlüsse 12 können ebenfalls Daten von externe Einrichtungen (nicht gezeigt) empfangen und diese Daten an Mikroprozessor-Schnittstelle 8 liefern.
  • Die Mikroprozessor-Schnittstelle 8 empfängt Daten und Steuerinformationen von einem Mikroprozessor (nicht gezeigt) und liefert solche an ihn. Diese Informationen werden an die anderen Blöcke geliefert.
  • In der beispielhaften Ausführungsform der vorliegenden Erfindung führt der Vokoder ASIC einen CELP-Algorithmus mit variabler Rate aus, welcher in der zuvorgenannten US- A-5 514 796 detailliert beschrieben ist.
  • Fig. 2 illustriert die Hauptfunktionen, die im ASIC ausgeführt werden. Mit Bezug auf Fig. 2 werden die Proben, die zu kodieren sind, an den Vokoder ASIC über PCM- Schnittstelle 30 von einem Codec (nicht gezeigt) geliefert. Diese Proben werden dann zum Dekompandierungselement 32 geliefert, welches die u-Regel (engl.: u-law) oder A-Regel (engl.: A-law) Proben in lineare Proben umwandelt. Die im linearen Format gelieferten Proben werden durch das Dekompandierungselement 32 ohne Veränderung durchgelassen. Die linearen Proben werden an ein Übertragungsaudioverarbeitungselement 34 geliefert, welches funktionsmäßig folgendes aufweist: stimmenbetriebener Schalter (VOX = voice operated switch) 36, Audioausgleichelement bzw. Audioentzerrelement 38, QCELP-Kodierelement 40 und Dualtonmultifrequenz-(DTMF = dual tone multifrequency)-Detektionselement 41. Übertragungsaudioverarbeitungselement 34 liefert dann das kodierte Sprachpaket über Mikroprozessorschnittstelle 42 an einen Mikroprozessor (nicht gezeigt), der extern zum ASIC ist.
  • Kodierte Sprachpakete werden durch einen Mikroprozessor (nicht gezeigt) über eine Mikroprozessor-Schnittstelle 42 an das Empfangsaudioverarbeitungselement 44 geliefert, wo sie in Sprachproben dekodiert werden. Empfangsaudioverarbeitungselement 44 weist funktionsmäßig folgendes auf: QCELP-Dekodierungselement 46, Audioausgleicher bzw. Audioentzerrer 48 und DTMF-Erzeugungselement 47. Die dekodierten Proben werden an Kompandierungselement 50 geliefert, welches die linearen Proben in u-Regel oder A-Regel-Format umwandelt und lineare Proben ohne Veränderung an PCM-Schnittstelle 30 weiterleitet. Der ASIC liefert die dekodierten Proben über PCM-Schnittstelle 30 an einen Codec (nicht gezeigt,) der extern zum ASIC ist.
  • Die Dekompandierungsoperation, die in Fig. 2 als Dekompandierungselement 32 gezeigt ist, und die Kompandierungsoperation, die in Fig. 2 als Kompandierungselement 50 gezeigt ist, werden durch DSP-Kern 4 ausgeführt, der in Fig. 5a-d gezeigt ist. Die Übertragungsaudioverarbeitungsoperationen, die in Fig. 2 als Übertragungsaudioverarbeitungselement 34 gezeigt sind, werden durch DSP-Kern 4 und Minimierungsprozesssor 6 ausgeführt, was in Fig. 6a-b gezeigt ist. Die Empfangsaudioverarbeitungsoperationen, die in Fig. 2 als Empfangsaudioverarbeitungselement 44 gezeigt ist, werden durch DSP-Kern 4 ausgeführt, wie in den Fig. 5a-d gezeigt ist.
  • In der beispielhaften Ausführungsform werden Proben, die vom Codec (nicht gezeigt) im 8-Bit u-Regel oder 8-Bit A- Regel-Format geliefert werden, umgewandelt in ein 14-Bit lineares Format. Die Beziehung zwischen u-Regel und linear ist in Gleichung 1 unten gezeigt:
  • 2Y = -1S(33+2M)2N-33 (1)
  • wobei Y ein linearer Wert (-4015,5 bis 4015.5), N ein Exponent (0 bis 7), M ein Größenordnungswert (0 bis 15) und S ein Vorzeichen (0 für positiv, 1 für negativ) ist. Die Beziehung zwischen A-Regel und linear ist in Gleichungen 2 und 3 unten gezeigt:
  • 2Y = -1S(1+2M)²2Y für N = 0 (2)
  • 2Y = -1S(33+2M)2N für N = 1, ...7 (3)
  • wobei Y ein linearer Wert (-4032 bis 4032), N, M und S, wie oben beschrieben sind.
  • Mit Bezug auf Fig. 5a-d werden die Proben, die über PCM-Schnittstelle 30 der Fig. 2 geliefert werden, in lineares Format mittels einer Nachschlagtabelle umgewandelt, die in ROM E 114 gespeichert ist. In einer bevorzugten Ausführungsform werden Halbgrößen 128·14 u-Regel- zu-linear und A-Regel-zu-linear-Nachschlagtabellen genutzt, um die Umwandlungen auszuführen. Die bevorzugte Ausführungsform nutzt die Vollgrößen-Umwandlungstabellen aus, die die Eigenschaften haben, die in Gleichung 4 unten gezeigt ist:
  • ROM(n+128)= -ROM(n), · 0≤n≤127 (4)
  • Die Entfernung einer jeglichen DC-Komponente aus dem Eingangssprachsignal ist erforderlich, und zwar vor der Berechnung der Autokorrelationskoeffizienten und der LPC- Koeffizienten. Die DC-Blockieroperation wird im DSP-Kern 4 durch Subtrahieren eines tiefpaßgefilterten Sprachprobenmittels bzw. -mittelwerts (speech sample mean), der DC-Vorspannung, von jeder Eingangsprobe im aktuellen Fenster ausgeführt. D. h. die DC-Vorspannung (DC bias) für den aktuellen Rahmen (current frame) ist ein gewichteter Durchschnitt des Probenmittels (mean) der aktuellen Rahmen und früheren Rahmen (previous frame). Die Berechnung der DC-Vorspannung ist in Gleichung 5 unten gezeigt:
  • DC bias = a(mean(previous frame)) + (1-a)mean(current fame) (5)
  • wobei a = 0,75 in der beispielhaften Ausführungsform ist. Tiefpaßfilterung wird verwendet, um große Diskontinuitäten an den Rahmengrenzen zu vermeiden. Diese Operation wird im DSP-Kern 4 durch Speichern des Probenmittels für den aktuellen Rahmen und für den vorangegangenen Rahmen in einem der RAM-Elemente (d. h. RAM A 104, RAM B 122 oder RAM C 182) mit einem Interpolationsfaktor, a, der von ROM E 114 geliefert wird, ausgeführt. Die Addition wird durch den Summierer 146 und die Multiplikation durch Multiplizierer 132 ausgeführt. Die DC-Blockierfunktion kann ein oder ausgeschaltet werden, und zwar unter Mikroprozessorsteuerung.
  • Das DC-freie Eingangssprachsignal, s(n), wird dann mit einem Fenster versehen, um die Effekte des Zerhackens der Sprachsequenz in Rahmen mit fester Länge zu reduzieren. Die Hamming-Fensterfunktion wird in der beispielhaften Ausführungsform verwendet. Für eine Rahmenlänge LA = 160 wird die mit Fenstern versehene Sprache sW(n), wie in Gleichung 6 unten gezeigt, berechnet.
  • sW(n) = s(n+60)WH(n), 0≤n≤LA-1 (6)
  • wobei das Hamming-Fenster in Gleichung 7 und 8 unten definiert ist:
  • WH(n) = 0,54-0,46cos[2πn /(LA-1)], 0≤n≤LA-1 (7) = 0, ansonsten (8)
  • In einer bevorzugten Ausführungsform wird eine Nachschlagtabelle von 80 Koeffizienten, was die Hälfte der Anzahl der Hamming-Fensterkoeffizienten ist, in ROM E 114 gespeichert, da WH(n) eine gerade-symmetrische Funktion ist. Das Versehen mit Fenstern kann durch Liefern des Fensterkoeffizienten WH(n) von ROM E 114 ausgeführt werden, und zwar gemäß eines Adresswertes, der durch Adresseinheit E 112 über Multiplexer 108 an AREG 130 geliefert wird. AREG 130 liefert diese Daten an einen ersten Eingang des Mutliplizierers 132. Eine Sprachprobe s(n+60) wird durch RAM B 122 an BREG 134 geliefert. BREG 134 liefert diesen Wert an einen zweiten Eingang des Multiplizierers 132. Der Ausgang des Multiplizierers 132 ist die mit Fenstern versehene Sprachprobe, welche an C0REG 164 geliefert wird und dann an RAM C 182 über Multiplexer 168 geliefert wird.
  • Die Blocknormalisierungsprozedur besteht aus zwei funktionellen Teilen: Bestimmung des Normalisierungsfaktors und Normalisierung der beabsichtigten Daten. In der bevorzugten Ausführungsform werden die Daten in Zweierkomplementnotation gespeichert. Die mit Fenster versehen Proben werden gemäß der obigen Gleichung 7 berechnet. Auf eine Normalisierungsanweisung hin, DETNORM, aus ROM I 194, unterliegt der resultierende mit Fenstern versehene Probenwert, der in C0REG 164 erzeugt wird, der folgenden Prozedur. Wenn der Wert in C0REG 164 negativ ist, so invertiert das Inversionselement 152 die binären Zahlen bzw. Stellen der Zahl und leitet den Bit-invertierten Wert an einen ersten Eingang des Summierers 146 weiter. Der zweite Eingang des Summierers 146 wird mit einer 0 über Multiplexer 149 und 138 versehen. Summierer 146 addiert dann eine 1 über seinen Carry-Eingang (nicht gezeigt) an den Bit-invertierten Wert. Wenn der Wert in C0REG 164 positiv ist, so wird der Wert über Multiplexer 186 und 154 weiter geleitet. Wobei das Inversionselement 152 und der Summierer 146 unberührt bleiben. Der Zweck dieser Prozedur ist es, den absoluten Wert des C0REG 164 zu berechnen. Der absolute Wert wird dann an einen ersten Eingang des bitweisen logischen ODER-Elements 160 geliefert. Der zweite Eingang des bitweisen logischen ODER- Elements 116 wird durch OREG 162 vorgesehen. Die Absolut wertberechnung, die oben beschrieben ist, ist in den Gleichungen 8a-c unten gezeigt.
  • OREGneu = (ABS(C0REG)) ODER (OREGalt) (8a)
  • wobei
  • ABS(C0REG) = C0REG, C0REG≥0 (8b)
  • = -C0REG, C0REG< 0 (8c)
  • Die Operation, die in Gleichungen 8a-8c beschrieben ist, kann auf ähnliche Weise auf C1REG 166 unter Verwendung einer DETNORM-Anweisung ausgeführt werden, wenn die beabsichtigten Daten für die Normalisierung im C1REG 166 sind. OREG 162 wird am Beginn der Normalisierungsoperation gelöscht. Diese Prozedur wiederholt sich für alle mit Fenster versehenen Proben (beabsichtigte Daten) auf eine Weise, daß am Ende der Operation der in OREG 162 gespeicherte Wert das bitweise logische ODER der absoluten Werte aller mit Fenstern versehenen Proben darstellt. Vom signifikantesten Bitsatz in OREG 162 wird ein Skalierungsfaktor bestimmt, da der Wert in OREG 162 größer oder gleich ist dem größten Größenordnungs- bzw. Größenwert im Block der mit Fenster versehenen Proben. Der Wert in OREG 162 wird über Multiplexer 168 an RAM C 182 übertragen bzw. transferiert. Dieser Wert wird dann in C0REG 164 geladen. Der Normalisierungsfaktor wird durch Zählen der Anzahl der Links- oder Rechtsverschiebungen des Wertes in C0REG 164 bestimmt, die erforderlich sind, so daß die Verschiebungen der mit Fenstern versehen Daten um diesen Betrag Werte mit dem Soll-Spitzenbetrag für die nachfolgende Operation liefern werden. Dieser Skalierungsfaktor ist auch als der Normalisierungsfaktor bekannt. Da Normalisierung über Verschiebungen ausgeführt wird, ist der Normalisierungsfaktor eine Zweierpotenz.
  • Um die mit Fenstern versehen Proben in der höchstmöglichen Genauigkeit beizubehalten, werden die beabsichtigten Werte mit einem Normalisierungsfaktor multipliziert, so daß der größte Größenordnungs- bzw. Größenwert die Maximalanzahl von Bits besetzt, die in der nachfolgenden Operation bereitgestellt werden. Da der Normalisierungsfaktor eine Zweierpotenz ist, kann die Normalisierung auf den beabsichtigten Daten durch einfache Ausführung einer Anzahl von Verschiebungen erreicht werden, wie durch den Normalisierungsfaktor spezifiziert. Der Normalisierungsfaktor wird durch RAM B 122 über Multiplexer 126 an SREG 136 geliefert. Die mit Fenstern versehenen Proben werden dann von RAM C 182 über Multiplexer 158 an DREG 156 geliefert. DREG 156 liefert dann diese Werte an Barrel- Schifter 150, und zwar über Multiplexer 154 und ausgeschalteten Inverter 152, wobei sie gemäß des Normalisierungsfaktors verschoben sind, der an Barrel-Schifter 150 durch SREG 136 über Multiplexer 149 geliefert wird. Der Ausgang des Barrel-Schifters 150 wird über das ausgeschaltete Addierelement 156 und Multiplexer 158 an C0REG 164 geleitet. Die normalisierten mit Fenstern versehenen Proben werden dann über Multiplexer 168 weitergeleitet und über Multiplexer 124 und 180 an RAM B 122 bzw. RAM C 182 geliefert. Dies führt zu zwei Kopien der normalisierten mit Fenstern versehenen Proben im RAM, was die nachfolgende Berechnung der Autokorrelationskoeffizienten efiizienter macht.
  • Die Berechnung der P+1 Autokorrelationkoeffizienten R(k) wird entsprechend Gleichung 9 unten ausgeführt
  • wobei P in der Größenordnung des Formantvorhersagefilters im Kodierer ist. In der beispielhaften Ausführungsform ist P = 10. Die normalisierten mit Fenstern versehenen Proben sw(m) werden durch RAM B 122 über Multiplexer 116 und BREG 134 an einen ersten Eingang des Multiplizierers 132 vorgesehen. Verzögerte Versionen der normalisierten mit Fenstern versehen Proben, sw(m+k) werden durch RAM C 182 über Multiplexer 148 und C1REG 166, RAM A 104 und AREG 130 an einen zweiten Eingang des Multiplizierers 132 geliefert. Jedes R(k) ist die Akkumulation von LA-k Werten. Für die erste Iteration für jedes R(k) wird der Ausgang des Mutliplizierers 132 an Akkumulator C0REG 164 über Multiplexer 138 und Barrel-Schifter 140 geliefert, und zwar zu einem ersten Eingang des Summierers 146. Multiplexer 154 liefert eine 0 an einen zweiten Eingang des Summierers 146 über den ausgeschalten Barrel-Schifter 150. Für nachfolgende Iterationen wird der Ausgang des Multiplizierer 132 an einen ersten Eingang des Summierers 146 über Multiplexer 138 und Barrel-Schifter 140 geliefert. Ein zweiter Eingang des Summierers 146 wird mit dem Ausgang des C0REG 164 versehen, und zwar über Multiplexer 168 und 154, ausgeschaltetes Inversionselement 152 und ausgeschalteten Barrel-Schifter 150. Diese Prozedur wird für jedes R(k) wiederholt.
  • Keiner der Autokorrelationskoeffizienten ist größer als R(0). In der beispielhaften Ausführungsform wird, nachdem R(0) berechnet wurde, sein Normalisierungsfaktor bestimmt. Dieser Normalisierungsfaktor wird dann auf den bereits berechneten R(0) und den Rest der Autokorrelationskoeffizienten angewendet, wenn sie berechnet werden. Normalisierung der Autokorrelationskoeffizienten in diesem Stadium maximiert die Genauigkeit der nachfolgenden Berechnung der LPC-Koeffizienten. Fährt man nun zu Block 62 der Fig. 3 fort, so werden die LPC-Koeffizienten berechnet, um die Kurzzeitkorrelation (Redundanzen) in den Sprachproben zu entfernen.
  • Der Formantvorhersagefilter mit der Größenordnung P hat eine Übertragungsfunktion A(z) die durch Gleichung 10 unten beschrieben ist
  • Jeder LPC-Koeffizient ai wird aus den Autokorrelationswerten der normalisierten mit Fenstern versehenen Eingangssprache berechnet. Ein effizientes iteratives Verfahren, das als Durbin's Rekursion bezeichnet wird (siehe Rabiner, L.R. und Shafer, R.W., "Digital Processing of Speech Signals", Prentice-Hall 1978) wird in der beispielhaften Ausführungsform verwendet, um die LPC- Koeffizienten zu berechnen. Dieses iterative Verfahren wird in Gleichungen 11 bis 17 unten beschrieben.
  • E(0) = R(0),i = 1 (11)
  • ai(i) = ki (13)
  • E(i) = (1 - ki²)E(i-1) (15)
  • Wenn i < P,
  • dann inkrementiere i und fahre bis 12 fort (16)
  • Die endgültigen LPC-Koeffizientenwerte sind:
  • a'j = aj(P), 1&le;j&le;P (17)
  • Durbin's iterrativer Algorithmus funktioniert nur, wenn das Eingangssignal ein Nullmittel(Wert) hat, was erfordert, daß einen beliebige DC-Vorspannung entfernt werden muß, bevor die Autokorrelationsberechnungen wie früher beschrieben ausgeführt werden.
  • In der beispielhaften Ausführungsform werden 15 Hz der Bandbreitenerweiterung verwendet, um die Stabilität des Formantvorhersagefilters sicherzustellen. Dies kann durch radial nach innen gerichtetes Skalieren der Pole des Formantsynthesefilters getan werden.
  • Bandbreitenerweiterung wird durch Skalierung der LPC- Koeffizienten gemäß der Gleichung 18 unten erreicht:
  • ai = &beta;ia'i, 1&le;i&le;P (18)
  • wobei &beta; = 0,9883 in der beispielhaften Ausführungsform. Die 10 Bandbreitenerweiterungskoeffizienten, &beta;i für 1&le;i&le; P, werden in einer Nachschlagtabelle gespeichert, die in ROM E 114 vorgesehen ist. Die Funktionen des Blocks 62 werden in DSP-Kern 4 ausgeführt.
  • Fährt man nun zu Block 64 der Fig. 3 fort, so wird eine Kodierrate für den aktuellen Rahmen der Sprachdaten bestimmt. Die Ratenentscheidung basiert auf einem Maß der Sprachaktivität in jedem Rahmen. Die Sprachaktivität wiederum wird gemäß der Rahmenenergie R(0) wie früher beschrieben, gemessen. Um die Kodierrate für den Rahmen i zu bestimmen, wird die Rahmenenergie mit den drei Schwellwerten verglichen, die in Gleichungen 19 bis 21 unten definiert sind.
  • T&sub1;(Bi) = -(5.544613·10&supmin;&sup6;)Bi² + (4.047152)Bi + 362 (19)
  • T&sub2;(Bi) = -(1.529733·10&supmin;&sup6;)Bi² +(8.750045)Bi + 1136 (20)
  • T&sub3;(Bi) = -(3.957050·10&supmin;&sup6;)Bi² + (18.899622)Bi + 3347 (21)
  • wobei der Hintergrundrauschpegel, Bi, für jeden Rahmen i aktualisiert wird, wie in Gleichung 22 unten beschrieben.
  • Bi = min[Ri-1(0),160000,max[1.00547Bi-1,Bi-1+1]] (22)
  • Diese Rate wird ein Achtel sein, wenn die Rahmenenergie unterhalb aller drei Schwellwerte ist, ein Viertel, wenn die Rahmenenergie zwischen T&sub1;(Bi) und T&sub2;(Bi) ist, ein Halb, wenn die Rahmenergie zwischen T&sub2;(Bi) und T&sub3;(Bi) ist und voll, wenn die Rahmenergie oberhalb T&sub3;(Bi) ist. Außer wenn die Rate durch den Mikroprozessor (nicht gezeigt) über Mikroprozessor-Schnittstelle 8 auf eine spezifische Rate gezwungen wird, kann die Datenrate auf irgendeine Rate erhöht werden, aber sie kann um nicht mehr als einen Schritt pro Rahmen (d. h. Halbrate oder Viertelrate) gesenkt werden. Im DSP-Kern 4 werden die Koeffizienten, die zu diesen Schwellwerten zugehörig sind, in einer Nachschlagtabelle in ROM E 114 vorgesehen.
  • Ein Bruchratenalgorithmus wird auch in der bevorzugten Ausführungsform vorgesehen; was es ermöglicht, daß die maximale Durchschnittsrate durch den Mikroprozessor (nicht gezeigt) über Mikroprozessor-Schnittstelle 8 begrenzt wird. Ist ein Ratenbegrenzungsfaktor S gegeben, so ist die maximale Durchschnittsrate des Vokoders auf (2S+1)/[2(S+1)] begrenzt, und zwar durch Begrenzen der Anzahl der aufeinanderfolgenden Vollratenrahmen. Die Funktionen des Blocks 64 werden in DSP-Kern 4 ausgeführt.
  • Fährt man zu Block 66 der Fig. 3 fort so werden die Bandbreiten erweiterten LPC-Koeffizienten in Linienspektrumpaare (LSP = line spectrum pair)-Frequenzen transformiert (siehe Soong und Juang, "Line Spectrum Pair (LSP) and Speech Data Compression," ICASSP, 1984). LSP- Frequenzen zeigen wesentlich bessere Eigenschaften für die Übertragung und Speicherung und können effizienter als LPC-Koeffizienten kodiert werden. LSP-Frequenzen, die die 10 LPC-Koeffizienten darstellen bzw. repräsentieren, sind die zehn Wurzeln der Polynome, die in Gleichungen 23 und 24 unten gezeigt sind:
  • P'(&omega;) = cos5(2&pi;&omega;) + p'&sub1;cos4(2&pi;&omega;)+ ... + p'&sub4;cos(2&pi;&omega;) + 0.5'p&sub5; (23)
  • Q'(&omega;) = cos5(2&pi;&omega;) + q'&sub1;cos4(2&pi;&omega;)+ ... + q'&sub4;cos(2&pi;&omega;) + 0.5p'&sub5; (24)
  • wobei p'i und q'i für 1&le;i&le;5 im DSP-Kern 4 gemäß der Gleichungen 25 bis 27 unten berechnet werden:
  • p'&sub0; = q'0 = 1 (25)
  • p'&sub1; = -ai - a11-i - p'i-1 1&le;i&le;5 (26)
  • q'i = -ai + a11-i - q'i-1 1&le;i&le;5 (27)
  • Die Wurzeln von P'(&omega;) werden gefunden, indem man annimmt, daß es höchstens eine Wurzel innerhalb jedes &pi;/32 Radianten gibt. P'(&omega;) wird bei jedem n/32 Radianten von 0 bis &pi; Radianten berechnet. Die Existenz einer Wurzel in jedem P/32-Intervall resultiert in einer Vorzeichenveränderung der Funktion P'(&omega;) über dem Intervall.
  • Wenn eine Wurzel gefunden wird, so wird eine binäre Suche ausgeführt, um die Wurzel innerhalb einer Region der Größe &pi;/256 zu isolieren. Die binäre Suche involviert das Berechnen von P'(&omega;) in der Mitte der aktuellen Region, um zu bestimmen, welche Hälfte der Region die Wurzel enthält. Die aktuelle Region wird dann eingeengt, um nur die gefundene Hälte der Region einzuschließen, die die Wurzel enthält. Dieser Prozeß wird fortgeführt, bis die Wurzel innerhalb einer Region der Größe &pi;/256 isoliert ist. Eine lineare Interpolation wird dann ausgeführt, um den Ort der Wurzel innerhalb der &pi;/256 Radiantenregion zu schätzen.
  • Die Ordnungseigenschaft von LSP-Frequenzen stellt sicher, daß eine Wurzel von Q'(&omega;) zwischen jedem Paar von Wurzeln von P'(&omega;) existiert. Die fünfte Wurzel von Q'(&omega;) liegt zwischen der fünften Wurzel von P'(&omega;) und n Radianten. Die binäre Suche, die oben beschrieben wurde, wird zwischen jedem Paar von Wurzeln von P'(&omega;) und zwischen der fünften Wurzel von P'(&omega;) und &pi; Radianten ausgeführt, um die Wurzeln von Q'(&omega;) zu bestimmen. Da die binäre Suche fortgeführt wird, bis der Ort der Wurzel innerhalb einer Region der Größe &pi;/256 isoliert ist, sind 256 Kosinuswerte, die gleich beabstandet zwischen 0 und &pi; sind, erforderlich. Die Kosinuswerte werden in einer Nachschlagtabelle in ROM E 114 gespeichert. Um die Wurzeln von P'(&omega;) und Q'(&omega;) zu finden, ist ein Maximum von 48 bzw. 30 Funktionsberechnungen erforderlich. Diese Funktionsberechnungen sind die rechenintensivsten Teile in der Umwandlung der LPC-Koeffizienten in LSP- Frequenzen. Die Funktionen des Blocks 66 werden im DSP- Kern 4 ausgeführt.
  • Fährt man nun zu Block 68 der Fig. 3 fort, so werden die LSP-Frequenzen quantisiert. Jede der LSP-Frequenzen ist um einen zugehörigen Vorspannungswert zentriert. Vor der Quantisierung wird diese Vorspannung von jeder zugehörigen LSP-Frequenz subtrahiert, um die Anzahl der Bits zu reduzieren, die für die Quantisierung erforderlich sind. Diese Vorspannung wird berechnet, wie unten in Gleichung 28 gezeigt.
  • Biasi = 0.5i/(P + 1) = (0. )i (28)
  • Nachdem die Vorspannung von der LSP-Frequenz subtrahiert wird, wird die LSP-Frequenz quantisiert unter Verwendung eines Differentialpulskodemodulations-(DPCM = differential pulse code modulation)-Quantisierers. Der DPCM- Quantisierer wird verwendet, da die LSP-Frequenzen sich langsam mit der Zeit verändern und die Quantisierung der Veränderung in den LSP-Ferquenzen die Anzahl der Bits reduziert, die für die Quantisierung erforderlich sind, im Vergleich zu dem, was erforderlich sein würde, um die LSP-Frequenzen direkt zu quantisieren. Im DSP-Kern 4 sind die LSP-Frequenz-Vorspannungswerte in einer Nachschlagtabelle in ROM E 114 gespeichert. Die Anzahl der verwendeten Quantisierungsbits und der Quantisierungsschrittgröße sind Funktionen dessen, welche der 10 LSP-Frequenzen quantisiert wird, und sie sind auch Funktionen der Kodierrate. Die Anzahl der Quantisierungsbits und die Schrittgröße sind als eine Nachschlagtabelle im ROM E 114 für jede LSP-Frequenz bei jeder Kodierrate gespeichert. Die Nachschlagtabelle, die oben beschrieben ist, ist in Tabelle II gezeigt. Zum Beispiel wird LSP-Frequenz &omega;1 bei einer Vollrate unter Verwendung von 4 Bits und mit einer Schrittgröße von 0,025 quantisiert. TABELLE II
  • Nach der Quantisierung und Interpolation wird ein Test ausgeführt, um sicherzustellen, daß der Formantfilter stabil sein wird, nachdem Quantisierungseffekte berücksichtigt wurden. Die LSP-Frequenzen müssen um mindestens 80 Hz getrennt sein, um die Stabilität des resultierenden Formantfilters sicherzustellen. Wenn eine beliebige der LSP-Frequenzen um weniger als 80 Hz von einer benachbarten LSP-Frequenz getrennt ist, so wird die Bandbreitenerweiterung wiederholt ausgeführt. Die Funktionen des Blocks 68 werden im DSP-Kern 4 ausgeführt.
  • Fährt man nun zu Block 70 der Fig. 3 fort, so werden die LSP-Frequenzen tiefpaßgefiltert, um die Quantisierungseffekte zu reduzieren, wie in Gleichung 29 unten gezeigt.
  • i(aktuell)=SM i(vorhergehend)+(1-SM)&omega;i(aktuell) (29)
  • wobei in der beispielhaften Ausführungsform SM = 0 für die Vollrate, SM = 0,125 für die Halbrate ist. Für die Viertelrate und Achtelrate ist SM = 0,125, wenn die aufeinanderfolgende Anzahl der Viertel- oder Achtelratenrahmen kleiner als 10 ist und sonst ist SM = 0,9.
  • Die LSP-Frequenzen werden für jeden Tonhöhenunterrahmen interpoliert. Die interpolierten LSP-Frequenzen für den Tonhöhenunterrahmen werden für das entsprechende Paar von Kodebuchunterrahmen verwendet, außer für die Achtelrate. Die LSP-Frequenzen werden gemäß der Gleichung 30 unten interpoliert
  • 'i(aktuell)=&alpha;&omega; i(vorhergehend)+(1-&alpha;&omega;) i(aktuell) (30)
  • wobei die Gewichte, am, in einer Nachschlagtabelle im ROM E 114 für jeden Tonhöhenunterrahmen und Kodebuchunterrahmen bei jeder Rate gespeichert werden. Die Nachschlagtabelle, die oben beschrieben ist, ist in Tabelle III gezeigt. Zum Beispiel ist &alpha;w bei Vollrate 0,75 für Tonhöhenunterrahmen 1 und für Kodebuchunterrahmen 1 und 2. Tabelle III
  • Die interpolierten LSP-Frequenzen werden zurückkonvertiert zu LPC-Koeffizienten zur Verwendung in dem Tonhöhen- und Kodebuchsuchen. Die LPC-Koeffizienten werden aus PA(Z) und QA(Z) berechnet, wie in Gleichungen 31 - 33 unten gezeigt.
  • A(z) = [PA(z)+QA(Z)]/2 (31)
  • wo:
  • In der beispielhaften Ausführungsform wird eine Taylor- Reihenentwicklung innerhalb des DSP-Kerns 4 berechnet, um die Kosinuswerte in PA(Z) und QA(Z) zu berechnen. Die Taylor-Reihenentwicklung liefert genauere Kosinuswerte als jene, die in der Wurzelsuche, die oben beschrieben wurde, verwendet werden. Die Werte für PA(Z) und QA(Z) werden im DSP-Kern 4 berechnet, und zwar durch Ausführen der Faltung der quadratischen Polynome, wie in Gleichungen 32-33 oben gezeigt. Die Funktionen des Blocks 70 werden im DSP-Kern 4 ausgeführt.
  • Fährt man nun zu Block 72 der Fig. 3 fort, so wird eine umfangreiche Analyse durch Synthesetonhöhensuchoperation ausgeführt. Diese erschöpfende Suchprozedur wird durch die Schleife, die durch die Blöcke 72-74 gebildet ist, illustriert. Eine Tonhöhenvorhersage wird in der beispielhaften Ausführungsform auf allen Tonhöhenunterrahmen in allen Raten ausgeführt, außer in der Achtelrate. Der Tonhöhenkodierer, der in Fig. 7 gezeigt ist, nutzt eine Analyse durch ein Syntheseverfahren, um die Tonhöhenvorhersageparameter zu bestimmen, (d. h. die Tonhöhenverzögerung L und den Tonhöhenverstärkung bzw. die Tonhöhenverstärkung b). Die gewählten Parameter sind jene, die den MSE zwischen der wahrnehmend gewichteten Eingangssprache und der synthetisierten Sprache minimieren, die erzeugt wird, unter Verwendung solcher Tonhöhenvorhersageparameter.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung wird implizites wahrnehmendes Gewichten in der Extraktion der Tonhöhenvorhersageparameter verwendet, wie in Fig. 7 gezeigt. In Fig. 7 ist der wahrnehmende Gewichtungsfilter mit einer Antwort, die in Gleichung 34 unten gezeigt ist:
  • als eine Kaskade von Filtern 320 und Filter 324 realisiert. Das implizite wahrnehmende Gewichten reduziert die Berechnungskomplexität des wahrnehmenden Gewichtungsfilterns durch Wiederverwenden des Ausgangs des Filters 320 als das offene Schleifen-Formantresiduums. Diese Operation des Aufspaltens des Filters der Gleichung 34 in zwei Teile eliminiert eine Filteroperation in der Tonhöhensuche.
  • Die Eingangssprachproben s(n) werden über Fomantvorhersagefilter 320 weitergeleitet, dessen Koeffizienten die LPC-Koeffizienten sind, die aus der LSP-Interpolation und LSP-zu-LPC-Umwandlung des Blocks 70 der Fig. 3 resultie ren, wie oben beschrieben. Der Ausgang des Formantvorhersagefilters 320 ist das offene Schleifen- Formantresiduum, p&sub0;(n). Das offene Schleifen- Formantresiduum, p&sub0;(n) wird über den gewichteten Formant- Synthesefilter 324 mit der in Gleichung 35 unten gezeigten Transferfunktion bzw. Übertragungsfunktion weiter geleitet.
  • wobei = 0.8. (35)
  • Der Ausgang des gewichteten Formant-Synthesefilters 324 ist die wahrnehmend gewichtete Sprache x(n). Der Effekt des anfänglichen Filterzustands oder Filterspeichers des gewichteten Formant-Synthesefilters 324 wird entfernt, und zwar durch Subtrahieren der Null-Eingangsantwort (ZIR = zero input response) des gewicheteten Formant- Synthesefilters 324 vom Ausgang des gewichteten Formant- Synthesefilters 324. Die Berechnung des ZIR des gewichteten Formant-Synthesefilters 324 wird im ZIR-Element 328 berechnet. Die ZIR aZIR(n) wird von der wahrnehmend gewichteten Sprache x(n) im Summierer 326 subtrahiert. Am Beginn jedes Tonhöhenunterrahmens sind die Filterspeicher des ZIR-Elements 328 und des gewichteten Formant- Synthesefilters 324 identisch.
  • In der Tonhöhensuche wird ein Null-Beitrag vom Kodebuchvektor angenommen, und zwar für den aktuellen Unterrahmen in der Berechnungen des offenen Schleifen- Formantresiduums. Die Tonhöhensuche wird ausgeführt, und zwar unter Verwendung sowohl des offenen Schleifen- Formantresiduums p&sub0;(n) wie oben beschrieben, als auch des geschlossenen Schleifen-Formantresiduums, pc(n). Das geschlossene Schleifen-Formantresiduum pc(n) ist die Probe, die im Tonhöhensynthesefilter 322 während der vorangegangenen Tonhöhenunterrahmen rekonstruiert wurde. Die Über tragungsfunktion des Tonhöhensynthesefilters 320 ist in Gleichung 36 unten gezeigt:
  • wobei die Tonhöhenverzögerung L und die Tonhöhenverstärkung b während der Tonhöhensuchprozeduren für die vorangegangenen Tonhöhenunterrahmen berechnet werden. Die Eingangsgröße am Tonhöhensynthesefilter 322 ist der Erregungsvektor Cb(n) der durch Multiplizieren des Kodebucheintrages Cb(I), für Index I, mit der Kodebuchverstärkung G erzeugt wird, die während der Kodebuchsuchprozeduren für die vorangegangenen Kodebuchunterrahmen berechnet wurde. Das so berechnete Formantresiduum wird das geschlossene Schleifen-Formantresiduum genannt.
  • In der beispielhaften Ausführungsform besteht pc(n) aus 143 geschlossenen Schleifen-rekonstruierten Proben. Die Suche bewegt sich von einer weitestgehend offenen Schleifen-Suche zu einer weitestgehend geschlossenen Schleifen- Suche für bzw. nach einem Fenster der Länge des Tonhöhenunterrahmens. Für einen Tonhöhenunterrahmen der Länge Lp, variiert n zwischen -Lmax=-.143 und Lp-17. In der beispielhaften Ausführungsform ist Lp = 40 für Vollrate, Lp=80 für Halbrate und Lp = 160 für Viertelrate. In der beispielhaften Ausführungsform sind die Proben pc(n) und p&sub0;(n) angrenzend gespeichert, wie durch Multiplexer 332 gezeigt, was es ermöglicht, daß auf die pc(n) und p&sub0;(n)- Werte sequentiell als einzelner Block von Proben in der Länge Lp+143 zugegriffen werden kann. Die Proben sind im RAM B 122 gespeichert.
  • Das Formantresiduum p(n) weist pc(n) und p&sub0;(n) auf und wird über den gewichteten Formant-Synthesefilter 330 weiter geleitet, der eine Übertragungsfunktion hat, die in Gleichung 37 unten gezeigt ist.
  • wobei = 0.8 (37)
  • Der gewichtete Formant-Synthesefilter 330 wird verwendet, um eine Sequenz von Lp-gewichteten synthetisierten Sprachproben yL(n) zu erzeugen, und zwar für jeden Wert der Tonhöhenverzögerung L. Die gewichtete synthetisierte Sprachsequenz yL(n) und die gewichtete Sprachsequenz, xp(n) werden an Minimierungsprozessor 334 geliefert. Da die Effekte des Anfangsstadiums des gewichteten Formant- Synthesefilters 324 heraussubtrahiert wurden, müssen nur die Impulsantworten des gewichteten Formant-Synthesefilters 330 berechnet werden. Die Berechnung von yL(n) zieht die Faltung der Impulsantwort h(n) des gewichteten Formant-Synthesefilters 330 mit der geeigneten Untersequenz innerhalb p(n) nach sich, um die gewichteten synthetisierten Sprachproben yL(n) für die Tonhöhenverzögerung L zu erhalten.
  • Die Faltung wird auf eine rekursive Weise im DSP-Kern 4 ausgeführt, wie in Fig. 5a- d gezeigt. Ein Satz von yL(n)-Werten wird für jeden Tonhöhenverzögerungswert berechnet, und zwar von L = 17 bis L = 143. Die Impulsantwort h(n) des gewichteten Formant-Synthesefilters 330 wird bei den ersten zwanzig Proben in der beispielhaften Ausführungsform abgebrochen und im RAM A 104 gespeichert. Das Formantresiduum p(n) wird im RAM B 122 gespeichert. Die Faltung für die erste Tonhöhenverzögerung L=17 wird in einer nicht rekursiven Weise ausgeführt, wie in Gleichung 38 unten gezeigt:
  • 0&le;n< Lp (38)
  • wobei Lp die Tonhöhenunterrahmenlänge ist.
  • Die erste Sequenz y&sub1;&sub7;(n) wird berechnet und im RAM C 182 gespeichert. Nachfolgende Sequenzen yL(n) für die Tonhöhenverzögerungen L=18 bis L=143 werden rekursiv wie in Gleichungen 39-41 unten berechnet.
  • yL(n) = h(0)p(-L) n = 0 (39)
  • yL(n)=yL-1(n-1)+h(n)p(-L) 1&le;n< 20, 17< L&le;143 (40)
  • yL(n)=yL-1(n-1) 20&le;n< Lp (41)
  • Man beachte die in Gleichung 42 weiter unten gezeigte Beziehung.
  • pL(n)=p(n-L)=pL-1(n-1), 17< L&le;143, 0&le;n< Lp (42)
  • Die Effizienz der rekusiven Faltung wird durch Teilen der RAMs in drei Teile optimiert, wobei jeder Teil eine eigens vorgesehene Adressiereinheit hat, um Lade- und Speicheroperation zu steuern. Dies wird als dreifach geteilter RAM bezeichnet. Die Berechnung der Schaltungswerte in Gleichung 40 und die Erzeugung eines Ergebnisses in jedem Taktzyklus ist dann möglich. Zum Beispiel wird in einem einzelnen Taktzyklus y&sub1;&sub8;(10) berechnet, y&sub1;&sub8;(9) gespeichert, y&sub1;&sub7;(10) abgerufen bzw. aufgerufen und h(10) wird aufgerufen. Somit kann die obige Gleichung 40 ein Ergebnis in jedem Zyklus erzeugen. Das Erzeugen eines Ergebnisses für jeden Zyklus für obige Gleichung 41 ist auch möglich. Zum Beispiel wird in einem einzelnen Zyklus y&sub1;&sub8;(24) berechnet, y&sub1;&sub7;(24) aufgerufen und y&sub1;&sub8;(23) gespeichert.
  • Die Fähigkeit, die Gleichungen 40 und 41 auszuführen, ohne die zuvor berechneten gewichteten synthetisierten Sprachproben yL-1(n-1) zum selben Quellen-RAM zwischen jeder Tonhöhenverzögerungsaktualisierung bewegen zu müssen, erfordert eine Speicherstrategie und Hardwarefähigkeit, die als ping-ponging bezeichnet wird, in welchem die Quellen- und Ziel-RAMs zwischen jeder Verzögerungsak tualisierung gewechselt bzw. ausgetauscht werden. Wenn yL(n) für gerade Tonhöhenverzögerungswerte berechnet wird, so werden die yL-1(n-1)-Werte aus einem ersten der drei RAMs abgerufen und die Ergebnisse werden in einem zweiten der drei RAMs gespeichert. Wenn yL(n) für ungerade Tonhöhenverzögerungswerte berechnet wird, so werden die yL-1(n-1)-Werte aus einem zweiten der drei RAMs aufgerufen und die Ergebnisse werden in einem ersten der drei RAMs gespeichert. Dieses ping-ponging eliminiert den Bedarf, die neu berechneten yL(n)-Werte und die vorher berechneten yL-1(n-1)-Werte aus dem selben RAM zwischen jeder Tonhöhenverzögerungsaktualisierung zu bewegen.
  • Fig. 8 ist ein Flußdiagramm für die Ausführung des Faltungsteils (sowohl anfänglich nicht-rekursive und rekursive Faltungen) der Tonhöhensuche in der beispielhaften Ausführungsform. In Block 350 wird die Tonhöhenverzögerung L auf seinen geringsten Wert initialisiert, welcher in der beispielhaften Ausführungsform 17 ist. Die Probenzahl n und der Filterindex m werden auf Null gesetzt und die Werte von y&sub1;&sub7;(n) werden auf Null gesetzt. Die Blöcke 352 bis 360 bilden die anfängliche Faltungsschleife, welche auf eine nicht-rekursive Weise berechnet wird. Die Berechnung der anfänglichen Faltung, wo bei L = 17, wird entsprechend der Gleichung 43 unten ausgeführt.
  • Die Berechnung der anfänglichen Faltung nutzt Schleifen mit fester Länge, um die Berechnungskomplexität zu verringern. Auf diese Weise wird der Überhang, der erforderlich ist, um eine Schleifenstruktur mit variabler Länge innerhalb der inneren Schleife (Blöcke 356 bis 360) der Gleichung 43 zu erstellen, verhindert. Jeder y&sub1;&sub7;(n)-Wert wird an den Minimierungsprozessor 334 gesendet, nachdem er berechnet wurde.
  • Block 352 testet den Beispielindex n, wenn n gleich der Tonhöhenunterrahmenlänge Lp ist, so ist die anfängliche Faltung vollendet, und der Ablauf geht weiter zu Block 362. Wenn in Block 352 n kleiner als die Tonhöhenunterrahmenlänge ist, dann geht der Ablauf weiter zu Block 356. Block 3% testet den Index m. Wenn m gleich der Filterimpulsantwortlänge 20 ist in der beispielhaften Ausführungsform, so ist die aktuelle Iteration vollendet und der Ablauf geht zu Block 354, wo m auf Null gesetzt wird und n inkrementiert wird. Der Ablauf kehrt dann zu Block 352 zurück. Wenn in Block 356 m kleiner ist als die Impulsantwortlänge, so geht der Ablauf zu Block 360, wo die Teilsummen akkumuliert werden. Der Ablauf geht zu Block 358, wo der Index m inkrementiert wird und der Ablauf zu Block 356 fortfährt.
  • Die involvierten Operationen in der anfänglichen Faltungsschleife, die durch Block 352 bis 360 gebildet ist, werden im DSP-Kern 4 ausgeführt, wobei geeignete Fließband- bzw. Parallelverarbeitung vorgesehen wird (Pipelining), um die Akkumulation der Produkte zu erlauben, wie in Block 360 gezeigt, und zwar in jedem Taktzyklus. Die folgenden Operationen zeigen die Pipelining- bzw. die Parallelverarbeitungen der Berechnungen und treten im DSP-Kern 4 in einem einzelnen Taktzyklus auf. Der Filterantwortwert h(m+1) wird aus RAM A 104 aufgerufen und zu AREG 130 geliefert. Der Formantresiduum-Wert p(n-17) wird aus RAM B 122 aufgerufen und zu BREG 134 geliefert. Die Teilsumme y&sub1;&sub7;(n+m-1), die im C0REG 164 vorliegt, wird zu RAM C 182 über Multiplexer 168 und 180 geliefert. Die Teilsumme y&sub1;&sub7;(n+m+1) wird durch RAM C 182 an DREG 156 über Multiplexer 158 geliefert. Die Werte h(m) und p(n- 17) in AREG 130 bzw. BREG 134 werden zum Multiplizierer 132 geliefert. Der Ausgang des Multiplizierers 132 wird über Multiplexer 138 an Barrel-Schifter 140 geliefert, welcher den Wert entsprechend eines Skalierungswert nor malisiert, der durch SREG 136 über Multiplexer 149 geliefert wird. Der Wert in SERG 136 ist der Wert, der gebraucht wird, um die p(n-17)-Sequenz zu normalisieren. Die Anwendung dieses Normalisierungsfaktors auf das Produkt von p(n-17) und h(m) erzielt den selben Effekt wie die Normalisierung von p(n-17), da die volle Genauigkeit des Produkts beibehalten wird, bevor die Normalisierung im Barrel-Schifter 140 stattfindet. Der normalisierte Wert wird an einen ersten Eingang des Summierers 146 geliefert. Die Teilsumme y&sub1;&sub7;(n+m) wird durch DREG 156 über Multiplexer 154, ausgeschalteten Inverter 152 und Barrel- Schifter 150 an einen zweiten Eingang des Summierers 146 geliefert. Der Ausgang des Summierers 146 wird über Multiplexer 148 an C0REG 164 geliefert. Wenn der Index n seinen maximal erlaubten Wert in Block 352 erreicht, so ist die anfängliche Faltung vervollständigt und die Teilsummen, die im RAM C 182 vorhanden sind, sind nun das endgültige Ergebnis der Faltung.
  • Wenn die anfängliche Faltung vollständig bzw. komplett ist, so geht der Ablauf zu Block 362, wo rekursive Faltung ausgeführt wird, und zwar in den Berechnungen für die restlichen Tonhöhenverzögerungswerte. Im Block 362 wird der Probenindex n auf Null gesetzt und der Tonhöhenverzögerungsindex L wird inkrementiert. Der Ablauf geht zu Block 364. Block 364 testet L. Wenn L größer ist als der maximale Tonhöhernverzögerungswert, welcher 143 in der beispielhaften Ausführungsform ist, so geht der Ablauf zu Block 366, wo die Tonhöhensuchoperation endet. Wenn L kleiner als oder gleich 143 ist, so geht der Ablauf zu Block 368. Block 368 steuert die ping-ponging- Operation, die oben beschrieben wurde. In Block 368 wird L getestet, um festzustellen, ob es gerade oder ungerade ist. Wenn L gerade ist, so geht der Ablauf zu Block 378 (Operation beschrieben als Fall I). Wenn L ungerade ist, so geht der Ablauf zu Block 370 (Operation beschrieben als Fall II).
  • Fall I: (gerade Werte für Tonhöhenverzögerung L)
  • Im Block 378 wird yL(0) gemäß Gleichung 39 berechnet. Die Adresseinheit A 102 liefert einen Adresswert an RAM A 104, welcher ansprechend darauf h(n) über Multiplexer 108 an AREG 130 liefert. In dem selben Taktzyklus liefert Adresseinheit B 120 einen Adresswert an RAM B 122, welcher ansprechend darauf p(-L) über Multiplexer 116 an BREG 134 liefert. Während des nächsten Taktzyklus liefert AREG 130 h(0) und BREG 134 p(-L) an Multiplizierer 132, wo die beiden Werte multipliziert werden und das Produkt über Multiplexer 138 an Barrel-Schifter 140 geliefert wird. Der Barrel-Schifter 140 normalisiert das Produkt gemäß dem Wert, der durch SREG 136 geliefert wird, über Multiplexer 149 und liefert das normalisierte Produkt an einen ersten Eingang des Summierers 146. Der zweite Eingang des Summierers 146 wird mit einer 0 über Multiplexer 154 ausgeschaltetes Inverterelement 152 und Barrel- Schifter 150 versehen. Der Ausgang des Summierers 146 wird an C0REG 164 über Multiplexer 148 geliefert. Während des selben Taktzyklus werden yL-1(0) und h(1) aus RAM B 122 und RAM A 104 aufgerufen und an DREG 156 und AREG 130 über Multiplexer 159 bzw. 108 geliefert.
  • Im Block 380 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 382 geht der Ablauf zu Block 384, wenn der synthetisierte Sprachprobenindex n kleiner als 20 ist.
  • Im Block 384 wird ein neuer yL(n)-Wert in jedem Taktzyklus gemäß Gleichung 40 berechnet. Eine geeignete Einstellung, die vor der ersten Iteration des Blocks 384 erforderlich ist, um die Werte yL-1(n-1) und h(n) zu initialisieren, wurde im Block 378 wie oben beschrieben erzielt. Eine geeignete Säuberungsaktion ist auch erforderlich, und zwar nachfolgend auf die letzte Iteration des Blocks 384, um den endgültigen Wert von zu Speichern.
  • In der ersten Iteration des Blocks 384 liegt das in Block 378 berechnete yL(0) in C0REG 164 vor. C0REG 164 liefert yL(0) über Multiplexer 168 und 180 an RAM C 182 zur Speicherung, wobei der Adresswert an RAM C 182 von der Adresseinheit C 186 geliefert wird. yL(0) wird an den Minimierungsprozessor 334 zur selben Zeit geliefert, wenn er an RAM C 182 geliefert wird.
  • In Block 384 werden die folgenden Operationen in einem einzelnen Taktzyklus ausgeführt. Der yL-1(n)-Wert wird durch RAM B 122 über Multiplexer 158 an DREG 156 geliefert, und zwar gemäß einer Adresse, die durch Adresseinheit B 120 geliefert wird. Der Impulsantwortwert h(n+1) wird durch RAM A 104 über Multiplexer 108 an AREG 130 geliefert, und zwar gemäß einer Adresse, die durch Adresseinheit 102 geliefert wird. DERG 156 liefert yL-1(n-1) über Multiplexer 154, ausgeschaltetes Inverterelement 152 und Barrel-Schifter 150 an einen ersten Eingang des Summierers 146. AREG 130 liefert h(n) und BREG 134 liefert p(-L) an Multiplizierer 132, wo die beiden Werte multipliziert werden und das Produkt wird durch Multiplizierer 132 über Multiplexer 138 an Barrel-Schifter 140 geliefert. Der Barrel-Schifter 140 normalisiert den Produktwert entsprechend eines Wert, der durch SREG 136 geliefert wird, und liefert den normalisierten Produktwert an einen zweiten Eingang des Summierers 146. Der Ausgang des Summierers 146 wird über Multiplexer 148 an C0REG 164 geliefert. Der Wert den C0REG 164, der in der vorangegangenen Iteration berechnet wurde, wird über Multiplexer 168 und 180 an RAM C 182 zur Speicherung und an Minimierungsprozessor 334 geliefert.
  • Im Block 380 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 382 wird, wenn der synthe tisierte Sprachprobenindex n gleich 20 ist yL(19), was in der endgültigen Iteration berechnet wurde, über Multiplexer 168 und 124 an RAM B 122 zur Speicherung in einem zirkularen Puffer und an Minimierungsprozessor 334 geliefert, bevor der Ablauf zu Block 390 fortfährt.
  • Ende von Fall I Fall II: (ungerade Werte für Tonhöhenverzögerung L)
  • Im Block 370 wird yL(0) gemäß Gleichung 39 berechnet. Adresseinheit A 102 liefert einen Adresswert an RAM A 104, welcher ansprechend darauf h(0) über Multiplexer 108 an AREG 130 liefert. In dem selben Taktzyklus liefert die Adresseinheit B 120 einen Adresswert an RAM B 122, welcher ansprechend darauf p(-L) über Multiplexer 116 an BREG 134 liefert. Während des nächsten Taktzyklus liefert AREG 130 h(0) und BREG 134 liefert p(-L) an Multiplizierer 132, wo die beiden Werte multipliziert werden und das Produkt über Multiplexer 138 an Barrel-Schifter 140 geliefert wird. Barrel-Schifter 140 normalisiert das Produkt gemäß dem Wert, der durch SREG 136 geliefert wird, über Multiplexer 149 und liefert das normalisierte Produkt an einen ersten Eingang des Summierers 146. Der zweite Eingang des Summierers 146 wird mit einer 0 über Multiplexer 154, ausgeschaltetes Inverterelement 152 und Barrel-Schifter 150 versehen. Der Ausgang des Summierers 146 wird an C0REG 164 über Multiplexer 148 geliefert. Während des selben Taktzyklus werden yL-1(0) und h(1) aus RAM C 182 und RAM A 104 aufgerufen und an DREG 156 und AREG 130 über Multiplexer 158 bzw. 108 geliefert.
  • Im Block 372 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 374 geht der Ablauf zu Block 376, wenn der synthetisierte Sprachprobenindex n kleiner als 20 ist.
  • Im Block 376 wird ein neuer yL(n)-Wert in jedem Taktzyklus gemäß Gleichung 40 berechnet. Eine geeignete Einstellung, die vor der ersten Iteration des Blocks 376 erforderlich ist, um die Werte yL-1(n-1) und h(n) zu initialisieren, wurde in Block 370 wie oben beschrieben erreicht. Eine geeignete Säuberung bzw. Reinigung ist auch erfoderlich, und zwar nachfolgend auf die letzte Iteration des Blocks 376, um den endgültigen Wert yL(19) zu speichern.
  • In der ersten Iteration des Blocks 376 ist yL(0), der im Block 370 berechnet wurde, in C0REG 164 vorhanden. C0REG 164 liefert yL(0) über Multiplexer 168 und 124 an RAM B 122 zur Speicherung, wobei der Adresswert an RAM B 122 aus Adresseinheit B 120 geliefert wird. yL(0) wird an Minimierungsprozessor 334 zur selben Zeit geliefert, wenn er an RAM B 122 geliefert wird.
  • Im Block 376 werden die folgenden Operationen in einem einzelnen Taktzyklus ausgeführt. Der yL-1(n)-Wert wird durch RAM C 182 entsprechend einer Adresse, die von Adresseinheit C 186 geliefert wird, über Multiplexer 158 an DREG 156 geliefert. Der Impulsantwortwert h(n+1) wird durch RAM A 104 über Multiplexer 108 an AREG 130 geliefert, und zwar gemäß einer Adresse, die durch Adresseinheit A 102 geliefert wird. DERG 156 liefert yL-1(n-1) über Multiplexer 154, ausgeschaltetes Inverterelement 152 und Barrel-Schifter 150 an einen ersten Eingang des Summierers 146. AREG 130 liefert h(n) und BREG 134 liefert p(-L) an Multiplizierer 132, wo die beiden Werte multipliziert werden, und das Produkt wird durch Multiplizierer 132 über Multiplexer 138 an Barrel-Schifter 140 geliefert. Barrel-Schifter 140 normalisiert den Produktwert entsprechend eines Werts, der durch SREG 136 geliefert wird, und liefert den normalisierten Produktwert an einen zweiten Eingang des Summierers 146. Der Ausgang des Summierers 146 wird über Multiplexer 148 an C0REG 164 gelie fert. Der in der vorangegangenen Iteration berechnete Wert in C0REG 164 wird über Multiplexer 168 und 124 an RAM B 122 zur Speicherung und an Minimierungsprozessor 334 geliefert.
  • Im Block 372 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 374 wird yL(19), der in der endgültigen Iteration berechnet wurde, über Multiplexer 168 und 124 an RAM B 122 geliefert, wenn der synthetisierte Sprachprobenindex n gleich 20 ist, und zwar zur Speicherung in einem zirkularen Puffer in RAM B 122 und an Minimierungsprozessor 334, bevor der Ablauf zu Block 390 fortfährt.
  • Ende des Falls II
  • Vor der ersten Iteration des Blocks 390 wird yL-1(19) aus dem zirkularen Puffer in RAM B 122 aufgerufen und in BREG 134 geladen, yL-1(19) wird dann aus BREG 134 zu C0REG 164 bewegt, wonach yL-1(20) aus dem zirkularen Puffer in RAM B 122 aufgerufen und in BREG 134 geladen wird.
  • Im Block 390 wird ein neuer yL(n) in jedem Taktzyklus gemäß Gleichung 41 berechnet. Die folgenden Operationen werden in einem einzelnen Taktzklyus ausgeführt. yL-1(n- 2) wird durch BREG 134 an C0REG 164 geliefert. yL-1(n-3) wird aus dem zirkularen Puffer in RAM B 122 aufgerufen und in BREG 134 geliefert. yL-1(n-1), der in C0REG 164 vorhanden ist, wird Minimierungsprozessor 334 präsentiert bzw. zur Verfügung gestellt. Folgend auf die letzte Iteration des Blocks 390 wird yL-1(Lp-2) aus dem zirkularen Puffer in RAM B 122 gelöscht. Durch Addieren eines Elements zum zirkularen Puffer für jede Tonhöhenverzögerung und Löschen eines Elements aus dem zirkularen Puffer für jede Tonhöhenverzögerung wird die Größe des zirkularen Puffers bei Lp-19 beibehalten.
  • Die Realisierung des zirkularen Puffers wird über spezielle Adressregister in Adresseinheit B 120 erreicht, welche die Übertragpunkte (engl.: wrap around points) diktieren, so daß ein sequentieller Speicher automatisch auf zirkulare Weise adressiert werden kann.
  • Im Block 386 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 388 geht der Ablauf wieder zu Block 390, wenn der synthetisierte Sprachprobenindex n kleiner als Lp ist. Wenn der synthetisierte Sprachprobenindex n gleich Lp ist, so sind alle yL(n)-Werte für den aktuellen Tonhöhenverzögerungswert L berechnet worden, und der Ablauf kehrt zu Block 362 zurück.
  • Vor der Berechnung der synthetisierten Sprachproben yL(n) wird eine Sequenz der Länge Lp der wahrnehmend gewichteten Sprachproben xp(n) an Minimierungsprozessor 334 geliefert. Wie oben beschrieben, werden Sequenzen synthetisierter Sprachproben yL(n) der Länge Lp für Verzögerungswerte L = 17 bis L = 143 an Minimierngsprozessor 334 während der anfänglichen und rekursiven Faltungsberechnungen geliefert. Die synthetisierten Sprachproben werden sequentiell an Minimierungsprozessor 334 geliefert. Minimierungsprozessor 334 berechnet die Autokorrelation jeder synthetisierten Sprachprobensequenz yL(n) und die Kreuzkorrelation zwischen jeder synthetisierten Sprachprobensequenz yL(n) und der Sequnez der wahrnehmend gewichteten Sprachproben xp(n). Aus diesen Korrelationswerten berechnet der Minimierungsprozesssor 334 dann ein relatives Maß des MSE zwischen jeder synthetisierten Sprachprobensequenz yL(n) und der Sequenz der wahrnehmend gewichteten Sprachproben xp(n). Für jede Tonhöhenverzögerung L wird MSE für alle möglichen Tonhöhenverstärkungswerte b der synthetisierten Sprachprobensequenz berechnet. Minimierungsprozessor 334 findet den minimalen MSE über alle Tonhöhenverzögerungswerte L und alle möglichen Tonhöhenverstärkungswerte b durch Beibehalten des Werts für den minimalen MSE durch die gegenwärtige Tonhöhenverzögerung L und die gegenwärtige Tonhöhenverstärkung b. Die Tonhöhenverzögerungsschätzung und der Tonhöhenverstärkungsschätzindex entsprechend des minimalen MSE werden ebenfalls durch Minimierungsprozessor 334 beibehalten. Jeder neue MSE Wert wird mit dem minimalen MSE verglichen, der im Minimierungsprozessor 334 beibehalten wird. Wenn der neue MSE kleiner als der minimale MSE ist, so wird der minimale MSE durch den neuen MSE-Wert ersetzt, und die Tonhöhenverzögerungsschätzung und der Tonhöhenverstärkungsschätzindex werden aktualisiert, um den neuen minimalen MSE wiederzuspiegelen. Der minimale MSE und die entsprechende Tonhöhenverzögerungsschätzung und der Tonhöhenverstärkungsschätzindex , die im Minimierungsprozessor 334 beibehalten werden, werden für jeden Tonhöhenunterrahmen initialisiert, und zwar unter Verwendung des ersten negativen MSE-Wertes der während des Tonhöhenunterrahmens berechnet wird. Nachdem alle Tonhöhenverzögerungswerte L und alle Tonhöhenverstärkungswerte b erschöpft sind, wird die Tonhöhenverzögersschätzung und der Tonhöhenverstärkungsschätzindex der optimale Tonhöhenverzögerungsindex bzw. der optimale Tonhöhenindex für den aktuellen Tonhöhenunterrahmen sein. Minimierungsprozessor 334 liefert die optimale Tonhöhenverzögerung und den optimalen Tonhöhenverstärkungsindex an den DSP-Kern 4. Die optimale Tonhöhenverzögerung und der optimale Tonhöhenverstärkungsindex sind jene, die in den minimalen MSE zwischen den wahrnehmend gewichteten Sprachproben xp(n) und den gewichteten synthetisierten Sprachproben yL(n) resultieren. Der MSE ist eine Funktion der Tonhöhenverzögerung L und der Tonhöhenverstärkung b, wie durch Gleichungen 44 bis 46 unten beschrieben:
  • = Expxp - 2ExpyL + b²EyLyL (46)
  • Expxp ist die Autokorrelation der wahrnehmend gewichteten Sprachproben xp(n). ExpyL ist die Kreuzkorrelation zwischen den wahrnehmend gewichteten Sprachproben xp(n) und den gewichteten synthetisierten Sprachproben yL(n). EyLyL ist die Autokorrelation der gewichteten synthetisierten Sprachproben xL(n).
  • Die Autokorrelation Expxp der wahrnehmend gewichteten Sprachproben xp(n) ist keine Funktion der Tonhöhenverstärkung P. Expxp bleibt konstant während jedes Tonhöhenunterrahmens und beeinflußt deshalb nicht die Auswahl der optimalen Tonhöhenverzögerung und der optimalen Tonhöhenverstärkung. Die Minimierung der Gleichungen 44 bis 46 über die Tonhöhenverzögerung L und die Tonhöhenverstärkung b ist äquivalent zur Minimierung der Gleichung 47 unten:
  • MSE(L,b) = -2bExpyL +b²EyLyL (47)
  • Der Minmierungsprozessor 334 berechnet die Autokorrelationen EyLYL der gewichteten synthetisierten Sprachprobensequenzen yL(n) und die Autokorrelationen ExpyL zwischen der wahrnehmend gewichteten Sprachporbensequenz xp(n) und den gewichteten synthetisierten Sprachprobensequenzen yL(n). Für jedes Korrelationspaar (ExpyL, EyLyL) berechnet der Minimierungsprozessor 334 den relativen MSE gemäß der obigen Gleichung 47 für einen Satz von Tonhöhenverstärkungswerten b. Die Berechnung der Korrelationen ExpyL und EyLyL wird simultan im Minimierungsprozessor 334 ausgeführt. Die relativen MSE-Werte werden berechnet und die Entscheidungen bezüglich der MSE-Minimierung werden für Tonhöhenverzögerung L gefällt, während die Korre lationswerte für Tonhöhenverzögerung L+1 berechnet werden.
  • Fig. 6a und 6b zeigen eine beispielhafte Ausführungsform des Minimierungsprozessor 334. Die wahrnehmend gewichteten Sprachproben xp(n) werden durch den DSP-Kern 4 an den Signalspeicher 210 für die Speicherung in RAM X 212 geliefert, und zwar gemäß einer Adresse, die durch Steuerung 220 geliefert wird. Skalierte Tonhöhenverstärkungswerte -2b, für b=0,25 bis b=2,0 in Schritten von 0,25, werden über Mulitplexer 260 durch DSP-Kern 4 zur Speicherung in den Signalspeichern 264, 268, 272, 276, 280, 284, 288 bzw. 292 geliefert. Entsprechende skalierte Tönhöhenverstärkungswerte b² werden über Multiplexer 260 durch DSP-Kern 4 zur Speicherung in die Signalspeicher 262, 266, 270, 274, 278, 282, 286 bzw. 290 geliefert. Multiplexer 260 liefert Werte direkt zum Signalspeicher 262. Signalspeicher 262 liefert Werte direkt zu Signalspeicher 264. Signalspeicher 276 liefert Werte zu Signalspeicher 278 über Multiplexer 294. Signalspeicher 290 liefert Werte direkt zu Signalspeicher 292 usw. Das Verschieben von Werten durch die Signalspeicher 262 bis 292 und durch Mulitplexer 294 erlaubt es, daß die Werte über Mulitplexer 260 an alle Signalspeicher innerhalb des zirkularen Puffers 259 geliefert werden. Nachfolgend auf die Speicherung der wahrnehmend gewichteten Sprachproben xp(n) und auf die Speicherung der -2b und b²-Werte werden Sequenzen von gewichteten synthetisierten Sprachproben yL(n) an Signalspeicher 210 geliefert. Die gewichteten synthetisierten Sprachproben yL(n) werden durch Signalspeicher 210 an die zwei Eingänge des Mulitplizierers 216 geliefert, welcher die Quadrate (yL(n))² der gewichteten synthetisierten Sprachproben erzeugt. Signalspeicher 210 liefert auch die gewichteten synthetisierten Sprachproben yL(n) an den ersten Eingang des Mulitpizierers 218. RAM X 212 liefert die wahrnehmend gewichteten Sprachproben xp(n) über Signalspeicher 214 an einen zweiten Eingang des Multiplizierers 218. Multiplizierer 218 berechnet die Produktwerte xp(n) yL(n). Ein neues Quadrat (yL(n))² und ein neues Produkt xp(n) yL(n) werden in jedem Zyklus durch Multiplizierer 216 bzw. 218 berechnet. Der Probenindex n variiert von 0 bis LP-1 für jede Tonhöhenverzögerung L.
  • Die Quadrate (yL(n))² der gewichteten synthetisierten Sprachproben werden an Akkumulator 221 geliefert. Die Produktwerte xp(n) yL(n) werden an Akkumualtor 231 geliefert. Akkumulator 221 berechnet die Summe der Lp Quadrate für jede Tonhöhenverzögerung L. Akkumulator 231 berechnet die Summe der Lp Produktwerte für jede Tonhöhenverzögerung L.
  • Vor jeder neuen Tonhöhenverzögerung wird Signalspeicher 226 mit einer 0 über Mulitplexer 224 versehen. Akkumulator 221 ist dann bereit, die Autokorrelation EyLyL für die aktuelle Tonhöhenverzögerung L zu berechnen. Im Akkumulator 221 werden die Quadrate (yL(n))² an einen ersten Eingang des Summierers 222 geliefert. Eine laufende Summe wird durch Signalspeicher 236 an einen zweiten Eingang des Summierers 232 geliefert. Die neu berechnete laufende Summe wird durch Summierer 222 über Multiplexer 224 an Signalspeicher 226 zur Speicherung geliefert. Nach der Akkumulation über alle Lp -Werte für Tonhöhenverzögerung L wird die Autokorrelation EyLyL an Signalspeicher 228 zur Speicherung geliefert.
  • Vor jeder neuen Tonhöhenverzögerung wird Signalspeicher 236 mit einer 0 über Mulitplexer 234 versehen. Akkumulator 231 ist dann bereit, die Kreuzkorrelation ExpyL für die aktuelle Tonhöhenverzögerung L zu berechnen. Im Akkumulator 231 werden die Produktwerte xp(n)yL(n) an einen ersten Eingang des Summierers 232 geliefert. Eine laufende Summe wird durch Signalspeicher 236 an einen zweiten Eingang des Summierers 232 geliefert. Die neu berechnete laufende Summe wird durch Summierer 232 über Multiplexer 234 an Signalspeicher 226 zur Speicherung geliefert. Nach der Akkumulation über alle Lp -Werte für Tonhöhenverzögerung L wird die Autokorrelation ExpyL an Signalspeicher 228 zur Speicherung geliefert.
  • Der durch Gleichung 47 beschriebene MSE wird dann in dem unten beschriebenen Zwei-Zyklus-Prozess berechnet.
  • In einem ersten der beiden Zyklen liefert Sinalspeicher 238 die Kreuzkorrelation ExpyL zwischen den wahrnehmend gewichteten Sprachproben und den gewichteten synthetisierten Sprachproben über Multiplexer 230 an einen ersten Eingang des Multiplizierers 240. Der zirkulare Puffer 259 liefert den skalierten Tonhöhenverstärkungswert -2b an einen zweiten Eingang des Mulitplizierers 240 über Multiplexer 296. Das Produkt -2bExpyL wird durch Mulitplizierer 240 an einen ersten Eingang des Summierers 242 geliefert. Der zweite Eingang des Summierers 242 wird mit einer 0 über Multiplexer 246 versehen. Der Ausgang des Summierers 242 wird an Signalspeicher 244 zur Speicherung geliefert. Die Werte in Signalspeichern 262 bis 292 des zirkularen Puffers 259 werden rotiert, und zwar durch Liefern des Ausgangs des Signalspeichers 276 an Signalspeicher 278 über Multiplexer 294 und durch Liefern des Ausgangs des Signalspeichers 292 an Signalspeicher 262 über Multiplexer 260. Nach dieser Rotation enthalten die Signalspeicher 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290 und 292 die Werte, die vorher in Signalspeichern 292, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288 bzw. 290 enthalten waren. In der Tonhöhensuche weist ein zirkularer Puffer Signalspeicher 262 bis 292 und Multiplexer 260 und 294 des zirkularen Puffers 259 auf. Durch Rotieren der Werte im zirkularen Puffer 259 liefert Signalspeicher 292 -2b und b² im ersten bzw. zweiten Zyklus.
  • In einem zweiten der zwei Zyklen liefert Sinalspeicher 228 die Autokorrelation EyLyL der gewichteten synthetisierten Sprachproben über Multiplexer 230 an einen ersten Eingang des Multiplizierers 240. Der zirkulare Puffer 259 liefert den skalierten Tonhöhenverstärkungswert b² an einen zweiten Eingang des Mulitplizierers 240 über Multiplexer 296. Das Produkt b²EyLyL wird durch Mulitplizierer 240 an einen ersten Eingang des Summierers 242 geliefert. Der zweite Eingang des Summierers 242 wird mit dem Ausgang des Signalspeichers 244, -2bExpyL, über Multiplexer 246 versehen. Summierer 242 liefert -2bExpyL+b²EyLyL an Signalspeicher 244 zur Speicherung. Die Werte in Signalspeichern 262 bis 292 des zirkularen Puffers 259 werden dann wie oben beschrieben rotiert.
  • Der Zwei-Zyklus-Prozeß, der oben beschrieben ist, wird für alle acht Paare (-2b, b²) der skalierten Tonhöhenverstärkungwerte wiederholt. Während der zwei Zyklen, die der Berechnungen des aktuellen MSE-Werts, -2bExPyL+b²EyLyL folgen, wird ein neuer MSE-Wert berechnet unter Verwendung eines neuen Paares von -2b und b²- Werten. Bevor Signalspeicher 244 mit dem neuen MSE-Wert aktulisiert wird, wird der akutelle MSE-Wert mit dem aktuellen minimalen MSE verglichen, der in Signalspeicher 250 gespeichert ist, und zwar für den aktuellen Tonhöhenunterrahmen. Der aktuelle MSE-Wert -2bExpyL+b²EyLyL wird durch Signalspeicher 244 an den positiven Eingang des Subtrahierers 248 geliefert. Signalspeicher 250 liefert den aktuellen minimalen MSE-Wert an den negativen Eingang des Subtrahierers 248. Steuerung 220 überwacht das Ergebnis des Differenzausgangs vom Subtrahierer 248. Wenn die Differenz negativ ist, so ist der aktuelle MSE-Wert ein neuer minimaler MSE für den aktuellen Tonhöhenunterrahmen, und er wird im Signalspeicher 250 gespeichert, und die entsprechende Tonhöhenverzögerungsschätzung und der Tonhöhenverstärkungsschätzindex werden in Steue rung 220 aktualisiert. Wenn die Differenz nicht negativ ist, so wird der aktuelle MSE-Wert ignoriert.
  • Vor jedem Tonhöhenunterrahmen sendet der DSP-Kern 4 einen Befehl an Minimierungsprozessor 334, der die Steuerung 220 darüber informiert, daß ein neuer Tonhöhenunterrahmen folgen wird. Auf den Empfang dieses Befehls hin werden die aktuelle Tonhöhenverzögerung und der aktuelle Tonhöhenverstärkungsindex auf 0 in Steuerung 220 gesetzt. Bevor jede neue Sequenz von gewichteten synthetisierten Sprachroben an Minimierungsprozessor 334 geliefert wird, sendet DSP-Kern 4 einen Befehl an Minimierungsprozessor 334, der die Steuerung 220 darüber informiert, daß eine neue Sequenz von gewichteten synthetisierten Sprachproben folgen wird. Auf den Empfang dieses Befehls hin inkrementiert Steuerung 220 die aktuelle Tonhöhenverzögerung und den aktuellen Tonhöhenverstärkungsindex um 1, entsprechend eines Tonhöhenverzögerunginkrements von 1 und eines Tonhöhenverstärkungsinkrements von 0,25. Während die erste Sequenz von gewichteten synthetisierten Sprachproben an Minimierungsprozessor 334 geliefert wird, wird die aktuelle Tonhöhenverzögerung und der aktuelle Tonhöhenverstärkungsindex 1 sein, und zwar entsprechend einer Tonhöhenverzögerung von L = 17 und einer normalisierten Tonhöhenverstärkung von b = 0,25. Vor jedem Tonhöhenunterrahmen werden ebenfalls die aktuelle Tonhöhenverzögerungsschätzung und der aktuelle Tonhöhenverstärkungsschätzindex auf 0 gesetzt, was eine ungültige Tonhöhenverzögerung und eine ungültige Tonhöhenverstärkung anzeigt. Während jedes Tonhöhenunterrahmens wird die Steuerung 220 den ersten negativen MSE im Signalspeicher 244 detektieren. Dieser Wert wird im Signalspeicher 250 gespeichert und die entsprechende Tonhöhenverzögerungsschätzung und der Tonhöhenverstärkungsschätzungsindex werden in Steuerung 220 aktualisiert. Dies wird getan, um den minimalen MSE im Signalspeicher 250 für jeden Tonhöhenunterrahmen zu initialisieren. Sollte kein negativer MSE-Wert während des Tonhöhenunterrahmens erzeugt werden, so wird die Tonhöhenverzögerungsschätzung und der Tonhöhenverstärkungsschätzindex am Ende des Unterrahmens 0 sein. Diese Schätzungen werden durch Steuerung 220 an den DSP- Kern 4 geliefert. Wenn der DSP-Kern 4 eine ungültige Tonhöhenverzögerungsschätzung empfängt, so wird die optimale Tonhöhenverstärkung auf 0 gesetzt, = 0, entsprechend einem nullwertigen MSE. Mit der auf 0 gesetzten Tonhöhenverstärkung des Tonhöhenfilters hat die Tonhöhenverzögerung keine Konsequenz. Wenn der DSP-Kern 4 eine gültige Tonhöhenverzögerungsschätzung empfängt, so wird dieser Wert als die optimale Tonhöhenverzögerung verwendet, und die verwendete optimale Tonhöhenverstärkung wird 0,25, 0,5, 0,75, 1,0, 1,25, 1,5, 1,75 und 2,0 für Tonhöhenverstärkungsschätzindizies von 1 bis 8 entsprechend sein.
  • In der Tonhöhensuche erlaubt die Natur der MSE-Funktion MSE(L,b) der Gleichung 47 das Erreichen von Berechnungseinsparungen. Die restlichen MSE-Berechnungen der aktuellen Tonhöhenverzögerung können abgebrochen werden, wenn festgestellt wurde, daß die restlichen MSE-Werte, die noch innerhalb der aktuellen Tonhöhenverzögerung berechnet werden müssen, nicht in einen MSE-Wert resultieren, der kleiner als der aktuelle minimale MSE ist, der im Signalspeicher 250 gespeichert ist. In der beispeilhaften Ausführungsform werden drei Verfahren für Berechnungseinsparungen in der Tonhöhensuche im Minimierungsprozessor 334 genutzt. Die MSE-Funktionen MSE(L,b) sind in b quadratisch. Eine quadratische Gleichung wird für jeden Tonhöhenverzögerungswert L gebildet. Alle diese quadratischen Gleichungen durchlaufen den Ursprung b=0 und MSE(L,b)=0. Der Tonhöhenverstärkungswert b=0 wird in den Satz möglicher Verstärkungswerte eingeschlossen, obwohl nach ihm nicht explizit in der Tonhöhensuchoperation gesucht wurde.
  • Das erste Berechnungseinsparungsverfahren involviert das Abbrechen der Berechnung der MSE-Werte in der Tonhöhensuchprozedur der aktuellen Tonhöhenverzögerung, wenn ExpyL negativ ist. Alle Tonhöhenverstärkungswerte sind positiv, was sicherstellt, daß Null eine obere Grenze für den minimalen MSE für jeden Unterrahmen ist. Ein negativer Wert für ExpyL würde in einen positiiven MSE-Wert resultieren und deshalb suboptimal sein.
  • Das zweite Berechnungseinsparungsverfahren involviert das Abbrechen der Berechnung der restlichen MSE-Werte in der Tonhöhensuchprozedur der aktuellen Tonhöhenverzögerung, und zwar basierend auf der quadratischen Natur der MSE- Funktion. Die MSE-Funktion MSE(L,b) wird für Tonhöhenverstärkungswerte berechnet, welche monton ansteigen. Wenn ein positiver MSE-Wert für die gegenwärtige Tonhöhenverzögerung berechnet wird, so werden alle restlichen MSE- Berechnungen für die aktuelle Tonhöhenverzögerung abgebrochen, da alle restlichen MSE-Werte auch positiv sein würden.
  • Das dritte Berechnungseinsparungsverfahren involviert das Abbrechen der Berechnung der restlichen MSE-Werte in der Tonhöhensuchprozedur der aktuellen Tonhöhenverzögerung, und zwar basierend auf der quadratischen Natur der MSE- Funktion. Die MSE-Funktion MSE(L,b) wird für Tonhöhenverstärkungswerte berechnet, welche monton ansteigen. Wenn MSE-Wert innerhalb der aktuellen Tonhöhenverzögerung berechnet wird, der nicht als ein neuer minimaler MSE-Wert festgestellt wird, und wenn ein MSE-Wert innerhalb der aktuellen Tonhöhenverzögerung berechnet wurde, welcher als ein neuer minimaler MSE-Wert festgestellt wurde, so werden alle restlichen MSE-Berechnungen innerhalb der aktuellen Tonhöhenverzögerung abgebrochen, da die restlichen MSE-Werte nicht kleiner als der neue minimale MSE sein können. Die drei Berechnungseinsparverfahren, die oben beschrieben wurden, liefern signifikante Leistungseinsparungen im Minimierungsprozessor 334.
  • Im Block 76 werden die Tonhöhenwerte quantisiert. Für jeden Tonhöhenunterrahmen werden die gewählten Parameter und in Sendekodes bzw. Übertragungskodes PGAIN und PLAG umgewandelt. Der optimale Tonhöhenverstärkungsindex ist ein ganzzahliger Wert zwischen 1 und einschließlich 8. Die optimale Tonhöhenverzögerung ist ein ganzzahliger Wert zwischen 1 und einschließliche 127. Der Wert von PLAG hängt von sowohl und ab. Wenn = 0, dann ist PLAG = 0. Ansonsten ist PLAG = . Somit wird PLAG unter Verwendung von 7 Bits repräsentiert. Wenn = 0, so ist PGAIN = 0. Ansonsten ist PGAIN = -1. Somit wird PGAIN unter Verwendung von 3 Bits repräsentiert. Es sei bemerkt, daß sowohl = 0 und = 1 in PGAIN = 0 resultieren. Diese beiden Fälle sind durch den Wert von PLAG unterschieden, welcher Null im ersten Fall und nicht-Null im zweiten Fall ist. Außer für die Achtelrate umfaßt jeder Tonhöhenunterrahmen zwei Kodebuchunterrahmen. Für jeden Kodebuchunterrahmen werden der optimale Kodebuchindex und der optimale Kodebuchverstärkung G in der Kodebuchsuchprozedur des Blocks 80 bestimmt. Für die Achtelrate werden nur ein Kodebuchindex und eine Kodebuchverstärkung bestimmt und der Kodebuchindex wird vor der Aussendung gestrichen.
  • Mit Bezug auf Fig. 9 in der beispielhaften Ausführungsform besteht das Erregungskodebuch, das durch Kodebuch 400 geliefert wird, aus 2M Kodevektoren wobei M=7.
  • Das zirkulare Kodebuch in der beispielhaften Ausführungsform besteht aus den 128 Werten, die in Tabelle IV unten gegeben sind. Die Werte sind in vorzeichenbehafteter dezimaler Notation und in ROM E 114 gespeichert. Tabelle IV
  • Das verwendete Verfahren zur Auswahl des Kodebuchvektorindex I und der Kodebuchverstärkung G ist ein Analyse-durch-Synthese-Verfahren, das ähnlich ist zu dem, das für die Tonhöhensuchprozedur verwendet wird. Der gewählte Kodebuchindex und die gewählte Kodebuchverstärkung sind die zulässigen Werte für und , welche den mittleren quadratischen Fehler MSE(I, G) der Gleichung 50 minimieren, und zwar zwischen der gewichteten synthetisierten Sprache yI (n) und der wahrnehmend gewichteten Sprache mit einer entfernten Tonhöhenschätzung xC(n). Mit Bezug auf Fig. 9 wird die gewichtete Sprache xC(n) wie folgt erzeugt. Die selbe wahrnehmend gewichtete Sprache x(n), die in der Tonhöhensuche für den akutellen Unterrahmen erzeugt wird, wird hier verwendet. Bedingt durch die Abwesenheit der Tnhöhensuche in der Achtelrate wird x(n) in der Kodebuchsuche für diese Rate erzeugt. x(n) wird an einen ersten Eingang des Summierers 410 geliefert. Unter Verwendung der optimalen Tonhöhenverzögerung und der optimalen Tonhöhenverstärkung , welche in der Tonhöhensuche für den aktuellen Unterrahmen extrahiert wurden, und unter Verwendung der aktuellen Zustandsspeicher des Tonhöhenfilters 506, wird der ZIR des Tonhöhensynthesefilters 506 pZIR(n) in ZIR-Element 406 berechnet. Der ZIR wird dann über gewichteten Synthesefilter 408 weitergeleitet und der Ausgang paZIR(n) wird von x(n) in Summierer 410 subtrahiert. Der Ausgang des Summierers 410, xC(n) wird normalisiert und an Minimierungsprozessor 412 geliefert.
  • Der Kodebuchvektor CI(n) wird durch Kodebuch 400 ansprechend auf einen Kodebuchindex I gemäß Gleichung 53 geliefert. Eine Impulsantwort h(n) des gewichteten Synthesefilters 404, die schon in der Tonhöhensuchprozedur für den aktuellen Tonhöhenunterrahmen bestimmt wurde, wird in der beispielhaften Ausführungsform genutzt. In der Achtelrate wird jedoch h(n) in der Kodebuchsuche im gewichteten Synthesefilter 404 berechnet. In der beispielhaften Ausführungsform wird die Impulsantwort h(n) auf die ersten zwanzig Proben beschränkt.
  • Bedingt durch die rekursive Natur des Kodebuchs wird eine rekursive Faltungsprozedur, die ähnlich zu der ist, die in der Tonhöhensuche verwendet wird, in der Kodebuchsuche genutz. Die Faltung wird wie in Gleichung 52 unten gezeigt berechnet.
  • Der Kodebuchvektor für Index I, CI(n) wird wie in Gleichung 53 unten gezeigt definiert.
  • Eine volle Faltung wird für Index I = 0 gemäß der Gleichung 54 ausgeführt. Der Ausgang y&sub0;(n) wird in RAM C 122 gespeichert. Für die restlichen Indizes I = 1 bis I = 127 wird die Faltung rekursiv ausgeführt, wie in Gleichungen 55-57 unten gezeigt.
  • Wie in der Tonhöhensuche wird die Leitung der rekursiven Faltung der Kodebuchsuche durch die dreifach geteilten RAMs und einen ROM E 114 im DSP-Kern 4 optimiert.
  • Die Berechnung der Faltungswerte in Gleichung 56 und die Erzeugung eines Ergebnisses für jeden Taktzyklus ist dann möglich. Zum Beispiel wird dann in einem einzelnen Zyklus y&sub1;&sub8;(10) berechnet, y&sub1;&sub8;(9) wird gespeichert, y&sub1;&sub7;(10) wird aufgerufen und h(10) wird aufgerufen. Somit kann die obige Gleichung 56 ein Ergebnis für jeden Taktzyklus erzeugen. Das Erzeugen eines Ergebnisses für jeden Taktzyklus für obige Gleichung 57 ist auch möglich. Zum Beispiel wird in einem einzelnen Taktzyklus y&sub1;&sub8;(24) berechnet, y&sub1;&sub7;(24) wird aufgerufen und y&sub1;&sub8;(23) wird gespeichert.
  • Die Fähigkeit, Gleichungen 56 und 57 auszuführen, ohne die vorher berechneten gewichteten synthetisierten Sprachproben yI-1(n-1) zum selben Quellen-RAM zwischen jeder Kodebuchindexaktualisierung bewegen zu müssen, erfordert eine Speicherstrategie und Hardwarefähigkeit, die als ping-ponging bezeichnet wird, in welchem die Quellen- und Ziel-RAMs zwischen jeder Indexaktualisierung zurück ausgetauscht bzw. zurückgewechselt werden. Wenn yI(n) für gerade Kodebuchindexwerte berechnet wird, so werden yI- &sub1;(n-I)-Werte aus einem ersten der drei RAMs aufgerufen und Ergebnisse werden in einem zweiten der drei RAMs gespeichert. Wenn yI(n) für ungerade Kodebuchindexwerte berechnet wird, so werden yI-1(n-1)-Werte aus einem zweiten der drei RAMs aufgerufen und Ergebnisse werden in einem ersten der drei RAMs gespeichert. Dieses ping-ponging eliminiert den Bedarf, die zuvor berechneten yI-1(n-1)- Werte zum selben RAM zwischen jeder Kodebuchindexaktualisierung zu bewegen.
  • Fig. 10 ist ein Flußdiagramm für die Ausführung des rekursiven Faltungsteils (sowohl anfängliche nichtrekursive und rekursive Faltungen) der Kodebuchsuche in der beispielhaften Ausführungsform. Im Block 414 wird der Kodebuchindex I auf seinen geringsten Wert initialisiert, welcher in der beispielhaften Ausführungsform Null ist. Die Probenanzahl n und der Index m werden auf Null gesetzt und die Werte von y&sub0;(n) werden auf Null gesetzt. Die Blöcke 416 bis 424 bilden die anfängliche Faltungsschleife, welche auf eine nicht-rekursive Weise berechnet wird. Die Berechnung der anfänglichen Faltung, wobei der I = 0, wird entsprechend der Gleichung 58 unten ausgeführt.
  • Die Berechnung der anfänglichen Faltung nutzt Schleifen mit fester Länge, um die Berechnungskomplexität zu verringern. Auf diese Weise wird der Überhang, der erfoderlich ist, um eine Schleifenstruktur mit variabler Länge innerhalb der inneren Schleife (Blöcke 320 - 324) der Gleichung 58 einzustellen), vermieden. Jeder y&sub0;(n)-Wert wird an den Minimierungsprozessor 412 gesendet, nachdem er berechnet wird.
  • Block 416 testet den Probenindex n. Wenn n gleich der Kodebuchunterrahmenlänge LC ist, so ist die erste Faltung vollendet und der Ablauf geht zu Block 426. Wenn in Block 416 n kleiner ist als die Kodebuchunterrahmenlänge, dann geht der Ablauf zu Block 420. Block 420 testet den Index m. Wenn m gleich der Filterimpulsantwortlänge 20 ist, und zwar an der beispielhaften Ausführungsform, so ist die aktuelle Iteration vollendet und der Ablauf fährt zu Block 418 fort, wo m auf Null gesetzt wird und n inkrementiert wird. Der Ablauf kehrt dann zu Block 416 zurück. Wenn in Block 420 m kleiner ist als die Filterimpulsantwortlänge 20, so geht der Ablauf zu Block 424, wo die Teilsummen akkumuliert werden. Der Ablauf geht dann zu Block 422, wo der Index m inkrementiert wird und der Ablauf mit Block 420 fortfährt.
  • Die involvierten Operationen in der anfänglichen Faltungsschleife, die durch Blöcke 414 bis 424 gebildet ist, werden im DSP-Kern 4 ausgeführt, wobei geeignete Parallelverarbeitung bzw. Pipelining vorgesehen ist, um die Akkumulation der Produkte zu erlauben, wie in Block 424 gezeigt. Die folgenden Operationen zeigen die Parallelverarbeitung der Berechnungen und treten im DSP-Kern 4 in einem einzelnen Taktzyklus auf. Der Filterantwortwert h(m+1) wird aus RAM A 104 aufgerufen und zu AREG 130 geliefert. Der Kodebuchvektor-Wert CI(n) wird aus ROM E 114 aufgerufen und zu BREG 134 geliefert. Die Teilsumme y&sub0;(n+m-1), die im C0REG 164 vorliegt, wird zu RAM C 182 über Mutiplexer 168 und 180 geliefert. Die Teilsumme y&sub0;(n+m+1) wird durch RAM C 182 an DREG 156 geliefert. Die Werte h(m) und CI(n) in AREG 130 bzw. BREG 134 werden zum Multiplizierer I32 geliefert. Der Ausgang des Multiplizierers 132 wird über Multiplexer 138 und ausgeschalteten Barrel-Schifter 140 an einen ersten Eingang des Summierers 146 geliefert. Die Teilsumme y&sub0;(n+m) wird durch DREG 156 über Mulitplexer 154, ausgeschalteten Inverter 152 und ausgeschalteten Barrel-Schifter 150 an einen zweiten Eingang des Summierers 146 geliefert. In der beispielhaften Ausführungsform enthält das Mittelpunkts geklammerte bzw. Mittelpunkt geschnittene Gauss-Kodebuch (engl.: center clipped Gaussian code-book) CI(n) eine Mehrheit von Nullwerten. Um diese Situation als ein leistungssparendes Merkmal auszunutzen, kontrolliert der DSP-Kern 4 zuerst, ob der Kodebuchvektor Null ist, und zwar im Block 424. Wenn er Null ist, so werden die Mulitplikations- und Additionsschritte, die normalerweise im Block 424 ausgeführt werden und oben erklärt wurden, ausgelassen. Diese Prozedur eliminiert Mulitplikations- und Additionsoperationen ungefähr in 80% aller Fälle bzw. der Zeit, was Somit Leistung einspart. Der Ausgang des Summierers 146 wird über Multiplexer 148 an C0REG 164 geliefert. Dieser Wert in C0REG wird dann über Multiplexer 168 und 180 an RAM C 182 geliefert. Wenn der Index n seinen maximal zulässigen Wert im Block 416 erreicht, ist die anfängliche Faltung vollständig und die Teilsummen, die in RAM C 182 vorhanden sind, sind nun das endgültige Ergebnis der Faltung.
  • Wenn die anfängliche Faltung vollständig ist, so fährt der Ablauf mit Block 326 fort, wo rekursive Faltung ausgeführt wird, und zwar in den Berechnungen für die restlichen Kodebuchindexwerte.
  • Im Block 426 wird der Probenindex n auf Null gesetzt und der Kodebuchindex I wird inkrementiert. Der Ablauf fährt mit Block 428 fort. Block 428 testet I. Wenn I größer als oder gleich 128 ist, welches der maximale Kodebuchindexwert in der beispielhaften Ausführungsform ist, so fährt der Ablauf mit Block 430 fort, wo die Kodebuchindexsuchoperation endet. Wenn I kleiner als oder gleich 127 ist, so fährt der Ablauf mit Block 432 fort. Block 432 steuert die ping-ponging-Operation, die oben beschrieben wurde. Im Block 432 wird I getestet, um festzu stellen, ob es gerade oder ungerade ist. Wenn I gerade ist, so fährt der Ablauf mit Block 442 fort (Operation beschrieben als Fall I). Wenn I ungerade ist, so fährt der Ablauf mit Block 434 fort (Operation beschrieben als Fall II).
  • Fall I: (gerade Werte für Kodebuchindex I)
  • Im Block 442 wird yI(0) gemäß Gleichung 55 berechnet. Adresseinheit A 102 liefert einen Adresswert an RAM A 104, welcher ansprechend darauf h(0) über Multiplexer 108 an AREG 130 liefert. In dem selben Taktzyklus liefert Adresseinheit E 112 einen Adresswert an ROM E 114, welcher ansprechend darauf CI(0) über Mutliplexer 116 an BREG 134 liefert. Während des nächsten Taktzyklus liefert AREG 130 h(0) und BREG 134 CI(0) an Multiplizierer 132, wo die beiden Werte mulitpliziert werden und das Produkt über Multiplexer 138 und über ausgeschalteten Barrel- Schifter 140 an einen ersten Eingang des Summierers 146 geliefert werden. Der zweite Eingang des Summierers 146 wird mit einer Null über Multiplexer 154 ausgeschaltetes Inverterelement 152 und Barrel-Schifter 152 versehen. Der Ausgang des Summierers 146 wird an C0REG 164 über Multiplexer 148 geliefert. Während des selben Taktzyklus werden yI-1(0) und h(1) aus RAM B 122 und RAM A 104 aufgerufen und an DREG 156 und AREG 130 über Multiplexer 158 bzw. 108 geliefert.
  • In Block 444 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 446 fährt der Ablauf mit Block 448 fort, wenn der synthetisierte Sprachprobenindex n kleiner als 20 ist.
  • Im Block 448 wird ein neuer yI(n)-Wert in jedem Taktzyklus gemäß Gleichung 56 berechnet. Eine geeignete Einstellung, die vor der ersten Iteration des Blocks 448 erforderlich ist, um die Werte yI-1(n-1) und h(n) zu in itialisieren, wurde im Block 442 wie oben beschrieben erreicht. Eine geeignte Säuberung bzw. Reinigung ist auch erfoderlich, und zwar nachfolgend auf die letzte Iteration des Blocks 448, um den endgültigen Wert von yI(19) zu speichern.
  • In der ersten Iteration des Blocks 448 ist yI(0), der im Block 442 berechnet wurde, in C0REG 164 vorhanden. C0REG 164 liefert yI(0) über Multiplexer 168 und 180 an RAM C 182 zur Speicherung, wobei der Adresswert an RAM C 182 aus Adresseinheit C 186 geliefert wird. yI(0) wird an Minimierungsprozessor 412 zur selben Zeit geliefert, wenn er an RAM C 182 geliefert wird.
  • Im Block 448 werden die folgenden Operationen in einem einzelnen Taktzyklus ausgeführt. Der yI-1(n)-Wert wird durch RAM B 122 über Multiplexer 158 an DREG 156 geliefert, und zwar gemäß einer Adresse, die durch Adresseinheit B 120 geliefert wird. Der Impulsantwortwert h(n+1) wird durch RAM A 104 über Multiplexer 108 an AREG 130 geliefert, und zwar gemäß einer Adresse, die durch Adresseinheit A 102 geliefert wird. DERG 156 liefert yI-1(n-1) über Multiplexer 154, ausgeschaltetes Inverterelement 152 und Barrel-Schifter 150 an einen ersten Eingang des Summierers 146. AREG 130 liefert h(n) und BREG 134 liefert CI(n) an Multiplizierer 132, wo die beiden Werte multipliziert werden und das Produkt durch Multiplizierer 132 über Multiplexer 138 und über ausgeschalteten Barrel- Schifter 140 an einen zweiten Eingang des Summierers 146 geliefert wird Der Ausgang des Summierers 146 wird über Multiplexer 148 an C0REG 164 geliefert. Der Wert in C0REG 164, der in der vorangegangenen Iteration berechnet wurde, wird über Multiplexer 168 und 180 an RAM C 182 zur Speicherung und an Minimierungsprozessor 412 geliefert.
  • Im Steuerblock 446 wird yI(19), der in der endgültigen Iteration berechnet wurde, über Multiplexer 168 und 124 an RAM B 122 geliefert, wenn der synthetisierte Sprachprobenindex n gleich 20 ist, und zwar zur Speicherung in einem zirkularen Puffer, und außerdem an den Minimierungsprozessor 412, bevor der Ablauf mit Block 454 fortfährt.
  • Ende des Falls I Fall II: (ungerade Werte für Kodebuchindex I)
  • Im Block 434 wird yI(0) gemäß Gleichung 55 berechnet. Adresseinheit A 102 liefert einen Adresswert an RAM A 104, welcher ansprechend darauf h(0) über Multiplexer 108 an AREG 130 liefert. In dem selben Taktzyklus liefert Adresseinheit E 112 einen Adresswert an ROM E 114, welcher ansprechend darauf CI(0) über Mutliplexer 116 an BREG 134 liefert. Während des nächsten Taktzyklus liefert AREG 130 h(0) und BREG 134 liefert CI(0) an Multiplizierer 132, wo die beiden Werte multipliziert werden und das Produkt über Multiplexer 138 und über ausgeschalteten Barrel-Schifter 140 an einen ersten Eingang des Summierers 146 geliefert wird. Der zweite Eingang des Summierers 146 wird mit einer Null über Multiplexer 154, ausgeschaltetes Inverterelement 152 und Barrel-Schifter 150 versehen. Der Ausgang des Summierers 146 wird an C0REG 164 über Multiplexer 148 geliefert. Während des selben Taktzyklus werden yI-1(0) und h(1) aus RAM C 182 und RAM A 104 aufgerufen und an DREG 156 und AREG 130 über Multiplexer 158 bzw. 108 geliefert.
  • Im Block 436 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 438 fährt der Ablauf mit Block 440 fort, wenn der synthetisierte Sprachprobenindex n kleiner als 20 ist.
  • Im Block 440 wird ein neuer yI(n)-Wert in jedem Taktzyklus gemäß Gleichung 56 berechnet. Eine geeignete Einstellung, die vor der ersten Iteration des Blocks 440 er forderlich ist, um die Werte yI-1(n) und h(n) zu initialisieren, wurde im Block 434 wie oben beschrieben erreicht. Eine geeignete Säuberung bzw. Reinigung ist auch erfoderlich, und zwar nachfolgend auf die letzte Iteration des Blocks 440, um den endgültigen Wert yI(19) zu speichern.999
  • In der ersten Iteration des Blocks 440 ist yI(0), der im Block 434 berechnet wurde, in C0REG 164 vorhanden. C0REG 164 liefert yI(0) über Multiplexer 168 und 124 an RAM B 122 zur Speicherung, wobei der Adresswert an RAM B 122 aus Adresseinheit B 120 geliefert wird. yI(0) wird an Minimierungsprozessor 412 zur selben Zeit geliefert, wenn er an RAM B 122 geliefert wird.
  • Im Block 440 werden die folgenden Operationen in einem einzelnen Taktzyklus ausgeführt. Der yI-1(n)-Wert wird durch RAM C 182 entsprechend einer Adresse, die von Adresseinheit C 186 geliefert wird, über Multiplexer 158 an DREG 156 geliefert. Der Impulsantwortwert h(n+1) wird durch RAM A 104 über Multiplexer 108 an AREG 130 geliefert, und zwar gemäß einer Adresse, die durch Adresseinheit A 102 geliefert wird. DREG 156 liefert yI-1(n-1) über Multiplexer 154, ausgeschaltetes Inverterelement 152 und Barrel-Schifter 150 an einen ersten Eingang des Summierers 146. AREG 130 liefert h(n) und BREG 134 liefert CI(n) an Multiplizierer 137, wo die beiden Werte multipliziert werden, und das Produkt wird durch Multiplizierer 132 über Multiplexer 138 und über Barrel-Schifter 140 an einen zweiten Eingang des Summierers 146 geliefert. Der Ausgang des Summierers 146 wird über Multiplexer 148 an C0REG 164 geliefert. Der Wert in C0REG 164, der in der vorangegangenen Iteration berechnet wurde, wird über Multiplexer 168 und 124 an RAM B 122 zur Speicherung und an Minimierungsprozessor 412 geliefert.
  • Im Block 436 wird der synthetisierte Sprachprobenindex n inkrementiert. Im Steuerblock 438 wird yI(19), der in der endgültigen Iteration berechnet wurde, über Multiplexer 168 und 124 an RAM B 122 zur Speicherung in einem zirkularen Puffer innerhalb des RAMs B 122 und an Minimierungsprozessor 412 geliefert, wenn der synthetisierte Sprachprobenindex n gleich 20 ist, und zwar bevor der Ablauf mit Block 454 fortfährt.
  • Ende des Falls II
  • Vor der ersten Iteration des Blocks 454 wird yI-1(19) aus dem zirkularen Puffer in RAM B 122 aufgerufen und in BREG 134 geladen. yI-1(19) wird dann aus BREG 134 zu C0REG 164 bewegt, wonach yI-1(20) aus dem zirkularen Puffer in RAM B 122 aufgerufen und in BREG 134 geladen wird.
  • In Block 454 wird ein neuer yI(n) in jedem Taktzyklus gemäß Gleichung 57 berechnet. Die folgenden Operationen werden in einem einzelnen Taktzklyus ausgeführt. yI-1(n- 2) wird durch BREG 134 an C0REG 164 geliefert. yI-1(n-3) wird aus dem zirkularen Puffer innerhalb RAM B 122 aufgerufen und in BREG 134 geladen. yI-1(n-1), der in C0REG 164 vorhanden ist, wird dem Minimierungsprozessor 412 präsentiert bzw. zur Verfügung gestellt. Folgend auf die letzte Iteration des Blocks 454 wird yI-1(LC-2) aus dem zirkularen Puffer innerhalb RAM B 122 gelöscht. Durch Addieren eines Elements zum zirkularen Puffer innerhalb des RAM B 122 und Löschen eines Elements aus dem zirkularen Puffer innerhalb des RAM B 122 für jeden Kodebuchindex wird die Größe des zirkularen Puffers bei LC-19 beibehalten.
  • Die Realisierung des zirkularen Puffers innerhalb des RAM B 122 wird über spezielle Adressregister in Adresseinheit B 120 erreicht, welche die Übertragpunkte (engl.: wrap around points) diktieren, so daß ein sequentieller Spei cher automatisch auf zirkulare Weise adressiert werden kann.
  • Im Block 450 wird der synthetisierte Sprachprobenindex n inkrementiert. In Steuerblock 452 fährt der Ablauf wieder mit Block 454 fort, wenn der synthetisierte Speicherprobenindex n kleiner als LC ist. Wenn der synthetisierte Speicherprobenindex n gleich LC ist, so sind alle yI(n)- Werte für den aktuellen Kodebuchindexwert I berechnet worden, und der Ablauf kehrt zu Block 426 zurück.
  • Vor der Berechnung der synthetisierten Sprachproben yI(n) wird eine Sequenz der Länge LC von wahrnehmend gewichteten Sprachproben xC(n) an Minimierungsprozessor 412 geliefert. Wie oben beschrieben, werden Sequenzen synthetisierter Sprachproben yI(n) der Länge LC für Kodebuchvektorindexwerte I = 0 bis I = 127 an Minimierungsprozessor 412 während der anfänglichen und rekursiven Faltungsberechnungen geliefert. Die synthetisierten Sprachproben werden sequentiell an Minimierungsprozessor 412 geliefert. Minimierungsprozessor 412 berechnet die Autokorrelation jeder synthetisierten Sprachprobensequenz yI(n) und die Kreuzkorrelation zwischen jeder synthetisierten Sprachprobensequenz yI(n) und der Sequenz der wahrnehmend gewichteten Sprachproben xC(n). Aus diesen Korrelationswerten berechnet der Minimierungsprozessor 412 dann ein relatives Maß des MSE zwischen jeder synthetisierten Sprachprobensequenz yI(n) und der Sequenz der wahrnehmend gewichteten Sprachproben xC(n). Für jeden Kodebuchvektorindex I wird MSE für alle möglichen Kodebuchgverstärkungswerte G der synthetisierten Sprachprobensequenz berechnet. Minimierungsprozessor 412 findet den minimalen MSE über alle Kodebuchvektorindexwerte I und alle möglichen Kodebuchverstärkungswerte G durch Beibehalten des Werts des minimalen MSE durch den gegenwärtige Kodebuchvektorindex I und der gegenwärtigen Kodebuchverstärkung G. Die Kodebuchindexschätzung und die Kodebuchverstär kungsindexschätzung G entsprechend dem minimalen MSE werden ebenfalls durch Minimierungsprozessor 412 beibehalten. Jeder neue MSE Wert wird mit dem minimalen MSE verglichen, der im Minimierungsprozessor 412 beibehalten wird. Wenn der neue MSE kleiner als der minimale MSE ist, so wird der minimale MSE durch den neuen MSE-Wert ersetzt, und die Kodebuchvektorindexschätzung und der Kodebuchverstärkungsschätzungsindex werden aktualisiert, um den neuen minimalen MSE wiederzuspiegeln. Der minimale MSE und die entsprechende Kodebuchvektorindexschätzung und der Kodebuchverstärkungsschätzungsindex , die im Minimierungsprozessor 412 beibehalten werden, werden für jeden Kodebuchunterrahmen initialisiert, und zwar unter Verwendung des ersten MSE-Wertes, der während dieses Kodebuchunterrahmens berechnet wurde. Nachdem alle Kodebuchvektorindizes I und alle Kodebuchverstärkungswerte G erschöpft sind, wird die Kodebuchvektorindexschätzung und der Kodebuchverstärkungsschätzindex der optimale Kodebuchvektorindex bzw. der optimale Kodebuchverstärkungsindex für den aktuellen Kodebuchunterrahmen sein. Minimierungsprozessor 412 liefert den optimalen Kodebuchvektorindex und den optimalen Kodebuchverstärkungsschätzungsindex an DSP-Kern 4 über Eingangsanschlüsse 12. Der optimale Kodebuchvektorindex und der optimale Kodebuchverstärkungsschätzungsindex sind jene, die in den minimalen MSE zwischen den wahrnehmend gewichteten Sprachproben xC(n) und den gewichteten synthetisierten Sprachproben yI(n) resultieren. Der MSE ist eine Funktion des Kodebuchindex I und der Kodebuchverstärkung G, wie durch Gleichungen 59 bis 61 unten beschrieben:
  • = Excxc - 2GExcy&sub1; + G²Ey&sub1;y&sub1; (61)
  • ExCxC ist die Autokorrelation der wahrnehmend gewichteten Sprachproben xC(n). ExCyI ist die Kreuzkorrelation zwischen den wahrnehmend gewichteten Sprachproben xC(n) und den gewichteten synthetisierten Sprachproben yI(n). EyIYI ist die Autokorrelation der wahrnehmend gewichteten synthetisierten Sprachproben xI(n).
  • Die Autokorrelation ExCxC der wahrnehmend gewichteten Sprachproben xC(n) ist keine Funktion des Kodebuchverstärkung G. ExCxC bleibt konstant während jedes Kodebuchunterrahmens und beeinflußt deshalb nicht die Auswahl des optimalen Kodebuchvektorindexes und der optimalen Kodebuchverstärkung. Die Minimierung der Gleichungen 59 bis 61 über den Kodebuchvektorindex I und des Kodebuchverstärkungs G ist äquivalent zur Minimierung der Gleichung 62 unten:
  • MSE(I,G) = -2GExCyI +G²EyIyI (62)
  • Der Minimierungsprozessor 412 berechnet die Autokorrelationen EyIyI der gewichteten synthetisierten Sprachprobensequenzen yI(n) und die Autokorrelationen ExCyI zwischen der wahrnehmend gewichteten Sprachporbensequenz xc(n) und den gewichteten synthetisierten Sprachprobensequenzen yI(n) Für jedes Korrelationspaar (ExCyI, EyIyI) berechnet der Minimierungsprozessor 412 den relativen MSE gemäß der obigen Gleichung 62 für einen Satz von Werten der Kodebuchverstärkurig G. Die Berechnung der Korrelationen ExCyI und EyIyI wird simultan im Minimierungsprozessor 412 ausgeführt. Die relativen MSE-Werte werden berechnet und die Entscheidungen bezüglich der MSE- Minimierung werden für Kodebuchvektorindex I gefällt, während die Korrelationswerte für den Kodebuchvektorindex I+1 berechnet werden.
  • Fig. 6a und 6b zeigen eine beispielhafte Ausführungsform des Minimierungsprozessors 412. Die wahrnehmend gewichteten Sprachproben xC(n) werden durch den DSP-Kern 4 an den Signalspeicher 210 für die Speicherung in RAM X 212 geliefert, und zwar gemäß einer Adresse, die durch die Steuerung 220 geliefert wird. Zwei Sätze von Kodebuchverstärkungswerten werden durch den DSP-Kern 4 an den Minimierungsprozessor 412 geliefert. Ein Satz ist für positive Kodebuchverstärkungswerte G und ein zweiter Satz ist für negative Kodebuchverstärkungswerte -G. Bei Vollrate und Halbrate werden skalierte Kodebuchverstärkungswerte -2G, für G=-4,0dB bis G=+8,0dB in Schritten von +4,0dB durch DSP-Kern 4 über Multiplexer 260 zur Speicherung in den Signalspeichern 292, 288, 284 bzw. 280 geliefert. Bei Viertelrate und Achtelrate werden skalierte Kodebuchverstärkungswerte -2G, für G=-4,0dB bis G=+2,0dB in Schritten von +2,0dB durch DSP-Kern 4 über Multiplexer 260 zur Speicherung in den Signalspeichern 292, 288, 284 bzw. 280 geliefert. Entsprechende skalierte Kodebuchverstärkungswerte G² werden über Multiplexer 260 zur Speicherung in den Signalspeichern 290, 286, 282 bzw. 278 geliefert. Bei Vollrate und Halbrate werden skalierte Kodebuchverstärkungswerte 2G für G=-4,0dB bis G=+8,0dB in Schritten von +4,0dB über Multiplexer 260 zur Speicherung in den Signalspeichern 276, 272, 268 bzw. 264 geliefert. Bei Viertelrate und Achtelrate werden skalierte Kodebuchverstärkungswerte 2G, für G=-4,0dB bis G=+2,0dB in Schritten von 2,0dB über Multiplexer 260 zur Speicherung in den Signalspeichern 276, 272, 268 bzw. 264 geliefert. Entsprechende skalierte Kodebuchverstärkungswerte G² werden über Multiplexer 260 zur Speicherung in den Signalspeichern 274, 270, 266 bzw. 262 geliefert. Multiplexer 260 liefert Werte direkt zum Signalspeicher 262. Signalspeicher 262 liefert Werte direkt zu Signalspeicher 264. Signalspeicher 276 liefert Werte zu Signalspeicher 278 über Multiplexer 294. Signalspeicher 290 liefert Werte direkt zu Signalspeicher 292 usw. Das Verschieben von Werten durch Signalspeicher 262 bis 292 und durch Mulitplexer 294 erlaubt es, daß die Werte über Multiplexer 260 an alle Signalspeicher innerhalb des zirkularen Puffers 259 geliefert werden. In der Kodebuchsuche werden zwei zirkulare Puffer innerhalb des zirkularen Puffers 259 vorgesehen. Nachfolgend auf die Speicherung der wahrnehmend gewichteten Sprachproben xC(n) und auf die Speicherung der Kodebuchverstärkungswerte werden Sequenzen von gewichteten synthetisierten Sprachproben yI(n) an Signalspeicher 210 geliefert. Die gewichteten synthetisierten Sprachproben yI(n) werden durch Signalspeicher 210 an die zwei Eingänge des Multiplizierers 216 geliefert, welcher die Quadrate (yI(n))² der gewichteten synthetisierten Sprachproben erzeugt. Signalspeicher 210 liefert auch die gewichteten synthetisierten Sprachproben yI(n) an den ersten Eingang des Multiplizierers 218. RAM · 212 liefert die wahrnehmend gewichteten Sprachproben xC(n) über Signalspeicher 214 an einen zweiten Eingang des Multiplizierers 218. Multiplizierer 218 berechnet die Produktwerte xC(n)yI(n). Ein neues Quadrat (yI(n))² und ein neues Produkt xC(n)yI(n) werden in jedem Zyklus durch Multiplizierer 216 bzw. 218 berechnet. Der Probenindex n variiert von 0 bis LC-1 für jeden Kodebuchvektorindex I.
  • Die Quadrate (yI(n))² der gewichteten synthetisierten Sprachproben werden an Akkumulator 221 geliefert. Die Produktwerte xC(n)yI(n) werden an Akkumualtor 221 geliefert. Akkumulator 221 berechnet die Summe der LC Quadrate für jeden Kodebuchvektorindex I. Akkumulator 231 berechnet die Summe der LC Produktwerte für jeden Kodebuchvektorindex I.
  • Vor jedem neuen Kodebuchvektorindex wird Signalspeicher 226 mit einer Null über Mulitplexer 224 versehen. Akkumulator 221 ist dann bereit, die Autokorrelation EyIyI für den aktuellen Kodebuchvektorindex I zu berechnen. In Akkumulator 221 werden die Quadrate (yI(n))² an einen er sten Eingang des Summierers 222 geliefert. Eine laufende Summe wird durch Signalspeicher 226 an einen zweiten Eingang des Summierers 222 geliefert. Die neu berechnete laufende Summe wird durch Summierer 222 über Multiplexer 224 an Signalspeicher 226 zur Speicherung geliefert. Nach der Akkumulation über alle LC-Werte für Kodebuchvektorindex I wird die Autokorrelation EyIyI an Signalspeicher 228 zur Speicherung geliefert.
  • Vor jedem neuen Kodebuchvektorindex wird Signalspeicher 236 mit einer Null über Multiplexer 234 versehen. Akkumulator 231 ist dann bereit, die Kreuzkorrelation ExCyI für den Kodebuchvektorindex I zu berechnen. Im Akkumulator 231 werden die Produktwerte xC(n)(yI(n) an einen ersten Eingang des Summierers 232 geliefert. Eine laufende Summe wird durch Signalspeicher 236 an einen zweiten Eingang des Summierers 232 geliefert. Die neu berechnete laufende Summe wird durch Summierer 232 über Multiplexer 234 an Signalspeicher 236 zur Speicherung geliefert. Nach der Akkumulation über alle LC-Werte für Kodebuchvektorindex I wird die Kreuzkorrelation ExCyI an Signalspeicher 238 zur Speicherung geliefert.
  • Der durch Gleichung 62 beschriebene MSE wird dann in dem unten beschriebenen Zwei-Zyklus-Prozess berechnet.
  • In einem ersten der beiden Zyklen liefert Sinalspeicher 238 die Kreuzkorrelation ExCyI zwischen den wahrnehmend gewichteten Sprachproben und den gewichteten synthetisierten Sprachproben über Multiplexer 230 an einen ersten Eingang des Multiplizierers 240. Steuerung 220 überwacht ExCyI, was durch Signalspeicher 238 geliefert wird. Wenn ExCyI nicht negativ ist, so liefert Signalspeicher 292 den skalierten Kodebuchverstärkungswert -2G an einen zweiten Eingang des Multiplizierers 240 über Mulitplexer 296. Das Produkt -2GExCyI wird durch Mulitplizierer 240 an einen ersten Eingang des Summierers 242 geliefert.
  • Wenn ExCyI negativ ist, so liefert der Signalspeicher 276 den skalierten Kodebuchverstärkungswert 2G an einen zweiten Eingang des Mulitplizierers 240 über Multiplexer 296. Das Produkt 2GExCyI wird durch Multiplizierer 240 an einen ersten Eingang des Summierers 242 geliefert. Der zweite Eingang des Summierers 242 wird mit einer Null über Multiplexer 246 versehen. Der Ausgang des Summierers 242 wird an den Signalspeicher 244 zur Speicherung geliefert. Das Vorzeichen von ExCyI wird in Steuerung 220 gespeichert. Vorzeichen von 1 und 0 für ExCyI entsprechen negativen bzw. nicht negativen Werten von ExCyI. Die Werte in Signalspeichern 262 bis 276 werden durch Liefern des Ausgangs an Signalspeicher 276 bis Signalspeicher 262 über Multiplexer 260 rotiert. Nach dieser Rotation enthalten die Signalspeicher 262, 264, 266, 268, 270, 272, 274 und 276 die Werte, die vorher in Signalspeichern 276, 262, 264, 266, 268, 270, 272 bzw. 274 enthalten waren. Die Werte in den Signalspeichern 278 bis 292 werden durch Liefern des Ausgangs des Signalspeichers 292 an den Signalspeicher 278 über Multiplexer 294 rotiert. Nach dieser Rotation enthalten die Signalspeicher 278, 280, 282, 284, 286, 288, 290 und 292 die Werte, die vorher in den Signalspeichern 292, 278, 280, 282, 284, 286, 288 bzw. 290 enthalten waren. Ein zirkularer Puffer weist Signalspeicher 262 bis 276 und Multiplexer 260 auf. Ein zweiter zirkularer Puffer weist Signalspeicher 278 bis 292 und Mulitplexer 294 auf. Durch Rotieren der Werte des ersten der zwei zirkularen Puffer im zirkularen Puffer 259 liefert Signalspeicher 292 -2G und G² im ersten bzw. zweiten Zyklus. Durch Rotieren der Werte innerhalb eines zweiten der beiden zirkularen Puffer im zirkularen Puffer 259 liefert der Signalspeicher 276 2G und G² im ersten bzw. zweiten Zyklus. Für jedes Paar von Korrelations- und Kreuzkorrelationswerten wird nur ein Satz von Kodebuchverstärkungspaaren durch den Zirkularpuffer 259 geliefert. Der Satz von Kodebuchverstärkungspaaren wird durch den zirkularen Puffer geliefert, der Signalspeicher 262 bis 276 und Multiplexer 260 für negative Werte von ExCyI aufweist. Der Satz von Kodebuchverstärkundspaaren wird durch den zirkularen Puffer geliefert, der Signalspeicher 278 bis 292 und Multiplexer 294 für nicht negative Werte von ExCyI aufweist.
  • In einem zweiten der zwei Zyklen liefert Sinalspeicher 228 die EyIyI über Multiplexer 230 an einen ersten Eingang des Multiplizierers 240. Über Multiplexer 296 liefern Signalspeicher 276 und 292 den Kodebuchverstärkungswert G² an einen zweiten Eingang des Multiplizierers 240 für negative bzw. nicht negative Werte von ExCyI. Das Produkt G²EyIyI wird durch Multiplizierer 240 an einen ersten Eingang des Summierers 242 geliefert. Der zweite Eingang des Summierers 242 wird mit dem Ausgang des Signalspeichers 244 ±2GExCyI über Multiplexer 246 versehen. Summierer 242 liefert ±2GExCyI+G²EyIyI an Signalspeicher 244 zur Speicherung. Die Werte in Signalspeichern 262 bis 292 des zirkularen Puffers 259 werden dann wie oben beschrieben rotiert.
  • Der oben beschriebene Zwei-Zyklus-Prozess wird für alle vier Paare (±2G, G²) der Kodebuchverstärkungswerte für jeden Kodebuchindex I wiederholt. Während der zwei Zyklen, die der Berechnung des aktuellen MSE-Werts ±2GExCyI+G²EyIyI folgen, wird ein neuer MSE-Wert berechnet, und zwar unter Verwendung des nächsten Paars von ±2G und G²-Werten. Bevor Signalspeicher 244 mit dem neuen MSE-Wert aktualisiert wird, wird der akutelle MSE-Wert mit dem minimalen MSE für den aktuellen Kodebuchunterrahmen, der im Signalspeicher 250 gespeichert ist, verglichen. Der aktuelle MSE-Wert ±2GExCyI+G²EyIyI wird durch Signalspeicher 244 an den positiven Eingang des Subtrahierers 248 geliefert. Signalspeicher 250 liefert den aktuellen minimalen MSE-Wert an den negativen Eingang des Subtrahierers 248. Steuerung 220 überwacht den resultierenden Differenzausgang vom Subtrahierer 248. Wenn die Differenz negativ ist, so ist der aktuelle MSE-Wert ein neuer minimaler MSE für den aktuellen Kodebuchunterrahmen, der im Signalspeicher 250 gespeichert wird, und die entsprechende Kodebuchvektorindexschätzung und der Kodebuchverstärkungsschätzindex werden in Steuerung 220 aktualisiert. Wenn die Differenz nicht negativ ist, so wird der aktuelle MSE-Wert ignoriert.
  • Vor jedem Kodebuchunterrahmen sendet der DSP-Kern 4 einen Befehl an Minimierungsprozessor 412, der die Steuerung 220 darüber informiert, daß ein neuer Kodebuchunterrahmen folgen wird. Auf den Empfang dieses Befehls hin werden der aktuelle Kodebuchvektorindex und der aktuelle Kodebuchverstärkungsindex auf Null in Steuerung 220 gesetzt. Bevor jede neue Sequenz von gewichteten synthetisierten Sprachproben an Minimierungsprozessor 412 geliefert wird, sendet der DSP-Kern 4 einen Befehl an Minimierungsprozessor 412, der die Steuerung 220 darüber informiert, daß eine neue Sequenz von gewichteten synthetisierten Sprachproben folgen wird. Auf den Empfang dieses Befehls hin inkrementiert Steuerung 220 den aktuellen Kodebuchvektorindex und den aktuellen Kodebuchverstärkungsindex um 1, und zwar entsprechend eines Kodebuchvektorindexinkrements von 1 und eines Kodebuchverstärkungsinkrements von 2dB oder 4dB, abhängig von der Rate. Während die erste Sequenz von gewichteten synthetisierten Sprachproben an Minimierungsprozessor 412 geliefert wird, wird der aktuelle Kodebuchvektorindex und der aktuelle Kodebuchverstärkungsindex gleich 1 sein, und zwar entsprechend einem Kodebuchindexvektor von Null und einer Kodebuchverstärkung von G=-8dB oder G=-4dB, abhängig von der Rate. Während jedes Kodebuchunterrahmens wird der erste MSE-Wert im Signalspeicher 250 gespeichert und die entsprechende Kodebuchvektorindexschätzung und der Kodebuchverstärkungsschätzungsindex werden in Steuerung 220 aktualisiert. Dies wird getan, um den minimalen MSE im Signalspeicher 250 für jeden Kodebuchunterrahmen zu initialisieren. Der Kodebuchvektorindex und der Kodebuchverstärkungsindex entsprechend den minimalen MSE-Schätzungen, werden durch Steuerung 220 an DSP-Kern 4 zusammen mit dem Vorzeichen der Kreuzkorrelation ExCyI entsprechend dem minimalen MSE geliefert. Sollte der DSP-Kern 4 eine Null für das Vorzeichen von ExCyI empfangen, so wird er die optimalen Kodebuchverstärkung auf G setzten. Sollte der DSP-Kern 4 eine 1 für das Vorzeichen von ExCyI empfangen, so wird er die optimale Kodebuchverstärkung auf -G setzen. Der DSP- Kern 4 nutzt die Kodebuchvektorindexschätzung und den Kodebuchverstärkungsschätzindex, die von der Steuerung 220 geliefert werden, um den optimalen Kodebuchvektor und die optimale Kodebuchverstärkung zu bestimmen. Für Vollrate und Halbrate ist die optimale Kodebuchverstärkung G -4dB, 0dB, +4dB und +8dB für jeweilige Kodebuchverstärkungindizies = 1 bis = 4. Für Viertelrate und Achtelrate ist die optimale Kodebuchverstärkung G -4dB, -2dB, 0dB bzw. +2dB für jeweilige Kodebuchverstärkungindizies = 1 bis = 4.
  • In der Kodebuchsuche erlaubt die Natur der MSE-Funktion MSE(I,G) der Gleichung 62 Berechnungseinsparungen. Die restlichen MSE-Berechnungen der aktuellen Kodebuchvektoren können abgebrochen werden, wenn festgestellt wurde, daß die restlichen MSE-Werte, die noch für den aktuellen Kodebuchvektor berechnet werden müssen, nicht in einen MSE-Wert resultieren können, der kleiner als der aktuelle minimale MSE ist, der in Signalspeicher 250 gespeichert ist. In der beispielhaften Ausführungsform werden drei Verfahren für Berechnungseinsparungen in der Kodebuchsuche im Minimierungsprozessor 412 genutzt. Die MSE- Funktionen MSE(I,G) sind in G quadratisch. Eine quadratische Gleichung wird für jeden Kodebuchvektorindex I gebildet. Alle diese quadratischen Gleichungen durchlaufen den Ursprung G=0 und MSE(I,G)=0.
  • Das erste Berechnungseinsparungsverfahren involviert das Suchen über entweder positive oder negative Kodebuchverstärkungswerte, abhängig vom Vorzeichen von ExCyI. Ein negativer Wert von ExCyI und ein negativer Verstärkungswert werden in einen negativen Wert für den Ausdruck -2GExCyI der Gleichung 62 resultieren. Ein positiver Wert von ExCyI und ein positiver Verstärkungswert werden auch in einen negativen Wert für den Ausdruck -2GExCyI der Gleichung 62 resultieren. Da der Term G²EyIyI der Gleichung 62 immer positiv ist wird ein negativer Wert des Terms - 2GExCyI dazu tendieren den MSE zu minimieren. Zwei Sätze von Kodebuchverstärkungspaaren werden an den zirkularen Puffer 259 geliefert, und zwar einer mit positiven Kodebuchverstärkungswerten und der zweite mit negativen Kodebuchverstärkungswerten. Auf diese Weise werden nur vier Paare von Verstärkungswerten gebraucht, anstatt acht Verstärkungswerte für jeden Kodebuchvektorindex I.
  • Das zweite Berechnungseinsparungsverfahren involviert das Abbrechen der Berechnung der restlichen MSE-Werte in der Kodebuchsuchprozedur für den aktuellen Kodebuchvektor, und zwar basierend auf der quadratischen Natur der MSE- Funktion. Die MSE-Funktion MSE(I,G) wird für Kodebuchverstärkungswerte berechnet, welche monton ansteigen. Wenn ein positiver MSE-Wert für den gegenwärtige Kodebuchvektor berechnet wird, so werden alle restlichen MSE- Berechnungen für den aktuellen Kodebuchvektor abgebrochen, da die entsprechenden MSE-Werte größer als der aktuelle MSE-Wert sein werden.
  • Das dritte Berechnungseinsparungsverfahren involviert das Abbrechen der Berechnung der restlichen MSE-Werte in der Kodebuchsuchprozedur des aktuellen Kodebuchindexvektors, und zwar basierend auf der quadratischen Natur der MSE- Funktion. Die MSE-Funktion MSE(I,G) wird für Kodebuchverstärkungswerte berechnet, welche monton ansteigen. Wenn ein MSE-Wert innerhalb des aktuellen Kodebuchvektors be rechnet wird, der nicht als ein neuer minimaler MSE festgestellt wird, und wenn ein MSE-Wert berechnet worden ist innerhalb des aktuellen Kodebuchvektors, welcher als ein neuer minimaler MSE festgestellt wurde, so werden alle restlichen MSE-Berechnungen innerhalb des aktuellen Kodebuchvektors abgebrochen, da die restlichen MSE-Werte nicht kleiner als der neue minimale MSE sein können. Die drei Berechnungseinsparverfahren, die oben beschrieben wurden, liefern signifikante Leistungseinsparungen im Minimierungsprozessor 412.
  • Im Block 84 werden die Kodebuchwerte quantisiert. Block 86 kontrolliert, ob alle Kodebuchunterrahmen verarbeitet wurden. Wenn nicht alle Kodebuchunterrahmen verarbeitet wurden, so kehrt der Ablauf zu Block 80 zurück. Wenn alle Kodebuchunterrahmen verarbeitet wurden, so fährt der Ablauf mit Block 88 fort. Block 88 kontrolliert, ob alle Tonhöhenunterrahmen verarbeitet wurden. Wenn nicht alle Tonhöhenunterrahmen verarbeitet wurden, so kehrt der Ablauf zu Block 70 zurück. Wenn alle Tonhöhenunterrahmen verarbeitet wurden, so fährt der Ablauf mit Block 90 fort.
  • Im Block 90 werden die kodierten Ergebnisse in einem spezifischen Format gepackt. Bei Vollrate werden 22 Datenbytes durch einen Mikroprozessor (nicht gezeigt) gelesen. 10 Bytes werden bei Halbrate, fünf bei Viertelrate und zwei bei Achtelrate gelesen. Bei Vollrate werden elf Paritätskontrollbits erzeugt, um Fehlerkorrektur und Fehlerdetektion für die 18 wichtigsten Bits der Vollratendaten vorzusehen.
  • Der Kodierer beim Sender muß den Zustand des Dekodierers am Empfänger beibehalten, um die Filterspeicher zu aktualisieren, welche wiederum durch den Kodierer in den Tonhöhen- und Kodebuchsuchprozeduren verwendet werden. In der beispielhaften Ausführungsform enthält der Kodierer eine Version des Dekodierers, die nach jedem Kodebuchunterrahmen genutzt wird.
  • Die folgenden Dekodieroperationen werden im DSP-Kern 4 als ein Teil des Kodierers ausgeführt. Mit Bezug auf Fig. 11 werden der optimale Kodebuchvektorindex und die optimale Kodebuchverstärkung , die für den aktuellen Kodebuchunterrahmen bestimmt wurden, verwendet, um einen skalierten Kodebuchvektor Cd(n) zu erzeugen. Außer bei der Achtelrate wird Kodebuch 502 mit dem optimalen Kodebuchindex versehen, der für den aktuellen Kodebuchunterrahmen bestimmt wurde, und ansprechend darauf liefert das Kodebuch 502 einen entsprechenden Erregungsvektor an einen ersten Eingang des Mulitplizierers 504. Im Fall der Achtelrate wird eine Pseudozufallssequenz für Cd(n) durch einen Pseudozufallsvektorgenerator 500 erzeugt und an einen ersten Eingang des Multiplizierers 504 geliefert. Die optimale Kodebuchverstärkung , die für den aktuellen Kodebuchunterrahmen bestimmt wurde, wird an einen zweiten Eingang des Multiplizierers 504 geliefert. Diese Sequenz wird durch dieselbe Pseudozufallserzeugungsoperation erzeugt, die vom Dekodierer am Empfänger verwendet wird.
  • Diese skalierten Kodebuchvektoren Cd(n) werden an den Tonhöhensynthesefilter 506 geliefert, welcher das Formantresiduum Pd(n) erzeugt. Die Tonhöhensynthesefilterspeicher werden mit dem endgültigen Zustand initialisiert, der aus der letzten Probe der generierten Sprache resultiert. Der Tonhöhensynthesefilter 506 nutzt die optimale Tonhöhenverzögerung und die optimale Tonhöhenverstärkung , die für den aktuellen Tonhöhenunterrahmen bestimmt wurden. Für die Achtelrate wird die optimale Tonhöhenverstärkung auf Null gesetzt. Der endgültige Zustand der Tonhöhensynthesefilterspeicher wird zur Nutzung in der Erzeugung von Sprache für den nächsten Tonhöhenunterrahmen, wie oben erwähnt, und für die Nutzung in den nachfolgenden Tonhöhensuchen und Dekodieroperationen innerhalb des Kodierers beibehalten.
  • Der gewichtete Formant-Synthesefilter 508 erzeugt den Ausgang yd(n) vom Formantresiduum Pd(n). Dieser Filter wird mit dem endgültigen Zustand initialisiert, der von der letzten Sprachprobe, die erzeugt wurde, resultiert. Die LPC-Koeffizienten, die aus den interpolierten LSP- Werten für den aktuellen Unterrahmen berechnet wurden, werden als Koeffizienten für diesen Filter verwendet. Der endgültige Zustand dieses Filters wird zur Verwendung in der Erzeugung von Sprache für den nächsten Kodebuchunterrahmen gespeichert, und zur Verwendung in den folgenden Tonhöhen- und Kodebuchsuchen.
  • Die Dekodier-Operation, die durch Blöcke 44 und 50 in Fig. 2 gezeigt ist, wird im DSP-Kern 4 ausgeführt. Der ASIC empfängt ein Paket in einem spezifizierten Format vom Mikroprozessor (nicht gezeigt) über Mikroprozessorschnittstelle 42. Der DSP-Kern 4 dekodiert die Daten in diesem Paket und verwendet sie, um Sprachproben zu synnthetisieren, welche an einen Kodec (nicht gezeigt) über PCM-Schnittstelle 2 geliefert werden. In DSP-Kern 4 wird das empfangene Paket entpackt, um die Daten zu erhalten, die zum Synthetisieren der Sprachproben gebraucht werden. Die Daten enthalten die Kodierrate, LSP- Frequenzen und die Tonhöhen- und Kodebuchparameter für die entsprechenden Unterrahmen für diese Rate. Die Synthese der Sprachproben aus den empfangenen Paketdaten wird in DSP-Kern 4 ausgeführt und ist in Fig. 12 gezeigt.
  • Mit Bezug auf Fig. 12 werden der optimale Kodebuchvektorindex und die optimale Kodebuchverstärkung entsprechend dem aktuellen Kodebuchunterrahmen, durch den Dekodierer verwendet, um die skalierten Kodebuchvektoren Cd(n) zu generieren. Außer für die Achtelrate wird das Kodebuch 522 mit dem optimalen Kodebuchindex entsprechend dem aktuellen Kodebuchunterrahmen versehen, und ansprechend darauf liefert das Kodebuch 522 den entsprechenden Erregungsvektor an einen ersten Eingang des Mulitplizierers 524. Im Fall der Achtelrate wird eine Pseudozufallssequenz für Cd(n) durch Pseudozufallsvektorgenerator 520 erzeugt und an einen ersten Eingang des Multiplizierers 524 geliefert. Diese Sequenz wird durch dieselbe Pseudozufallserzeugungsoperation erzeugt, die vom Dekodierer am Empfänger verwendet wird. Der optimale Kodebuchverstärkungswert entsprechend dem aktuellen Kodebuchunterrahmen wird an einen zweiten Eingang des Mulitplizierers 524 geliefert. Die skalierten Kodebuchvektoren Cd(n) werden an den Tonhöhensynthesefilter 526 geliefert, welcher das Formantresiduum Pd(n) erzeugt. Die Tonhöhensynthesefilterspeicher werden mit dem endgültigen Zustand initialisiert, der sich aus der letzten erzeugten Sprachprobe ergibt. Der Tonhöhensynthesefilter 526 nutzt die optimale Tonhöhenverzögerung und die optimale Tonhöhenverstärkung , entsprechend dem aktuellen Tonhöhenunterrahmen. Für die Achtelrate wird die optimale Tonhöhenverstärkung auf Null gesetzt. Der endgültige Zustand des Tonhöhensynthesefilters wird zur Nutzung in der Erzeugung von Sprache für den nächsten Tonhöhenunterrahmen, wie oben erwähnt, gespeichert.
  • Der gewichtete Formant-Synthesefilter 528 erzeugt den Ausgang Yd(n) aus dem Formantresiduum Pd(n). Dieser Filter wird mit dem engültigen Zustand initialisiert, der aus der letzten erzeugten Sprachprobe resuliert. Die aus den interpolierten LSP-Werten für den aktuellen Unterrahmen berechneten LPC-Koeffizienten werden als Koeffizienten für diesen Filter verwendet. Der endgültige Zustand des Filters wird zur Verwendung in der Erzeugung von Sprache für den nächsten Kodebuchunterrahmen gespeichert.
  • Die dekodierte Sprache Yd(n) wird an den Nachfilter 530 geliefert, welcher in der beispielhaften Ausführungsform ein Langzeitnachfilter ist, und zwar basierend auf den LPC-Koeffizienten für den aktuellen Unterrahmen, der dekodiert wird. Der Nachfiter 530 filtert die rekonstruierten Sprachproben Yd(n) und liefert die gefilterte Sprache an die Verstärkersteuerung 532. Die Verstärkersteuerung 532 steuert den Pegel der Ausgangssprache sd(n) und hat die Fähigkeit, eine automatische Verstärkersteuerung (AGC = automatic gain control) auszuführen.
  • Die vorangegangene Beschreibung der bevorzugten Ausführungsformen wurde bereitgestellt, um einen Fachmann in die Lage zu versetzen, die vorliegende Erfindung zu nutzen. Verschiedene Modifikationen dieser Ausführungsformen sind dem Fachmann leicht ersichtlich. Dabei ist die vorliegende Erfindung nicht auf die hier gezeigte Ausführungsform beschränkt, sondern sie ist gemäß dem Rahmen bzw. Umfang wie er in den angefügten Ansprüchen definiert ist.

Claims (4)

1. Vorrichtung zur Durchführung eines Normalisierungsverfahrens für einen Block von Werten, wobei die Vorrichtung eine Normalisierungsanordnung aufweist, gekennzeichnet dadurch, daß die Normalisierungsanordnung folgendes aufweist:
Größenordnungs- bzw. Größenbestimmungsmittel (152, 156) zum Empfang, und zwar in einem wiederholten Verfahren, eines jeden Werts des Blocks von Werten und zur Bestimmung einer Größe bzw. Größenordnung eines jeden empfangenen Werts des Blocks von Werten und zum Vorsehen eines Größenordnungs- bzw. Größenwerts, der jeden der empfangenen Werte entspricht;
ODER-Schaltungsmittel (160) zum Empfang eines jeden Größenwerts, die einen partiellen Vereinigungswert empfangen und einen nächsten partiellen Vereinigungswert vorsehen;
Registermittel (162) zum Empfang des nächsten partiellen Vereinigungswerts und zum Vorsehen des erwähnten partiellen Vereinigungswerts, wobei der Wert, der in den Registermitteln (162) am Ende des Lieferns der Größenwerte verbleibt, und die erwähnten nächsten partiellen Vereinigungswerte Anzeigen für einen Normalisierungsfaktor für alle Werte des Blocks sind,
Mittel (164, 166) zum Empfang des erwähnten Werts, der in den Registermitteln (162) verbleibt, und zwar zur Bestimmung des Normalisierungsfaktors,
Mittel (150) zur Bewirkung der Normalisierung eines jeden Werts des Blocks von Werten, und zwar wie durch den festgestellten bzw. bestimmten Normalisierungsfaktor spezifiziert.
2. Vorrichtung nach Anspruch 1, wobei die Größenbestimmungsmittel (152, 146) folgendes aufweisen:
Invertermittel (152) zum Empfang, und zwar im erwähnten wiederholten Verfahren, eines jeden Werts des Blocks von Werten und zur selektiven Bit- Invertierung der Bits von einem jeden Wert, wenn dieser jede Wert negativ ist;
Summiermittel (146) für die Addition eines einzelnen Bits zu dem selektiv Bit-invertierten Wert, wenn der Wert negativ ist.
3. Vorrichtung nach Anspruch 1, die weiter folgendes aufweist:
Schieberegistermittel (136) zur Bestimmung eines Verschiebungsnormalisierungswerts gemäß dem erwähnten Normalisierungsfaktor und zum Liefern des Verschiebungsnormalisierungswerts; und
Barrel-Schiftermittel (140, 150) zum Empfang des Verschiebungsnormalisierungswerts, um eine Kopie des Blocks von Werten gemäß dem Verschiebungsnormalisierungswert zu verschieben.
4. Vorrichtung gemäß Anspruch 3, zur Normalisierung eines Blocks von Werten, die repräsentativ für jeweilige Datenbits sind, wobei:
die Invertermittel (152) den Absolutwert jedes Werts des Blocks von Werten bestimmen und entsprechende, dafür repräsentativer Größensignale ausgeben;
die ODER-Schaltungsmittel (160) die Größensignale aufeinander folgend empfangen und entsprechende, darauf ansprechende ODER-Schaltungs- Ausgangssignale erzeugen:
die Mittel (164, 166) zum Empfang des verbleibenden Werts Akkumulatormittel (164, 166) aufweisen, und zwar zur Erzeugung eines Akkumulatorausgangssignals infolge der Eingabe von allen Werten des Blocks von Werten in die ODER-Schaltungsmittel (160), wobei die erwähnte Gesamtheit der Werte re präsentativ für die Datenbits im Block ist, und wobei das Akkumulatorausgangssignal einen Skalierungsfaktor repräsentiert; und
die Schieberegistermittel (136) und die Barrel- Schiftermittel (140, 150) zur Modifizierung der Werte des Blocks von Werten gemäß dem Skalierungsfaktor dienen.
DE69509381T 1994-02-16 1995-02-13 Blocknormalisationsprozessor Expired - Lifetime DE69509381T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/197,417 US5784532A (en) 1994-02-16 1994-02-16 Application specific integrated circuit (ASIC) for performing rapid speech compression in a mobile telephone system

Publications (2)

Publication Number Publication Date
DE69509381D1 DE69509381D1 (de) 1999-06-02
DE69509381T2 true DE69509381T2 (de) 1999-11-25

Family

ID=22729345

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69505469T Expired - Lifetime DE69505469T2 (de) 1994-02-16 1995-02-13 Vocoder asic
DE69509381T Expired - Lifetime DE69509381T2 (de) 1994-02-16 1995-02-13 Blocknormalisationsprozessor

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69505469T Expired - Lifetime DE69505469T2 (de) 1994-02-16 1995-02-13 Vocoder asic

Country Status (23)

Country Link
US (3) US5784532A (de)
EP (2) EP0695454B1 (de)
JP (2) JP3432826B2 (de)
KR (1) KR100334202B1 (de)
CN (2) CN100397484C (de)
AT (2) ATE172570T1 (de)
AU (1) AU697822B2 (de)
BR (1) BR9505650A (de)
CA (1) CA2158660C (de)
DE (2) DE69505469T2 (de)
DK (2) DK0695454T3 (de)
ES (2) ES2125602T3 (de)
FI (2) FI120117B (de)
HK (1) HK1009303A1 (de)
IL (1) IL112650A (de)
MX (1) MX9504358A (de)
MY (1) MY112434A (de)
RU (1) RU2183034C2 (de)
SG (2) SG87819A1 (de)
SI (1) SI0758123T1 (de)
TW (1) TW326601B (de)
WO (1) WO1995022819A1 (de)
ZA (1) ZA95798B (de)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336106B1 (en) * 1994-02-15 2002-01-01 R.R. Donnelley & Sons Company System and method for partitioning a real-valued attribute exhibiting windowed data characteristics
FR2729246A1 (fr) * 1995-01-06 1996-07-12 Matra Communication Procede de codage de parole a analyse par synthese
FI955266A (fi) * 1995-11-02 1997-05-03 Nokia Telecommunications Oy Menetelmä ja laitteisto viestien välittämiseksi tietoliikennejärjestelmässä
EP0858069B1 (de) * 1996-08-02 2006-11-29 Matsushita Electric Industrial Co., Ltd. Sprachkodierer, sprachdekodierer und aufzeichnungsmedium dafür
KR100189636B1 (ko) * 1996-10-30 1999-06-01 서평원 씨디엠에이 이동 통신 단말기의 양방향 녹음방법
US6009395A (en) * 1997-01-02 1999-12-28 Texas Instruments Incorporated Synthesizer and method using scaled excitation signal
GB2323188B (en) * 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
US6167133A (en) * 1997-04-02 2000-12-26 At&T Corporation Echo detection, tracking, cancellation and noise fill in real time in a communication system
JP3263347B2 (ja) * 1997-09-20 2002-03-04 松下電送システム株式会社 音声符号化装置及び音声符号化におけるピッチ予測方法
US6104994A (en) * 1998-01-13 2000-08-15 Conexant Systems, Inc. Method for speech coding under background noise conditions
KR100572945B1 (ko) * 1998-02-04 2006-04-24 텍사스 인스트루먼츠 인코포레이티드 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기
US6141638A (en) * 1998-05-28 2000-10-31 Motorola, Inc. Method and apparatus for coding an information signal
US6112170A (en) * 1998-06-26 2000-08-29 Lsi Logic Corporation Method for decompressing linear PCM and AC3 encoded audio gain value
US7117146B2 (en) * 1998-08-24 2006-10-03 Mindspeed Technologies, Inc. System for improved use of pitch enhancement with subcodebooks
GB2342829B (en) * 1998-10-13 2003-03-26 Nokia Mobile Phones Ltd Postfilter
US6351800B1 (en) * 1998-11-29 2002-02-26 Lucent Technologies, Inc. System and method for assisting a microprocessor
US6411926B1 (en) * 1999-02-08 2002-06-25 Qualcomm Incorporated Distributed voice recognition system
US6314393B1 (en) * 1999-03-16 2001-11-06 Hughes Electronics Corporation Parallel/pipeline VLSI architecture for a low-delay CELP coder/decoder
US6260017B1 (en) 1999-05-07 2001-07-10 Qualcomm Inc. Multipulse interpolative coding of transition speech frames
JP3594514B2 (ja) * 1999-07-12 2004-12-02 株式会社ソニー・コンピュータエンタテインメント エンコーダ、デコーダ、音声データ処理装置、音声データ処理システム、音声データ圧縮方法、音声データ伸張方法、音声データ処理方法及び記録媒体
US6330532B1 (en) 1999-07-19 2001-12-11 Qualcomm Incorporated Method and apparatus for maintaining a target bit rate in a speech coder
US6324503B1 (en) 1999-07-19 2001-11-27 Qualcomm Incorporated Method and apparatus for providing feedback from decoder to encoder to improve performance in a predictive speech coder under frame erasure conditions
US6397175B1 (en) 1999-07-19 2002-05-28 Qualcomm Incorporated Method and apparatus for subsampling phase spectrum information
US6393394B1 (en) 1999-07-19 2002-05-21 Qualcomm Incorporated Method and apparatus for interleaving line spectral information quantization methods in a speech coder
US6452517B1 (en) * 1999-08-03 2002-09-17 Dsp Group Ltd. DSP for two clock cycle codebook search
US6426982B1 (en) * 1999-09-17 2002-07-30 Cadonca Design Systems, Inc. Low complexity multiple bits matched filter
US6438518B1 (en) 1999-10-28 2002-08-20 Qualcomm Incorporated Method and apparatus for using coding scheme selection patterns in a predictive speech coder to reduce sensitivity to frame error conditions
WO2001077635A1 (en) * 2000-04-06 2001-10-18 Telefonaktiebolaget Lm Ericsson (Publ) Estimating the pitch of a speech signal using a binary signal
AU2001258298A1 (en) * 2000-04-06 2001-10-23 Telefonaktiebolaget Lm Ericsson (Publ) Pitch estimation in speech signal
WO2001078061A1 (en) * 2000-04-06 2001-10-18 Telefonaktiebolaget Lm Ericsson (Publ) Pitch estimation in a speech signal
US6584438B1 (en) 2000-04-24 2003-06-24 Qualcomm Incorporated Frame erasure compensation method in a variable rate speech coder
EP1279167B1 (de) * 2000-04-24 2007-05-30 QUALCOMM Incorporated Verfahren und vorrichtung zur prädiktiven quantisierung von stimmhaften sprachsignalen
US6532066B1 (en) 2000-08-05 2003-03-11 Ford Global Technologies, Inc. Vision system for identification of defects in wet polymeric coatings
US6477502B1 (en) 2000-08-22 2002-11-05 Qualcomm Incorporated Method and apparatus for using non-symmetric speech coders to produce non-symmetric links in a wireless communication system
US7133823B2 (en) * 2000-09-15 2006-11-07 Mindspeed Technologies, Inc. System for an adaptive excitation pattern for speech coding
US6804203B1 (en) * 2000-09-15 2004-10-12 Mindspeed Technologies, Inc. Double talk detector for echo cancellation in a speech communication system
US7003450B2 (en) * 2000-10-20 2006-02-21 Pts Corporation Methods and apparatus for efficient vocoder implementations
US7472059B2 (en) * 2000-12-08 2008-12-30 Qualcomm Incorporated Method and apparatus for robust speech classification
US6631139B2 (en) 2001-01-31 2003-10-07 Qualcomm Incorporated Method and apparatus for interoperability between voice transmission systems during speech inactivity
US7013269B1 (en) * 2001-02-13 2006-03-14 Hughes Electronics Corporation Voicing measure for a speech CODEC system
US6754624B2 (en) 2001-02-13 2004-06-22 Qualcomm, Inc. Codebook re-ordering to reduce undesired packet generation
US6996523B1 (en) * 2001-02-13 2006-02-07 Hughes Electronics Corporation Prototype waveform magnitude quantization for a frequency domain interpolative speech codec system
US20030088407A1 (en) * 2001-04-02 2003-05-08 Yi Hu Codec
JP3859462B2 (ja) 2001-05-18 2006-12-20 株式会社東芝 予測パラメータ分析装置および予測パラメータ分析方法
US20030005261A1 (en) * 2001-06-29 2003-01-02 Gad Sheaffer Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US20030195006A1 (en) * 2001-10-16 2003-10-16 Choong Philip T. Smart vocoder
US7020226B1 (en) * 2002-04-04 2006-03-28 Nortel Networks Limited I/Q distortion compensation for the reception of OFDM signals
CN1312463C (zh) * 2002-04-22 2007-04-25 诺基亚有限公司 一种产生lsf矢量的方法和装置
US7698132B2 (en) * 2002-12-17 2010-04-13 Qualcomm Incorporated Sub-sampled excitation waveform codebooks
JP2004362215A (ja) * 2003-06-04 2004-12-24 Toshiba Corp プロセッサ及び半導体集積回路
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
TWI241557B (en) * 2003-07-21 2005-10-11 Ali Corp Method for estimating a pitch estimation of the speech signals
US6983241B2 (en) * 2003-10-30 2006-01-03 Motorola, Inc. Method and apparatus for performing harmonic noise weighting in digital speech coders
BRPI0514801B1 (pt) 2004-08-30 2019-06-18 Qualcomm Incorporated Buffer de-jitter adaptativo para voz sobre ip
US8085678B2 (en) 2004-10-13 2011-12-27 Qualcomm Incorporated Media (voice) playback (de-jitter) buffer adjustments based on air interface
US8209366B2 (en) * 2005-02-28 2012-06-26 Hitachi Global Storage Technologies Netherlands B.V. Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations
WO2007120316A2 (en) * 2005-12-05 2007-10-25 Qualcomm Incorporated Systems, methods, and apparatus for detection of tonal components
US8090573B2 (en) * 2006-01-20 2012-01-03 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with open loop re-decision
US8346544B2 (en) * 2006-01-20 2013-01-01 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with closed loop re-decision
US8032369B2 (en) * 2006-01-20 2011-10-04 Qualcomm Incorporated Arbitrary average data rates for variable rate coders
US8920343B2 (en) 2006-03-23 2014-12-30 Michael Edward Sabatino Apparatus for acquiring and processing of physiological auditory signals
US7831420B2 (en) * 2006-04-04 2010-11-09 Qualcomm Incorporated Voice modifier for speech processing systems
US7685493B2 (en) * 2006-09-29 2010-03-23 Agere Systems Inc. Buffer compression in automatic retransmission request (ARQ) systems
US20090180456A1 (en) * 2008-01-15 2009-07-16 Khoi Ly Method and system for adaptive quantization steps for hs-scch decoding using average cqi
US20100082722A1 (en) * 2008-09-26 2010-04-01 Sinnokrot Mohanned O Methods and Apparatuses for Detection and Estimation with Fast Fourier Transform (FFT) in Orthogonal Frequency Division Multiplexing (OFDM) Communication Systems
JP5430990B2 (ja) * 2009-03-25 2014-03-05 株式会社東芝 信号処理方法、装置及びプログラム
JP5316896B2 (ja) * 2010-03-17 2013-10-16 ソニー株式会社 符号化装置および符号化方法、復号装置および復号方法、並びにプログラム
TR201904735T4 (tr) 2010-04-13 2019-04-22 Fraunhofer Ges Forschung Bi̇r ses si̇nyali̇ni̇n boşluksuz yeni̇den oynatilmasina yöneli̇k yöntem ve kodlayici ve dekoder
TWI479160B (zh) * 2010-12-20 2015-04-01 Hon Hai Prec Ind Co Ltd 測試裝置及方法
WO2012110447A1 (en) 2011-02-14 2012-08-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for error concealment in low-delay unified speech and audio coding (usac)
WO2012110415A1 (en) 2011-02-14 2012-08-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for processing a decoded audio signal in a spectral domain
AR085224A1 (es) 2011-02-14 2013-09-18 Fraunhofer Ges Forschung Codec de audio utilizando sintesis de ruido durante fases inactivas
MX2013009306A (es) 2011-02-14 2013-09-26 Fraunhofer Ges Forschung Aparato y metodo para codificar y decodificar una señal de audio utilizando una porcion alineada anticipada.
MX2013009304A (es) 2011-02-14 2013-10-03 Fraunhofer Ges Forschung Aparato y metodo para codificar una porcion de una señal de audio utilizando deteccion de un transiente y resultado de calidad.
CN103477387B (zh) 2011-02-14 2015-11-25 弗兰霍菲尔运输应用研究公司 使用频谱域噪声整形的基于线性预测的编码方案
CA2799343C (en) 2011-02-14 2016-06-21 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal representation using lapped transform
MY159444A (en) 2011-02-14 2017-01-13 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E V Encoding and decoding of pulse positions of tracks of an audio signal
CN103460284B (zh) 2011-02-14 2016-05-18 弗劳恩霍夫应用研究促进协会 音频信号音轨脉冲位置的编码与译码
US8990074B2 (en) * 2011-05-24 2015-03-24 Qualcomm Incorporated Noise-robust speech coding mode classification
JP2014035431A (ja) * 2012-08-08 2014-02-24 Renesas Mobile Corp ボコーダ処理方法、半導体装置、及び電子装置
TWM487509U (zh) * 2013-06-19 2014-10-01 杜比實驗室特許公司 音訊處理設備及電子裝置
CN109920440B (zh) 2013-09-12 2024-01-09 杜比实验室特许公司 用于各种回放环境的动态范围控制
EP2980796A1 (de) * 2014-07-28 2016-02-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren und Vorrichtung zur Verarbeitung eines Audiosignals, Audiodecodierer und Audiocodierer
CN109413685B (zh) * 2017-08-18 2022-02-15 中国电信股份有限公司 语音质量确定方法、装置和计算机可读存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US448493A (en) 1891-03-17 Hemp-brake
SU518781A1 (ru) * 1974-11-25 1976-06-25 Таганрогский радиотехнический институт им.В.Д.Калмыкова Вычислительное устройство цифровой интегрирующей структуры
CN1003484B (zh) * 1985-05-20 1989-03-01 菲利浦光灯制造公司 产生定幅的角度调制载波信号的装置
US4789956A (en) * 1985-10-16 1988-12-06 Harris Corp. Maximum negative number detector
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
US4808937A (en) * 1986-07-15 1989-02-28 Hayes Microcomputer Products, Inc. Phase-locked loop for a modem
ES2037101T3 (es) * 1987-03-05 1993-06-16 International Business Machines Corporation Procedimiento de deteccion de tono y codificador de voz que utiliza dicho procedimiento.
FR2615025B1 (fr) * 1987-05-04 1989-12-22 Thomson Csf Dispositif de transcodage entre reseaux de transmission a debits differents et son utilisation dans un systeme de transmission multidebits
DE3732047A1 (de) * 1987-09-23 1989-04-06 Siemens Ag Verfahren zur umcodierung von kanalvocoder-parameter in lpc-vocoder-parameter
EP0383911B1 (de) * 1988-06-17 1995-02-15 Hitachi, Ltd. System zur bildung von wissensdaten
JPH0284807A (ja) * 1988-09-20 1990-03-26 Hitachi Ltd ディジタル信号処理装置
WO1990004316A1 (en) * 1988-10-03 1990-04-19 Alcatel N.V. Communication switching element
US5768613A (en) * 1990-07-06 1998-06-16 Advanced Micro Devices, Inc. Computing apparatus configured for partitioned processing
DE4031603A1 (de) * 1990-10-05 1992-04-09 Paul Merkle Ergebniszahl-verschiebeschaltung
US5173941A (en) * 1991-05-31 1992-12-22 Motorola, Inc. Reduced codebook search arrangement for CELP vocoders
CA2568984C (en) * 1991-06-11 2007-07-10 Qualcomm Incorporated Variable rate vocoder
KR100263599B1 (ko) 1991-09-02 2000-08-01 요트.게.아. 롤페즈 인코딩 시스템
TW224191B (de) * 1992-01-28 1994-05-21 Qualcomm Inc
US5778024A (en) * 1996-02-01 1998-07-07 Qualcomm Incorporated Dual-mode communications processor
US5742781A (en) * 1996-08-09 1998-04-21 Hitachi America, Ltd. Decoded instruction buffer apparatus and method for reducing power consumption in a digital signal processor

Also Published As

Publication number Publication date
SG52441A1 (en) 1998-09-28
CN100397484C (zh) 2008-06-25
AU697822B2 (en) 1998-10-15
FI954920A0 (fi) 1995-10-16
DE69505469D1 (en) 1998-11-26
EP0695454B1 (de) 1998-10-21
HK1009303A1 (en) 1999-05-28
IL112650A0 (en) 1995-05-26
JP3432826B2 (ja) 2003-08-04
US5926786A (en) 1999-07-20
MX9504358A (es) 1997-05-31
RU2183034C2 (ru) 2002-05-27
DK0695454T3 (da) 1999-07-05
EP0758123A3 (de) 1997-03-12
KR100334202B1 (ko) 2002-10-11
JP4194851B2 (ja) 2008-12-10
CN1168072C (zh) 2004-09-22
TW326601B (en) 1998-02-11
US5784532A (en) 1998-07-21
ZA95798B (en) 1996-01-22
SG87819A1 (en) 2002-04-16
CN1123061A (zh) 1996-05-22
EP0758123B1 (de) 1999-04-28
CA2158660C (en) 2006-01-24
EP0758123A2 (de) 1997-02-12
DK0758123T3 (da) 1999-11-08
DE69505469T2 (de) 1999-06-10
ES2125602T3 (es) 1999-03-01
WO1995022819A1 (en) 1995-08-24
ATE172570T1 (de) 1998-11-15
ATE179532T1 (de) 1999-05-15
KR960702147A (ko) 1996-03-28
FI954920A (fi) 1995-12-15
FI120117B (fi) 2009-06-30
CN1512486A (zh) 2004-07-14
JPH08509306A (ja) 1996-10-01
EP0695454A1 (de) 1996-02-07
FI20070887L (fi) 2007-11-21
SI0758123T1 (en) 1999-10-31
DE69509381D1 (de) 1999-06-02
US5727123A (en) 1998-03-10
MY112434A (en) 2001-06-30
AU1846595A (en) 1995-09-04
JP2003216198A (ja) 2003-07-30
BR9505650A (pt) 1996-03-05
IL112650A (en) 1998-12-06
CA2158660A1 (en) 1995-08-24
ES2130733T3 (es) 1999-07-01

Similar Documents

Publication Publication Date Title
DE69509381T2 (de) Blocknormalisationsprozessor
DE69531642T2 (de) Synthese eines Anregungssignals bei Ausfall von Datenrahmen oder Verlust von Datenpaketen
DE69032551T2 (de) Einrichtung zur Sprachkodierung
Le Roux et al. A fixed point computation of partial correlation coefficients
DE3853916T2 (de) Digitaler-sprachkodierer mit verbesserter vertoranregungsquelle.
DE69230329T2 (de) Verfahren und Vorrichtung zur Sprachkodierung und Sprachdekodierung
DE3856211T2 (de) Verfahren zur adaptiven Filterung von Sprach- und Audiosignalen
DE69712537T2 (de) Verfahren zur Erzeugung eines Vektorquantisierungs-Codebuchs
DE69328410T2 (de) Auf interpolation basierende, zeitveränderliche spektralanalyse für sprachkodierung
DE69528685T2 (de) Vorrichtung zur Vektorquantifizierung
DE69523498T2 (de) Verminderung der Rechenkomplexität bei Ausfall von Datenrahmen oder Verlust von Datenpaketen
DE69610915T2 (de) Verfahren zur quantisierung des verstärkungsfaktors für die linear-prädiktive sprachkodierung mittels analyse-durch-synthese
US7333036B2 (en) Computing circuits and method for running an MPEG-2 AAC or MPEG-4 AAC audio decoding algorithm on programmable processors
US8200730B2 (en) Computing circuits and method for running an MPEG-2 AAC or MPEG-4 AAC audio decoding algorithm on programmable processors
DE69026843T2 (de) Linearer Prädiktivkodierer mit Code-Anregung für Sprach- oder Audiosignale mit niedriger Verzögerung
DE60214121T2 (de) Quantisierung der Anregung bei einem &#34;noise-feedback&#34; Kodierungsverfahren
Chen et al. A fixed-point 16 kb/s LD-CELP algorithm
Lee et al. Cost-effective implementation of ITU-T G. 723.1 on a DSP chip
DE69112540T2 (de) Verfahren zur Kodierung eines abgetasteten Sprachsignalvektors.
DE60210174T2 (de) Verfahren zur Signalkodierung mittels einer Vektorquantisierung
AU725711B2 (en) Block normalisation processor
Madre et al. Linear predictive speech coding using Fermat number transform
Lee Implementation of linear predictive speech coding in fixed-point arithmetic
Hu et al. Structural Design for a 1.6 Kbps GELP Speech Coder

Legal Events

Date Code Title Description
8363 Opposition against the patent