PatentDe  


Dokumentenidentifikation DE69904764T2 02.10.2003
EP-Veröffentlichungsnummer 0936598
Titel Verfahren und Vorrichtung zur Mustererkennung
Anmelder Canon K.K., Tokio/Tokyo, JP
Erfinder Keiller, Robert A., Guildford, Surrey GU2 5YJ, GB;
Tzirkel-Hancock, Eli, Guildford, Surrey GU2 5YJ, GB;
Seward, Julian Richard, Guildford, Surrey GU2 5YJ, GB
Vertreter Tiedtke, Bühling, Kinne & Partner GbR, 80336 München
DE-Aktenzeichen 69904764
Vertragsstaaten DE, FR, GB, IT
Sprache des Dokument EN
EP-Anmeldetag 10.02.1999
EP-Aktenzeichen 993009794
EP-Offenlegungsdatum 18.08.1999
EP date of grant 08.01.2003
Veröffentlichungstag im Patentblatt 02.10.2003
IPC-Hauptklasse G10L 15/12
IPC-Nebenklasse F16B 2/22   

Beschreibung[de]

Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum Inübereinstimmungbringen von Mustern. Die Erfindung hat insbesondere, obwohl nicht ausschließlich, Relevanz hinsichtlich der Einstellung eines bei einer Technik zum Inübereinstimmungbringen von Mustern bei dynamischer Programmierung verwendeten Ausästungsschwellenwerts. In einem beispielhaften Ausführungsbeispiel wird die Technik zum Inübereinstimmungbringen bei dynamischer Programmierung in einem Spracherkennungssystem verwendet.

Spracherkennung ist ein Prozess, durch welchen eine unbekannte Aussprache von Sprache identifiziert wird. Es gibt verschiedene unterschiedliche Arten von Spracherkennungssystemen, die derzeit verfügbar sind, welche auf verschiedene Weisen kategorisiert werden können. Zum Beispiel sind manche Systeme sprecherabhängig, wohingegen andere sprecherunabhängig sind. Manche Systeme arbeiten mit einem großen Wortvokabular (> 10.000 Wörter), während andere nur mit einem Vokabular begrenzter Größe (< 1000 Wörter) arbeiten. Manche Systeme können nur isolierte Wörter erkennen, wohingegen andere Sätze erkennen können, die eine Reihe von verbundenen Wörtern umfassen.

Bei einem System mit beschränktem Vokabular wird die Spracherkennung dadurch durchgeführt, dass Merkmale einer unbekannten Aussprache mit Merkmalen von bekannten Wörtern, die in einer Datenbank gespeichert sind, verglichen werden. Die Merkmale der bekannten Wörter werden während einer Trainingssitzung ermittelt, in welcher eines oder mehrere Beispiele der bekannten Wörter dazu verwendet werden, für diese Referenzmuster zu erzeugen.

Um die unbekannte Aussprache zu erkennen, extrahiert das Spracherkennungssystem ein Muster (oder Merkmale) aus der Aussprache und vergleicht diese mit jedem in einer Datenbank gespeicherten Referenzmuster. Ein Weg des Vergleichens des für die zugeführte Aussprache repräsentativen Musters mit den Referenzmustern besteht darin, eine Technik der Übereinstimmung mit dynamischer Programmierung zu verwenden, welche eine optimale Zeitausrichtung zwischen jedem der Referenzmuster und dem aus der unbekannten Aussprache extrahierten Muster bereitstellt. Dies wird dadurch erreicht, dass die Zeitachse eines Musters lokal verkürzt oder erweitert wird, bis eine optimale Übereinstimmung zwischen den Paaren von Mustern vorhanden ist. Das Referenzmuster oder die Sequenz von Referenzmustern, die die beste Übereinstimmung bereitstellen, identifiziert bzw. identifizieren das Wort oder Wörter, die am wahrscheinlichsten der zugeführten Aussprache entsprechen.

Ein Problem bei der Technik des Inübereinstimmungbringens mit dynamischer Programmierung besteht darin, dass sie rechnerisch aufwendig ist, da sie die Bestimmung von vielen möglichen Übereinstimmungen zwischen der eintreffenden Aussprache und jedem Referenzmodell involviert.

Während des Prozesses des Inübereinstimmungbringens wird jeder möglichen Übereinstimmung ein Trefferwert gegeben, welcher von der Nähe der Übereinstimmung abhängig ist. Ein Verfahren, welches zum Beschränken der Menge der bei der Technik des Inübereinstimmungbringens mit dynamischer Programmierung involvierten Berechnungen verwendet wird, besteht darin, die Verarbeitung von schlecht treffenden Übereinstimmungen zu beenden. Im Stand der Spracherkennung ist diese Technik als Ausästung (Pruning) bekannt. Es besteht jedoch ein Problem bei der Verwendung der Ausästungstechnik darin, dass sich die Anzahl von möglichen Übereinstimmungen beträchtlich ändert, und dass dann, wenn nur eine feste Speichermenge verfügbar ist, ein Speicherüberlauf auftreten kann.

In Kohda: "A Study of Modifying Prunding Strategies for DP Beam Search at a Preset Input Frame", Systems and Computers in Japan, 24(1993), Bd. 3, Seiten 98-110, wird dies durch Übernehmen eines kleineren Ausästungsschwellenwerts ausgehend von einem bestimmten Rahmen der unbekannten Aussprache gelöst.

Die EP-A-0525640 (Fujitsu Limited) löst dieses Problem durch Verändern des Schwellenwerts, um zu gewährleisten, dass die Anzahl von möglichen Übereinstimmungen, die zu jedem Zeitpunkt verarbeitet werden, zwischen einer gegebenen kleinsten und größten Anzahl liegt. Insbesondere wird der Ausästungsschwellenwert in Abhängigkeit von einer vorhergesagten Anzahl von möglichen Übereinstimmungen, die zum nächsten Zeitpunkt zu verarbeiten sein werden, variiert wird. Die vorhergesagte Anzahl wird aus einer linearen Extrapolation der Anzahl von möglichen Übereinstimmungen, welche zu einem gegenwärtigen Zeitpunkt verarbeitet wurden, und der Anzahl von möglichen Übereinstimmungen, welche zu einem vorangehenden Zeitpunkt verarbeitet wurden, abgeleitet. Der in der EP-A-0525640 verwendete Prozess gewährleistet, dass die tatsächliche Anzahl von möglichen Übereinstimmungen zu jedem Zeitpunkt zwischen der größten und der kleinsten Anzahl liegt, in dem die möglichen Übereinstimmungen für einen gegebenen Schwellenwert gezählt und der Schwellenwert eingestellt wird, bis die Bedingung erfüllt ist.

Die EP-A-0789348 offenbart ein ähnliches System zum Einstellen des Ausästungsschwellenwerts, mit der Ausnahme, dass anstelle des Abschätzens der Anzahl von möglichen Übereinstimmungen, die zum nächsten Zeitpunkt verarbeitet werden, das offenbarte System die Beschränkungen der dynamischen Programmierung verwendet, um die Pfade, welche an dem gegenwärtigen Zeitpunkt enden, zu dem nächsten Zeitpunkt fortzupflanzen, und zählt die Anzahl von dynamischen Programmierpfaden, welche zu dem nächsten Zeitpunkt fortgepflanzt worden sind und welche nicht verworfen worden sind.

Die vorliegende Erfindung zielt auf eine effizientere Ausästungstechnik ab, welche dahingehend wirkungsvoll ist, dass die Anzahl von möglichen Übereinstimmungen, welche fortgepflanzt werden, reduziert wird, während die Genauigkeit des Übereinstimmungsprozesses beibehalten wird.

Gemäß einem Aspekt stellt die Erfindung ein Verfahren bereit zum Inübereinstimmungbringen einer ersten Sequenz von Mustern, die ein erstes Signal repräsentiert, mit einer zweiten Sequenz von Mustern, die ein zweites Signal repräsentiert, umfassend die Schritte:

Inübereinstimmungbringen des ersten Signals mit dem zweiten Signal unter Verwendung eines Inübereinstimmungsprozesses, welcher jedes erste Signalmuster in Sequenz verarbeitet und welcher eine Vielzahl von Pfaden unter Verwendung vorbestimmter Pfadverfolgungsbeschränkungen verfolgt, wobei jeder Pfad eine mögliche Übereinstimmung zwischen einer Sequenz von zweien Signalmustern und einer Sequenz von ersten Signalmustern, die an dem gegenwärtig verarbeiteten ersten Signalmuster enden, repräsentiert, und wobei jeder Pfad einen zugeordneten kumulativen Wert hat, der die Nähe der Übereinstimmung repräsentiert; und Steuern des Inübereinstimmungbringungsschritts durch Vergleichen der kumulativen Werte mit einem Ausästungswert während der Verarbeitung jedes ersten Signalmusters und Verwerfen von Pfaden in Abhängigkeit von dem Ergebnis des Vergleichsschritts; wobei eine Anzahl verschiedener Ausästungswerte in dem Steuerschritt während der Verarbeitung eines ersten Signalmusters verwendet werden, und wobei der für einen gegebenen Pfad während der Verarbeitung des gegenwärtigen ersten Signalmusters von der Position, innerhalb der das zweite Signal repräsentierenden Sequenz von Mustern, des zweiten Signalmusters abhängt, welches an dem Ende des gegebenen Pfads für das gegenwärtig verarbeitete erste Signalmuster liegt.

Ferner ist die Erfindung wie in den Patentansprüchen 18, 19, 36 und 37 angegeben.

Durch Verwenden unterschiedlicher Ausästungsschwellenwerte auf diese Weise kann die Anzahl von Pfaden, die sich an jedem Zeitpunkt fortpflanzen, reduziert werden, während die Genauigkeit des Systems beibehalten wird. Dies ist insbesondere deshalb so, weil beobachtet wurde, dass die Differenz zwischen dem besten Pfad und dem lokalen Minimum dazu neigt, am größten zu sein, wenn der beste Pfad die ersten wenigen Muster des zweiten Signals quert.

Bevorzugt wird eine weiche Ausästungstechnik durchgeführt, wodurch manche Pfade, welche einen kumulativen Wert haben, welcher schlechter ist als der entsprechende Ausästungswert, nicht verworfen werden. Dies hat den Vorteil, dass dann, wenn der beste Pfad ausgeästet wird, benachbarte Pfade, welche Trefferwerte ähnlich dem des besten Pfades haben, gehalten und nicht ausgeästet werden. Daher werden auch dann, wenn der beste Pfad ausgeästet wird, Pfade, die ausreichend nahe zu dem besten Pfad liegen, beibehalten, so dass die Ausästung nicht in Erkennungsfehlern resultiert.

Nachstehend werden verschiedene Ausführungsbeispiele der Erfindung lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:

Fig. 1 eine vereinfachte Ansicht eines Computers, welcher so programmiert werden kann, dass er ein Ausführungsbeispiel der vorliegenden Erfindung durchführt;

Fig. 2 eine vereinfachte Übersicht eines Spracherkennungssystems;

Fig. 3 eine vereinfachte Darstellung eines Sprachmodells, das während des Trainingsprozesses für eine Anzahl von beispielhaften zugeführten Sätzen erzeugt wurde;

Fig. 4 eine vereinfachte Darstellung der Verarbeitung, die durchgeführt wird, wenn ein zugeführtes Wort mit einem Wortmodell unter Verwendung einer Technik der dynamischen Verarbeitung ausgerichtet wird;

Fig. 5 eine vereinfachte Darstellung einer zugelassenen Zustandsübergangssequenz von einem Eingangsrahmen zu dem nächsten;

Fig. 6 eine alternative Darstellung der in Fig. 5 gezeigten zugelassenen Zustandsübergangssequenz;

Fig. 7 ein Flussdiagramm, welches die Implementierung der in dem ersten Ausführungsbeispiel verwendeten Ausrichtungstechnik bei dynamischer Programmierung darstellt;

Fig. 8 ein schematische Darstellung eines Wortmodells und einer Gegenwärtig-Aktivliste und einer dieser zugeordneten Neu- Aktivliste;

Fig. 9 ein vereinfachtes Diagramm, welches eine Anzahl von beispielhaften Pfaden der dynamischen Programmierung darstellt, die sich innerhalb eines Referenzmodells fortpflanzen;

Fig. 10 ein Flussdiagramm, welches die in einem in Fig. 7 gezeigten Schritt S47 involvierten Schritte darstellt;

Fig. 11 ein vereinfachtes Diagramm, welches die Art und Weise darstellt, auf welche zwei der in Fig. 9 gezeigten Pfade der dynamischen Programmierung sich von dem gegenwärtigen zugeführten Rahmen zu dem nächsten fortpflanzen können;

Fig. 12a ein vereinfachtes Diagramm, das die Inhalte der in Fig. 8 gezeigten Neu-Aktivliste darstellt, nachdem der erste Zustand in der Gegenwärtig-Aktivliste für das in Fig. 8 gezeigte Wortmodell verarbeitet worden ist;

Fig. 12b ein vereinfachtes Diagramm, das die Inhalte der in Fig. 8 gezeigten Neu-Aktivliste darstellt, nachdem der zweite Zustand in der Gegenwärtig-Aktivliste für das in Fig. 8 gezeigte Wortmodell verarbeitet worden ist;

Fig. 13a bis 13e Flussdiagramme, welche die in einem in Fig. 10 gezeigten Schritt S77 durchgeführte Verarbeitung darstellen;

Fig. 14 ein Flussdiagramm, welches die in einem in Fig. 7 gezeigten Schritt S51 durchgeführte Verarbeitung darstellt;

Fig. 15 eine vereinfachte Darstellung der für einen beispielhaften Knoten N während der in Fig. 14 dargestellten Verarbeitung durchgeführten Verarbeitung;

Fig. 16 ein Flussdiagramm, welches die in einem in Fig. 7 gezeigten Schritt S57 involvierten Schritte darstellt;

Fig. 17 ein vereinfachtes Diagramm, das die Eingangszustände des in Fig. 8 gezeigten Wortmodells darstellt;

Fig. 18 ein Flussdiagramm, welches die in einem in Fig. 7 gezeigten Schritt S65 durchgeführten Schritte darstellt;

Fig. 19 ein Diagramm, welches die für die Zustände jedes Worts verwendeten verschiedenen Ausästungsschwellenwerte darstellt; und

Fig. 20 ein Diagramm, welches eine bevorzugte Variation der für die Zustände jedes Worts verwendeten Ausästungsschwellenwerte darstellt.

Ausführungsbeispiele der vorliegenden Erfindung können als Computerhardware implementiert werden, jedoch ist das zu beschreibende Ausführungsbeispiel als Software implementiert, welche in Verbindung mit Verarbeitungshardware wie beispielsweise ein Personalcomputer, einer Arbeitsstation, einem Fotokopiergerät, einem Telefaxgerät oder dergleichen in Ablauf gebracht wird.

Fig. 1 zeigt einen Personalcomputer (PC) 1, welcher so programmiert ist, dass er ein Ausführungsbeispiel der vorliegenden Erfindung durchführt. Eine Tastatur 3, eine Zeigeeinrichtung 5, ein Mikrofon 7 und eine Telefonleitung 9 sind über eine Schnittstelle 11 mit dem PC 1 verbunden. Die Tastatur 3 und die Zeigeeinrichtung 5 ermöglichen die Steuerung des Systems durch einen Benutzer. Das Mikrofon 7 wandelt ein akustisches Sprachsignal des Benutzers in ein äquivalentes elektrisches Signal um und führt dieses zur Verarbeitung dem PC 1 zu. In diesem Ausführungsbeispiel werden die Anfangs- und Endpunkte der zu verarbeitenden zugeführten Sprache durch den Benutzer identifiziert, der für die Dauer der zugeführten Aussprache die Leertaste auf der Tastatur 3 niederdrückt. Auf diese Art und Weise verarbeitet das System nur die zu identifizierende zugeführte Aussprache. Ein internes Modem und eine Sprachempfangsschaltung (nicht gezeigt) können mit der Telefonleitung 9 verbunden sein, so dass der PC 1 mit zum Beispiel einem entfernten Computer oder mit einem entfernten Benutzer kommunizieren kann.

Die Programmanweisungen, welche den PC 1 veranlassen, in Übereinstimmung mit der vorliegenden Erfindung zu arbeiten, können zur Verwendung mit einem existierenden PC 1 auf einer Speichereinrichtung wie beispielsweise einer magnetischen Platte 13 oder durch das mit einem entfernten Computer kommunizierende interne Modem über die Telefonleitung 9 zugeführt werden.

Nachstehend wird der Betriebsablauf des kontinuierlichen Spracherkennungssystems mit beschränktem Vokabular gemäß diesem Ausführungsbeispiel unter Bezugnahme auf Fig. 2 beschrieben. Elektrische Signale, die zugeführte Sprache von zum Beispiel dem Mikrofon 7 repräsentieren, werden einem Präprozessor 15 zugeführt, welcher das zugeführte Sprachsignal in eine Sequenz von Parameterrahmen umwandelt, von denen jeder einen entsprechenden Zeitrahmen des zugeführten Sprachsignals repräsentiert. Die Parameter in jedem Parameterrahmen beinhalten typischer Weise cepstrale Koeffizienten und Leistungs-/- Energie-Koeffizienten, welche wichtige Informationscharakteristiken des zugeführten Sprachsignals bereitstellen. Die Sequenz von Parameterrahmen wird einem Erkennungsblock 17 zugeführt, indem die Sprache durch Vergleichen der zugeführten Sequenz von Parameterrahmen mit Referenzmodellen oder Wortmodellen 19 erkannt wird, wobei jedes Modell eine Sequenz von Parameterrahmen umfasst, die in derselben Art von Parametern ausgedrückt sind wie diejenigen der zu erkennenden zugeführten Sprache.

