[0001] Die Erfindung betrifft ein Verfahren für die algebraische Codebook-Suche eines Sprachsignalkodierers,
vorzugsweise nach dem Code Excited Linear Prediction-Verfahren, bei dem zur Berechnung
von Koeffizienten der Dreieckmatrix der Autokorrelationsmatrix vom Toeplitz-Typ ein
n Sprachsignalabtastungen umfassender Zeitabschnitt in eine ganzzahlige Anzahl Tracks
t mit je p möglichen Pulspositionen zerlegt wird. Die Erfindung bezieht sich ebenfalls
auf eine Kommunikationseinrichtung, insbesondere ein Mobiltelefon, mit einem Sprachsignalkodierer.
[0002] Derartigs Verfahren kommen bei digitalen Sprachübertragungsverfahren zum Einsatz.
Wird ein analoges Sprachsignal mit einer bestimmten Abtastrate in ein digitales Signal
umgewandelt, so entsteht eine sehr große Datenmenge, die über einen im Durchsatz begrenzten
Funkkanal nicht vollständig übertragen werden kann. Aus diesem Grund muss nach der
Digitalisierung des Sprachsignals eine Kompression der Signale vorgenommen werden.
Ein Signal wird komprimiert, indem man nichtrelevante Elemente weglässt, sich wiederholende
Elemente mit einer Kurzbezeichnung versieht und nur noch diese Kurzbezeichnungen als
Kodierungen überträgt. Auf dem Gebiet der Kodierverfahren für Mobilfunkanwendungen
hat das CELP-Verfahren (Code Excited Linear Prediction) besondere Bedeutung erlangt.
Bei diesem effizienten Kodierverfahren werden als Koeffizienten in einer Autokorrelationsmatrix
hinterlegte Klangelemente erkannt und übertragen. Die Autokorrelationsmatrix kann
dabei mit einem Notizbuch oder Codebook verglichen werden, von dem nur die Notizbuchadresse
übertragen wird Der Empfänger benötigt zwangsläufig das gleiche Notizbuch, um das
empfangene Digitalsignal in ein dem ursprünglichen Signal möglichst ähnliches, analoges
Sprachsignal umzuwandeln.
[0003] Eine Reihe von Kodierern/Dekodierern sind von der ITU international standardisiert,
zu diesen gehören die Verfahren CS-ACELP und ACELP, die mit Bitraten von bis zu 8
kbps arbeiten.
[0004] Bei dem CELP-Verfahren wird zunächst eine LPC-Analyse (linear prediction coefficient)
vorgenommen. Das verbleibende Signal wird anschließend durch einen Suchvorgang in
einem adaptiven Codebook quantifiziert. Auf diese Weise werden periodische Anteile
des Sprachsignals in einer LTP-Analyse (long term prediction) herausgefiltert. Das
verbleibende Signal wird in einem zweiten Codebook quantifiziert, für dieses Verfahren
gibt es bereits eine Reihe von Lösungen. Bei dem AMR-Verfahren (adaptive multirate
speech codec) wird ein algebraisches Codebook benutzt. Das Prinzip der algebraischen
Codebook-Suche beruht darauf, einen Codevektor zu suchen, der einen bestimmten Zeitabschnitt
repräsentiert und bei dem eine begrenzte Anzahl von Pulsen eine Amplitude von +1 oder
-1 besitzt. Diese Codevektor wird durch einen Synthesefilter gefiltert, das heißt
auf der Seite des Senders wird der Dekodiervorgang durchgeführt, der nach der Übermittlung
des Signals auf der Empfängerseite vorgenommen wird. Eine sehr große Anzahl von möglichen
Codevektoren wird durch geschachtelte Suchschleifen systematisch geprüft um denjenigen
Codevektor zu bestimmen, der die geringste Fehlerenergie aufweist, d.h. der dem Ursprungssignal
möglichst ähnlich ist. Diese iterative Bestimmung des Codevektors beansprucht den
größten Teil der Berechnungskapazität eines Mobiltelefons, sodass eine Optimierung
dieses Suchalgorithmus besonders effizient ist. Einerseits ist es wünschenswert, die
Anzahl der benötigten Speicherstellen zu reduzieren, da die dafür benötigten RAM-Bausteine
relativ teuer sind, andererseits wird auch angestrebt, die benötigte Anzahl der Rechenoperationen
des Suchalgorithmus zu verringern.
[0005] Die Autokorrelationsmatrix ist eine Toeplitz-Matrix, das heißt sie ist symmetrisch
bezüglich ihrer Hauptdiagonale und ihre obere oder die damit identische untere Dreieckmatrix
enthält sämtliche Koeffizienten. Es ist daher bereits vorgeschlagen worden, anstelle
der vollständigen Autokorrelationsmatrix lediglich eine der Dreieckmatrizen zu speichern,
um Speicherplatz einzusparen. Dieses Verfahren führt jedoch zu einer komplizierteren
Adressierung der einzelnen Koeffizienten, sodass der Einsparung von Speicherplatz
eine Erhöhung des Rechenaufwands gegenübersteht.
[0006] Der Erfindung liegt daher das Problem zugrunde, ein Verfahren anzugeben, bei dem
der Speicherplatzbedarf und der Berechnungsaufwand verringert sind.
[0007] Zur Lösung dieses Problems ist bei einem Verfahren der eingangs genannten Art erfindungsgemäß
vorgesehen, dass die Koeffizienten gruppiert nach Kombinationen benachbarter Tracks;
Kombinationen nicht benachbarter Tracks; Kombinationen gleicher Tracks; und Koeffizienten
der Hauptdiagonale der Autokorrelationsmatrix in einem Speicher abgelegt werden.
[0008] Bei dem erfindunmäßen Verfahren werden die benötigten Koeffizienten der Autokorrelationsmatrix
in einer Weise gespeichert, die einen schnellen, sequentiellen Zugriff erlaubt. Die
ansonsten zusätzlich erforderliche, relativ aufwändige Berechnung der Speicheradressen
der Koeffizienten der Dreieckmatrix kann wesentlich vereinfacht werden. Einige Koeffizienten
werden sehr häufig benötigt, andere dagegen sehr selten. Dieser Umstand wird bei der
optimierten Gruppierung der ausgenutzt, sodass die häufig benötigten Koeffizienten
der Autokorrelationsmatrix einfacher adressiert werden können, was in einem sehr schnellen
Zugriff resultiert.
[0009] Die Erfindung sieht vor, dass für die Gruppen der Kombinationen benachbarter und
nicht benachbarter Tracks jeweils t Datensätze mit je p x p Koeffizienten gespeichert
werden. Eine in der Praxis sehr wichtige Betriebsart des CELP- bzw. ACELP-Verfahrens
sieht vor, dass die Positionen zweier benachbarter Pulse gleichzeitig festgelegt werden,
so dass sich bei p möglichen Pulspositionen pro Codevektor p x p Durchläufe der Suchschleife
ergeben.
[0010] Ein äußerst schneller und einfacher Zugriff auf die in der Suchschleife benötigten
Koeffizienten lässt sich erzielen, wenn die Koeffizienten sequentiell in einem Speicher
abgelegt werden.
[0011] In weiterer Ausgestaltung der Erfindung ist vorgesehen, dass eine einen horizontalen
oder vertikalen Vektor der Autokorrelationsmatrix darstellende Untergruppe eines Datensatzes
mit p Koeffizienten durch eine Programmschleife ausgelesen wird, wobei ein die Speicherstelle
des ersten Koeffizienten bezeichnender Wert und eine konstante Schrittweite bis zur
nächsten Speicherstelle vorgegeben werden. Demnach genügt es, einen Anfangs- oder
Startwert für die erste Speicheradresse und die Schrittweite, d.h. die Anzahl der
Speicherstellen bis zur jeweils nächsten Speicherstelle festzulegen. Es kann vorgesehen
sein, dass die Startwerte einer in einem Festspeicher abgelegten Nachschlagetabelle
entnommen werden, alternativ werden sie jeweils berechnet.
[0012] Zweckmäßig wird für die Datensätze der Gruppe der Kombinationen benachbarter Tracks
die Schrittweite eins gewählt. Die Koeffizienten werden sequentiell gespeichert und
lassen sich besonders einfach auslesen.
[0013] Für die Datensätze der Gruppe der Kombinationen nicht benachbarter Tracksempfiehlt
es sich, die Schrittweite p zu wählen.
[0014] Zur Verringerung des Speicherplatzbedarfs können für die Gruppe der Kombinationen
gleicher Tracks t Dreieckmatrizen sequentiell gespeichert werden. Jeder Kombination
gleicher Tracks entspricht dabei eine Dreieckmatrix und alle t Dreieckmatrizen werden
in einem Block gespeichert. Da diese Koeffizienten verhältnismäßig selten benötigt
werden ist es kein Nachteil, wenn der Zugriff etwas aufwendiger ist. Um den Rechenaufwand
weiter zu reduzieren, kann der Zugriff auch über eine Nachschlagetabelle erfolgen.
[0015] Die Koeffizienten der Hauptdiagonale werden in einer Gruppe zusammengefasst und sequentiell
gespeichert.
[0016] Es hat sich als günstig herausgestellt, wenn innerhalb eines Zeitabschnitts 40 Sprachsignalabtastungen
erfasst werden. Wenn dieser Wert gewählt wird ist das Verfahren mit den international
festgelegten Regelungen kompatibel. Bei einer typischen Abtastrate von 8 kHz für das
Sprachsignal dauert ein Zeitabschnitt 20 msec, innerhalb dieses kurzen Zeitabschnittes
kann das Sprachsignal als quasistationär angesehen und durch einen Codevektor wiedergegeben
werden.
[0017] Die Autokorrelationsmatrix ist vorzugsweise eine 40 x 40-Matrix, entsprechend den
40 Sprachsignalabtastungen in einem Zeitfenster.
[0018] Zur Verringerung der Anzahl der Iterationen ist bei dem erfindungsgemäßen Verfahren
vorgesehen, dass ein Zeitabschnitt in eine ganzzahlige Anzahl gleichlanger Tracks
zerlegt wird-Bevorzugt wird dabei die Zerlegung eines Zeitabschnitts in 5 Tracks mit
je 8 Pulspositionen oder die Zerlegung in 4 Tracks mit je 10 Pulspositionen.
[0019] Ein besonders schneller Zugriff auf die Koeffizienten wird ermöglicht, wenn die Koeffizientengruppen
der Kombinationen benachbarter und nicht benachbarter Tracks aus einer Mehrzahl von
je 64 Koeffizienten umfassenden Blöcken gebildet werden. Auf diese Koeffizientengruppen
muss während der Iteration besonders oft zurückgegriffen werden. Diese Gruppen werden
daher in der Reihenfolge gespeichert, in der sie für die Berechnung benötigt werden,
sodass auf sie schnell zugegriffen werden kann, was zu einer Verringerung des Rechenaufwands
führt.
[0020] Besonders gute Ergebnisse lassen sich erzielen, wenn für die Koeffizientengruppe
der Kombinationen benachbarter Tracks 320 Werte ermittelt werden. Für die Koeffizientengruppe
der Kombinationen nicht benachbarter Tracks werden zweckmäßig ebenfalls 320 Werte
ermittelt. Die Koeffizientengruppe der Kombinationen gleicher Tracks enthält 140 Werte,
zusammen mit den Koeffizienten der Hauptdiagonale werden insgesamt 820 Koeffizienten
ermittelt.
[0021] Eine weitere Steigerung der Berechnungsgeschwindigkeit lässt sich erzielen, wenn
der Speicher mehrere RAM-Speicherbänke aufweist und Koeffizientengruppen in unterschiedlichen
RAM-Speicherbänken gespeichert werden. Sind Koeffizientengruppen in unterschiedlichen
RAM-Speicherbänken gespeichert, so kann parallel darauf zugegriffen werden, d.h. zwei
Koeffizienten können gleichzeitig gelesen werden. Die Speicherzugriffszeit lässt sich
dadurch annähernd halbieren.
[0022] Das erfindungsgemäße Verfahren kann mit besonderem Vorteil in das Betriebssystem
eines Mobiltelefons integriert werden.
[0023] Weitere Vorteile und Einzelheiten der Erfindung ergeben sich aus der Beschreibung
eines besonders geeigneten Ausführungsbeispiels und den Figuren. Die Figuren sind
schematische Darstellungen und zeigen:
- Fig. 1
- die Zerlegung eines Zeitabschnitts in 4 Tracks mit je 10 möglichen Pulspositionen;
- Fig. 2
- eine Tabelle der zu testenden Track-/Pulskombinationen;
- Fig. 3
- eine Tabelle der benachbarten und nicht benachbarten Tracks;
- Fig. 4
- eine Dreieckmatrix mit Koeffizienten einer Kombination gleicher Tracks;
- Fig. 5
- die Koeffizienten der Hauptdiagonale;
- Fig. 6
- eine Gesamtübersicht aller zu berechnenden Koeffizienten;
- Fig. 7
- die Berechnung der Gruppe der Kombinationen benachbarter Tracks (Block 1);
- Fig. 8
- die Speicherreihenfolge von Block 1 nach dem eisten Schritt;
- Fig. 9
- die Speicherreihenfolge von Block 1 nach dem zweiten Schritt;
- Fig. 10
- die Berechnung der Gruppe der Kombinationen nicht benachbarter Tracks (Block 2);
- Fig. 11
- die Speicherreihenfolge von Block 2 nach dem ersten Schritt;
- Fig. 12
- die Speicherreihenfolge von Block 2 nach dem zweiten Schritt;
- Fig. 13
- die Berechnung des Blocks mit den Werten gleicher Tracks (Block 3); und
- Fig. 14
- die Speicherplatzreihenfolge von Block 3.
[0024] Durch einen iterativen Suchvorgang soll derjenige Codevektor ermittelt werden, der
mit dem echten Signal am besten übereinstimmt, d.h. dessen Fehlerenergie minimal ist.
Innerhalb des Suchvorgangs werden die Pulse nacheinander festgelegt, sodass sich die
Anzahl der Variablen im Laufe der Suche verringert.
[0025] Die Tabelle von Fig 1 zeigt die Zerlegung eines 40 Sprachsignalabtastungen umfassenden
Zeitabschnitts in vier Tracks mit je zehn Pulspositionen. Eine andere Zerlegung, die
in der Praxis von Bedeutung ist, sieht eine Zerlegung in fünf Tracks mit je acht möglichen
Pulspositionen vor. Für jeden Puls ist festgelegt, in welchen Track er gesetzt werden
kann. Der erste Puls kann daher nur an 10 (bzw. 8) Positionen gesetzt werden, anstatt
an allen 40 Positionen. Iterativ wird diejenige Pulsposition ausgewählt, die den geringsten
Energiefehler aufweist. Anschließend wird die nächste Pulsposition unter Berücksichtigung
der bereits festgelegten ersten Pulsposition iterativ bestimmt. Dieses Verfahren wird
für alle Pulse durchgeführt.
[0026] Bei bestimmten häufig vorkommenden Betriebsarten werden zwei benachbarte Pulse gleichzeitig
bestimmt. Dazu werden alle Kombinationen zweier Pulse berechnet und das beste Pulspaar
unter Berücksichtigung der bereits gesetzten Pulspaare bestimmt. Bei einer Betriebsart,
bei der ein Track acht Pulspositionen umfasst, sind 8 x 8 = 64 Berechnungen erforderlich,
bei einem Track mit 10 Pulspositionen müssen 10 x 10 = 100 Berechnungen für jedes
Pulspaar durchgeführt werden Das folgenden Beispiel bezieht sich auf das Verfahren,
bei dem ein Pulspaar gleichzeitig bestimmt wird.
[0027] Fig. 2 zeigt eine Tabelle der zu testenden Track- /Pulskombinationen für die Betriebsart,
bei der acht Pulse gesetzt werden. Der erste Puls Ip0 wird in den Track gesetzt, in
dem sich das Maximum des zurückgefilterten Zielsignals befindet. Diese Festlegung
erfolgt vor der eigentlichen Suchschleife, sie gilt für die gesamte Suchschleife.
In dem dargestellten Ausführungsbeispiel befand sich das Maximum des zurückgefilterten
Zielsignals in Track 2. Daher wird dieser Wert für den Puls Ip0 bei allen Iterationen
festgehalten. Der zweite Puls Ip1 wird bestimmt, indem alle 8 möglichen Pulspositionen
eines Tracks bestimmt werden. Wie Fig. 2 entnommen werden kann, werden in Iteration
1 die 8 Positionen von Track 3 getestet. Diejenige Pulsposition von Track 3 mit dem
geringsten Energiefehler wird ausgewählt. Nach der Festlegung von Ip0 und Ip1 werden
die 64 möglichen Kombination der Pulse Ip2 und Ip3 getestet. Wie Fig 2 entnommen werden
kann, muss Ip2 für die erste Iteration in Track 4 und Ip3 in Track 0 gefunden werden.
Anschließend werden die Puls paare Ip4-Ip5, Ip6-Ip7 und Ip8-Ip9 nach dem gleichen
Verfahren festgelegt. Nachdem alle Kombinationen geprüft sind, der Codevektor mit
minimalem Energiefehler gespeichert und Iteration 2 wird analog durchgeführt. Der
Puls mit dem geringsten Energiefehler wird ausgewählt. Der Codevektor dieser Iteration
ist dem Zielvektor am ähnlichsten. Für jede Iteration sind vier Pulspaare zu überprüfen,
insgesamt also 4 x 64 = 256 Berechnungen. Bei vier Iterationen sind somit 1024 Berechnungen
durchzuführen.
[0028] Fig. 3 zeigt eine Tabelle der benachbarten und nicht benachbarten Tracks, die gemeinsam
geprüft werden. Aus Fig. 2 ist ersichtlich, dass bestimmte Kombinationen von Tracks
häufig auftreten, zB. Tr0-Tr1, Tr1-Tr3, während andere überhaupt nicht vorkommen.
Von allen denkbaren Codevektoren wird nur eine kleine Auswahl geprüft. Die linke Spalte
von Fig. 3 enthält die für den Suchvorgang erforderlich benachbarten Tracks, Der Suchvorgang
gliedert sich in die eigentliche Suchschleife, in der auf einen Block von 64 Werten
der Autokorrelationsmatrix zugegeiffen wird, wobei für vier Iterationen mit je vier
Pulspaaren mit je 64 Werten insgesamt 1024 Matrixzugriffe erfolgen.
[0029] Außerhalb der Suchschleife wird auf je acht Werte zugegriffen, insgesamt erfolgen
1280 Zugriffe auf die Autokorrelationsmatrix. Bei herkömmlichen Verfahren wird die
gesamte Autokorrelationsmatrix mit 40 x 40 = 1600 Werten gespeichert. Da jedoch jeweils
Blocks von 64 Werten benötigt werden, werden sie gemeinsam gespeichert. Die Reihenfolge
innerhalb des Blocks wird so gewählt, dass auf die Werte durch eine Programmschleife
konstanter Schrittweite zugegriffen werden kann, ohne dass eine umständliche Berechnung
von Speicheradressen erforderlich ist.
[0030] Wie der linken Spalte von Fig 3 zu entnehmen ist, existieren fünf Gruppen mit je
64 Werten benachbarter Tracks mit insgesamt 320 Werten. Ebenso gibt es fünf Kombinationen
von nicht benachbarten Tracks gibt, die jeweils 64 Werte umfassen, sodass auch hier
insgesamt 320 Werte berechnet werden müssen.
[0031] Fig 4 zeigt eine Diagonalmatrix mit den Koeffizienten einer Kombination zweier gleicher
Tracks, beispielsweise Tr0-Tr0. Diese Dreiecksmatrix enthält 28 Koeffizienten. Aus
den fünf Kombinationen gleicher Tracks wird ein Block von insgesamt 140 Werten gebildet.
Der Zugriff auf diesen Block erfolgt nur relativ selten, lediglich 10% aller Zugriffe
fallen in diese Kategorie. Aus diesem Grund ist es kein Nachteil, dass der Zugriff,
das heißt die Adressierung der Koeffizienten etwas umständlicher ist. Es ist auch
denkbar, für den Zugriff eine Zuordnungstabelle zu verwenden.
[0032] Fig. 5 zeigt die Koeffizienten der Hauptdiagonalen. Da insgesamt 40 Signalabtastungen
in einem Zeitabschnitt vorgenommen werden, enthält die Hauptdiagonale 40 Elemente,
die in einem Block sequentiell gespeichert werden.
[0033] Insgesamt sind 320 Koeffizienten der Kombinationen benachbarter Tracks, 320 Koeffizienten
der Kombinationen nicht benachbarter Tracks, 140 Koeffizienten der Kombinationen gleicher
Tracks und 40 Koeffizienten der Hauptdiagonale zu berechnen, zusammen 820 Koeffizienten.
[0034] In Fig. 6 sind sämtliche zu berechnenden Koeffizienten gruppenweise dargestellt.
Jedes der ellipsenförmigen Symbole bezeichnet eine Untergruppe mit einer bestimmten
Anzahl von Koeffizienten. Bei den Blocks 1 und 2 umfasst jede Untergruppe acht Koeffizienten,
im Block 4 jeweils fünf Koeffizienten. Die Anzahl der Koeffizienten im Block 3 ist
wegen der Diagonalmatrix unterschiedlich.
[0035] Die Berechnung der einzelnen Blocks wird nun näher erläutert. Jeder der Blocks 1
bis 4 kann getrennt berechnet werden. Die Erzeugung der Blocks 1 und 2 ist praktisch
identisch, sie erfolgt in zwei Schritten. In Fig. 7 sind diese Schritte für Block
1 dargestellt. Der erste Schritt beginnt bei dem Wert (38/39) der Autokorrelationsmatrix.
Die Matrix wird dabei diagonal durchlaufen, bis die in Fig 7 eingezeichnete Diagonale
den Wert (0/1) erreicht. Dieser Endwert ist mit 'A' bezeichnet und setzt sich bei
dem mit 'A' gekennzeichneten Wert (33/39) auf der rechten Seite fort. Entsprechendes
gilt für das Symbol 'B'.
[0036] Die Speicherreihenfolge von Block 1 nach dem ersten Schritt ist in Fig. 8 dargestellt,
die Pfeile geben dabei an, in welcher Reihenfolge die Koeffizienten aus der Autokorrelationsmatrix
in die 8 x 8 Werte umfassenden Blocks gespeichert werden. Der zweite Teilschritt beginnt
bei dem Wert (35/39), wie in Fig. 7 gezeigt ist. Diese Diagonale läuft zum Wert (0/4),
der zweite Teil beginnt bei dem Wert (30/39) usw.
[0037] In Fig. 9 ist die Speicherreihenfolge von Block 1 nach dem zweiten Teilschritt dargestellt.
Alle Werte, die bereits in dem ersten Schritt gespeichert wurden, sind in Fig. 9 mit
schwarzen Punkten markiert. Durch diese zwei Schritte wird der gesamte Block gefüllt.
Die erste Zeile enthält die Korrelationswerte von Track0-Track1, die zweite Zeile
die Korrelationswerte von Track1-Track2 usw., entsprechend Fig. 7.
[0038] Fig. 10 zeigt die Berechnung des Blocks 2 mit den Werten nicht benachbarter Tracks,
der auf die gleiche Weise erzeugt werden kann. Analog zu Block 1 sind in Fig. 10 die
benötigten Diagonalen eingezeichnet. Der erste Teil beginnt bei dem Wert (37/39).
Diese Diagonale läuft bis zum Wert (0/2), der erste Teil wird bei dem Wert (32/39)
fortgesetzt.
[0039] Fig. 11 stellt die Speicherplatzreihenfolge von Block 2 nach diesem ersten Schritt
dar. Der zweite Teil beginnt bei dem Wert (36/39). Die Diagonale läuft bis zum Wert
(0/3), der zweite Teil wird bei dem Wert (31/39) fortgesetzt.
[0040] In Fig. 12 ist die Speicherplatzreihenfolge von Block 2 nach dem zweiten Schritt
dargestellt. Alle Werte, die bereits in dem ersten Schritt gespeichert wurden, sind
mit Punkten markiert.
[0041] Fig. 13 stellt die Berechnung des Blocks der Kombinationen gleicher Tracks dar. Analog
zu den vorherigen Beispielen sind die benötigten Diagonalen eingezeichnet. Block 3
kann in einem einzigen Durchlauf berechnet werden. Die Speicherplatzreihenfolge von
Block 3 ist in Fig. 14 dargestellt.
[0042] Bei den Koeffizienten für Block 4 handelt es sich um die Werte der Hauptdiagonalen
der Autokorrelationsmatrix.
[0043] Im Vergleich zu der herkömmlichen Lösung, bei der 1600 Koeffizienten berechnet und
gespeichert werden, sind bei diesem Verfahren lediglich 820 Koeffizienten zu berechnen.
Dadurch ergibt sind eine Verringerung des Rechenaufwands von annähernd 30%. Der RAM-Speicherbedarf
wird um etwa 40% verkürzt.
[0044] Zur weiteren Verkürzung der Rechenzeit werden die Blocks 1 und 2 in separaten RAM-Speicherbänken
eines Speichers abgelegt, so dass zwei Werte gleichzeitig ausgelesen werden können.
1. Verfahren für die algebraische Codebook-Suche eines Sprachsignalkodierers, vorzugsweise
nach dem Code Excited Linear Prediction-Verfahren, bei dem zur Berechnung von Koeffizienten
der Dreieckmatrix der Autokorrelationsmatrix vom Toeplitz-Typ ein n Sprachsignalabtastungen
umfassender Zeitabschnitt in eine ganzzahlige Anzahl Tracks t mit je p möglichen Pulspositionen
zerlegt wird,
dadurch gekennzeichnet,
dass die Koeffizienten gruppiert nach
- Kombinationen benachbarter Tracks;
- Kombinationen nicht benachbarter Tracks;
- Kombinationen gleicher Tracks; und
- Koeffizienten der Hauptdiagonale der Autokorrelationsmatrix in einem Speicher abgelegt
werden.
2. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dass für die Gruppen der Kombinationen benachbarter und nicht benachbarter Tracks jeweils
t Datensätze mit je p x p Koeffizienten gespeichert werden.
3. Verfahren nach Anspruch 1 oder 2,
dadurch gekennzeichnet,
dass die Koeffizienten sequentiell in einem Speicher abgelegt werden.
4. Verfahren nach Anspruch 2 oder 3,
dadurch gekennzeichnet,
dass eine einen horizontalen oder vertikalen Vektor der Autokorrelationsmatrix darstellende
Untergruppe eines Datensatzes mit p Koeffizienten durch eine Programmschleife ausgelesen
wird, wobei ein die Speicherstelle des ersten Koeffizienten bezeichnender Wert und
eine konstante Schrittweite bis zur nächsten Speicherstelle vorgegeben werden.
5. Verfahren nach Anspruch 4,
dadurch gekennzeichnet,
dass für die Datensätzen der Gruppe der Kombinationen benachbarter Tracks die Schrittweite
eins gewählt wird.
6. Verfahren nach Anspruch 4,
dadurch gekennzeichnet,
dass für die Datensätzen der Gruppe der Kombinationen nicht benachbarter Tracks die Schrittweite
p gewählt wird.
7. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass für die Gruppe der Kombinationen gleicher Tracks t Dreieckmatrizen sequentiell gespeichert
werden.
8. Verfahren nach Anspruch 7,
dadurch gekennzeichnet,
dass der Zugriff auf die Koeffizienten der Gruppe gleicher Tracks über eine Nachschlagetabelle
erfolgt.
9. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass die Koeffizienten der Hauptdiagonale sequentiell gespeichert werden.
10. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass innerhalb eines Zeitabschnitts 40 Sprachsignalabtastungen erfasst werden.
11. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass die Autokorrelationsmatrix eine 40 x 40-Matrix ist.
12. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass ein Zeitabschnitt in fünf Tracks mit je acht möglichen Pulspositionen zerlegt wird.
13. Verfahren nach einem der Ansprüche 1 bis 11,
dadurch gekennzeichnet,
dass ein Zeitabschnitt in vier Tracks mit je zehn möglichen Pulspositionen zerlegt wird.
14. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass für die Gruppe der Kombinationen benachbarter Tracks 320 Koeffizienten ermittelt
werden.
15. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass für die Gruppe der Kombinationen nicht benachbarter Tracks 320 Koeffizienten ermittelt
werden.
16. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass für die Gruppe der Kombinationen gleicher Tracks 140 Koeffizienten ermittelt werden.
17. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass insgesamt 820 Koeffizienten ermittelt werden.
18. Verfahren nach einem der vorangehenden Ansprüche,
dadurch gekennzeichnet,
dass Koeffizientengruppen in verschiedenen RAM-Speicherbänken eines mehrere RAM Speicherbänke
aufweisenden Speichers gespeichert werden.
19. Kommunikationseinrichtung mit einem Sprachsignalkodierer, insbesondere Mobiltelefon,
dadurch gekennzeichnet,
dass es ein Betriebssystem mit einem Verfahren nach einem der Ansprüche 1 bis 18 aufweist.