-
Technisches
Sachgebiet
-
Diese
Erfindung betrifft einen Sprachdecoder, der zur Verwendung für die digitale
Sprachkommunikation geeignet ist.
-
Stand der
Technik
-
In
einem Sprachcodierungs-Algorithmus mit einer niedrigen Bitfrequenz
wird weitgehend ein Codieralgorithmus verwendet, der auf einer CELP
(Code Excited Linear Prediction Coding) beruht, wie z. B. LD-GELP
(ITU-T/G. 728), VSELP und SPI-CELP (RCR/STD27-C). Obwohl keine Beschränkung auf einen
derartigen CELP-Reihen-Sprachcodierungs-Algorithmus
besteht, ist es wesentlich für
die korrekte Ausführung
einer Codierung in einem Codieralgorithmus, der interne Zustände in einem
Codierer und einem Decoder kennt, dass der interne Zustand des Codierers
sich in exakter Übereinstimmung
mit dem des Decoders befindet. Hierbei entspricht, führt man
sich beispielsweise einen IIR-Filter von 6 vor Augen,
der Ausdruck "interner
Zustand" den y(t – 1), ...,
y(t – 1)
der Ausgangssignalsequenzen bis zum letzten Zeitpunkt. In anderen
Worten, wenn aktuell eine Decodierung unter Verwendung eines in
der Vergangenheit decodierten Resultats durchgeführt wird, wie in dem Sprachcodierungs-Algorithmus, so entspricht
das in der Vergangenheit decodierte Resultat dem obengenannten "internen Zustand". Ein adaptives Code-Buch
ist sein charakteristisches Beispiel.
-
Dennoch
führt der
Decoder manchmal aufgrund von Codefehlern, die auf einem Übertragungskanal
auftreten können,
eine Decodierung mittels eines schadhaften Codes durch. In diesem
Fall tritt der Sachverhalt ein, dass der interne Zustand des Codierers
nicht mit dem des Decoders übereinstimmt. Wenn
eine derartige Nicht-Übereinstimmung
der internen Zustände
auftritt, kann sogar unter Verwendung eines korrekten Codes eine
Decodierung nicht in einer korrekten Weise ausgeführt werden,
und die Verzerrung der decodierten Sprache dauert sogar nach der
Korrektur der Codefehler noch für
eine gewisse Zeit lang an. Auf diese Weise ergibt sich als Folge
eine erhebliche Verminderung der Qualität.
-
Ein
Sprachdecoder ist bekannt als eine Einrichtung, die zur Reduzierung
der Qualitätsverschlechterung
imstande ist, was in einem PDC (Personal Digital Cellular telecommunication
system) Vollfrequenz-Algorithmus zum Einsatz kommt, wie er 7 gezeigt
wird. In 7 bezeichnet Bezugsziffer 1 eine
Eingangscodesequenz-Verarbeitungseinheit, die
einen Eingangscodesequenz-Bearbeitungsabschnitt
(11) und einen Eingangscodesequenz-Speicherabschnitt (12) umfasst.
Bezugsziffer 2 bezeichnet eine Decodier-Verarbeitungseinheit,
die einen Decodier-Bearbeitungsabschnitt (21), einen Bearbeitungsabschnitt
für den
internen Zustand (22), und einen Speicherabschnitt für den internen
Zustand (23) beinhaltet. Bezugsziffer 3 kennzeichnet
eine Fehlererfassungseinheit zum Erfassen der Fehler einer empfangenen
Eingangscodesequenz In(i) (wobei i für die Zeit steht und einen
Wert von i = 0, 1, 2, ... annimmt) unter Verwendung eines CRC (Cyclic
Redundancy Code).
-
Die
Fehlererfassungseinheit (3) liefert ein Fehlererkennungssignal
E an den Eingangscodesequenz- Bearbeitungsabschnitt
(11) und den Decodier-Bearbeitungsabschnitt
(21), sobald sie Fehler in der Eingangs-Codesequenz In(i)
erfasst.
-
Der
Eingangscodesequenz-Bearbeitungsabschnitt (11) bereinigt
die Eingangscodesequenz In(i) um redundante Bits und liefert dieselbe
in der Form von einer Codesequenz C(i) zum Decodier-Bearbeitungsabschnitt
(21), solange keine Fehler in der Eingangscodesequenz In(i)
erfasst werden und kein Fehlererkennungssignal E von der Fehlererfassungseinheit
(3) ausgegeben wird. Diese Codesequenz C(i) wird ebenfalls
an den Codesequenz-Speicherabschnitt
(12) ausgegeben und darin gespeichert.
-
Basierend
auf der internen Zustandsinformation So(i), die vom Bearbeitungsabschnitt
für den
internen Zustand (22) geliefert wird, decodiert der Decodier-Bearbeitungsabschnitt
(21) die Codesequenz C(i), gibt eine decodierte Sprache
SP(i) aus, und gibt zu dem Zeitpunkt, an dem der Decodierungsprozess abgeschlossen
ist, die interne Zustandsinformation Si(i) an den Bearbeitungsabschnitt
für den
internen Zustand (22) aus. Der Bearbeitungsabschnitt für den internen
Zustand (22) liest die im Speicherabschnitt für den internen
Zustand (23) gespeicherte interne Zustandsinformation So(i)
aus, gibt dieselbe an den Decodier-Bearbeitungsabschnitt (21)
aus, erstellt die interne Zustandsinformation So(i + 1) nach der
Komplettierung der Routine im Decodier-Bearbeitungsabschnitt (21),
basierend auf der internen Zustandsinformation Si(i), die vom Decodier-Bearbeitungsabschnitt
(21) geliefert wird, und speichert die interne Zustandsinformation
Si(i + 1) im Speicherabschnitt für
den internen Zustand (23). Durch diesen Vorgang werden
die im Speicherabschnitt für
den internen Zustand (23) gespeicherten Inhalte ausgehend
von So(i) zu So(i + 1) aktualisiert, sobald der Decodierungsprozess
zum Zeitpunkt i abgeschlossen ist.
-
Es
ist anzunehmen, dass zu einem bestimmten Zeitpunkt t Fehler in der
Eingangscodesequenz In(i) gefunden werden und das Erkennungssignal
E von der Fehlererfassungseinheit (3) ausgegeben wird.
Der Eingangscodesequenz-Bearbeitungsabschnitt (11) ersetzt
dann einen Code A durch einen Code B, wobei der Code A einem LSP
(Line Spectrum Pair, d. h. Parameter einer Synthese oder inverser
Filter, der eine Spektralumhüllende
der Sprache darstellt) und einer LAG (d. h. Verzögerungsmenge des adaptiven
Code-Buchs, die den Schwingungszyklus der Sprache darstellt) entspricht,
welche in der bereits um redundante Bits bereinigten Codesequenz
C(t) enthalten sind, und wobei der Code B der Codesequenz C(t – 1) entspricht,
die im Eingangscodesequenz-Speicherabschnitt (12) gespeichert
ist. Der Eingangscodesequenz-Bearbeitungsabschnitt (11)
gibt nach der Ersetzung eine Codesequenz C'(t) aus. Die Inhalte des Eingangscodesequenz-Speicherabschnitts
(12) bleiben zu diesem Zeitpunkt die gleichen wie bei Codesequenz
C(t – 1)
und werden nicht aktualisiert. Der Decodier-Bearbeitungsabschnitt
(21) führt
den obengenannten Decodierungsprozess durch und aktualisiert den
internen Zustand unter Heranziehung der Codesequenz C'(t), die von dem
Eingangscodesequenz-Bearbeitungsabschnitt (11)
geliefert wird.
-
Die
LSP und die LAG als Gegenstände
der Ersetzung haben überschlägig eine
hohe zeitliche Korrelation und werden im zeitlichen Verlauf nicht
abrupt verändert.
Dementsprechend liegen die Werte der aneinander anschließenden LSP
und LAG, die für
jede vorbestimmte Sektion berechnet werden, nahe beieinander. Folglich
wird die Verzerrung der decodierten Sprache SP(t) eher reduziert,
wenn der Decodierungsprozess auf der Basis des unmittelbar vor der
Erfassung von Fehlern korrekt empfangenen Codes durchgeführt wird,
als wenn der Decodierungsprozess auf dem fehlerbehafteten Code durchgeführt wird.
Als eine Folge kann die Qualitätsverschlechterung
zu dem Zeitpunkt, an dem die Fehler auftreten, reduziert werden.
-
Dennoch
ist es selten, wenn die LSP und LAG auf konventionelle Art ersetzt
werden, dass die Codesequenz C'(t)
nach der Ersetzung mit der Codesequenz C(t) übereinstimmt, die per Annahme
keine Fehler enthält.
Dementsprechend erschwert ein Auftreten von Codefehlern sogar noch
die Übereinstimmung
der internen Zustandsinformation So(i + 1), die im Speicherabschnitt
für den
internen Zustand (23) gespeichert ist, mit dem internen
Zustand des Codierers. So zeigt sich deshalb bei der decodierten
Sprache sogar für
den Fall, dass z. B. vom Zeitpunkt t + s an keine Fehler mehr erfasst
werden und eine korrekte Codesequenz C(t + s) erhalten werden kann,
aufgrund der Nicht-Übereinstimmung
der internen Zustände
die Tendenz zu Verzerrungen. Besonders weil die Korrelation zwischen
den LSP und LAG vermindert wird, wenn der Zeitraum s, währenddessen
die Codefehler auftreten, verlängert
wird, wird das Ausmaß an
Nicht-Übereinstimmung
der internen Zustände
weiter vergrößert und
die Verschlechterung der decodierten Sprache SP(t + s) wird ebenfalls
verstärkt.
-
Das
Dokument J. H. Chen et al.: "A
Low-Delay CELP Coder for the CCITT 16 kb/s Speech Coding Standard", IEEE Journal On
Selected Areas In Communications, vol. 10, no. 5, Juni 1992, Seiten 830–849, XP000274718
New York, USA beschreibt einen LD-CELP G.728 Standard-Decoder.
-
Das
Dokument C. R. Watkins und J. H. Chen: "Improving 16 kb/s G.728 LD-CELP Speech
Coder for Frame Erasure Channels",
1995 International Conference On Acoustics, Speech, And Signal Processing,
vol. 1, 9 Mai 1995, Seiten 241–244, XP000657975
New York, USA, behandelt das Problem der Minimierung der negativen
Effekte von Fehlern, speziell Rahmenauflösungen, in einem LD-CELP Sprachdecoder
und beschreibt das Verbergen von internen Zuständen des LD-CELP Codierers für verbesserte
Sprachqualität
nach der Fehlerkorrektur mittels Verwendung eines extrapolierten
Signals. Dieses extrapolierte Signal kann, lediglich basierend auf
denjenigen Parametern, die vor der/den Rahmenauflösung(en)
empfangenen empfangen wurden, generiert werden.
-
Die
vorliegende Erfindung ist vor dem oben dargestellten Hintergrund
vollendet worden. Es ist daher eine Aufgabe der Erfindung, einen
Sprachdecoder und ein entsprechendes Verfahren, geeignet zur Verbesserung
der Qualität
der decodierten Sprache nach der Korrektur von Codefehlern, bereitzustellen.
-
Diese
Aufgabe wird durch die, in den Ansprüchen 1 und 7 aufgezeigten,
vorteilhaften Maßnahmen
erreicht.
-
Gemäß der vorliegenden
Erfindung umfasst ein Sprachdecoder im wesentlichen ein Fehlererfassungsmittel
zum Erfassen, ob eine Codesequenz, die durch Empfangen einer Codesequenz
eines Sprachsignals erhalten wird, das, mittels eines vorbestimmten
Codieralgorithmus, in der Form komprimierter digitaler Daten übertragen
wird, Codefehler enthält oder
nicht, ein Mittel einer ersten Bewertung zum Schätzen, sobald in der empfangenen
Codesequenz Fehler durch das Fehlererfassungsmittel erfasst werden,
einer korrekten Codesequenz, die auf einer, vor der Erfassung von
Codefehlern durch das Fehlererfassungsmittel empfangenen Codesequenz
basiert, und zum Ausgeben einer geschätzten Codesequenz, ein Decodiermittel
zum Decodieren der geschätzten Codesequenz
auf der Basis von darin zurückbehaltener
interner Zustandsinformation und zum Transformieren derselben in
ein Sprachsignal, und ein Aktualisierungsmittel zum Aktualisieren
der internen Zustandsinformation auf der Basis des decodierten Resultats,
das von dem Decodiermittel erreicht wurde. Der Sprachdecoder ist
dadurch gekennzeichnet, dass er ferner ein Mittel einer zweiten
Bewertung beinhaltet, zum erneuten Schätzen einer korrekten Codesequenz
während
einer Zeitspanne der Fehlererfassung, basierend auf einer Codesequenz,
die dann empfangen wird, nachdem keine weiteren Fehler mehr erfasst
werden, und zum Ausgeben einer geschätzten Codesequenz, wenn von
dem Fehlererfassungsmittel Fehler in der empfangenen Codesequenz
entdeckt werden, aber darauffolgend keine weiteren Fehler mehr erfasst
werden, wobei die interne Zustandinformation auf der Basis des decodierten Ergebnisses
aktualisiert wird, welches mittels Decodieren der, von der Einheit
einer zweiten Bewertung ausgegebenen, geschätzten Codesequenz erreicht wurde.
In diesem Fall führt
die Einheit einer zweiten Bewertung während der Zeitspanne, in der
Fehler erfasst werden, eine erneute Schätzung einer korrekten Codesequenz
durch, basierend auf derjenigen Codesequenz, die dann empfangen
wird, nachdem keine weiteren Fehler erfasst werden, und gibt eine geschätzte Codesequenz
aus. Das Decodiermittel decodiert diese geschätzte Codesequenz, und das Aktualisierungsmittel
aktualisiert die interne Zustandsinformation basierend auf diesem
decodierten Resultat. Dementsprechend wird während der Zeitspanne, in der
Codefehler auftreten, die vergrößerte Diskrepanz
bezüglich
der internen Zustandsinformation zwischen dem Codierer und dem Decoder
kompensiert.
-
Hier
kann das Mittel einer zweiten Bewertung während der Zeitspanne, in der
Fehler erfasst werden, eine korrekte Codesequenz auf der Basis einer vor
der Fehlererfassung empfangenen Codesequenz und einer Codesequenz,
die dann empfangen wird, nachdem keine weiteren Fehler mehr erfasst
werden, erneut schätzen
und eine geschätzte
Codesequenz ausgeben, wenn von dem Erfassungsmittel Fehler in der
empfangenen Codesequenz erfasst werden, aber keine weiteren Fehler
nach dem Ablauf der vorbestimmten Zeitspanne mehr entdeckt werden.
-
Das
Mittel einer zweiten Bewertung kann während der Zeitspanne, in der
Fehler erfasst werden, die Neuschätzung einer korrekten Codesequenz
durchführen,
basierend auf derjenigen Codesequenz aus allen nach abgeschlossener
Fehlererfassung empfangenen Codesequenzen, die unmittelbar dann
empfangen wird, nachdem keine weiteren Fehler erfasst werden, und
eine geschätzte
Codesequenz ausgeben. Weiterhin kann das Mittel einer zweiten Bewertung
während
einer Zeitspanne, in der Fehler erfasst werden, basierend auf Codesequenzen,
die dann empfangen werden, nachdem keine weiteren Fehler erfasst
werden, eine erneute Schätzung
einer korrekten Codesequenz durchführen, und eine geschätzte Codesequenz
ausgeben.
-
In
dem Sprachdecoder kann das Mittel einer zweiten Bewertung eine korrekte
Codesequenz auf der Basis von einer, unmittelbar vor der Fehlererfassung
empfangenen Codesequenz, aus der Menge aller vor der Fehlererfassung
empfangenen Codesequenzen, abschätzen.
In diesem Fall kann das Mittel einer ersten Bewertung eine korrekte
Codesequenz auf der Basis von einer Codesequenz aus der Menge aller
vor der Fehlererfassung empfangenen Codesequenzen schätzen, welche
unmittelbar vor der Fehlererfassung empfangen wurde, wie in dem
Fall des Mittels einer zweiten Bewertung. In dem Sprachdecoder kann
das Mittel einer zweiten Bewertung eine korrekte Codesequenz auf
der Basis von Codesequenzen abschätzen, die vor der Erfassung
der Fehler empfangen wurden. In diesem Fall kann das Mittel einer
ersten Bewertung eine korrekte Codesequenz auf der Basis einer Codesequenz
aus der Menge aller vor der Fehlererfassung empfangenen Codesequenzen
schätzen,
welche unmittelbar vor der Fehlererfassung empfangen wurde, wie
in dem Fall des Mittels einer zweiten Bewertung. Da derartige Sprachdecoder
die Codesequenz mit einem hohen Genauigkeitsgrad abschätzen können, kann
die Qualität
der decodierten Sprache während
des Zeitraums, in dem Codefehler auftreten, und nach der Korrektur
der Codefehler verbessert werden.
-
Der
Sprachdecoder kann ferner ein Schaltungsmittel enthalten, zum Abschalten
einer externen Ausgabe eines Sprachsignals während der Zeitspanne, in der
die geschätzte,
von dem Mittel einer zweiten Bewertung ausgegebene, Codesequenz
decodiert wird. In diesem Fall kann es vermieden werden, dass eine
decodierte Sprache, die während
des Zeitraums erzeugt wird, in dem die interne Zustandsinformation
aktualisiert wird, als eine Verzögerungskomponente
nach außen
ausgegeben wird. Dementsprechend kann die Qualität der, um die Codefehlern bereinigten,
decodierten Sprache sogar noch weiter erhöht werden.
-
Die
interne Zustandsinformation kann ein adaptives Code-Buch sein.
-
Kurzbeschreibung der Zeichnungen
-
1 ist
ein Blockschaltbild, das einen Aufbau eines Sprachdecoders gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt;
-
2 ist
eine Darstellung, die eine Relation zwischen den in Eingangscodesequenzen
enthaltenen Fehlern und Modi von Routineoperationen eines Sprachdecoders
aus 1 aufzeigt;
-
3 ist
eine Darstellung, die den Übergang der
Routineoperationen in einem Sprachdecoder aus 1 zeigt;
-
4 ist
eine Darstellung, die ein spezifisches Beispiel der Routineoperation
in dem Sprachdecoder von 1 veranschaulicht;
-
5 ist
eine Darstellung des Messergebnisses des segmentalen SNR in einem
Experiment, in dem der Sprachdecoder aus 1 verwendet
wurde;
-
6 ist
eine Darstellung, die zur Erläuterung
der internen Zustände
beispielhaft einen IIR-Filter veranschaulicht; und
-
7 ist
ein Blockschaltbild, das die Anordnung der Komponenten eines konventionellen Sprachdecoders
zeigt.
-
Beste Ausführungsform
der Erfindung
-
Eine
Ausführungsform
der vorliegenden Erfindung wird nun mit Bezug zu den begleitenden Zeichnungen
beschrieben werden.
-
1. Aufbau
der Ausführungsform
-
1 ist
ein Blockschaltdiagramm, das einen Aufbau eines Sprachdecoders gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. In 1 umfasst
eine Eingangscodesequenz-Verarbeitungseinheit (1') einen Eingangscodesequenz-Bearbeitungsabschnitt
(11') und
einen Eingangscodesequenz-Speicherabschnitt (12'), wohingegen
eine Decodier-Verarbeitungseinheit (2') einen Decodier-Bearbeitungsabschnitt
(21'),
einen Bearbeitungsabschnitt für
den internen Zustand (22')
und einen Speicherabschnitt für
den internen Zustand (23')
umfasst. Der Eingangscodesequenz-Bearbeitungsabschnitt (11') beinhaltet
Wählschaltungen
(110, 150) zum selektiven Schalten einer Verfahrensroutine,
eine Regulär-Routineeinheit (120)
zum Ausführen
einer regulären
Routine, eine Fehlerverberge-Routineeinheit (130) zum Ausführen einer
Routine beim Auftreten von Fehlern, und eine Fehlerkorrektur-Routineeinheit (140)
zum Korrigieren von Fehlern. Referenzziffer 3 bezeichnet
eine Erfassungseinheit und Referenzziffer 4 in entsprechender
Weise einen Schalter.
-
Die
Fehlererfassungseinheit (3) hat den selben Aufbau, wie
er in 3 veranschaulicht wird. Diese Fehlererfassungseinheit
(3) erfasst Fehler, die in einer, über einen nicht dargestellten Übertragungskanal übertragenen,
Eingangscodesequenz In(i) enthalten sind, erzeugt ein Erkennungssignal
E, welches zu "1" wird, wenn in der
Eingangscodesequenz In(i) Fehler erfasst werden, und welches zu "0" wird, wenn keine Fehler erfasst werden,
und gibt dieses Fehlererkennungssignal E an den Eingangscodesequenz-Bearbeitungsabschnitt
(11') und
den Decodier-Bearbeitungsabschnitt (21') aus.
-
2. Arbeitsweise
der Ausführungsform
-
2-1: Globale Arbeitsweise
der Ausführungsform
-
Eine
globale Arbeitsweise der derart aufgebauten Ausführungsform wird beschrieben
werden. Die Funktionsweise dieser Ausführungsform beinhaltet eine
Regulär-Routine,
eine Fehlerverberge-Routine und eine Fehlerkorrektur-Routine. Diese
Routinen werden in Abhängigkeit
des Zustandes eines potentiell auftretenden Fehlers in der Eingangscodesequenz
ausgewählt.
Als erstes wird dies unter Bezugnahme auf 2 erläutert. Wenn
nun, wie in 2 veranschaulicht, die Eingangscodesequenz
gemäß dem Schema "keine Fehler → Fehler → keine Fehler → keine Fehler" verändert wird,
wird das Fehlererkennungssignal E gemäß dem Schema "0 → 1 → 0 → 0" verändert. In
diesem Fall wird die Routineoperation gemäß dem Schema "Regulär-Routine → Fehlerverberge-Routine → Fehlerkorrektur-Routine
und Regulär-Routine → Fehlerverberge-Routine" in dieser Abfolge
ausgeführt. 3 zeigt
die Übergänge der
Routineoperation. In 3 werden die Fehlerkorrektur-Routine und die Regulär-Routine
durchlaufen, nachdem die Fehlerverberge-Routine beendet ist und,
sobald das Fehlererkennungssignal E "0" anzeigt.
Das bedeutet, dass diese Operation nur dann ausgeführt wird,
wenn der Zustand der Eingangscodesequenz von "Fehler" zu "keine
Fehler" verändert wird.
Unter der Annahme, dass die Eingangscodesequenz während der
Zeitspanne vom Zeitpunkt 0 bis zum Zeitpunkt t keine Fehler, während der
Zeitspanne vom Zeitpunkt t + 1 bis zum Zeitpunkt t + s + 1 Fehler,
und während
der Zeitspanne vom Zeitpunkt t + s an keine Fehler mehr enthält, wird
die obige Routineoperation unter Bezugnahme auf die 1 und 4 gesondert
beschrieben.
-
2-2: Regulär-Routine
-
Als
erstes erfolgt die Beschreibung der Regulär-Routine. Das Fehlererkennungssignal
E ist während
der Zeitspanne vom Zeitpunkt 0 bis zum Zeitpunkt t durch "0" gekennzeichnet. In diesem Fall wird
die Regulär-Routine
zum Zeitpunkt t = 1 ausgeführt
und zum Zeitpunkt t werden keine Fehler erfasst. Deshalb schreitet,
gemäß des oben
angeführten
Zustandsübergangs
(siehe 3), der Bearbeitungsprozess, ausgehend von der
Regulär-Routine, via
die Linie von "0", wiederum zur Regulär-Routine fort.
-
In 1 wählt die
Wählschaltung
(110), sobald eine Eingangscodesequenz In(t) an die Eingangscodesequenzeinheit
(11') geliefert
wird, einen Anschluss A1 und liefert die Eingangscodesequenz In(t)
an die Regulär-Routineeinheit
(120). Anschließend,
wenn die Regulär-Routineeinheit
(120) die Eingangscodesequenz In(t) um redundante Bits
bereinigt und dieselbe in der Form einer Codesequenz C(t) an die
Wählschaltung
(150) liefert, wählt
die Wählschaltung
(150) einen Anschluss A5 und gibt die Codesequenz C(t)
an den Decodier-Bearbeitungsabschnitt
(21') aus.
Diese Codesequenz C(t) wird ebenfalls an die Eingangscodesequenz-Speichereinheit (12') ausgegeben
und darauf gespeichert (zwar werden die Speicherinhalte nicht aktualisiert,
aber die Codesequenz C(t) wird daran angefügt).
-
Der
Decodier-Bearbeitungsabschnitt (21') decodiert die Codesequenz C(t)
auf der Basis der internen Zustandsinformation, die vom Bearbeitungsabschnitt
für den
internen Zustand (22')
geliefert wird. Zu diesem Zeitpunkt befindet sich der Schalter (4)
in seiner EIN-Stellung
und die decodierte Sprache SP(t) wird an den darauffolgenden Schritt
ausgegeben. Der Decodier-Bearbeitungsabschnitt
(21') gibt zu
dem Zeitpunkt, wenn die Decodier-Routine beendet ist, ebenfalls
die interne Zustandsinformation Si(t) an den Bearbeitungsabschnitt
für den
internen Zustand (22')
aus. Der Bearbeitungsabschnitt für
den internen Zustand (22')
liest die, im Speicherabschnitt für den internen Zustand (23') gespeicherte,
interne Zustandsinformation So (t) aus und liefert dieselbe an den
Decodier-Bearbeitungsabschnitt
(21').
Nachdem der Prozess im Decodier-Bearbeitungsabschnitt (21') abgeschlossen
ist, generiert der Bearbeitungsabschnitt für den internen Zustand (22') die interne
Zustandsinformation So(t + 1) auf der Basis der, von der Einheit
(21') gelieferten,
internen Zustandsinformation Si(t) und speichert dieselbe von neuem
in die Speichereinheit für
den internen Zustand (23').
Sobald der Decodierungsprozess zum Zeitpunkt t damit abgeschlossen
ist, wird die, aus der Speichereinheit für den internen Zustand (23') ausgelesene,
interne Zustandsinformation von So(t) zu So(t + 1) verändert.
-
2-3: Fehlerverberge-Routine
-
Nun
erfolgt eine Beschreibung der Fehlerverberge-Routine. In diesem
Beispiel ist das Fehlererkennungssignal während der Zeitspanne vom Zeitpunkt
t + 1 bis zum Zeitpunkt t + s + 1 durch "1" gekennzeichnet.
In diesem Fall, da zum Zeitpunkt t keine Fehler, zum Zeitpunkt t
+ 1 aber Fehler auftreten, zeigt das Fehlererkennungssignal E "1" an. Aus diesem Grunde schreitet der
Verfahrensablauf, gemäß dem obengenannten
Zustandsübergang
(siehe 3), zum Zeitpunkt t + 1 via die Linie von "1" von der Regulär-Routine weiter zur Fehler-Routine fort.
-
Wenn
die Eingangscodesequenz In (t + 1) zum Zeitpunkt t + 1 an die Eingangscodesequenz-Einheit
(11') geliefert
wird, wählt
die Wählschaltung
(110) einen Anschluss B1. Zu diesem Zeitpunkt wird die
Codesequenz C(t) vom Eingangscodesequenz-Speicherabschnitt (12') ausgelesen, und über die
Wählschaltung
(110) an die Fehlerverberge-Routineeinheit (130) geliefert.
Daraufhin berechnet die Fehlerverberge-Routineeinheit (130),
basierend auf der Codesequenz C(t), eine geschätzte Codesequenz C'(t + 1) und gibt
diese aus. Die geschätzte
Codesequenz C'(i)
bezieht sich auf eine Codesequenz, die mittels Ersetzen des entsprechenden
Anteils von C(i) durch einen Code mit einer zeitlich hohen Korrelation
erhalten werden kann, wie beispielsweise den oben genannten LSP
und LAG, aus der Codesequenz C(i – 1) von vor dem Auftreten
von Fehlern.
-
In
der Folge wählt
die Wählschaltung
(150) einen Anschluss B5 und schickt die geschätzte Codesequenz
C'(t + 1) von der
Fehler-Routineeinheit (130) an den Decodier-Bearbeitungsabschnitt
(21'). Im
Zuge dessen erledigt der Decodier-Bearbeitungsabschnitt (21') die oben erwähnte Decodierung
und die Ergänzung
des internen Zustandes, unter Heranziehung der geschätzten Codesequenz
C'(t + 1), die von
dem Eingangscodesequenz-Abschnitt (11') geliefert wird. Während der
Zeitspanne vom Zeitpunkt t + 2 bis zum Zeitpunkt t + s – 1, also
dem Zeitpunkt t + 2 nachfolgend, generiert der Decodier-Bearbeitungsabschnitt
(21'),
wie in 4 gezeigt, basierend auf der Codesequenz C(t)
ebenfalls eine geschätzte Codesequenz
C'(t + 2), ... C'(t + s – t) und
erledigt den Decodierungsprozess und die Ergänzung des internen Zustands,
die auf diesen basieren.
-
Der
Grund dafür,
weshalb die geschätzte Codesequenz
C'(t + 1) in der
genannten Weise für
die Fehlerverberge-Routine
herangezogen wird, ist, dass im akustischen Sinne die Verzerrung
der decodierten Sprache eher reduziert werden kann, wenn die Decodier-Routine
auf der Basis derjenigen Codesequenz ausgeführt wird, die vor dem Auftreten
von Fehlern von der korrekten Codesequenz geschätzt wurde, als wenn die Decodier-Routine
auf der Basis des bereits fehlerhaften Codes ausgeführt wird,
da die Sprache eine zeitliche Korrelation besitzt.
-
2-3: Fehlerkorrektur-Routine
-
Es
erfolgt nun eine Beschreibung der Fehlerkorrektur-Routine. Da vom Zeitpunkt
t + s an keine weiteren Fehler mehr auftreten, ist das Fehlererkennungssignal
E durch "0" gekennzeichnet.
In diesem Fall schreitet der Verfahrensablauf, gemäß dem oben erwähnten Zustandsübergang
(siehe 3), via die Linie von "0",
ausgehend von der Fehler-Routine zu der Fehlerkorrektur-Routine und der Regulär-Routine fort.
-
Zum
Zeitpunkt t + s wird der Schalter (4) in seine AUS-Stellung gebracht.
Zu diesem Zeitpunkt belegen in dem Eingangscodesequenz-Bearbeitungsabschnitt
(11') die
Wählschaltungen
(110, 150) jeweils die Anschlüsse C1 und C5, um die Fehlerkorrektur-Routineeinheit
(140) anzusteuern. Wie in 4 veranschaulicht,
führt die
Fehlerkorrektur-Routineeinheit (140) eine Neuberechnung
der Codesequenz C''(t), ..., C''(t + s – 1) in der fehlerbehafteten
Sektion durch und gibt das Resultat als eine geschätzte Codesequenz
aus. In diesem Fall benutzt die Fehlerkorrektur-Routineeinheit (140)
die korrekte Codesequenz C(t) von vor dem Auftreten von Fehlern,
welche einen Teil des Inhalts in der Eingangscodesequenz- Speichereinheit (12') darstellt,
und die eine neue korrekte Codesequenz C(t + s), welche von der
Eingangscodesequenz In(t + s) generiert wird.
-
In
der decodierenden Verarbeitungseinheit (2') führt der Decodier-Bearbeitungsabschnitt
(21') einen
Decodierungsprozess durch, der auf der, in dem Speicherabschnitt
für den
internen Zustand (23') gespeicherten,
internen Zustandsinformation So(t) und der geschätzten Codesequenz einer zweiten
Bewertung C''(t) basiert. Der
Bearbeitungsabschnitt für den
internen Zustand (22')
stellt, basierend auf dem Resultat der Decodierung, eine So'(t + 1) in Übereinstimmung
mit der internen Zustandsinformation Si'(t) bereit. Die interne Zustandsinformation
So(t + 1) von dem Speicherabschnitt für den internen Zustand (23') wird zu So'(t + 1) abgeändert (und
zwar im Zuge einer Re-Aktualisierung). Da sich allerdings zu diesem Zeitpunkt
der Schalter (4) in seiner AUS-Stellung befindet, wird
keine decodierte Sprache ausgegeben und es wird lediglich der interne
Zustand aktualisiert. Dann werden die selben Aktualisierungsprozesse, wie
sie oben erwähnt
wurden, basierend auf der neuerlich zurückgespeicherten internen Zustandsinformation
So'(t + 1) und der
Codesequenz C''(t + 1) ausgeführt. Ein
derartiger Prozess wird bis hinauf zu der Codesequenz C''(t + s – 1) wiederholt. Als eine Folge wird
die interne Zustandsinformation des Speicherabschnitts für den internen
Zustand (23')
zu So'(t + 1), ...
So'(t + s – 1) aktualisiert,
wie dies in 4 veranschaulicht wird.
-
Sobald
die interne Zustandsinformation wieder bis hinauf zu So'(t + s) aktualisiert
ist, wird der Schalter (4) eingeschaltet und die oben erwähnte Regulär-Routine,
basierend auf der internen Zustandsinformation So'(t + s) und der Codesequenz
(t + s), wird in Gang gesetzt. Das heißt für den Zeitpunkt t + s, unter
der Annahme, dass der Decodierungsprozess zu den Zeitpunkten t,
..., t + s – 1
auf der Basis der Codesequenz C''(t), ..., C''(t + s – 1) erfolgt und die Inhalte
des Speicherabschnitts für
den internen Zustand (23')
ergänzt
werden, dass der Decodierungsprozess und die Ergänzung der Speichereinheit für den internen
Zustand (23')
zum Zeitpunkt t + s ausgeführt
werden.
-
Auf
diesem Wege werden, gemäß dieser Ausführungsform,
zum Zeitpunkt t + s, sobald keine weiteren Fehler erfasst werden,
die Inhalte des Speicherabschnitts für den internen Zustand (23') bezüglich der
fehlerbehafteten Zeitpunkte t + 1, ..., t + s – 1, unter Heranziehung der
Codesequenz C''(t + 1), ..., C''(t + s – 1) wieder aktualisiert. Im
Zuge dessen kann der Inhalt des Speicherabschnitts für den internen Zustand
(23') näher an den
Inhalt des Speicherabschnitts für
den internen Zustand (nicht gezeigt) auf der Encoderseite angenähert werden.
Als eine Konsequenz kann die Verzerrung vom Zeitpunkt t + s an reduziert
werden. Zusätzlich
wird, da der Schalter (4) zum Zeitpunkt t + s ausgeschaltet
ist, keine Verzögerungskomponente
der decodierten Sprache ausgegeben.
-
3. Experimentelles
Beispiel
-
Es
wurde eine Experiment durchgeführt,
in dem ein Sprachdecoder gemäß der vorliegenden
Erfindung in Verbindung mit einem adaptiven Code-Buch einer ACELP
angewandt wurde, und Fehler zu der LAG als Parameter des adaptiven
Codebuchs hinzuaddiert wurden. In diesem Experiment erfolgten der
Decodier-Prozess und die Aktualisierung des internen Zustandes auf
der Basis jedes Teil-Übertragungsrahmens,
und Fehler wurden zum fünften
und sechsten Teil-Übertragungsrahmen
aufaddiert. Dann wurde das segmentale SNR gemessen. In der Folge wurde
ein Messergebnis erhalten, wie es in 5 dargestellt
ist. In 5 kennzeichnen die weißen Quadrate
das segmentale SNR, wenn in der Zeitspanne von Codefehlern keine
Interpolation erfolgt, wohingegen die weißen Kreise das segmentale SNR für den Fall
bezeichnen, wenn in der Zeitspanne von Codefehlern die Interpolations-Routine
durchgeführt wird.
Andererseits kennzeichnen die schwarzen Quadrate das segmentale
SNR, wenn die Fehlerkorrektur-Routine am Fehlerkorrektur-Übertragungsrahmen (siebter
Teil-Übertragungsrahmen)
durchgeführt wird
und die Interpolations-Routine durchgeführt wurde. Das bedeutet, dass
das, mittels der schwarzen Quadrate gekennzeichnete, Messergebnis
genau dem Anwendungsfall des Sprachdecoders gemäß dieser Ausführungsform
entspricht.
-
Beispielsweise
kann im elften Teil-Übertragungsrahmen,
wenn die Fehlerkorrektur-Routine und die Interpolations-Routine durchgeführt werden,
das segmentale SNR um 4 dB aufgebessert werden, verglichen mit dem
Fall, in dem lediglich die Interpolations-Routine erfolgt, und um
9 dB, verglichen mit dem Fall, in dem überhaupt keine Interpolation
erfolgt. Auf diesem Wege wurde festgestellt, dass die Fehlerkorrektur-Routine
das segmentale SNR nach dem Auftreten der Codefehler beträchtlich
verbessert.
-
4. Modifizierte
Ausführungsformen
-
In
der obigen Ausführungsform
kann die geschätzte
Codesequenz C'(t
+ 1), ..., C'(t
+ s – 1)
nicht nur mittels des/der LSP und LAG ersetzt werden, sondern auch
mittels anderer Codes, die eine hohe Alterskorrelation besitzen,
oder sie kann mittels anderer Verfahren berechnet werden.
-
Ferner
kann die Schätzung
nicht nur unter Heranziehung der, dem Auftreten von Fehlern unmittelbar
vorangehenden, Codesequenz C(t) erfolgen, sondern auch unter Verwendung
der vorausgehenden Codesequenz C(t – 1), C(t – 2), .... In diesem Fall neuberechnet
die Fehlerkorrektur-Routineeinheit (140)
die Codesequenz C''(t + 1), ..., C''(t + s – 1) der fehlerbehafteten Sektion
unter Heranziehung der Codesequenz C(t – 1), C(t – 2), ... von unmittelbar vor dem
Auftreten von Fehlern, als dem Inhalt der Eingangscode-Speichereinheit
(12'),
und einer neuen korrekten, aus der Einganscodesequenz In(t + s)
erzeugten Codesequenz C(t + s), und gibt das Resultat aus.
-
Wenn
die Schätzung
unter Heranziehung von sowohl der korrekten Codesequenz vor dem
Auftreten von Fehlern, als auch von der korrekten Codesequenz nach
der Korrektur von Fehlern erfolgt, so kann die geschätzte Codesequenz
einer zweiten Bewertung C''(t + 1), ..., C''(t + s – 1) zum Aktualisieren der
internen Zustandsinformation wieder entweder nur die korrekte Codesequenz
nach der Fehlerkorrektur, als auch die Codesequenz C(t) von unmittelbar
vor dem Auftreten von Fehlern verwenden, oder sie kann die weiter
vorausgehende korrekte Codesequenz C(t – 1), C(t – 2), ... verwenden.
-
Die
geschätzte
Codesequenz der zweiten Bewertung C''(t
+ 1), ..., C''(t + s – 1) zum
Aktualisieren der internen Zustandsinformation kann wiederum ausschließlich aus
der korrekten Codesequenz nach der Fehlerkorrektur geschätzt werden.
Die korrekte Codesequenz nach der Fehlerkorrektur kann entweder
nur die Codesequenz C(t + s) von unmittelbar nach der Korrektur
von Fehlern verwenden, oder sie kann aber auch die korrekte Codesequenz
C(t + s), C(t + s + 1), ... verwenden.
-
Für die geschätzte Codesequenz
einer zweiten Bewertung C''(t + 1), ..., C''(t + s – 1) ist es nicht notwendigerweise
erforderlich, dass sie über
die gesamte Zeitspanne hinweg, in der die Fehler auftreten, berechnet
wird. Sie kann für
lediglich einen Teilbereich der Zeitspanne berechnet werden und
aktualisiert den internen Zustand basierend auf dem Berechnungsergebnis.
-
In
denjenigen Systemen, in denen etwas Verzögerung erlaubt ist, kann die
Anordnung so sein, dass der Schalter (4) zum Zeitpunkt
t + s angestellt wird und die decodierte Sprache ausgegeben wird.
-
Im
Hinblick auf den internen Zustand wird es bevorzugt, dass ein adaptives
Code-Buch als ein repräsentativer
Codieralgorithmus verwendet wird. Dennoch ist der interne Zustand
nicht darauf beschränkt.