Ein Sprachmodell 21 und ein Rauschmodell 23 sind ebenfalls als Eingänge für den Erkennungsblock 17 bereitgestellt, um bei dem Erkennungsprozess zu helfen. Das Rauschmodell 23 repräsentiert Stille oder Hintergrundrauschen und umfasst in diesem Ausführungsbeispiel einen einzelnen Parameterrahmen desselben Typs wie derjenigen des zu erkennenden zugeführten Sprachsignals. Das Sprachmodell 21 wird dazu verwendet, die von dem Erkennungsblock 17 ausgegebene zugelassen Sequenz von Wörtern zu beschränken, um eine Entsprechung mit Sequenzen von den systembekannten Wörtern herzustellen. Die von dem Erkennungsblock 17 ausgegebene Wortsequenz kann dann zur Verwendung in zum Beispiel einem Textverarbeitungspaket übersetzt werden, oder kann als Bedienerbefehle verwendet werden, um die Aktionen des PCs 1 auszulösen, zu beenden oder zu modifizieren.

Eine detailliertere Beschreibung des Präprozessors 15, des Puffers 16, des Trainings des Systems, um die Wortmodelle 19, das Sprachmodell 21 und das Rauschmodell 23 zu erzeugen, der Aktualisierung des Sprachmodells dann, wenn neue Sätze hinzugefügt werden, und der Anpassung der Wortmodelle kann in der EP-A-0789349 entnommen werden. Nun wird eine detailliertere Erklärung der Referenzmodelle und des Erkennungsblocks 17 gegeben.

Referenzmodelle

Wie vorstehend erwähnt wurde, werden, um zu ermitteln, welche Worter durch die Ausgangssignale von dem Präprozessor 15 repräsentiert werden, diese Signale mit gespeicherten Referenzmodellen verglichen, welche die bereits dem System bekannten Wörter und die das System umgebende akustische Umgebung modellieren. Jedes einem bestimmen Wort zugeordnete Modell umfasst eine Sequenz von Parameterrahmen desselben Typs von Parameterrahmen, wie sie von dem vorstehend beschriebenen Präprozessor 15 ausgegeben werden.

In diesem Ausführungsbeispiel ist das Sprachmodell 21 ähnlich zu einem Bigram-Modell und umfasst ein Gitter von miteinander verbundenen Knoten, worin die Zwischenverbindungen die dem System bekannten repräsentieren. Es enthält jedoch keinerlei grammatische Regeln betreffend zum Beispiel die korrekte Verwendung der englischen Sprache. Es beschränkt auf der Grundlage der ihm bekannten Sätze nur, welche Wörter anderen folgen können. Fig. 3 stellt das Sprachmodell 21 dar, das abgeleitet wird, wenn die folgenden Sätze durch das System gelernt worden sind:

hole ein Bild - Satz 1

hole die Erde - Satz 2

hole den Fjord - Satz 3

hole die Karte - Satz 4

hole die Münze - Satz 5

speichere ein Bild - Satz 6

lade ein Bild - Satz 7

mache es kleiner - Satz 8

mache es größer - Satz 9

mache es heller - Satz 10

mache es röter - Satz 11

mache es gelber - Satz 12

mache es grüner - Satz 13

mache es stärker cyanfarbig - Satz 14

mache es stärker blauer - Satz 15

mache es mehr magentafarbig - Satz 16

verlassen - Satz 17

Wie in Fig. 3 gezeigt ist, gibt es einen Anfangsknoten N&sub0;, einen Endknoten Nn und acht Zwischenknoten N&sub1; bis N&sub8;. Für einen zu erkennenden zugeführten Satz muss das System einen Pfad von dem Anfangsknoten N&sub0; zu dem Endknoten Nn finden. Das System ist jedoch dahingehend vernünftig flexibel, dass dann, wenn es einmal trainiert ist und der Benutzer den Satz "mache kleiner" anstelle von "mache es kleiner", das System den zugeführten Satz noch immer als "mache es kleiner" interpretieren wird. Das System wird jedoch keinen Satz erkennen, der zugeführt wird, wenn dieser Satz dem System nicht bekannt ist, und zwar auch dann nicht, wenn die einzelnen Wörter in dem Satz bekannt sind, d. h. falls für das vorstehend gegebene Sprachmodell der Benutzer sagt: "speichere das Bild", das System diese Eingabe auch dann nicht erkennen wird, obwohl es die Wörter "speichere", "das" und "Bild" kennt.

Dynamische Programmierung (DP)

Um zwei Sequenzen von Parameterrahmen auf eine effektive Art und Weise auszurichten, muss der Ausrichtungsprozess in der Lage sein, die verschiedenen Geschwindigkeiten, mit welchem das Wort gesprochen wird, zu kompensieren, zum Beispiel dann, wenn das Wort alleine gesprochen wird und wenn das Wort in einen kontinuierlich gesprochenen Satz eingebettet ist. Der Prozess der Ausrichtung durch dynamische Programmierung (DP) ist ein Weg, welcher ein Wort auf eine Art und Weise mit einem anderen in Übereinstimmung bringen kann, welcher die op timale nicht-lineare Zeitskalen-Störung anwendet, um die beste Übereinstimmung an allen Punkten zu erreichen.

Nun wird eine Übersicht des DP-Übereinstimmungsprozesses unter Bezugnahme auf die Fig. 4 bis 6 gegeben. Fig. 4 zeigt entlang der Abszisse eine Sequenz von Parameterrahmen, die ein zugeführtes Wort repräsentieren, und entlang der Ordinate eine Sequenz von Parameterrahmen, die ein Wortmodell repräsentieren. Um den gesamten Unterschied zwischen dem Wortmodell und dem zugeführten Wort zu finden, ist es notwendig, die Summe aller Abstände zwischen den individuellen Paaren von Rahmen, entlang welchen Pfades auch immer, zwischen der unteren linken und der oberen rechten Ecke in Fig. 4 zu finden, die den kleinsten kumulativen Abstand ergibt. Diese Definition gewährleistet, dass entsprechende Rahmen ähnlicher Worte korrekt ausgerichtet sind. Ein Weg zu Berechnen dieses Gesamtabstandes besteht darin, alle möglichen Pfade zu berücksichtigen und den Wert von d(k, j) (dem Abstand zwischen dem Rahmen k und dem Rahmen j) für jeden Punkt entlang jedes einzelnen zu berücksichtigen. Der zwischen den beiden Wörtern gemessene Abstand wird dann als der für den kumulativen Abstand erhaltende niedrigste Wert herangezogen. Obwohl dieses Verfahren die korrekte Antwort ergibt, wird die Anzahl gültiger Pfade so groß, dass die Berechnung für jegliches praktische Spracherkennungssystem unmöglich ist.

Die dynamische Programmierung ist eine mathematische Technik, welche den kumulativen Abstand entlang des optimalen Pfads findet, ohne dass der Abstand entlang aller möglicher Pfade berechnet werden muss. Die Anzahl von Pfaden, entlang welchen der kumulative Abstand ermittelt wird, kann weiter reduziert werden, indem bestimmte Beschränkungen dem DP-Prozess auferlegt werden. Zum Beispiel kann angenommen werden, dass der optimale Pfad mit einer nicht rücklaufenden Schleife immer nach vorne verlaufen wird, da andernfalls eines der Wörter eine zeitlich umgekehrte Version des anderen sein wird. Eine andere Beschränkung, die dem DP-Prozess auferlegt werden kann, besteht darin, das maximale Ausmaß einer Zeitkompression-Zeitexpansion des zugeführten Worts relativ zu dem Referenzwort zu beschränken. Diese Beschränkung kann dadurch rea lisiert werden, dass die Anzahl von Rahmen, die in dem Übereinstimmungsprozess übersprungen oder wiederholt werden können, beschränkt wird. Zum Beispiel ist in Fig. 5 die Rahmensequenz derart beschränkt, dass dann, wenn der Rahmen fk mit dem Rahmen fjm übereinstimmt, der Rahmen fk+1 mit den Rahmen fjm, fj+1m, fj+2m oder fj+3m in Übereinstimmung gebracht werden kann. Daher erfordert dann, wenn der Parameterrahmen fk des zugeführten Worts und der Parameterrahmen fjm des Sprachmodells auf dem optimalen Pfad liegen, die vorstehend erwähnte Beschränkung, dass der unmittelbar vorangehende Punkt auf dem optimalen Pfad entweder (k-1, j), (k-1, j-1), (k-1, j-2) oder (k-1, j-3) sein muss, wie in Fig. 6 dargestellt ist.

Fig. 4 zeigt die "gültigen Pfade", welche sich bis zu dem Rahmen fk-1 fortpflanzen bzw. nachverfolgt werden, welche mögliche Übereinstimmungen zwischen dem zugeführten Wort und dem Wortmodell präsentieren. Wenn der Rahmen fk der Erkennungseinheit 17 zugeführt wird, hat jeder gültige Pfad den lokalen Abstand zwischen dem gegenwärtigen Rahmen fk und dem Rahmen des Wortmodells, das sich an dem Ende dieses gültigen Pfads addiert zu seinem kumulativen Abstand befindet. Falls sich eine Anzahl gültiger Pfade an dem selben Punkt treffen, dann wird der gültige Pfad mit dem niedrigsten kumulativen Abstand weiterverfolgt, und werden die anderen verworfen. Zum Beispiel treffen sich in Fig. 4 die Pfade A, B und C an einem Punkt (k, j), und wird der Pfad (A, B oder C) mit dem niedrigsten kumulativen Abstand weiterverfolgt, wohingegen die andere verworfen werden.

Falls daher D(k, j) der kumulative Abstand entlang eines gültigen Pfads ausgehend von dem Anfang des Worts zu dem Punkt (k, j) ist, d. h.:

D(k, j) = d(x, y) (1)

Dann folgt den vorstehenden Beschränkungen, dass:

D(k, j) = d(k, j) + min[D(k-1, j), D(k-1, j-1), D(k-1, j-2),D(k-1, j-3) (2)

Mit den vorstehenden Beschränkungen muss der Wert von D(0, 0) gleich d(0, 0), d(1, 0), d(2, 0) oder d(3, 0) sein, da alle möglichen Pfade an einem dieser Punkte beginnen müssen. Daher kann ausgehend von einem der Ausgangspunkte der Wert von D(k, j) über eine rekursive Verarbeitungsroutine ermittelt werden. Wenn die Routine das Ende der in Übereinstimmung zu bringenden Wörter erreicht, repräsentiert der kleinste kumulative Abstand, der durch den DP-Prozess berechnet wurde, den Trefferwert für den besten Weg zum Inübereinstimmungbringen dieser beiden Wörter. Falls die zu erkennende zugeführte Aussprache eine Sequenz von Wörtern umfasst, dann müssen Rückwärtszeiger verwendet werden, um die Richtung anzuzeigen, die genommen wurde, so dass es dann, nachdem der DP-Prozess das Ende des optimalen Pfads identifiziert, es möglich ist, die zugeführte Aussprache durch Rückverfolgen über die Rückwärtszeiger zu erkennen.

Obwohl der vorstehend beschriebene DP-Prozess verglichen mit der erschöpfenden Durchsuchung aller möglichen Pfade eine große Einsparung von Rechenleistung bereitstellt, kann die verbleibende Berechnung wesentlich sein, insbesondere dann, wenn jedes eintreffend Wort mit einer großen Anzahl von Wortmodellen zur Inübereinstimmungbringung zu vergleichen ist. Daher ist jede mögliche Einsparung bei Berechnungen, welche die Genauigkeit des Erkennungsergebnisses nicht signifikant beeinträchtigt, wünschenswert. Eine mögliche Einsparung von Rechenleistung besteht darin, Pfade zu verhindern, die dann, wenn sie sich weiter fortpflanzen, schlechte Trefferwerte aufweisen. Dieses ist manchmal als Ausästen bekannt, weil die wachsenden Pfade ähnlich Zweigen eines Baumes sind. Durch Ausästen der Pfade auf diese Art und Weise wird nur ein enges Band von möglichen Pfaden berücksichtigt, welche auf beiden Seiten des besten Pfades liegen. Hierbei wird in Kauf genommen, dass dort. Wort ein solches Ausästen verwendet wird, es nicht länger garantiert werden kann, dass der Prozess der dynamischen Programmierung den optimalen Pfad finden wird. Jedoch wird mit einem Ausästungsschwellenwert, der das mittlere Ausmaß der Berechnung um zum Beispiel einem Faktor von 5 bis 10 verringert, der richtige Pfad nahezu immer erhalten, wo die Worte einigermaßen ähnlich sind.

In diesem Ausführungsbeispiel verwendet der in Fig. 2 gezeigte Erkennungsblock einen Prozess zum Inübereinstimmungbringen mittels dynamischer Programmierung ähnlich zu dem vorstehend beschriebenen, um die Sequenz von Parameterrahmen für die zu erkennende Aussprache mit den Wortmodellen 19 und den Rauschmodellen 23 in Übereinstimmung zu bringen.

Erkennungssuche

Ein Merkmal des Spracherkennungssystems gemäß diesem Ausführungsbeispiel ist die Art und Weise, auf welche der Prozess der dynamischen Programmierung implementiert ist. Insbesondere macht dieses Ausführungsbeispiel Gebrauch von der Tatsache, dass die in der vorstehenden Gleichung (2) durchgeführte Minimumberechnung, d. h.

min[D(k-1, j), D(k-1, j-1), D(k-1, j-2), D(k-2, j-3] (3)

nicht von dem verarbeiteten gegenwärtigen Rahmen fk abhängt. Daher kann dieser Teil der Gleichung (2) berechnet werden, wenn der vorangehende Rahmen fk-1 verarbeitet wird.

Nun wird unter Bezugnahme auf die Fig. 7 bis 17 die Art und Weise erklärt, auf welche der Prozess der dynamischen Programmierung implementiert ist. Um eine Verwirrung zwischen de Rahmen der Wortmodelle und den Rahmen der zugeführten zu erkennenden Aussprache zu vermeiden, werden die Rahmen der Wortmodelle nachstehend als Zustände bezeichnet.

Fig. 7 ist ein Flussdiagramm, das die in dem Erkennungsblock 17 durchgeführte Verarbeitung dann darstellt, wenn eine zugeführte Aussprache zu erkennen ist. Das System verarbeitet die Parameterrahmen der zugeführten Aussprache in der Sequenz, in der sie durch den Präprozessor 15 erzeugt werde. Zu diesem Zweck ist eine Rahmenzählervariable k bereitgestellt, welche in Schritt S41 auf Null initialisiert wird und nachfolgend in Schritt S61 inkrementiert wird, nachdem jeder Rahmen verarbeitet ist. Jeder verarbeitete Rahmen wird in Schritt S47 da zu verwendet, die kumulativen Abstände der verbleibenden gültigen Pfade innerhalb jedes Wortmodells zu aktualisieren. Zu diesem Zweck ist ein Wortzähler w bereitgestellt und wird in Schritt S43 initialisiert und in Schritt S49 nach Schritt S47 inkrementiert. In Schritt S45 prüft das System, um zu ermitteln, ob alle Wortmodelle unter Verwendung des gegenwärtigen Rahmens verarbeitet worden sind, d. h. es prüft, um nachzuschauen, ob der Wortzähler w niedriger ist als die Anzahl von dem System bekannten Wörtern nw.

Nachdem jedes Wortmodell unter Verwendung des gegenwärtigen Rahmens fk verarbeitet worden ist, schreitet die Verarbeitung zu Schritt S51 fort, indem die Knoten des in Fig. 3 gezeigten Sprachmodells 21 unter Verwendung des gegenwärtigen Rahmens verarbeitet werden. Die in Schritt S51 durchgeführte Verarbeitung berücksichtigt die Situation, in der der gegenwärtige Parameterrahmen am Anfang oder am Ende der zugeführten Sprache oder zwischen zugelassenen Sequenzen von Wortern in der zugeführten Sprachenstille entspricht. Diese Verarbeitung gewährleistet darüber hinaus, dass die gültigen Pfade nur über zugelassene Sequenzen von Wörtern nachverfolgt werden können.

Nachdem die Knoten in Schritt S51 verarbeitet worden sind, werden in Schritt S57 die kumulativen Abstände für die gültigen Pfade, welche an einem der Anfänge oder "Eingangszustände" jedes Wortmodells enden, aktualisiert. Diese Verarbeitung dient dazu, mit der Situation zurechtzukommen, in der der nächste Parameterrahmen fk+1 mit dem Beginn eines Wortmodells übereinstimmt, wenn der gegenwärtige Parameterrahmen fk mit dem Ende eines anderen Wortmodells übereinstimmt. Um dies zu erreichen, wird in Schritt S53 der Wortzähler w neu initialisiert, und prüft das System in Schritt S55, ob alle Wortmodelle verarbeitet worden sind. Das System aktualisiert dann in Schritt S57 die kumulativen Abstände für die Eingangszustände des gegenwärtigen Wortmodells, und der Wortzähler w wird in Schritt S59 inkrementiert. Die Verarbeitung kehrt dann zu Schritt S55 zurück.

Nachdem alle Wortmodelle für den gegenwärtigen Parameterrahmen fk verarbeitet worden sind, wird in Schritt S61 die Para meterrahmen-Zählervariable k inkrementiert. Das System ermittelt dann in Schritt S63, ob es irgendwelche weiteren Parameter der zugeführten zu verarbeitenden Aussprache gibt. Dies erfolgt dadurch, dass k mit der Systemgrenze (Grenze) an dem Ende eines Sprachidentifikators (EOS) in Schritt S63 verglichen wird. Die Systemgrenze wird durch die Größe eines (nicht gezeigten) Puffers definiert, der dazu verwendet wird, die Sprachbeispiele zu speichern, bevor diese durch den Präprozessor 15 verarbeitet werden.

Falls alle Parameterrahmen der eintreffenden Aussprache verarbeitet worden sind, dann ist der DP-Prozess abgeschlossen und wird ein Rückverfolgungsalgorithmus verwendet, um den optimalen Pfad und damit das Erkennungsergebnis zu ermitteln. Falls andererseits das System in Schritt S63 ermittelt, das weitere zu verarbeitende Parameterrahmen vorhanden sind, dann stellt das System in Schritt S65 den Ausästungsschwellenwert ein und kehrt die Verarbeitung zu Schritt S43 zurück. Der Ausästungsschwellenwert Th wird in Schritt S65 eingestellt, um die Anzahl von gültigen Pfaden zu begrenzen, die in den Schritten S47, S51 und S57 verarbeitet werden würden, wenn der nächste zugeführte Rahmen verarbeitet wird.

Falls alle Parameterrahmen der eintreffenden Aussprache verarbeitet worden sind, dann ist der DP-Prozess abgeschlossen und wird ein Rückverfolgungsalgorithmus verwendet, um den optimalen Pfad und dadurch das Erkennungsergebnis zu ermitteln. Falls andererseits das System in Schritt S63 ermittelt, dass weitere Parameterrahmen zu verarbeiten sind, dann stellt das System in Schritt S65 den Ausästungsschwellenwert ein und kehrt die Verarbeitung zu Schritt S43 zurück. Der Ausästungsschwellenwert Th wird in Schritt S65 eingestellt, um die Anzahl gültiger Pfade zu begrenzen, die in den Schritten S47, S51 und S57 verarbeitet werden, wenn der nächste zugeführte Rahmen zu verarbeiten ist.

Nachstehend wird die in Schritt S47 von Fig. 7 durchgeführte Verarbeitung genauer unter Bezugnahme auf die Fig. 8 bis 13 für ein bestimmtes Beispiel eines Wortmodells beschrieben. Insbesondere zeigt Fig. 8 ein beispielhaftes Wortmodell 201, welches eine Sequenz von Zuständen S&sub0; bis S&sub8; umfasst, welches während einer Trainingssitzung geleitet worden ist, einen Ausgangszustand SD und einen Wächter- bzw. Sentinel-Zustand SSEN an dem Ende des Wortmodells 201. Der Zweck des Ausgangszustands und des Sentinel-Zustands wird später beschrieben.

Jedem Zustand S des Wortmodells 201 ist ein kumulativer Abstandstrefferwert D[S] zugewiesen, welcher den kumulativen Abstand eines gültigen Pfads speichert, der in diesem Zustand endet. In diesem Ausführungsbeispiel ist dem Wortmodell 201 darüber hinaus eine Gegenwärtig-Aktivliste 203 für den gegenwärtigen Rahmen fk zugewiesen, welcher in abscheidender Reihenfolge die Zustände in dem Wortmodell 201 auflistet, die sich an dem Ende eines gültigen Pfads für den gegenwärtigen Rahmen fk befindet. Daher wird jeder Zustand in der Gegenwärtig-Aktivliste 203 den kumulativen Abstand des gültigen Pfads speichern, der an diesem Zustand endet. In diesem Ausführungsbeispiel ist dem Wortmodell darüber hinaus eine Gegenwärtig-Aktivliste 203 für den gegenwärtigen Rahmen fk zugeordnet, welche in absteigender Reihenfolge die Zustände in dem Wortmodell 201 auflistet, die sich an dem Ende eines gültigen Pfads für den gegenwärtigen Rahmen fk befinden. Daher speichert jeder Zustand in der Gegenwärtig-Aktivliste 203 den kumulativen Abstand des gültigen Pfads, der an diesem Zustand endet. In diesem bestimmten Beispiel listet die Gegenwärtig- Aktivliste 203 für den gegenwärtigen Rahmen fk Zustände S&sub7;, S&sub5;, S&sub4;, S&sub3;, S&sub2;, S&sub1; und SSEN. Die Zustände in der Gegenwärtig- Aktivliste 203 werden als aktive Zustände bezeichnet. In diesem Ausführungsbeispiel ist dem Wortmodell 201 darüber hinaus eine Neu-Aktivliste 205 zugeordnet, welcher während der in Schritt S47 durchgeführten Verarbeitung vervollständigt wird und welche die Zustände in dem Wortmodell 201 auflistet, die sich an dem Ende eines gültigen Pfads für den nächsten Rahmen fk+1 befinden werden.

Nun wird die Bedeutung der Gegenwärtig-Aktivliste 203 und der Neu-Aktivliste 205 unter Bezugnahme auf Fig. 9 erklärt. Insbesondere zeigt Fig. 9 sechs gültige Pfade p1 bis p6, welche sechs mögliche Übereinstimmungen zwischen dem ankommenden Wort und dem Wortmodell 201 bis zu dem gegenwärtigen Rahmen fk repräsentieren. Wie gezeigt ist, enden die sechs gültigen Pfade p1 bis p6 an Zuständen S&sub7;, S&sub5;, S&sub4;, S&sub3;, S&sub2; bzw. S&sub1; des Wortmodells 201, und es sind diese Endzustände der gültigen Pfade, die in absteigender Reihenfolge in der Gegenwärtig- Aktivliste 203 (zusammen mit dem Sentinel-Zustand SSEN) gelistet werden. Um die Zustände zu ermitteln, die sich in er Neu-Aktivliste 205 befinden sollen, d. h. um die für den nächsten zugeführten Rahmen fk+1 verbleibenden Pfade zu ermitteln, müssen die Zustandsübergänge berücksichtigt werden, die von einem zugeführten Parameterrahmen zu dem nächsten zugelassen sind, d. h. die dem Prozess der Inübereinstimmungbringung durch dynamische Programmierung auferlegt sind.

Das maximale Ausmaß der Zeitkompression der Referenzmodelle relativ zu der ankommenden Aussprache wird durch die maximale Anzahl von Zuständen bestimmt, die zwischen benachbarten Rahmen der ankommenden Aussprache übersprungen werden können. In diesem Ausführungsbeispiel ist dies auf zwei festgelegt, d. h. der DP-Prozess folgt dem in Fig. 5 gezeigten Zustandübergangsdiagramm. Ein maximales Ausmaß der Zeitexpansion der Referenzmodelle relativ zu der ankommenden Aussprache kann dadurch definiert werden, dass eine maximale Anzahl aufeinanderfolgender ankommender Rahmen zugelassen wird, die mit demselben Zustand in Übereinstimmung zu bringen sind. Dies erfordert jedoch eine Variable zum Zählen der Anzahl von Wiederholungen und einen Test zum Prüfen, ob die Anzahl von Wiederholungen gleich dem zugelassenen Maximum ist. Die Erfinder haben ermittelt, dass es sich als genauso wirkungsvoll erweist und weniger Zeit braucht, wenn einfach jede Wiederholung bestraft wird. Daher kann zum Beispiel mit den vorstehenden Beschränkungen der Pfad p5 sich entlang einem oder allen der durchbrochen dargestellten Pfade 207, die in Fig. 9 gezeigt sind, fortpflanzen. Die anderen in Fig. 9 gezeigten Pfade p1 bis p4 und p6 werden sich auf eine ähnliche Art und Weise fortpflanzen, und es werden die Zustände, wohin sich die Pfade fortpflanzen, in absteigender Reihenfolge der Neu- Aktivliste 205 hinzugefügt. Falls sich zwei oder mehr Pfade an demselben Punkt treffen, dann wird der Pfad mit dem kleinsten kumulativen Abstand beibehalten und werden die anderen verworfen. Ferner wird dann, wenn der kumulativen Abstand ei nes Pfads größer ist als der Ausästungsschwellenwert, dann wird auch dieser Pfad verworfen. Auf diese Art und Weise werden neue Pfade kontinuierlich erzeugt, während andere verworfen werden. Das Ziel des Ausästungsschwellenwerts, besteht darin, die Anzahl von gültigen Pfaden, die für jeden zugeführten Parameterrahmen verarbeitet werden, zu begrenzen, wodurch eine Grenze für das Ausmaß von Zeit und Speicher, die für den Algorithmus erforderlich sind, gesetzt wird.

Fig. 10 zeigt genauer die in Schritt S47 von Fig. 7 durchgeführten Verarbeitungsschritte. Im einzelnen wird in Schritt S71 ein Zeiger NA initialisiert, und wird der in dem Ausgangszustand, d. h. D[SD] des Wortmodells 201 gespeicherte kumulative Abstand auf einen sehr großen Wert SEHR GROSS festgelegt. Der Zeiger NA wird dazu verwendet, auch den Zustand zu zeigen, der unmittelbar dem letzten aktiven Zustand vorangeht, der in der Neu-Aktivliste 205 platziert worden ist. Wie dem Fachmann klar ist, wird daher der Zeiger NA auf den Zustand zeigen, welcher wahrscheinlich der nächste der Neu- Aktivliste hinzuzufügende Zustand sein wird. Zu Beginn befinden sich keine aktiven Zustände in der Neu-Aktivliste 205, so das der Zeiger NA so festgelegt ist, dass er auf den Ausgangszustand SD zeigt. In Schritt S73 prüft das System, um zu ermitteln, ob es irgendwelche aktiven Zustände in der Gegenwärtig-Aktivliste 203 gibt. Mit anderen Worten wird eine Prüfung dahingehend durchgeführt, um zu ermitteln, ob es irgendwelche gültigen Pfade gibt, die in dem gegenwärtigen Wort für den gegenwärtigen Rahmen fk enden. In dem vorliegenden Beispiel gibt es sieben aktive Zustände (einschließlich des Sentinel-Zustands SSEN) in der Gegenwärtig-Aktivliste 203, und verarbeitet das System jeden reihum. Eine Zählervariable i ist bereitgestellt, welche dazu verwendet wird, die aktiven Zustände in der Gegenwärtig-Aktivliste 203 durchzuzählen, und welche in Schritt S75 auf Null gesetzt und in Schritt S79 inkrementiert wird, bis alle aktiven Zustände in der Gegenwärtig-Aktivliste 203 in Schritt S77 verarbeitet worden sind.

Nachdem einmal alle aktiven Zustände in der Gegenwärtig- Aktivliste 203 verarbeitet worden sind, schreitet die Verarbeitung zu Schritt S83 fort, indem die während der Verarbei tung in Schritt S77 erzeugte Neu-Aktivliste 205 dahingehend geändert wird, dass sie die Gegenwärtig-Aktivliste 203 für den nächsten gegenwärtigen Rahmen fk+1 der zugeführten zu verarbeitenden Aussprache ist. In der Praxis wird dies dadurch erreicht, dass die Zeiger, die zum Zeigen auf die beiden Aktivlisten verwendet werden, vertauscht werden. Die alte Gegenwärtig-Aktivliste wird dann während der Verarbeitung des nächsten zugeführten Rahmens fk+1 überschrieben. Schließlich wird in Schritt S85 der letzte Zustand, der aktiviert und auf die Neu-Aktivliste 205 (die den Sentinel-Zustand SSEN nicht beinhaltet) gesetzt worden war, angegeben durch den Zeiger LA, zur Verwendung in dem in Fig. 7 gezeigten Schritt S57 gespeichert, welcher nachstehend weiter beschrieben wird.

Nun wird eine Übersicht der in Schritt S77 durchgeführten Verarbeitung gegeben, indem als Beispiele die aktiven Zustände S&sub7; und S&sub5;, welche sich jeweils an den Enden der Pfade p1 und p2 befinden, wie in Fig. 9 gezeigt ist, herangezogen werden. Fig. 11 zeigt einen Teil der beiden gültigen Pfade p1 und p2, die an den Zuständen S&sub7; bzw. S&sub5; an dem gegenwärtigen Rahmen fk enden. Die durchbrochen dargestellten Linien in Fig. 7 zeigen die Wege, auf welchen sich jeder der beiden Pfade p1 und p2 an dem nächsten gegenwärtigen Rahmen fk+1 fortpflanzen kann. Wie durch durchbrochen dargestellte Linien 213 und 215 angegeben ist, ist es für den Pfad p1 möglich, sich an dem Rahmen fk+1 in ein anderes Wort zu erstrecken. Daher wird der kumulative Abstand des Pfads p1 (welcher in dem aktiven Zustand S&sub7; gespeichert ist) in den Ausgangszustand SD kopiert. Wie durch durchbrochen dargestellte Linien 217 und 219 angegeben ist, kann sich darüber hinaus der Pfad p1 zu dem Zustand S&sub8; bzw. dem Zustand S&sub7; fortpflanzen. Daher wird auch der kumulative Abstand des Pfads p1 in diese Zustände kopiert. Wie in Fig. 12a gezeigt ist, werden dann die Zustände S&sub8; und S&sub7; in absteigende Reihenfolge zu der Neu-Aktivliste 205 hinzugefügt (aber nicht der Ausgangszustand, welcher niemals tatsächlich mit den ankommenden Rahmen verglichen wird und nur dazu verwendet wird, um den kleinsten kumulativen Abstand aller der das Wort verlassenden Pfade zu speichern) wird der letzte aktive Zeiger LA so festgelegt, dass er auf den letzten hinzugefügten Zustand zeigt, d. h. den Zustand S&sub7;, und wird der nächste aktive Zeiger NA so festgelegt, dass er auf den Zustand S&sub6; zeigt.

Nachdem der Pfad p1 einmal verarbeitet worden ist, verarbeitet das System dann den Pfad p2. Wie durch durch durchbrochen dargestellte Linien 221, 223, 225 und 227 angegeben ist, kann sich der Pfad p2 jeweils zu dem Zustand S&sub8;, dem Zustand S&sub7;, dem Zustand S&sub6; und den Zustand S&sub5; fortpflanzen. Jedoch wird der kumulative Abstand für den Pfad p2 (welcher in dem aktiven Zustand S&sub5; gespeichert ist) nicht nur einfach in jeden dieser Zustände kopiert, da zwei der Zustände S&sub8; und S&sub7; in sich bereits einen kumulativen Abstand für den nächsten Rahmen fk+1 gespeichert haben. Für diese beiden Zustände wird ein Vergleich zwischen dem bereits in diesem gespeicherten kumulativen Abstand und dem den Pfad p2 zugeordneten kumulativen Abstand durchgeführt, und wird der kleinste davon in diese beiden Zustände kopiert. Mit anderen Worten ist der in S&sub8; und S&sub7; für die in Fig. 11 gezeigten Pfade nach der Verarbeitung des aktiven Zustands S&sub5; gespeicherte kumulative Abstand gegeben durch min(D[S&sub7;], D[S&sub5;]). Andererseits kann der in dem aktiven Zustand S&sub5; gespeicherte kumulative Abstand direkt in den Zustand S&sub6; kopiert werden, da in diesem ein kumulativer Abstand für den nächsten Rahmen fk+1 vorangehend noch nicht gespeichert wurde. Wie in Fig. 12b gezeigt ist, werden die beiden Zustände S&sub6; und S&sub5; dann zu der Neu-Aktivliste 205 hinzugefügt, wird der letzte aktive Zeiger LA so festgelegt, dass er auf den Zustand S&sub5; zeigt, und wird der nächste aktive Zeiger NA so festgelegt, dass er auf den Zustand S&sub4; zeigt. Die verbleibenden aktiven Zustände in der Gegenwärtig-Aktivliste 203 werden mit Ausnahme für den Sentinel-Zustand SSEN auf identische Art und Weise verarbeitet. Wenn das System identifiziert, dass der nächste zu verarbeitende Zustand der Sentinel-Zustand ist, fügt es den Sentinel-Zustand SSEN zu der Neu-Aktivliste 205 hinzu, und schreitet dann die Verarbeitung zu dem in Fig. 10 gezeigten Schritt S83 fort. Der Vorteil des Verwendens des Sentinel-Zustands SSEN zum Identifizieren des Endes der Gegenwärtig-Aktivliste wird später beschrieben. Wie der nachstehend gegebenen detaillierteren Beschreibung von Schritt S77 entnehmbar ist, werden der letzte aktive Zeiger LA und der nächste aktive Zeiger NA bereitgestellt, so dass das System nicht in die Neu-Aktivliste 205 schauen muss, um diejenigen Zustände, welche einen Vergleich erfordern, und diejenigen, die dies nicht tun, zu identifizieren. Im einzelnen ist dann, wenn sich der Zustand hinter dem durch den nächsten aktiven Zeiger NA angegebenen Zustand befindet, ein Vergleich erforderlich, während andernfalls der kumulative Abstand einfach in den Zustand kopiert werden kann.

Falls S der nächste zu verarbeitende aktive Zustand ist, dann gibt es für die in diesem Ausführungsbeispiel der dynamischen Programmierung auferlegten Beschränkungen vier verschiedenen Situationen, welche in bezug auf den nächsten aktiven Zeiger berücksichtigt werden müssen. Im einzelnen,

(i) die Situation, in der der nächste aktive Zeiger NA auf den Zustand S zeigt;

(ii) die Situation, in der der nächste aktive Zeiger NA auf einen Zustand nach dem Zustand s + 2 zeigt;

(iii) die Situation, in der der nächste aktive Zeiger NA auf den Zustand S + 1 zeigt; und

(iv) die Situation, in der der nächste aktive Zeiger NA auf den Zustand S + 2 zeigt.

Die Erfinder haben festgestellt, dass die erste der vorstehenden Situationen die am wahrscheinlichsten auftretende ist, dass die zweite der vorstehenden Situationen die am zweitwahrscheinlichsten auftretende ist, und dass die anderen beiden Situationen sehr selten sind. Der Suchalgorithmus wurde daher so entworfen, dass diese Situationen in dieser Reihenfolge berücksichtigt werden, so dass die am wenigsten wahrscheinlichen Situationen nur dann berücksichtigt werden, falls die wahrscheinlichsten Situationen falsch sind, wodurch der Suchalgorithmus beschleunigt wird.

Die Erfinder haben darüber hinaus festgestellt, dass für die Beschränkungen der dynamischen Programmierung des vorliegenden Ausführungsbeispiels dann, wenn S der verarbeitete gegenwärtige aktive Zustand ist, das nachstehende garantiert werden kann:

D[S + 1] ≥ D[S + 2] ≥ D[S + 3] (4)

Aus diesem folgt, dass dann, wenn der in dem gegenwärtig aktiven Zustand gespeicherte kumulative Abstand, d. h. D[S] größer ist als D[S + 1], es nicht notwendig ist, D[S] mit D[S + 2] und D[S + 3] zu vergleichen. Auf ähnliche Art und Weise ist es dann, wenn D[S] kleiner ist als D[S + 1], aber größer als D[S + 2], nicht notwendig D[S] mit D[S + 3] zu vergleichen. Jedoch muss aufgepasst werden, wenn der gegenwärtige aktive Zustand S kleiner ist als drei Zustände ausgehend von dem Ende des Worts, da ein Zustand S + 3 nicht existiert. Ein expliziter Test für diesen Fall kann dadurch vermieden werden, dass der Sentinel-Zustand SSEN an dem Ende des Worts verwendet wird. Im einzelnen garantiert das Setzen des in dem Sentinel-Zustand SSEM gespeicherten kumulativen Abstands gleich Null, das D[S] nicht niedriger sein kann als D[SSEN]. Daher versucht durch Verwenden des Sentinel-Zustands und der vorstehend erwähnten Regeln der Algorithmus niemals, sich über den Sentinel- Zustand hinaus fortzupflanzen.

Nun wird die Verarbeitung jedes in Schritt S77, der in Fig. 10 gezeigt ist, durchgeführte Verarbeitung genauer unter Bezugnahme auf die Fig. 13a bis 13e beschrieben. In Schritt S91 von Fig. 13a vergleicht das System den kumulativen Abstand für den gültigen Pfad, der an dem gegenwärtigen aktiven Zustand S endet, mit dem Ausästungsschwellenwert Th, d. h. D[S] wird mit Th verglichen. Falls D[S] größer ist als der Ausästungsschwellenwert Th, dann wird der an dem gegenwärtigen aktiven Zustand endende Pfad verworfen, und kehrt die Verarbeitung zu dem in Fig. 10 gezeigten Schritt S79 zurück. Falls D[S] kleiner ist als der Ausästungsschwellenwert Th, dann schreitet die Verarbeitung zu Schritt S92 fort, indem das System prüft, um zu ermitteln, ob D[S] gleich Null ist, d. h. um zu prüfen, ob der gegenwärtige aktive Zustand S. der verarbeitet wird, der Sentinel-Zustand SSEN ist oder nicht.

In diesem Ausführungsbeispiel wird der Sentinel-Zustand zu dem Ende der aktiven Liste hinzugefügt, so dass Schritt S92 identifizieren wird, wenn es keine weiteren zu verarbeitenden aktiven Zustände in der Gegenwärtig-Aktivliste gibt. Alterna tiv kann eine spezifische Prüfung nach der Verarbeitung jedes aktiven Zustands durchgeführt werden, um zu ermitteln, ob dieser Zustand der letzte in der Gegenwärtig-Aktivliste ist. Jedoch besteht der Vorteil des Verwendens des Sentinel- Zustands auf diese Art und Weise darin, dass keine Prüfung für diejenigen Zustände durchgeführt werden wird, die in Schritt S91 ausgeästet werden, wodurch Verarbeitungserfordernisse eingespart werden. Falls der gegenwärtige Zustand nicht der Sentinel-Zustand ist, dann schreitet die Verarbeitung zu Schritt S93 fort, indem die Variable ACOUNT, welche dazu verwendet wird, einen Zählwert der Gesamtzahl von für den gegenwärtigen Rahmen fk verarbeiteten aktiven Zustände inkrementiert wird. Das System berechnet dann in Schritt S94 den lokalen Abstand zwischen dem gegenwärtigen aktiven Zustand S, der verarbeitet wird, und dem gegenwärtigen Rahmen fk, der verarbeitet wird, und fügt diesen zu der in dem gegenwärtigen aktiven Zustand gespeicherten kumulativen Abstand D[S] hinzu.

In diesem Ausführungsbeispiel wird die folgende Summe von Größen dazu verwendet, ein Maß des lokalen Abstands zwischen dem gegenwärtigen Rahmen fk und dem gegenwärtigen aktiven Zustand S abzuleiten:

d(S, fk) = Sp - f (5)

worin m die Anzahl von Parametern in jedem Rahmen/Zustand, welche durch den Präprozessor 15 aus der zugeführten Sprache extrahiert wurden, ist. Es können zwar andere Abstandsmaße verwendet werden, wie beispielsweise ein euklidisches Abstandsmaß, jedoch wird die vorstehende Summe von Größen bevorzugt, da Multiplikationen nicht erforderlich sind, und die Abstandsberechnung lediglich mit Additionen und Subtraktionen durchgeführt werden kann.

Wie für den Fachmann klar ist, ist die Berechnung von Abständen eine der Hauptkomponenten der Erkennungssuche hinsichtlich CPU-Erfordernissen.

In einer preiswerten Anwendung, wie beispielsweise einem Personal-Organizer, in dem die Speichererfordernisse und die Verarbeitungsleistung begrenzt sind und in dem jeder der Parameter der Zustände und der ankommenden Rahmen als ein einzelnes Byte gespeichert werden, kann die vorstehende Abstandsberechnung unter Verwendung einer Nachschlagetabelle implementiert werden, da die Differenz Sp - fpk nur einen von 511 verschiedenen Werten annehmen kann. Die Verwendung einer Nachschlagetabelle auf diese Art und Weise vermeidet die Notwendigkeit, zu ermitteln, ob die Differenz Sp - fppk positiv oder negativ ist. Die Abstandsberechnung wird daher zu:

d(S, fk) = LUT[256 + Sp - f ] (6)

Wie dem Fachmann klar sein wird, wurde 256 in der Nachschlagetabelle (LUT-Adressierung) eingeschlossen, so dass die Tabelleneinträge nicht zwischen minus 255 und positiv 255 laufen, sondern von 1 bis 511 laufen.

Wo eine Nachschlagetabelle in der Abstandsberechnung verwendet wird, kann eine schnelle Implementierung durch Feststellen, dass derselbe zugeführte Rahmen fk gegen eine große Anzahl von Wortzuständen S verglichen wird, erhalten werden. Daher kann für jeden Rahmen fk ein Tabellenzeiger TP derart berechnet werden, dass TPp die Adresse eines Tabellenelements [256-fPK] ist. Daher wird die Berechnung des Abstands zu:

d(S, fk) = TPp[Sp] (7)

Nachdem der kumulative Abstand D[S] in Schritt S94 aktualisiert worden ist, prüft das System auf die vorstehend erwähnten vier Situationen in Schritten S95 bis S97. Im einzelnen prüft das System in Schritt S95, um zu ermitteln, ob der gültige Pfad, welcher an dem gegenwärtigen aktiven Zustand S endet, der Zustand ist, auf den durch den nächsten aktiven Zeiger NA gezeigt wird. Falls dem so ist, dann schreitet die Verarbeitung zu dem in Fig. 13b gezeigten Schritt S98 fort. Falls der nächste aktive Zeiger NA nicht auf den gegenwärtigen aktiven Zustand S zeigt, dann schreitet dei Verarbeitung zu Schritt S96 fort, indem das System prüft, um zu ermitteln, ob der nächste aktive Zeiger NA auf einen Zustand zeigt, wel cher mehr als zwei Zustände hinter den gegenwärtigen aktiven Zuständen, die verarbeitet werden, liegt. Falls dem so ist, dann schreitet die Verarbeitung zu dem genauer in Fig. 13c gezeigten Schritt S109 fort, wohingegen dann, wenn dem nicht so ist, die Verarbeitung zu Schritt S97 fortschreitet, indem das System prüft, um zu ermitteln, ob der nächste aktive Zeiger NA auf den Zustand zeigt, welcher dem gegenwärtigen aktiven Zustand nachfolgt. Falls dem so ist, dann schreitet die Verarbeitung zu dem in Fig. 13d gezeigten Schritt S115 fort, wohingegen dann, wenn dem nicht so ist, dieses dann bedeutet, dass der nächste aktive Zeiger NA auf den Zustand S + 2 zeigen muss, und die Verarbeitung zu dem in Fig. 13e gezeigten Schritt S125 fortschreitet.

Nachstehend wird eine Beschreibung der Verarbeitungsschritte gegeben, die in den Fig. 13d bis 13e durchgeführt werden. Fig. 13b stellt die Verarbeitungsschritte dar, welche in der Situation durchgeführt werden, dass der nächste aktive Zeiger NA auf den verarbeiteten gegenwärtigen aktiven Zustand S zeigt. Wie für den Fachmann ersichtlich ist, muss mit den vorstehend erwähnten Beschränkungen der dynamischen Programmierung in dieser Situation der kumulative Abstand für den an dem gegenwärtigen aktiven Zustand S endenden gültigen Pfad mit dem in den drei Zuständen S + 1, S + 2 und S + 3, welcher dem gegenwärtigen aktiven Zustand S nachfolgend, gespeicherten kumulativen Abstand verglichen werden, da diese Zustände bereits auf der Neu-Aktivliste sind.

Bevor dieser Vergleich durchgeführt wird, fügt das System jedoch in Schritt S98 den gegenwärtigen aktiven Zustand S der nächsten Position in der Neu-Aktivliste 205 hinzu. Das System legt dann in Schritt S99 den nächsten aktiven Zeiger NA so fest, dass er auf einen Zustand S - 1 zeigt.

Die Verarbeitung schreitet dann zu Schritt S100 fort, indem das System prüft, um zu ermitteln, ob der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand kleiner ist als der in dem Zustand S + 1 gespeicherte kumulative Abstand. Falls dem nicht so ist, dann ist es wegen Gleichung (4) nicht notwendig, den in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand mit dem in den Zuständen S + 2 oder S + 3 gespeicherten kumulativen Abstand zu vergleichen, und kann die Verarbeitung zu Schritt S108 fortschreiten. Falls der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand kleiner ist als der in dem Zustand S + 1 gespeicherte kumulative Abstand, dann schreitet die Verarbeitung zu dem Schritt S101 fort, in dem der kumulative Abstand, der in dem Zustand S + 1 gespeichert ist, gleich dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand gemacht wird. Mit anderen Worten wird der an dem gegenwärtigen aktiven Zustand endende Pfad auf den Zustand S + 1 fortgepflanzt. Das System prüft dann in Schritt S102, um zu ermitteln, ob der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand kleiner ist als der in dem Zustand S + 2 gespeicherte kumulative Abstand. Falls dem nicht so ist, dann geht die Verarbeitung erneut zu Schritt S108 über, wohingegen dann, wenn dem so ist, die Verarbeitung zu Schritt S103 übergeht, indem der in dem Zustand S + 2 gespeicherte kumulative Abstand gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand gemacht wird. Die Verarbeitung schreitet dann zu Schritt S104 fort, indem das System prüft, um zu ermitteln, ob der in dem gegenwärtigen aktiven Zustand gespeicherte kumulative Abstand kleiner ist als der in dem Zustand S + 3 gespeicherte kumulative Abstand. Falls dem nicht so ist, dann geht die Verarbeitung erneut zu Schritt S108 über, wohingegen dann, wenn dem so ist, die Verarbeitung zu Schritt S105 fortschreitet, indem der in dem Zustand S + 3 gespeicherte kumulative Abstand gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand gemacht wird.

Wenn der in dem gegenwärtigen aktiven Zustand gespeicherte kumulative Abstand in alle drei der nachfolgenden Zustände kopiert worden ist, dann prüft das System in Schritt S106, ob der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand kleiner ist als der kleinste kumulative Abstand (MINSCORE), für alle der gültigen Pfade in allen der Wörter, die bis zu dem gegenwärtigen Rahmen fk verarbeitet worden sind. Falls dem nicht so ist, dann geht die Verarbeitung zu Schritt S108 über, wohingegen dann, wenn dem so ist, MINSCORE in Schritt S107 durch den in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand ersetzt wird. Die Verarbeitung schreitet dann zu Schritt S108 fort, indem eine Strafe (PEN) zu dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand hinzugefügt wird. Wie vorstehend erwähnt wurde, wird die Strafe hinzugefügt, um eine übermäßige Zeitexpansion der Referenzmodelle zu verhindern. Die Verarbeitung endet dann und kehrt zu dem in Fig. 10 gezeigten Schritt S79 zurück, indem der Zustandszähler i inkrementiert wird, so dass der nächste Zustand auf der Gegenwärtig-Aktivliste in Schritt S77 verarbeitet wird.

Falls in dem in Fig. 13a gezeigten Schritt S96 ermittelt wird, dass der nächste aktive Zeiger NA auf einen Zustand zeigt, welcher mehr als zwei Zustände hinter dem gegenwärtigen aktiven Zustand S liegt, dann schreitet die Verarbeitung zu dem in Fig. 13C gezeigten Schritt S109 fort, indem die Zustände S + 3, S + 2, S + 1 und S in dieser Reihenfolge zu der Neu- Aktivliste hinzugefügt werden. Die Verarbeitung schreitet dann zu Schritt S110 fort, indem der nächste aktive Zeiger NA so festgelegt wird, dass er auf den Zustand S - 1 zeigt. Die Verarbeitung schreitet dann zu Schritt S111 fort, indem das System prüft um zu ermitteln, ob der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand für alle der gültigen Pfade in allen der Worter, die für den gegenwärtigen Rahmen fk verarbeitet worden sind, kleiner ist als der kleinste kumulative Abstand MINSCORE. Falls dem nicht so ist, dann schreitet die Verarbeitung zu Schritt S113 fort, wohingegen dann, wenn dem so ist, in Schritt S112 MINSCORE durch den in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand ersetzt wird.

Wie vorstehend erwähnt wurde, muss, um von dem in Fig. 13a gezeigten Schritt S96 zu Schritt S109 fortzuschreiten, der nächste aktive Zeiger NA auf einen Zustand gezeigt haben, der mehr als zwei Zustände hinter den gegenwärtigen aktiven Zuständen liegt. Wie dem Fachmann klar ist, besteht in dieser Situation mit dem in dem vorliegenden Ausführungsbeispiel verwendenden Beschränkungen der dynamischen Programmierung keine Notwendigkeit, irgendwelche kumulativen Abstände zu vergleichen, weil keiner der Zustände, zu welchen der gegenwärtige aktive Zustand sich fortzupflanzen kann, auf der Neu- Aktivliste waren. Daher macht in Schritt S113 das System die in den Zuständen S + 1, S + 2 und S + 3 gespeicherten kumulativen Abstände gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand. Die Verarbeitung schreitet dann zu Schritt S114 fort, indem die vorstehend erwähnte Strafe zu dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand hinzugefügt wird. Die Verarbeitung endet dann und kehrt zu dem in Fig. 10 gezeigten Schritt S79 zurück.

Falls in dem in Fig. 13a gezeigten Schritt S97 das System ermittelt, dass der nächste aktive Zeiger NA auf den Zustand S + 1 zeigt, dann schreitet die Verarbeitung zu dem in Fig. 13D gezeigten Schritt S115 fort, indem die Zustände S + 1 und S in dieser Reihenfolge zu der Neu-Aktivliste hinzugefügt werden. Der nächste aktive Zeiger NA wird dann in Schritt S116 so festgelegt, dass er auf den Zustand S - 1 zeigt. Das System macht dann in Schritt S117 den in dem Zustand S + 1 gespeicherten kumulativen Abstand gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand. Wie dem Fachmann klar ist, muss das System den in dem Zustand S + 1 gespeicherten kumulativen Abstand nicht mit dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand vergleichen, weil der Zustand S + 1 vor dem Schritt S115 nicht auf der Neu-Aktivliste war. Die Verarbeitung schreitet dann zu den Schritten S118 bis S124 fort, welche dieselben sind wie die in Fig. 13b gezeigten Schritte S102 bis S108, und daher nicht erneut beschrieben werden.

Falls das System in dem in Fig. 13a gezeigten Schritt S97 ermittelt, dass der nächste aktive Zeiger NA nicht auf den Zustand S + 1 zeigt, dann muss wegen der in diesem Ausführungsbeispiel verwendeten Beschränkungen der dynamischen Programmierung der nächste aktive Zeiger auf den Zustand S + 2 zeigen. Die Verarbeitung schreitet daher zu dem in Fig. 13b gezeigten Schritt S125 fort, in dem die Zustände S + 2, S + 1 und S in dieser Reihenfolge zu der Neu-Aktivliste hinzugefügt werden. Die Verarbeitung schreitet dann zu Schritt S126 fort, indem der nächste aktive Zeiger NA so festgelegt wird, dass er auf den Zustand S - 1 zeigt. Dann macht in Schritt S127 das System den in den Zuständen S + 1 und S + 2 gespeicherten kumulativen Abstand gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand. Wie dem Fachmann klar ist, braucht ein Vergleich des in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstands mit dem in den Zuständen S + 1 und S + 2 gespeicherten kumulativen Abstand nicht durchgeführt zu werden, da diese Zustände vor dem Schritt S125 nicht auf der Neu-Aktivliste waren. In Schritt S128 ermittelt das System, ob der in dem gegenwärtigen Zustand S gespeicherte kumulative Abstand kleiner ist als der in dem Zustand S + 3 gespeicherte kumulative Abstand oder nicht. Falls der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand nicht kleiner ist als der in dem Zustand S + 3 gespeicherte kumulative Abstand, dann geht die Verarbeitung zu Schritt S132 über, wohingegen dann, wenn dem so ist, die Verarbeitung zu Schritt S129 fortschreitet, indem der in dem Zustand S + 3 gespeicherte kumulative Abstand gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand gemacht wird. Das System ermittelt dann in Schritt S130, ob der in dem gegenwärtigen aktiven Zustand S gespeicherte kumulative Abstand kleiner ist als MINSCORE. Falls dem nicht so ist, dann schreitet die Verarbeitung zu Schritt S132 fort, wohingegen dann, wenn dem so ist, das System in Schritt S131 MINSCORE gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand macht. Die Verarbeitung schreitet dann zu Schritt S132 fort, indem die vorstehend erwähnte Strafe PEN zu dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand hinzufügt. Die Verarbeitung endet dann und kehrt zu dem in Fig. 10 gezeigten Schritt S79 zurück.

Die vorstehend beschriebene Verarbeitung wird für alle Zustände auf der aktiven Liste durchgeführt. Wenn jedoch der letzte aktive Zustand auf der Gegenwärtig-Aktivliste verarbeitet wird, wird, da dies der Sentinel-Zustand SSEN ist, die Verarbeitung von dem in Fig. 13a gezeigten Schritt S92 zu Schritt S133 übergehen, indem der Sentinel-Zustand SSEN zu dem Ende der Neu-Aktivliste hinzugefügt wird. Wie dem Fachmann klar ist, wird MINSCORE (welcher den kleinsten kumulativen Abstand für alle der gültigen Pfade in allen der Wörter bis zu dem gegenwärtigen Rahmen fk, der verarbeitet wird, repräsentiert) nur in den in Fig. 13b, 13c und 13d gezeigten Verarbeitungsschritten aktualisiert, falls der in den Zuständen S + 3, S + 2 und S + 1 gespeicherten kumulativen Abstände gleich dem in dem gegenwärtigen aktiven Zustand S gespeicherten kumulativen Abstand gemacht sind. Da dies jedoch nicht geschieht, wird in diesem Ausführungsbeispiel dann, wenn der gegenwärtige aktive Zustand S innerhalb dreier Zustände ausgehend von dem Ende des Worts liegt, ein zusätzlicher Test in Schritt S134 durchgeführt, um zu ermitteln, ob der in dem Ausgangszustand SD gespeicherte kumulative Abstand kleiner ist als MINSCORE. Falls dem nicht so ist, dann kehrt die Verarbeitung zu dem in Fig. 10 gezeigten Schritt S83 zurück, wohingegen dann, wenn dem so ist, MINSCORE gleich dem in dem Endzustand SD gespeicherten kumulativen Abstand gemacht wird, bevor zu dem in Fig. 10 gezeigten Schritt S83 zurückgekehrt wird.

Der Betriebsablauf von Fig. 13 wird nun anhand einer Verarbeitung der ersten beiden aktiven Zustände in der in Fig. 18 gezeigten aktiven Liste 203 dargestellt. Der erste zu verarbeitende aktive Zustand ist der Zustand S&sub7;. In Schritt S91 ermittelt das System, ob der in dem Zustand S&sub7; gespeicherte kumulative Abstand kleiner ist als der Ausästungsschwellenwert Th. Falls dem nicht so ist, dann endet die Verarbeitung dieses aktiven Zustands und wird die Verarbeitung des nächsten aktiven Zustands begonnen, wohingegen dann, wenn dem so ist, die Verarbeitung zu Schritt S92 fortschreitet.

Da der Zustand S&sub7; nicht der Sentinel-Zustand SSEN ist, wird der in diesem Zustand gespeicherte kumulative Abstand nicht gleich Null sein (da dieser Wert für de Sentinel-Zustand reserviert ist). Daher schreitet die Verarbeitung zu Schritt S93 fort, indem die Variable ACOUNT inkrementiert wird. In Schritt S94 wird der lokale Abstand zwischen dem gegenwärtigen aktiven Zustand S&sub7; und dem gegenwärtigen Rahmen fk berechnet und zu dem in dem Zustand S&sub7; gespeicherten kumulativen Abstand hinzugefügt.

Da der Zustand S&sub7; der erste aktive Zustand, der zu verarbeiteten ist, ist, wird der nächste aktive Zeiger NA auf den Ausgangszustand SD zeigen, welcher, wie aus dem in Fig. 8 gezeigten Wortmodell 201 ersichtlich ist, zwei Zustände hinter dem Zustand S&sub7; liegt. Daher verläuft die Verarbeitung über die Schritte S95, S96 und S97 zu dem in Fig. 13e gezeigten Schritt S125, indem die Zustände S&sub8; und S&sub7; in dieser Reihenfolge zu der Neu-Aktivliste 205 hinzugefügt werden. Es wird jedoch angemerkt, dass der Ausgangszustand SD nicht zu der Neu-Aktivliste hinzugefügt wird, da er nur zum Speichern des kleinsten kumulativen Abstands aller Pfade, die das Wort verlassen, verwendet wird. Der nächste aktive Zeiger NA wird dann in Schritt S126 so festgelegt, dass er auf den Zustand S&sub6; zeigt, und in Schritt S127 werden der in den Zuständen S&sub8; und SD gleich den in dem gegenwärtigen aktiven Zustand S&sub7; gespeicherten kumulativen Abstand gemacht. Die Verarbeitung schreitet dann zu Schritt S128 fort, indem das System prüft, um zu ermitteln, ob der in dem Zustand S&sub7; gespeicherte kumulative Abstand kleiner ist als der in dem Sentinel-Zustand SSEN gespeicherte kumulative Abstand. Da der in dem Sentinel- Zustand gespeicherte kumulative Abstand gleich Null ist, wird die Verarbeitung zu Schritt S132 fortschreiten, indem das System eine Strafe zu dem in dem Zustand S&sub7; gespeicherten kumulativen Abstand hinzufügt. Die Verarbeitung endet dann und kehrt zu dem in Fig. 10 gezeigten Schritt S79 zurück, indem die Zählvariable i inkrementiert wird, so dass der nächste aktive Zustand S5 verarbeitet werden wird.

Die Verarbeitung des Zustands S&sub5; ist dieselbe wie die für den Zustand S&sub7;, mit der Ausnahme, dass in Schritt S97 anstatt eines Übergehens auf Schritt S125, der in Fig. 13e gezeigt ist, die Verarbeitung zu Schritt S115, der in Fig. 13d gezeigt ist, fortschreiten wird, da der nächste aktive Zeiger NA während der Verarbeitung des aktiven Zustands S&sub7; in Schritt S126 so festgelegt worden war, dass er auf den Zustand S&sub6; zeigt. Daher fügt in Schritt S115 das System die Zustände S&sub6; und S&sub5; in dieser Reihenfolge zu der Neu-Aktivliste 205 hinzu. Die Verarbeitung schreitet dann zu Schritt S116 fort, indem der nächste aktive Zeiger NA so festgelegt wird, dass er auf den Zustand S&sub4; zeigt. Der in dem Zustand S&sub6; gespeicherte kumula tive Abstand wird dann in Schritt S117 gleich dem in dem gegenwärtigen aktiven Zustand S&sub5; gespeicherten kumulativen Abstand gemacht. Das System vergleicht dann in Schritt S118 den in dem gegenwärtigen aktiven Zustand S&sub5; gespeicherten kumulativen Abstand mit dem in dem Zustand S&sub7; gespeicherten kumulativen Abstand. Falls der in dem gegenwärtigen aktiven Zustand S&sub5; gespeicherte kumulative Abstand großer ist als der in dem Zustand S&sub7; gespeicherten kumulativen Abstand, dann schreitet die Verarbeitung zu Schritt S124 fort, wohingegen dann, wenn dieser kleiner ist als der in dem Zustand S&sub7; gespeicherte kumulative Abstand, die Verarbeitung dann zu Schritt S119 fortschreitet, indem der in dem Zustand S&sub7; gespeicherte kumulative Abstand gleich dem in dem gegenwärtigen aktiven Zustand S&sub5; gespeicherten kumulativen Abstand gemacht wird. Ein ähnlicher Vergleich und eine ähnliche Aktualisierung werden in den Schritten S120 und S121 für den in dem Zustand S&sub8; gespeicherten kumulativen Abstand durchgeführt. Falls der in dem Zustand S&sub8; gespeicherte kumulative Abstand in Schritt S121 aktualisiert wird, dann ermittelt das System in Schritt S122, ob der in dem gegenwärtigen aktiven Zustand S&sub5; kleiner ist als MINSCORE oder nicht. Falls dem nicht so ist, dann schreitet die Verarbeitung zu Schritt S124 fort, wohingegen dann, wenn dem so ist, der in MINSCORE gespeicherte kumulative Abstand durch den in dem gegenwärtigen aktiven Zustand S5 gespeicherten kumulativen Abstand ersetzt wird, bevor zu Schritt S124 fortgeschritten wird, indem die Strafe PEN zu dem in dem gegenwärtigen aktiven Zustand S&sub5; gespeicherten kumulativen Abstand hinzugefügt wird. Die Verarbeitung kehrt dann zu dem in Fig. 10 gezeigten Schritt S79 zurück, indem die Zählvariable i inkrementiert wird, so dass der nächste aktive Zustand S&sub4; verarbeitet werden wird.

Diese rekursive Verarbeitungsroutine wird für alle gegenwärtigen aktiven Zustände in alle dem System bekannten Referenzwörtern durchgeführt.

Nach der Verarbeitung jedes Worts auf die vorstehende Art und Weise für den gegenwärtigen Rahmen fk wird reihum jeder Knoten in dem Sprachmodell 21 verarbeitet. Wie vorstehend beschrieben wurde, bestimmt das Sprachmodell 21 die Sequenzen von Wörtern, die zulässig sind. Diese Information wird durch die Knoten und insbesondere durch die Wörter, die mit den Eingängen und den Ausgängen derselben verbunden sind, definiert. Die Verarbeitung der Knoten in Schritt S51 von Fig. 7 gewährleistet, dass sich gültige Pfade nur über zugelassene Sequenzen von Wörtern fortpflanzen. Die in Schritt S51 durchgeführte Verarbeitung wird nun genauer unter Bezugnahme auf Fig. 14 beschrieben.

Zu Beginn wird in Schritt S151 vor der Verarbeitung irgendeines der Knoten der lokale Abstand zwischen dem Rahmen, der Hintergrundrauschen repräsentiert, und dem gegenwärtigen Rahmen fk (d. h. d(noise, fk)), berechnet. Dann wird in Schritt S153 ein Knotenzeiger v so initialisiert, dass er auf den Anfangsknoten N&sub0; zeigt. Dann wird in Schritt S155 der kumulative Abstand, der in dem Knoten gespeichert ist, auf den durch den Knotenzeiger v gezeigt wird, d. h. D[v], mit dem Ausästungsschwellenwert Th verglichen. Falls D[v] kleiner ist als der Ausästungsschwellenwert Th, dann schreitet die Verarbeitung zu Schritt S157 fort, indem d(noise, fk) zu dem in dem gegenwärtigen Knoten v, der verarbeitet wird, gespeicherten kumulativen Abstand hinzugefügt wird. Dann vergleicht in Schritt S159 das System D[v] mit dem in dem Kleinstwertspeicher (MINSCORE) gespeicherten Wert und kopiert diesen in Schritt S161 in MINSCORE, falls es kleiner ist. Dann wird der Zähler ACOUNT (welcher die Anzahl von aktiven Zuständen und Knoten, die für den gegenwärtigen Rahmen verarbeitet worden sind, angibt) in Schritt S163 inkrementiert, und schreitet die Verarbeitung zu Schritt S165 fort. Zu Schritt S155 zurückkehrend wird dann, wenn D[v] größer ist als der Ausästungsschwellenwert Th, D[v] in Schritt S167 auf den großen Wert SEHR GROSS festgelegt, und schreitet die Verarbeitung zu Schritt S165 fort.

Die in Schritt S165 und Schritt S168 durchgeführte Verarbeitung wird für den in Fig. 15 gezeigten Beispielknoten N erklärt, mit dessen Eingang die drei Wörter "hole", "speichere" und "lade" verbunden sind, und mit dessen Ausgang die Wörter "ein" und "das" verbunden sind. Obwohl ein solcher Knoten in Fig. 3 nicht gezeigt ist, wurde dieses Beispiel ausgewählt, um darzustellen, dass der Prozess der dynamischen Programmierung des vorliegenden Ausführungsbeispiels für komplexere Sprachmodelle funktionieren wird. Im einzelnen für Grammatiken finiten Zustands, wo Knoten wie der in Fig. 15 gezeigte üblich sind.

In Schritt S165 ermittelt das System das Minimum aller der in den Ausgangszuständen (SD) gespeicherten kumulativen Abstände für die mit dem Eingang des Knotens N verbundenen Wörter, d. h. die Ausgangszustände der Wörter "hole", "speichere" und "lade". Für den allgemeinen Fall wird diese Berechnung repräsentiert durch:

(D[SD]) (8)

worin Iw[v] alle mit dem Eingang des Knotens v verbundenen Wörter repräsentiert. Nachdem das System diesen kleinsten kumulativen Abstand für den Knoten N ermittelt hat, wird dieser in dem in dem Knoten N gespeicherten kumulativen Abstand D[N] kopiert, falls er kleiner ist als der dort bereits gespeicherte kumulative Abstand. Hinsichtlich der Wirkung ist dies eine Ermittlung dahingehend, ob es einen gültigen Pfad gibt, der von einem der mit dem Eingang des Knotens verbundenen Wörter kommt, welcher einen kleineren kumulativen Abstand als der kumulative Abstand des Pfads, welcher sich noch immer in dem Knoten fortpflanzt, hat.

Es ist möglich, dass sich gültige Pfade innerhalb des Knotens fortpflanzen, weil es möglich ist, dass Lücken vor, zwischen und an dem Ende der Wörter in dem Satz vorhanden sind, welche mit dem Hintergrundrauschrahmen übereinstimmen. Diese Möglichkeit eines gültigen Pfads, der von einem zugeführten Rahmen bis zu dem nächsten innerhalb eines Knotens verbleibt, wird durch den in Fig. 15 gezeigten Pfeil 231 repräsentiert, welcher den Knoten N verlässt und zu diesem zurückkehrt. Ein Pfad kann für eine beliebige Anzahl aufeinanderfolgender zugeführter Rahmen innerhalb eines Knotens verbleiben. Nachdem das System die Verarbeitung von Schritt S165 durchgeführt hat, wird in Schritt S168 der in dem Knoten N gespeicherte kumulative Abstand in dem temporären Speicher INSCORE ko piert, der durch Kästen 233 und 235 für die Worter "ein" bzw. "das" repräsentiert wird, falls er kleiner ist als der dort bereits gespeicherte Wert. Es muss ein Vergleich durchgeführt werden, da es möglich ist, dass ein Wort mit dem Ausgang von mehr als einem Knoten verbunden sein kann, und es nur der Pfad mit dem kleinsten kumulativen Abstand ist, der sich in das verbindende Wort fortpflanzt. Der in dem temporären Speicher INSCORE eines Worts gespeicherte kumulative Abstand wird dazu verwendet, die Eingangszustände dieses Worts während der Verarbeitung des in Fig. 7 gezeigten Schritts S57 zu aktualisieren.

Das System prüft dann in Schritt S169, ob D[v] gleich dem großen Wert SEHR GROSS ist. Falls dem so ist, dann zeigt dies an, dass keine gültigen Pfade an dem gegenwärtigen Knoten v enden werden oder durch diese in ein mit ihm verbundenes Wort hindurch verlaufen werden, an dem nächsten Rahmen fk+1. Falls D[v] kleiner ist als der große Wert SEHR GROSS, dann wird entweder ein gültiger Pfad an dem Knoten v enden oder durch diesen hindurch in ein mit ihm verbundenes Wort verlaufen, an dem nächsten Rahmen fk+1. Daher wird in Schritt S171 der Zähler PACOUNT, welcher die Anzahl von potentiell aktiven Zuständen (und Knoten) an dem nächsten zugeführten Rahmen fk+1 repräsentiert, inkrementiert, da der diesem Knoten zugeordnete stille Zustand an dem nächsten zugeführten Rahmen fk+1 aktiv sein kann. Der Knotenzeiger v wird dann in Schritt S173 inkrementiert, so dass er auf den nächsten Knoten in dem Sprachmodell 21 zeigen wird. Das System prüft dann in Schritt S175, um zu ermitteln, ob alle Knoten in dem Sprachmodell 21 verarbeitet worden sind, indem geprüft wird, um zu ermitteln, ob der Knotenzeiger v einen Knoten angibt, welcher hinter den Endknoten Nn in dem Sprachmodell 21 liegt. Falls das System die Verarbeitung aller Knoten nicht beendet hat, dann kehrt die Verarbeitung zu Schritt S155 zurück, wohingegen dann, wenn alle Knoten verarbeitet worden sind, die Verarbeitung zu dem in Fig. 7 gezeigten Schritt S53 zurückkehrt.

Die in dem in Fig. 7 gezeigten Schritt S57 durchgeführte Verarbeitung wird nun genauer und unter Bezugnahme auf die Fig. 16 und 17 für das in Fig. 8 gezeigte Wortmodell 201 und die in Fig. 9 gezeigten Pfade der dynamischen Programmierung genauer beschrieben. Bezugnehmend auf Fig. 16 prüft in Schritt S181 das System, um zu ermitteln, ob der in INSCORE gespeicherte kumulative Abstand gleich dem großen Wert SEHR GROSS ist. Falls dem so ist, dann bedeutet dies, dass keine gültigen Pfade zum nächsten Zeitpunkt in dieses Wort eintreten werden. Daher braucht dieses Wort nicht erneut verarbeitet zu werden, so dass die Verarbeitung zu Schritt S207 fortschreitet, indem die Anzahl von aktiven Zuständen für das Wort, welches für den nächsten zugeführten Rahmen fk+1 verarbeitet werden wird (welches aus der in der Gegenwärtig-Aktivliste 203 gelisteten Anzahl von Zuständen ermittelt wird; aufgrund von Schritt S83, der in Fig. 10 gezeigt ist), zu dem Zählwert PACOUNT hinzugefügt. Die Verarbeitung kehrt dann zu dem in Fig. 7 gezeigten Schritt S59 zurück, indem der Wortzählwert inkrementiert wird, so dass das nächste Wortmodell verarbeitet werden wird.

Falls andererseits in Schritt S181 INSCORE nicht gleich dem großen Wert SEHR GROSS ist, dann bedeutet dies, dass ein gültiger Pfad ein vorangehendes Wort verlassen hat und in das gegenwärtige Wort, das verarbeitet wird, eintreten kann. Daher müssen die Zustände des gegenwärtigen Wortmodells, welche durch einen Pfad erreicht werden können, der sich von einem anderen Wortmodell ausgehend erstreckt (welche nachstehend als die Eintrittszustände bezeichnet werden), unter Verwendung des in INSCORE gespeicherten kumulativen Abstands aktualisiert werden. In dem vorliegenden Ausführungsbeispiel mit den vorstehenden Beschränkungen der dynamischen Programmierung sind die Eintrittszustände Zustände S&sub0;, S&sub1; und S&sub2;. Diese Aktualisierung kann unter Verwendung einer Verarbeitungstechnik erreicht werden, die ähnlich derjenigen ist, die unter Bezugnahme auf Fig. 13 beschrieben wurde, wird jedoch in diesem Ausführungsbeispiel auf die folgende Art und Weise durchgeführt.

Zunächst prüft das System in Schritt S183, um zu ermitteln, ob das Wortmodell, das das verarbeitete gegenwärtige Wort repräsentiert, mehr als drei Zustände (ausschließlich des Ausgangszustands SD oder des Sentinel-Zustands SSEN) enthält.

Falls es mehr als drei Zustände gibt, dann wird in Schritt S185 ein Zustandsteiger j so festgelegt, dass er auf den Zustand S&sub2; zeigt. Falls es auf der anderen Seite in dem gegenwärtigen Wort weniger als drei Zustände gibt, dann wird in Schritt S187 der Zustandszeiger j so festgelegt, dass er auf den Ausgangszustand SD zeigt. Die Verarbeitung schreitet dann zu Schritt S189 fort, indem der durch den Zeiger j angegebene Zustand mit dem durch den letzten aktiven Zeiger LA angegebenen Zustand verglichen wird. Falls der durch den Zeiger j angegebene Zustand hinter dem durch den letzten aktiven Zeiger LA angegebenen Zustand liegt, dann muss ein Vergleich zwischen dem kumulativen Abstand, der bereits in diesem Zustand gespeichert ist, und dem in in INSCORE gespeicherten kumulativen Abstand durchgeführt werden. Für die in Fig. 9 gezeigten Beispielpfade kann sich der Pfad p6 zu den Zuständen S&sub1;, S&sub2;, S&sub3; und S&sub4; an dem nächsten Rahmen fk+1 fortpflanzen. Daher wird in diesem Beispiel nach der Verarbeitung aller aktiven Zustände in der Gegenwärtig-Aktivliste 203 in Übereinstimmung mit den in Fig. 10 gezeigten Flussdiagrammen der letzte aktive Zeiger LA auf den Zustand S&sub1; zeigen.

Fig. 17 zeigt die Eintrittszustände (d. h. die ersten drei Zustände) des in Fig. 8 gezeigten Wortmodells 201. Wie gezeigt ist, zeigt der letzte aktive Zeiger LA auf den Zustand S&sub1;. Da es in dem Wortmodell 201 mehr als drei Zustände gibt, wird der Zustandszeiger j auf den Zustand S&sub2; zeigen. Daher wird das System in Schritt S189 ermitteln, dass der durch den Zeiger j angegebene Zustand hinter den durch den letzten aktiven Zeiger LA angegebenen Zustand, d. h. dem Zustand S&sub1;, liegt, und schreitet daher die Verarbeitung zu Schritt S191 fort. In Schritt S191 vergleicht das System den kumulativen Abstand, der in dem Zustand S&sub2; gespeichert ist, mit dem kumulativen Abstand, der in dem temporären Speicher INSCORE gespeichert ist, welcher dem Wortmodell 201 zugeordnet ist, welches durch einen in Fig. 17 gezeigten rechteckigen Kasten 241 repräsentiert wird. Falls der in INSCORE gespeicherte kumulative Abstand kleiner ist als der in dem Zustand S&sub2; gespeicherte kumulative Abstand, dann wird dieser in Schritt S193 in den Zustand S2 kopiert, und schreitet dann die Verarbeitung zu Schritt S197 fort. Falls der in INSCORE gespeicherte kumula tive Abstand größer als der in dem Zustand S&sub2; gespeicherte kumulative Abstand ist, dann bleibt der in dem Zustand S&sub2; gespeicherte kumulative Abstand unverändert und schreitet die Verarbeitung zu Schritt S197 fort, indem der Zeiger j dekrementiert wird, so dass er nun auf den Zustand S&sub1; zeigt. Die Verarbeitung kehrt dann zu Schritt S189 zurück, und dieselbe Verarbeitung wird für den Zustand S&sub1; durchgeführt.

Nach der Verarbeitung des Zustands S&sub1; wird der Zeiger j in Schritt S197 erneut dekrementiert, so dass er auf den Zustand S&sub0; zeigt. Demzufolge wird die Verarbeitung nach Schritt S189 zu Schritt S198 fortschreiten, indem das System prüft, um zu ermitteln, ob es irgendwelche weiteren zu verarbeitenden Zustände gibt. Da der Zustand S0 noch zu verarbeiten ist, schreitet das System zu Schritt S199 fort, indem der in INSCORE gespeicherte kumulative Abstand in den Zustand S&sub0; kopiert wird. Für den Zustand S&sub0; muss kein Vergleich von kumulativen Abständen durchgeführt werden, da dieser Zustand vor dem letzten aktiven Zustand liegt, auf den durch den letzten aktiven Zeiger gezeigt wird. Das System fügt dann in Schritt S201 den Zustand S&sub0; der Gegenwärtig-Aktivliste (welche vor Schritt S83 in Fig. 10 die Gegenwärtig-Aktivliste 205 war) hinzu und überschreibt den Sentinel-Zustand SSEN, welcher der letzte Zustand war, der zu der Gegenwärtig-Aktivliste hinzuzufügen war, in dem in Fig. 13a gezeigten Schritt S133. Das System dekrementiert dann in Schritt S203 den Zeiger j so, dass er nun auf den Zustand S&submin;&sub1; zeigt. Die Verarbeitung kehrt dann zu Schritt S198 zurück, indem das System ermittelt, dass es in dem gegenwärtigen Wort keine weiteren zu verarbeitenden Eintrittszustände gibt. Die Verarbeitung schreitet dann zu Schritt S204 fort, indem der Sentinel-Zustand SSEN erneut zu dem Ende der Gegenwärtig-Aktivliste hinzugefügt wird, da er in Schritt S201 überschrieben worden sein kann. Nach Schritt S204 schreitet die Verarbeitung dann zu Schritt S205 fort, indem der in dem entsprechenden temporären Speicher INSCORE gespeicherte kumulative Abstand auf den großen Wert SEHR GROSS zurückgesetzt wird. Die Anzahl von Zuständen auf der Gegenwärtig-Aktivliste wird dann in Schritt S207 zu dem Zählwert PACOUNT hinzugefügt, und die Verarbeitung kehrt zu dem in Fig. 7 gezeigten Schritt S59 zurück.

Ausästung

Bezugnehmend auf Fig. 7 schreitet dann, wenn in Schritt S63 das System ermittelt, dass es weitere zu verarbeitende zugeführte Rahmen gibt, die Verarbeitung dann zu Schritt S65 fort, indem der Ausästungsschwellenwert Th eingestellt wird. Das Ziel des Verwendens des Ausästens besteht darin, die Anzahl der Pfade der dynamischen Programmierung zu begrenzen, die sich von einem Zeitpunkt zu dem nächsten fortpflanzen. Im einzelnen zielt das vorliegende Ausführungsbeispiel darauf ab, den Ausästungsschwellenwert so einzustellen, dass die Anzahl von aktiven Zuständen, die tatsächlich zu verarbeiten sind, im wesentlichen innerhalb vorbestimmter Grenzen beschränkt bleibt, welche durch die verfügbare Menge an Arbeitsspeicher und Verarbeitungszeit diktiert werden. Ferner zielt das vorliegende Ausführungsbeispiel auch darauf ab, dies ohne die Notwendigkeit teurer Überschuss-Rechenleistung zu erreichen.

Ein Weg zum Gewährleisten, dass nur eine festgelegte Anzahl von aktiven Zuständen für jeden zugeführten Rahmen verarbeitet werden, besteht darin, die aktiven Zustände zu sortieren, die auf allen aktiven Listen für den in Verarbeitung befindlichen zugeführten Rahmen sind, in der ansteigenden Reihenfolge der darin gespeicherten kumulativen Abstände, und dann nur Verarbeiten der gewünschten Anzahl beginnend mit demjenigen mit dem geringsten kumulativen Abstand. Diese Technik erfordert jedoch eine große Menge an Rechenzeit, um die aktiven Zustände auszusortieren. Anstelle des Durchführens dieses rechenleistungsmäßig teueren Sortierens macht die in dem vorliegenden Ausführungsbeispiel verwendete Technik Gebrauch von den Informationen, die nach der Verarbeitung des letzten zugeführten Rahmens verfügbar sind. Im einzelnen wird in diesem Ausführungsbeispiel ein differentieller Wert (AUSÄSTUNG) in Abhängigkeit von der Anzahl von Zuständen variiert, die potentiell aktiv sind (welches in PACOUNT gespeichert ist), für den nächsten zu verarbeitenden zugeführten Rahmen, um die Anzahl von Zuständen, die tatsächlich verarbeitet werden werden, so beizubehalten, dass sie zwischen zwei Schwellenwerten liegen. Die Art und Weise, in welcher der differentielle Wert AUSÄSTUNG variiert wird, wird nun genauer unter Bezugnahme auf Fig. 18 beschrieben.

In Schritt S211 vergleicht das System die Anzahl von Zuständen, die für den nächsten zu verarbeitenden Rahmen potentiell aktiv sind, welches in PACOUNT gespeichert ist) mit einem Zustandsschwellenwert (STATETH), welcher so festgelegt ist, dass er kleiner ist als aber nahe bei einem absoluten Maximalzustandsschwellenwert liegt, der durch die verfügbare Menge an Arbeitsspeicher bestimmt wird. Falls der in PACOUNT gespeicherte Wert kleiner ist als STATETH, dann bedeutet dies, dass alle potentiell aktiven Zustände verarbeitet werden können, und kann daher der bei dem letzten Zeitpunkt verwendete Wert AUSÄSTUNG erhöht werden. Daher wird in Schritt S213 eine Einstellkonstante dp1 zu dem bestehenden differentiellen Wert AUSÄSTUNG addiert. Der Wert von dp1 ist so festgelegt, dass er größer ist als jeglicher vernünftiger lokaler Abstand, so dass die meisten, wenn nicht alle, der potentiell aktiven Zustände verarbeitet werden werden.

Der in AUSÄSTUNG gespeicherte Wert wird dann mit einem hohen Ausästungsschwellenwert HIGHPRTH in Schritt S215 verglichen. Eine obere Grenze wird dem differentiellen Wert AUSÄSTUNG auferlegt, da angenommen wird, dass es einen maximalen differentiellen Wert gibt, über den niemals hinausgegangen zu werden braucht. Falls der in AUSÄSTUNG gespeicherte Wert kleiner ist als HIGHPRTH, dann schreitet die Verarbeitung zu Schritt S219 fort. Falls der in AUSÄSTUNG gespeicherte Wert größer ist als HIGHPRTH, dann wird in Schritt S217 AUSÄSTUNG auf den gleichen Wert von HIGHPRTH festgelegt. Nach dem Schritt S215 oder dem Schritt S217 legt das System den Ausästungsschwellenwert Th fest. Die Verarbeitung kehrt dann zu dem in Fig. 7 gezeigten Schritt S43 zurück.

Falls in Schritt S211 das System ermittelt, dass die Anzahl potentiell aktiver Zustände PACOUNT für den nächsten Rahmen größer ist als STATETH, dann vergleicht das System in Schritt S221 die Anzahl von Zuständen, die aktiv waren und während der Verarbeitung des letzten zugeführten Rahmens verarbeitet wurden (welches in ACOUNT gespeichert ist) mit einem Niedrig zustandschwellenwert LOWSTTH. Der Wert von LOWSTTH wird festgelegt, um zu versuchen und zu gewährleisten, dass dann, wenn ACOUNT kleiner ist als LOWSTTH, es möglich sein wird, alle potentiell aktiven Zustände für den nächsten zugeführten Rahmen zu verarbeiten, ohne zu viel Zeit oder Speicher zu verbrauchen. Daher geht dann, wenn ACOUNT kleiner ist als LOWSTTH, die Verarbeitung von Schritt S221 zu Schritt S213 über, indem der differentielle Wert AUSÄSTUNG eingestellt wird, und schreitet die Verarbeitung wie vorstehend beschrieben fort.

Um zu ermitteln, ob der differentielle Wert AUSÄSTUNG verringert werden muss, vergleicht in Schritt S223 das System ACOUNT mit STATETH. Falls ACOUNT kleiner ist als STATETH, dann prüft das System, um zu ermitteln, ob der differentielle Wert AUSÄSTUNG gleich HIGHPRTH ist. Falls er nicht gleich HIGHPRTH ist, dann zeigt dies an, dass das System versucht hat, alle aktiven Zustände zu verarbeiten, und dass es daher unwahrscheinlich ist, dass die Anzahl von aktiven Zuständen, die für den nächsten zugeführten Rahmen verarbeitet werden werden, dazu führen wird, dass der Prozess zu lange dauern oder zu viel Speicher verbrauchen wird. Daher wird der differentielle Wert AUSÄSTUNG nicht geändert und geht die Verarbeitung zu Schritt S219 über, indem der Ausästungsschwellenwert festgelegt wird. Falls andererseits der differentielle Wert AUSÄSTUNG nicht gleich HIGHPRTH ist (in welchem Fall er kleiner als dieser sein muss), dann ist es möglich, dass die Anzahl von aktiven Zuständen, die für den nächsten zugeführten Rahmen verarbeitet werden werden, zu lange dauern oder zu viel Speicher verbrauchen werden. Daher muss die tatsächliche Anzahl von aktiven Zuständen, die verarbeitet werden werden, berechnet oder abgeschätzt werden. Dies wird in Schritt S233 unter Verwendung des in Schritt S231 festgelegten Ausästungsschwellenwerts durchgeführt, welcher einen unveränderten differentiellen Wert AUSÄSTUNG verwendet.

Zu Schritt S223 zurückkehrend wird dann, wenn das System ermittelt, dass ACOUNT größer ist als STATETH, der differentielle Wert AUSÄSTUNG in Schritt S225 um die Einstellkonstante dp1 verringert. Nachdem der differentielle Wert AUSÄSTUNG in Schritt S225 verringert worden ist, ermittelt das System in Schritt S227, ob der differentielle Wert AUSÄSTUNG kleiner ist als ein niedriger Ausästungsschwellenwert LOWPRTH. Ein niedriger Ausästungsschwellenwert wird verwendet, um zu gewährleisten, dass die Anzahl von aktiven Zuständen, die für den nächsten zugeführten Rahmen verarbeitet werden werden, größer sein wird als ein festgelegter Notzustand-Schwellenwert EMGSTTH. Der Grund hierfür ist der, dass festgestellt worden ist, dass der Prozess der dynamischen Programmierung fehlschlägt, falls zu stark ausgeästet wird. Falls der differentielle Wert AUSÄSTUNG kleiner ist als der niedrige Ausästungsschwellenwert LOWPRTH, dann wird er in Schritt S229 gleich LOWPRTH gemacht und wird in Schritt S231 der Ausästungsschwellenwert Th unter Verwendung des eingestellten differentiellen Werts AUSÄSTUNG festgelegt. Nachfolgend schätzt das System in Schritt S233 die Anzahl von aktiven Zuständen (und Knoten) ab, die für den nächsten zugeführten Rahmen verarbeitet werden werden, in dem zunächst die Zustandsdichte durch Teilen der Anzahl von aktiven Zuständen, welche während der Verarbeitung des letzten zugeführten Rahmens verarbeitet wurde, d. h. ACOUNT, durch den Wert von AUSÄSTUNG, der während der Verarbeitung des letzten zugeführten Rahmens verwendet wurde, und dann Abschätzen der Anzahl von aktiven Zuständen, die für den nächsten zugeführten Rahmen verarbeitet werden werden (Ensa) durch Multiplizieren der geschätzten Zustandsdichte mit dem neuen Wert von AUSÄSTUNG.

Falls diese abgeschätzte Anzahl Ensa kleiner ist als der Notzustand-Schwellenwert EMGSTTH, dann wurde der Ausästungsschwellenwert zu niedrig festgelegt, und kehrt die Verarbeitung zu Schritt S213 zurück, indem der differentielle Wert AUSÄSTUNG erhöht und der Ausästungsschwellenwert Th zurückgesetzt werden. Falls Ensa nicht kleiner ist als EMGSTTH, dann wird dies in Schritt S237 mit LOWSTTH verglichen. Falls Ensa größer ist als LOWSTTH, dann impliziert dies, dass der in Schritt S231 festgelegte Ausästungsschwellenwert Th akzeptabel ist, und endet die Verarbeitung und kehrt zu dem in Fig. 7 gezeigten Schritt S43 zurück. Falls andererseits Ensa kleiner ist als LOWSTTH, dann kann der Ausästungsschwellenwert erhöht werden, und somit wird eine zweite Einstellkonstante dp2 zu dem differentiellen Werts AUSÄSTUNG in Schritt S239 hinzugefügt, bevor der Ausästungsschwellenwert Th in Schritt S219 zurückgesetzt wird. In diesem Ausführungsbeispiel ist die zweite Einstellkonstante dp2 auf de Hälfte der Einstellkonstanten dp1 festgelegt.

In den in Fig. 18 gezeigten Schritten S219 und 231 wird der Ausästungsschwellenwert Th festgelegt. Dies kann dadurch erfolgen, dass der variable differentielle Wert (AUSÄSTUNG), welcher soeben berechnet wurde, zu dem gesamten kleinsten kumulativen Abstand MINSCORE, der für den soeben verarbeiteten zugeführten Rahmen ermittelt wurde, addiert wird. Die Erfinder haben jedoch erkannt, dass die Differenz zwischen dem global optimalen Pfad und dem lokalen Minimum dazu neigt, am größten zu sein, wenn der global optimale Pfad die ersten wenigen Zustände des korrekten Worts quert. Demzufolge wird in diesem Ausführungsbeispiel der Ausästungsschwellenwert so eingestellt, dass er näher an dem Anfang des Worts größer und in Richtung des Endes des Worts kleiner ist. Dies wird in dem vorliegenden Ausführungsbeispiel erreicht unter Verwendung eines ersten Ausästungsschwellenwerts Th&sub1; für die ersten fünf Zustände jedes Worts unter Verwendung eines zweiten kleineren Ausästungsschwellenwerts Th&sub2; für die nächsten fünf Zustände jedes Worts und unter Verwendung eines dritten Ausästungsschwellenwerts Th&sub3; für die verbleibenden Zustände jedes Worts wie in Fig. 19 dargestellt ist. In diesem Ausführungsbeispiel werden die drei Ausästungsschwellenwerte Th&sub1;, Th&sub2; und Th&sub3; ausgehend von dem folgenden ermittelt:

Th&sub1; = MINSCORE + AUSÄSTUNG

Th&sub2; = MINSCORE + 0,75, AUSÄSTUNG

Th&sub3; = MINSCORE + 0,5, AUSÄSTUNG

Wie dem Fachmann klar sein wird, macht die Ausästung, welche durchgeführt wird, eine harte Entscheidung dahingehend, ob sich jeder Pfad weiter fortpflanzen sollte oder nicht. Im einzelnen wird alles unterhalb dem Ausästungsschwellenwert verarbeitet, wohingegen alles darüber ausgeästet wird. Da Problem bei der Durchführung einer solchen harten Ausästungstechnik besteht darin, dass eine erhöhte Wahrschein lichkeit eines Ausästungsfehlers und daher ein Fehler in dem Erkennungsergebnis vorhanden sind. Dies ist deshalb so, dass dann, wenn der kumulative Abstand für den global optimalen Pfad größer ist als der Ausästungsschwellenwert, an dem Punkt, an dem der global optimale Pfad ausgeästet wird. Zustände in der Nachbarschaft des gegenwärtigen Zustands des global optimalen Pfads ähnliche kumulative Abstände haben werden und daher ebenfalls der Wahrscheinlichkeit unterliegen, durch die harte Ausästungstechnik ausgeästet zu werden. Daher kann eine verbesserte Ausästung erreicht werden durch Anwenden einer "weicheren" Ausästungstechnik, bei der ein Bereich vorhanden ist, der den Ausästungsschwellenwert derart umgibt, dass manche, aber nicht alle Pfade, die in diesen Bereich fallen, ausgeästet werden. Daher werden auch dann, wenn der optimale Pfad ausgeästet wird, Pfade ausreichend nahe bei dem optimalen Pfad beibehalten, so dass die Ausästung nicht in Erkennungsfehlern resultiert.

Eine solche weiche Ausästungstechnik kann auf eine Anzahl von verschiedenen Wegen erreicht werden. Zum Beispiel könnte ein Zufallszahlengenerator verwendet werden, um zufällig auszuwählen, ob Pfade mit kumulativen Abständen innerhalb eines vorbestimmten Bereichs ausgeästet werden sollten oder nicht. Da jedoch die Ausästungsentscheidung für alle aktiven Zustände an jedem Zeitschritt erfolgen muss, sollte dies so einfach wie möglich durchgeführt werden, da andernfalls die Ausästungstechnik zu viel Verarbeitungszeit erfordern würde. In dem vorliegenden Ausführungsbeispiel wird ein Vektor von Ausästungsschwellenwerten Th[s] für jeden zugeführten Rahmen fk berechnet. Die Werte der Ausästungsschwellenwerte in dem Vektor werden berechnet durch zunächst Berechnen der vorstehend erwähnten drei Ausästungsschwellenwerte Th&sub1;, Th&sub2; und Th&sub3;, dann Subtrahieren einer Konstanten δ von den geeigneten Ausästungsschwellenwerten für Zustände 2, 5, 8 usw., und Subtrahieren von 2δ von den geeigneten Ausästungsschwellenwerten für Zustände 0, 3, 6 usw., wie in Fig. 20 dargestellt ist. Die Erfinder haben festgestellt, dass mit diesem weichen Ausästen auf drei Ebenen eine Verringerung von 30% in der Anzahl von aktiven Zuständen, die verarbeitet werden müssen, er reicht wird, mit derselben Ausästungsfehlerrate wie bei einer harten Ausästungstechnik mit nur einer Ebene.

Wie dem Fachmann klar sein wird, sollte, die Anzahl von verwendeten Ausästungsebenen und die Schwankung um jede Ebene in bezug auf die Beschränkungen der dynamischen Programmierung, welche verwendet werden, ausgewählt werden, so dass auch dann, wenn der optimale Pfad ausgeästet wird, ein zu dem optimalen Pfad ausreichend naheliegender Pfad beibehalten wird.

Wie der Fachmann realisieren wird, ist das vorstehend Verfahren zum Variieren des Ausästungsschwellenwerts hinsichtlich der Rechenleistung nicht teuer, und erlaubt dennoch, den Ausästungsschwellenwert derart einzustellen, dass die Anzahl von aktiven Zuständen, die zu jedem Zeitpunkt verarbeitet werden, beschränkt wird, so dass die zugewiesene Verarbeitungszeit und der zugewiesene Speicher nicht überschritten werden.

Rückverfolgung

Nachdem alle Rahmen in der zugeführten Sequenz unter Verwendung der Sequenz der in Fig. 7 dargestellten Verarbeitungsschritte verarbeitet worden sind, ist eine Rückverfolgungsroutine erforderlich, um den exakten Pfad zu ermitteln, der durch den durch den Prozess der dynamischen Programmierung bestimmten optimalen Pfad genommen wurde. In diesem Ausführungsbeispiel verfolgt die Rückverfolgungsroutine über Rückwärtszeiger, welche die Sequenz von Wörtern angeben, über welche sich jeder Pfad fortpflanzt. Die Einzelheiten der Art und Weise, auf welche die Rückverfolgungsroutine durchgeführt wird, und die Art und Weise, auf welche die Zeiger erzeugt werden, sind dem Fachmann auf dem Gebiet der Sprachverarbeitung gut bekannt und werden nicht weiter beschrieben.

Initialisierung

Bevor das System versucht, eine zugeführte Aussprache zu erkennen, müssen die Systemschwellenwerte und die Systemvariablen, welche während des Erkennungsprozesses verwendet werden, initialisiert werden. Dies wird auf die folgende Weise erreicht. Zunächst wird der in dem Anfangsknoten N&sub0; gespei cherte kumulative Abstand auf einen nominellen Wert festgelegt, und werden die in allen anderen Knoten gespeicherten kumulativen Abstände so festgelegt, dass sie gleich dem großen Wert SEHR GROSS sind. Dann wird der Zähler, welcher die Anzahl von potentiell aktiven Zuständen PACOUNT, der jedem Wortmodell zugeordnet ist, auf Null gesetzt; der nächste aktive Zeiger, der jedem Wortmodell zugeordnet ist, wird so festgelegt, dass er auf den Endzustand SD dieses Modells zeigt; und der jedem Wortmodell zugeordnete temporäre Speicher INSCORE wird auf den großen Wert SEHR GROSS festgelegt. Alle Knoten werden dann so verarbeitet, dass der kleinst der kumulativen Abstände aller mit dem Eingang eines Worts verbundenen Knoten in den diesem Wort zugeordneten temporären Speicher INSCORE kopiert wird. Dies gewährleistet, dass der temporäre Speicher INSCORE jedes mit dem Anfangsknoten N&sub0; verbundenen Worts auf den nominellen Wert festgelegt wird. Schließlich wird der in INSCORE gespeicherte Wert jedes Worts dazu verwendet, die Eintrittszustände jedes Wortmodells zu aktivieren und zu initialisieren. Die Verarbeitungsschritte zum Initialisieren der Eintrittszustände jedes Wortmodells sind identisch zu den Verarbeitungsschritten, die zum Aktualisieren der Eintrittszustände verwendet werden, wie vorstehend unter Bezugnahme auf Fig. 16 beschrieben wurde. Die Ausästungsschwellenwerte und der differentielle Wert AUSÄSTUNG werden ebenfalls vor der Verarbeitung des ersten zugeführten Rahmens initialisiert. Im einzelnen werden die Ausästungsschwellenwerte Th&sub1;, Th&sub2;, und Th&sub3; auf den großen Wert SEHR GROSS festgelegt, und wird der differentielle Wert AUSÄSTUNG so festgelegt, dass er gleich dem hohen Ausästungsschwellenwert HIGHPRTH ist.

Alternative Ausführungsbeispiele

Bei dem vorstehenden Spracherkennungssystem können eine Anzahl von Modifikationen erfolgen, ohne von dem erfinderischen Konzept der vorliegenden Erfindung abzuweichen. Eine Anzahl dieser Modifikationen wird nun beschrieben.

Obwohl in dem vorstehenden Ausführungsbeispiel die gesamte Aussprache empfangen wird, bevor sie verarbeitet wird, kann das System inkrementell ablaufen, wobei die Sprache dann verarbeitet wird, wenn sie empfangen wird. In solch einem Ausführungsbeispiel würde noch immer ein Eingangspuffer erforderlich sein, jedoch müsste dieser nur in der Lage sein, ankommende Sprache entsprechend einem Rahmen zu speichern. Wie der Fachmann realisieren wird, muss, damit dieses System funktioniert, die gesamte Verarbeitung des Rahmens der zugeführten Sprache (durch den Präprozessor und den Erkennungsblock) beendet sein, bevor der nächste Rahmen zugeführter Erkennungsblock 17 zur Verarbeitung bereit ist.

In dem ersten Ausführungsbeispiel wurden die Zustände der Wortmodelle, welche sich an dem Ende eines Pfads dynamischer Programmierung befanden, in einer diesem Wortmodell zugeordneten Aktivliste aufgelistet. In einem alternativen Ausführungsbeispiel könnte eine einzige globale Aktivliste bereitgestellt sein, in welcher alle aktiven Zustände aller Wortmodelle aufgelistet sein würden. In einem solchen alternativen Ausführungsbeispiel müssten Informationen, die der globalen Aktivliste zugeordnet sind, zum Identifizieren, zu welchen Wortmodellen die bestimmten aktiven Zustände gehören, gespeichert werden.

In dem ersten Ausführungsbeispiel wurde von Gleichung (4) Gebrauch gemacht, um die Verarbeitung zu beschleunigen, die bei der Fortpflanzung der gültigen Pfade dynamischer Programmierung innerhalb jedes Worts für den nächsten Zeitschritt involviert ist. Darüber hinaus war die Suche so organisiert, dass die wahrscheinlichsten Situationen vor den am wenigsten wahrscheinlichen geprüft wurden. Ähnliche Verarbeitungstechniken konnten dazu verwendet werden, die gültigen Pfade dynamischer Programmierung von einem Wort zu dem nächsten fortzupflanzen.

In dem ersten Ausführungsbeispiel entsprechen die Zustände der Wortmodelle hinsichtlich der zeitlichen Dauer dem Rahmen der zu erkennenden zugeführten Sprache. In einem alternativen Ausführungsbeispiel könnte jeder Zustand eines Wortmodells hinsichtlich der zeitlichen Dauer zum Beispiel zu drei aufeinanderfolgenden Rahmen der zugeführten Sprache äquivalent sein. In solch einem alternativen Ausführungsbeispiel könnten die zugeführten Rahmen in Dreiergruppen gemittelt und dann mit den Zuständen der Wortmodelle ausgerichtet werden.

In dem ersten Ausführungsbeispiel wird der einzige beste Pfad dynamischer Programmierung über die Wortmodelle ermittelt. Wie dem Fachmann klar ist, könnte der Algorithmus leicht so angepasst werden, dass die n-besten Übereinstimmungen ermittelt werden, so dass dann, wenn ein Fehler in dem Erkennungsergebnis vorhanden ist, das System Alternativen anbieten kann, ohne den Satz zur Erkennung ein zweites Mal neu zuführen zu müssen.

In einem nochmals alternativen Ausführungsbeispiel könnten die Wortmodelle statistische Modelle sein, zum Beispiel Hidden Markov-Modelle, die dem Fachmann auf dem Gebiet der Spracherkennung gut bekannt sind. In solch einem Ausführungsbeispiel würde anstelle des Ermittelns des kleinsten kumulativen Abstands zwischen der zugeführten Aussprache und den Sequenzen von Wortmodellen die maximale Wahrscheinlichkeit, dass die zugeführte Sequenz durch eine bestimmte Sequenz von Hidden Markov-Modellen erzeugt wurde, ermittelt werden.

In dem ersten Ausführungsbeispiel entsprechen die verwendeten Referenzmodelle ganzen Wortern. Wie der Fachmann realisieren wird, ist dies nicht wesentlich. Die Referenzmodelle könnten Teilen von Wörtern, beispielsweise Silben, einer Vielzahl von Wörtern oder sogar einzelnen Phonemen entsprechen. Jedoch besteht der Nachteil der Verwendung von Referenzmodellen, welche Phonemen entsprechen, darin, dass das System sprachabhängig wird. Ferner werden Referenzmodelle, welche ganzen Wörtern äquivalent sind, gegenüber denjenigen bevorzugt, die ganzen Sätzen äquivalent sind, weil dort ein Potential zur Einsparung von Zeit und Rechenleistung vorhanden ist. Im einzelnen ist es durch Modellieren der Wörter innerhalb von Sätzen und unter Verwendung eines Sprachmodells möglich, dem System viele verschiedene Sätze unter Verwendung lediglich einer Handvoll von Wörtern beizubringen. Falls andererseits die Referenzmodelle den gesamten Sätzen entsprächen, dann wäre ein Referenzmodell für jeden der von dem System zu lernenden verschiedenen Sätzen erforderlich. Zusätzlich zu diesem Vorteil erhöhte die Verwendung von Referenzmodellen, welche Wörtern entsprechen, auch die Flexibilität des Systems hinsichtlich Lücken zwischen Wörtern in dem Satz. Dies ist aufgrund des Umgebungsmodells möglich, welches am Anfang oder am Ende des Satzes und auch zwischen den Wortern in dem Satz erscheinen kann.

In einem nochmals alternativen Ausführungsbeispiel könnten die Referenzmodelle komprimiert werden, wenn aufeinanderfolgende Rahmen des Modells ähnlich sind. Falls diese Situation auftritt, dann würden die aufeinanderfolgenden ähnlichen Rahmen durch einen einzigen Rahmen ersetzt.

In dem in Fig. 17 gezeigten Sprachmodell wird dann, wenn zwei verschiedene Wörter auf ein Wort folgen können, keine Bevorzugung dahingehend gesetzt, welches der beiden Wörter auf dieses Wort folgen wird. In einem alternativen Ausführungsbeispiel wäre es möglich, manche Sequenzen von Wörtern stärker bevorzugt als andere zu gewichten. Zum Beispiel kann für die in Fig. 17a dargestellten Sätze bekannt sein, dass der Satz "mache es ..." (gefolgt von einer Farbe) üblicher ist als die Sätze "mache es kleiner", "mache es größer" oder "mache es heller". Daher wird der Übergang von dem Knoten N&sub7; zu dem Knoten N&sub8; im Vergleich zu dem Übergang von dem Knoten N&sub7; zu dem Endknoten Nn stärker gemacht. Dies kann erreicht werden durch Verwenden von Gewichtungsfaktoren, welche die kumulativen Abstände gewichten, die von dem Knoten N&sub7; zu dem Eingang von Wörtern "stärker", "kleiner", "größer" und "heller" fortgepflanzt werden.

Wie der Fachmann realisieren wird, muss das Sprachmodell, das zum Definieren der zugelassenen Sequenzen von Wörtern verwendet wird, kein Bigram-Modell sein, sondern könnte irgendeine bekannte Art eines Sprachmodells, zum Beispiel ein Grammatikmodell mit endlichem Zustand, sein. Falls die verwendete Art von Sprachmodell geändert wird, dann müssten einige Modifikationen an dem vorstehend beschriebenen Inübereinstimmungbringungsprozess mit dynamischer Programmierung durchgeführt werden, jedoch wären solche Modifikationen für den Fachmann auf dem Gebiet der Spracherkennung ersichtlich. Die wesentlichen Merkmale des Inübereinstimmungbringungsprozesses würden jedoch unverändert bleiben, da diese so ausgestaltet sind, dass sie zur Verwendung in einem beliebigen Musterinübereinstimmungbringungsprozesses geeignet sind.

Darüber hinaus ist für den Fachmanm auf dem Gebiet der Musterinübereinstimmungsbringung ersichtlich, dass das Verfahren zum Implementieren des Inübereinstimmungbringungsprozesses mit dynamischer Programmierung auch zum Inübereinstimmungbringen von anderen Arten von Mustern verwendet werden könnte. Beispielsweise ist vorstellbar, dass der vorstehend beschriebene Musterinübereinstimmungbringungsprozess bei der Handschrifterkennung oder in anderen Musterinübereinstimmungbringungsanwendungen verwendet werden könnte.

Obwohl in dem vorstehend beschriebenen ersten Ausführungsbeispiel ein kontinuierliches Wortspracherkennungssystem beschrieben wird, ist es für den Fachmann ersichtlich, dass das vorstehend beschriebene System gleichermaßen auch auf andere Arten von Spracherkennungssystemen angewandt werden könnte.

Das in dem ersten Ausführungsbeispiel beschriebene Spracherkennungssystem kann in Verbindung mit vielen verschiedenen Softwareanwendungen, zum Beispiel einem Tabellenpaket, einem Grafikpaket, einem Textverarbeitungspaket usw. verwendet werden. Falls das Spracherkennungssystem mit einer Vielzahl von solchen Softwareanwendungen zu verwenden ist, dann könnte es vorteilhaft sein, für jede Anwendung getrennte Wort- und Sprachmodelle zu haben, insbesondere dann, wenn die in jeder Anwendung verwendeten Sätze verschieden sind. Der Grund für dies ist der, dass mit steigender Anzahl von Wortmodellen und zunehmender Größe des Sprachmodells die von dem System zum Erkennen einer zugeführten Aussprache in Anspruch genommene Zeit zunimmt. Daher kann durch getrennte Wort- und Sprachmodelle für jede Anwendung die Geschwindigkeit des Spracherkennungssystems aufrecht erhalten werden. Darüber hinaus könnten für jede Anwendung mehrere Wort- und Sprachmodelle verwendet werden.

Darüber hinaus kann, wie dem Fachmann klar ist, das vorstehende Spracherkennungssystem auch in verschiedenen Arten von Hardware verwendet werden. Zum Beispiel könnte außer der naheliegenden Anwendung in einem Personalcomputer oder dergleichen das Spracherkennungssystem als eine Benutzerschnittstelle für ein Telefaxgerät, ein Telefon, einen Drucker, ein Fotokopiergerät oder irgendeine Maschine mit einer Mensch-/Maschine-Schnittstelle verwendet werden.

Die vorliegende Erfindung soll nicht durch die vorstehend beschriebenen beispielhaften Ausführungsbeispiele beschränkt werden, und verschiedene andere Modifikationen und Ausführungsbeispiele sind für den Fachmann ersichtlich. Der Schutzumfang der Erfindung ist nur durch die beigefügten Patentansprüche beschränkt.


Anspruch[de]

1. Verfahren zum Inübereinstimmungbringen einer ersten Sequenz von Mustern, die ein erstes Signal repräsentiert, mit einer zweiten Sequenz von Mustern, die ein zweites Signal repräsentiert, umfassend die Schritte:

Inübereinstimmungbringen des ersten Signals mit dem zweiten Signal unter Verwendung eines Inübereinstimmungsprozesses, welcher jedes erste Signalmuster in Sequenz verarbeitet und welcher eine Vielzahl von Pfaden unter Verwendung vorbestimmter Pfadverfolgungsbeschränkungen verfolgt, wobei jeder Pfad eine mögliche Übereinstimmung zwischen einer Sequenz von zweiten Signalmustern und einer Sequenz von ersten Signalmustern, die an dem gegenwärtig verarbeiteten ersten Signalmuster enden, repräsentiert, und wobei jeder Pfad einen zugeordneten kumulativen Wert hat, der die Nähe der Übereinstimmung repräsentiert; und

Steuern des Inübereinstimmungsbringungsschritts durch Vergleichen der kumulativen Werte mit einem Ausästungswert während der Verarbeitung jedes ersten Signalmusters und Verwerfen von Pfaden in Abhängigkeit von dem Ergebnis des Vergleichsschritts;

wobei eine Anzahl verschiedener Ausästungswerte in dem Steuerschritt während der Verarbeitung eines ersten Signalmusters verwendet werden, und

dadurch gekennzeichnet, daß der für einen gegebenen Pfad während der Verarbeitung des gegenwärtigen ersten Signalmusters von der Position, innerhalb der das zweite Signal repräsentierenden Sequenz von Mustern, des zweiten Signalmusters abhängt, welches am dem Ende des gegebenen Pfads für das gegenwärtig verarbeitete erste Signalmuster liegt.

2. Verfahren nach Anspruch 1, bei dem die in dem Vergleichsschritt für ein nachfolgendes erstes Signalmuster verwendeten Ausästungswerte durch Hinzufügen einer Variablen, welche sich mit der Position ändert, zu dem kleinsten kumulativen Wert aller nach der Verarbeitung eines gegenwärtigen ersten Signalmusters verbleibenden Signalmuster bestimmt werden.

3. Verfahren nach Anspruch 1 oder 2, bei dem die Sequenz von zweiten Signalmustern in eine Vielzahl von Gruppen von Untersequenzen aufgeteilt sind, und bei dem während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleichsschritt einen anderen Ausästungswert für jede Gruppe verwendet.

4. Verfahren nach Anspruch 1, 2 oder 3, bei dem während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleichsschritt einen ersten Ausästungswert für Pfade, die ein einem der ersten n zweiten Signalmuster enden, einen zweiten Ausästungswert für Pfade, die an einem der nächsten m zweiten Signalmuster enden, und einen dritten Ausästungswert für Pfade, die an einem der verbleibenden zweiten Signalmuster enden, verwendet.

5. Verfahren nach einem der vorangehenden Ansprüche, bei dem während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleichsschritt einen Ausästungswert verwendet, welcher für Pfade, welche in Richtung des Anfangs des zweiten Signals enden, größer ist als der für Pfade verwendete Ausästungswert, welche in Richtung des Endes des zweiten Signals enden.

6. Verfahren nach einem der vorangehenden Ansprüche, bei dem der Steuerschritt einen harten Ausästungsvorgang durchführt, wodurch Pfade mit einem schlechteren kumulativen Wert als der entsprechende Ausästungswert verworfen werden.

7. Verfahren nach einem der Ansprüche 1 bis 5, bei dem der Steuerschritt einen weichen Ausästungsvorgang durchführt, wodurch manche Pfade, die einen schlechteren kumulativen Wert als der entsprechende Ausästungswert haben, nicht verworfen werden.

8. Verfahren nach Anspruch 7, bei dem der Steuerschritt die weiche Ausästung für Pfade durchführt, welche einen kumulativen Wert haben, welcher innerhalb einer vorbestimmten Größe des entsprechenden Ausästungswerts liegt.

9. Verfahren nach Anspruch 8, bei dem der Steuerschritt zufällig Pfade verwirft, welche einen kumulativen Wert haben, welcher innerhalb der vorbestimmten Größe des entsprechenden Ausästungswerts liegt.

10. Verfahren nach Anspruch 8, bei dem der Steuerschritt Pfade verwirft, welche einen kumulativen Wert haben, welcher innerhalb der vorbestimmten Größe des entsprechenden Ausästungswerts liegt, in Abhängigkeit des Werts des kumulativen Werts relativ zu dem entsprechenden Ausästungswert.

11. Verfahren nach Anspruch 8, bei dem die Sequenz von zweiten Signalmustern in eine Vielzahl von Gruppen von Untersequenzen unterteilt ist, und bei dem während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleichsschritt eine unterschiedliche Vielzahl von Ausästungswerten für jede der Gruppen verwendet.

12. Verfahren nach Anspruch 11, bei dem die Vielzahl von Ausästungswerten, die der ersten Gruppe von zweiten Signalmustern zugeordnet sind, größer ist als die Vielzahl von Ausästungswerten, die für nachfolgende Gruppen von zweiten Signalmustern verwendet werden.

13. Verfahren nach Anspruch 11 oder 12, bei dem die Anzahl von Gruppen, die Anzahl von unterschiedlichen Ausästungswerten, die jeder Gruppe zugeordnet sind, und die Differenz zwischen den Ausästungswerten, die einer Gruppe zugeordnet sind, in Abhängigkeit von den Pfadverfolgungsbeschränkungen bestimmt werden.

14. Verfahren nach einem der vorangehenden Ansprüche, bei dem der für einen gegebenen Pfad verwendete Ausästungswert von dem Ausästungswert abhängt, der für Pfade verwendet wird, welche bei dem zweiten Signalmuster enden, welches zu dem zweiten Signalmuster benachbart ist, welches an dem Ende des gegebenen Pfads liegt.

15. Verfahren nach Anspruch 2 oder einem davon abhängigen Anspruch, bei dem sich die Variable auch mit der Anzahl von Pfaden ändert, welche während der Verarbeitung eines vorangehenden ersten Signalmusters verfolgt wurden.

16. Verfahren nach einem der vorangehenden Ansprüche, bei dem der Inübereinstimmungsbringungsschritt einen dynamischen Programmierinübereinstimmungsvorgang durchführt.

17. Verfahren nach einem der vorangehenden Ansprüche, bei dem das erste Signal ein Sprachsignal repräsentiert, und das zweite Signal ein Referenzsprachsignal repräsentiert, und bei dem jedes der Muster eine Anzahl von Parametern umfaßt, die akustische Eigenschaften des entsprechenden Sprachsignals während eines entsprechenden Zeitrahmens umfaßt.

18. Dynamisches Programmiermuster-Inübereinstimmungsbringungssystem zum Inübereinstimmungbringen eines Eingangssignals mit einem Referenzsignal, dadurch gekennzeichnet, daß die Ausästungsschwelle, die für einen möglichen Inübereinstimmungsbringungspfad verwendet wird, von der Position des Endes des möglichen Inübereinstiimnungsbringungspfads innerhalb des Referenzsignals abhängt.

19. Vorrichtung zum Inübereinstimmungbringen einer ersten Sequenz von Mustern, die ein erstes Signal repräsentieren, mit einer zweiten Sequenz von Mustern, die ein zweiten Signal repräsentieren, umfassend:

einen Musterinübereinstimmungsbringer zum Inübereinstimmungsbringen des ersten Signals mit dem zweiten Signal unter Verwendung eines Inübereinstimmungsprozesses, welcher jedes erste Signalmuster in Sequenz verarbeitet und welcher eine Vielzahl von Pfaden unter Verwendung vorbestimmter Pfadverfolgungsbeschränkungen verfolgt, wobei jeder Pfad eine mögliche Übereinstimmung zwischen einer Sequenz von zweiten Signalmustern und einer Sequenz von ersten Signalmustern, die an dem gegenwärtig verarbeiteten ersten Signalmuster enden, repräsentiert, und wobei jeder Pfad einen zugeordneten kumu lativen Wert hat, der die Nähe der Übereinstimmung repräsentiert; und

eine Steuereinrichtung zum Steuern des Musterinübereinstimmungsbringers durch Vergleichen der kumulativen Werte mit einem Ausästungswert während der Verarbeitung jedes ersten Signalmusters und Verwerfen von Pfaden in Abhängigkeit von dem Ergebnis des Vergleichsschritts;

wobei eine Anzahl verschiedener Ausästungswerte durch die Steuereinrichtung während der Verarbeitung eines gegenwärtigen ersten Signalmusters verwendet werden, und

dadurch gekennzeichnet, daß der für einen gegebenen Pfad während der Verarbeitung des gegenwärtigen ersten Signalmusters verwendete Ausästungswert von der Position, innerhalb der das zweite Signal repräsentierenden Sequenz von Mustern, des zweiten Signalmusters abhängt, welches am dem Ende des gegebenen Pfads für das gegenwärtig verarbeitete erste Signalmuster liegt.

20. Vorrichtung nach Anspruch 19, bei der die in dem Vergleich für ein nachfolgendes erstes Signalmuster verwendeten Ausästungswerte durch Hinzufügen einer Variablen, welche sich mit der Position ändert, zu dem kleinsten kumulativen Wert aller nach der Verarbeitung eines gegenwärtigen ersten Signalmusters verbleibenden Signalmuster bestimmt werden.

21. Vorrichtung nach Anspruch 19 oder 20, bei der die Sequenz von zweiten Signalmustern in eine Vielzahl von Gruppen von Untersequenzen aufgeteilt sind, und bei der während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleich einen anderen Ausästungswert für jede Gruppe verwendet.

22. Vorrichtung nach Anspruch 19, 20 oder 21, bei der während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleich einen ersten Ausästungswert für Pfade, die ein einem der ersten n zweiten Signalmuster enden, einen zweiten Ausästungswert für Pfade, die an einem der nächsten m zweiten Signalmuster enden, und einen dritten Ausästungswert für Pfade, die an einem der verbleibenden zweiten Signalmuster enden, verwendet.

23. Vorrichtung nach einem der Ansprüche 19 bis 22, bei der während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleich einen Ausästungswert verwendet, welcher für Pfade, welche in Richtung des Anfangs des zweiten Signals enden, größer ist als der für Pfade verwendete Ausästungswert, welche in Richtung des Endes des zweiten Signals enden.

24. Vorrichtung nach einem der vorangehenden Ansprüche 19 bis 23, bei der die Steuereinrichtung so betreibbar ist, daß ein harter Ausästungsvorgang durchgeführt wird, wodurch Pfade mit einem schlechteren kumulativen Wert als der entsprechende Ausästungswert verworfen werden.

25. Vorrichtung nach einem der Ansprüche 19 bis 23, bei der die Steuereinrichtung so betreibbar ist, daß ein weicher Ausästungsvorgang durchgeführt wird, wodurch manche Pfade, die einen schlechteren kumulativen Wert als der entsprechende Ausästungswert haben, nicht verworfen werden.

26. Vorrichtung nach Anspruch 25, bei der die Steuereinrichtung so betreibbar ist, daß sie weiche Ausästung für Pfade durchgeführt wird, welche einen kumulativen Wert haben, welcher innerhalb einer vorbestimmten Größe des entsprechenden Ausästungswerts liegt.

27. Vorrichtung nach Anspruch 26, bei der die Steuereinrichtung so betreibbar ist, daß zufällig Pfade verworfen werden, welche einen kumulativen Wert haben, welcher innerhalb der vorbestimmten Größe des entsprechenden Ausästungswerts liegt.

28. Vorrichtung nach Anspruch 26, bei der die Steuereinrichtung so betreibbar ist, daß Pfade verworfen werden, welche einen kumulativen Wert haben, welcher innerhalb der vorbestimmten Größe des entsprechenden Ausästungswerts liegt, in Abhängigkeit des Werts des kumulativen Werts relativ zu dem entsprechenden Ausästungswert.

29. Vorrichtung nach Anspruch 26, bei der die Sequenz von zweiten Signalmustern in eine Vielzahl von Gruppen von Untersequenzen unterteilt ist, und bei der während der Verarbeitung eines gegenwärtigen ersten Signalmusters der Vergleich eine unterschiedliche Vielzahl von Ausästungswerten für jede der Gruppen verwendet.

30. Vorrichtung nach Anspruch 29, bei der die Vielzahl von Ausästungswerten, die der ersten Gruppe von zweiten Signalmustern zugeordnet sind, größer ist als die Vielzahl von Ausastungswerten, die für nachfolgende Gruppen von zweiten Signalmustern verwendet werden.

31. Vorrichtung nach Anspruch 29 oder 30, bei der die Anzahl von Gruppen, die Anzahl von unterschiedlichen Ausästungswerten, die jeder Gruppe zugeordnet sind, und die Differenz zwischen den Ausästungswerten, die einer Gruppe zugeordnet sind, in Abhängigkeit von den Pfadverfolgungsbeschränkungen bestimmt werden.

32. Vorrichtung nach einem der Ansprüche 19 bis 31, bei der der für einen gegebenen Pfad verwendete Ausästungswert von dem Ausästungswert abhängt, der für Pfade verwendet wird, welche bei dem zweiten Signalmuster enden, welches zu dem zweiten Signalmuster benachbart ist, welches an dem Ende des gegebenen Pfads liegt.

33. Vorrichtung nach Anspruch 20 oder einem davon abhängigen Anspruch, bei der sich die Variable auch mit der Anzahl von Pfaden ändert, welche während der Verarbeitung eines vorangehenden ersten Signalmusters verfolgt wurden.

34. Vorrichtung nach einem der Ansprüche 19 bis 33, bei der der Inübereinstimmungsbringer so betreibbar ist, daß ein dynamischer Programmierinübereinstimmungsvorgang durchgeführt wird.

35. Vorrichtung nach einem der Ansprüche 19 bis 34, bei der das erste Signal ein Sprachsignal repräsentiert, und das zweite Signal ein Referenzsprachsignal repräsentiert, und bei der jedes der Muster eine Anzahl von Parametern umfaßt, die akustische Eigenschaften des entsprechenden Sprachsignals während eines entsprechenden Zeitrahmens umfaßt.

36. Computerlesbares Medium, das computerausführbare Prozeßschritte speichert, um alle der Schritte eines Verfahrens ge maß einem der Ansprüche 1 bis 17 durchzuführen, wenn sie auf einem Computer in Ablauf gebracht werden.

37. Computerprogramm zum Übermitteln von computerausführbaren Prozeßschritten zum Durchführen aller der Schritte eines Verfahrens gemäß einem der Ansprüche 1 bis 17, wenn sie auf einem Computer in Ablauf gebracht werden.







IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com