-
Die
Erfindung bezieht sich auf die Bestimmung eines Phonems oder phonemähnlichen
Modellen für Wörter oder
Befehle, welche einem Wort/Befehl-Wörterbuch hinzugefügt und bei
sprachverarbeitungsbezogenen Anwendungen, wie beispielsweise Spracherkennung,
verwendet werden können.
Die Erfindung bezieht sich insbesondere auf die Erzeugung von kanonischen
und nicht kanonischen Phonemsequenzen, welche die Aussprache bzw.
Ausspracheform von eingegebenen Wörtern darstellen bzw. repräsentieren,
wobei die Sequenzen bei sprachverarbeitenden Anwendungen Verwendung
finden können.
-
Die
Verwendung von Spracherkennungssystemen wird aufgrund der zunehmenden
Verarbeitungsleistung, die zur Durchführung des Erkennungsvorgangs
bzw. der Erkennungsoperation verfügbar ist, mehr und mehr gängig. Die
meisten Spracherkennungssysteme können in kleine Vokabelsysteme
und große
Vokabelsysteme klassifiziert werden. Bei kleinen Vokabelsystemen
vergleicht die Spracherkennungsmaschine üblicherweise die eingegebene
zu erkennende Sprache mit akustischen Mustern, die dem System bekannte
Wörter
repräsentieren.
In dem Fall von großen
Vokabelsystemen ist es nicht praktisch, für jedes dem System bekannte
Wort ein Wortmodell zu speichern. Stattdessen repräsentieren
die Bezugsmuster üblicherweise
Phoneme einer gegebenen Sprache. Auf diese Weise wird die eingegebene
Sprache mit den Phonemmustern verglichen, um eine die eingegebene
Sprache repräsentierende
Sequenz von Phonemen zu erzeugen. Dann wird eine Wortdecodiereinrichtung
verwendet, um unter Verwendung eines Wort-zu-Phonem-Wörterbuchs
innerhalb der Sequenz von Phonemen Wörter zu identifizieren.
-
Ein
Problem mit großen
Vokabelspracherkennungssystemen besteht darin, dass, wenn der Benutzer ein
sich nicht in dem Wortwörterbuch
bzw. Wortlexikon befindendes Wort spricht, dann wird eine Fehlerkennung
auftreten, und das Spracherkennungssystem wird das Wort oder Wörter ausgeben,
die am ähnlichsten zu
der Ausgabe eines tatsächlich
gesprochenen Vokabelworts klingen. Dieses Problem kann überwunden
werden, indem ein Mechanismus zur Verfügung gestellt wird, der es
Benutzern ermöglicht,
neue Wortmodelle für Ausgaben
von Vokabelwörtern
hinzuzufügen.
Zur Datierung, dies wurde vor allem erzielt, indem akustische Modelle
erzeugt wurden, die für
die für
die Ausgabe von Vokabelwörtern
repräsentativ
sind. Jedoch erfordert dies, dass das Spracherkennungssystem die
eingegebene Sprache mit zwei verschiedenen Typen von Modellen – Phonemmodelle
und Wortmodelle – abgleicht,
was den Erkennungsprozess verlangsamt. Andere Systeme ermöglichen
es dem Benutzer, eine phonetische Buchstabierung zu dem Wortlexikon
hinzuzufügen,
um Ausgaben von Vokabelwörtern
vorzuhalten. Jedoch erfordert dies, dass der Benutzer explizit jedes
Phonem für
das neue Wort zur Verfügung
stellt, und dies ist für
Benutzer nicht praktisch, die eine begrenzte Kenntnis des Systems
haben, und die die Phoneme nicht kennen, aus welchen das Wort gebildet
ist. Es wäre
eine alternative Technik, das neue Wort in eine Sequenz von Phonemen
unter Verwendung eines Spracherkennungssystems zu decodieren und
die decodierte Sequenz von Phonemen zu behandeln, als wäre sie korrekt.
Da heute jedoch sogar die besten Systeme eine Genauigkeit von geringer
als 80% haben, würde
diese eine Anzahl von Fehlern einfügen, was schließlich zu
einer geringeren Erkennungsrate des Systems führen würde.
-
GB-A-2349260
beschreibt ein System zur Erzeugung neuer Bezugsmodelle zur Hinzufügung zu
einem Spracherkennungswörterbuch
aus drei oder mehr Trainingssignalen. Das System vergleicht und
gleicht gleichzeitig die drei oder mehr Trainingssignale miteinander
bzw. zueinander ab, und erzeugt aus den Abgleichergebnissen ein
die Trainingssignale repräsentatives
Bezugsmodell.
-
Es
ist ein Ziel der vorliegenden Erfindung, wie in den beigefügten Ansprüchen dargelegt,
eine alternative Technik zur Erzeugung eines Phonems oder einer
phonemähnlichen
Sequenz zur Verfügung
zu stellen, die neue Wörter
repräsentieren,
die einem Wortwörterbuch
oder einem Befehlswörterbuch
hinzuzufügen
sind, welche beispielsweise in einem Spracherkennungssystem Verwendung
finden können.
-
Nun
werden als Beispiel dienende Ausführungsbeispiele der vorliegenden
Erfindung unter Bezugnahme auf die beiliegende Zeichnung ausführlicher
beschrieben. Es zeigen:
-
1 eine
schematische Blockansicht eines Computers, der programmiert werden
kann, um ein Ausführungsbeispiel
der vorliegenden Erfindung auszuführen bzw. zu betreiben;
-
2 ein
schematisches Schaubild eines Überblicks über ein
die vorliegende Erfindung ausführendes Spracherkennungssystem;
-
3 ein
schematisches Blockschaltbild der Hauptkomponenten der Wortmodellerzeugungseinheit, welche
einen Teil des in 2 gezeigten Spracherkennungssystems
bildet;
-
4 ein
schematisches Schaubild, das eine erste und zweite Sequenz von Phonemen,
die zwei Wiedergaben eines neuen Worts repräsentieren, nachdem es durch
das in 2 gezeigte Spracherkennungssystem verarbeitet
worden ist, und eine dritte Sequenz von Phonemen zeigt, welche die
erste und zweite Sequenz von Phonemen am besten repräsentiert,
und welche die Möglichkeit
veranschaulicht, dass es Phonemeinfügungen und -löschungen
aus der ersten und zweiten Sequenz von Phonemen relativ zu der dritten
Sequenz von Phonemen gibt;
-
5 eine
schematische Veranschaulichung eines Suchraums, der durch die Sequenzen
von Phonemen für
die zwei Wiedergaben des neuen Worts zusammen mit einem Startnullknoten
und einem Endnullknoten geschaffen wird;
-
6 ein
zweidimensionales Diagramm, bei welchem die horizontale Achse für die einer
Wiedergabe des neuen Worts entsprechenden Phoneme zur Verfügung gestellt
ist, und die vertikale Achse für
die der anderen Wiedergabe des neuen Worts entsprechenden Phoneme
zur Verfügung
gestellt ist, und das eine Anzahl von Gitterpunkten zeigt, die jeder
einem möglichen
Abgleich zwischen einem Phonem der ersten Wiedergabe des Worts und
einem Phonem der zweiten Wiedergabe des Worts entsprechen;
-
7 eine
schematische Veranschaulichung der dynamischen Programmierbedingungen,
die durch die dynamische Programmierabgleicheinheit eingesetzt werden, welche
einen Teil der in 3 gezeigten Wortmodellerzeugungseinheit
bildet;
-
8 eine
schematische Veranschaulichung der Lösch- und Decodierwahrscheinlichkeiten, welche für ein Beispielphonem
gespeichert sind, und welche bei der Punktvergabe während des
dynamischen Programmierabgleichprozesses verwendet werden, der durch
die in 3 gezeigte Abgleicheinheit durchgeführt wird;
-
9 ein
Flussdiagramm, dass die Hauptverarbeitungsschritte veranschaulicht,
die durch die in 3 gezeigte dynamische Programmierabstimmabgleicheinheit
durchgeführt
werden;
-
10 ein
Flussdiagramm, dass die Hauptverarbeitungsschritte veranschaulicht,
die zum Einsatz kommen, um dynamische Programmierpfade von dem Nullstartknoten
zu dem Nullendknoten weiterzuführen;
-
11 ein
Flussdiagramm, dass die Verarbeitungsschritte veranschaulicht, die
beim Bestimmen einer Übergangspunktzahl
bzw. eines Übergangsergebnisses
zur Weiterführung
eines Pfads bzw. zum auf ihm Fortschreiten während des dynamischen Programmierabstimmprozesses
involviert sind;
-
12 ein
Flussdiagramm, dass die Verarbeitungsschritte veranschaulicht, die
beim Berechnen von Punktzahlen bzw. Ergebnissen für Löschungen
und Decodierungen der ersten und zweiten Phonemsequenzen, die den
Wortwiedergaben entsprechen, zum Einsatz kommen;
-
13 eine schematische Veranschaulichung
eines Suchraums, der durch drei Sequenzen von Phonemen geschaffen
wird, die für
drei Wiedergaben eines neuen Worts erzeugt werden;
-
14 ein
Flussdiagramm, dass die Hauptverarbeitungsschritte veranschaulicht,
die zum Einsatz kommen, um dynamische Programmierpfade von dem Nullstartknoten
zu dem Nullendknoten weiterzuführen bzw.
auf ihnen fortzuschreiten, die in 13 gezeigt
sind;
-
15 ein
Flussdiagramm, dass die Verarbeitungsschritte veranschaulicht, die
beim Fortschreiten auf einem Pfad während des dynamischen Programmierprozesses
zum Einsatz kommen;
-
16 ein
Flussdiagramm, dass die Verarbeitungsschritte veranschaulicht, die
beim Bestimmen einer Übergangspunktzahl
bzw. Übergangsergebnis
zur Weiterführung
eines Pfads bzw. auf ihm Fortschreiten während des dynamischen Programmierabstimmprozesses
involviert sind;
-
17a ein Flussdiagramm, dass einen ersten Teil
der Verarbeitungsschritte veranschaulicht, die beim Berechnen von
Punktzahlen bzw. Ergebnissen für
Löschungen
und Decodierungen von Phonemen während
des dynamischen Programmierabstimmprozesses zum Einsatz kommen;
-
17b ein Flussdiagramm, dass einen zweiten Teil
der Verarbeitungsschritte veranschaulicht, die beim Berechnen von
Punktzahlen bzw. Ergebnissen für
Löschungen
und Decodierungen von Phonemen während
des dynamischen Programmierabstimmprozesses zum Einsatz kommen;
-
17c ein Flussdiagramm, dass einen dritten Teil
der Verarbeitungsschritte veranschaulicht, die beim Berechnen von
Punktzahlen bzw. Ergebnissen für
Löschungen
und Decodierungen von Phonemen während
des dynamischen Programmierabstimmprozesses zum Einsatz kommen;
-
17d ein Flussdiagramm, dass die bei den Verarbeitungsschritten
eingesetzten verbleibenden Schritte veranschaulicht, die beim Berechnen
von Punktzahlen bzw. Ergebnissen für Löschungen und Decodierungen
von Phonemen während
des dynamischen Programmierabstimmprozesses zum Einsatz kommen;
-
18 ein
schematisches Blockschaltbild der Hauptkomponenten einer alternativen
Wortmodellerzeugungseinheit, welche bei dem in 2 gezeigten
Spracherkennungssystem Verwendung finden kann;
-
19 ein
Diagramm, das die Art veranschaulicht, in welcher Wahrscheinlichkeitspunktzahlen
bzw. -ergebnisse mit verschiedenen Aussprachen von eingegebenen
Wörtern
variieren;
-
20 eine
schematische Veranschaulichung zweier Sequenzen von Phonemen; und
-
21 eine
schematische Veranschaulichung eines Phonemgitters, das durch Kombination
der zwei in 20 veranschaulichten Phonemsequenzen
gebildet ist.
-
ERSTES AUSFÜHRUNGSBEISPIEL
-
Ausführungsbeispiele
der vorliegenden Erfindung können
unter Verwendung von speziell zugeschnittenen Hardwareschaltungen
ausgeführt
werden, das zu beschreibende Ausführungsbeispiel wird jedoch
in Computersoftware oder Code ausgeführt, der in Verbindung mit
einem Personalcomputer läuft.
Bei alternativen Ausführungsbeispielen
kann die Software in Verbindung mit einer Workstation, einem Photokopierer,
einer Faksimilemaschine, einem persönlichen digitalen Assistenten
(PDR), einem Webbrowser oder dergleichen laufen gelassen werden.
-
1 zeigt
einen Personalcomputer (PC) 1, welcher programmiert ist,
um ein Ausführungsbeispiel
der vorliegenden Erfindung zu betreiben. Eine Tastatur 3,
eine Zeigevorrichtung, ein Mikrophon 7 und eine Telefonleitung 9 sind über eine
Schnittstelle 11 mit dem PC 1 verbunden. Die Tastatur 3 und
die Zeigevorrichtung ermöglichen
es, dass das System durch einen Benutzer gesteuert wird. Das Mikrophon 7 wandelt
das akustische Sprachsignal des Benutzers in ein äquivalentes
elektrisches Signal um und führt
dieses dem PC 1 zur Verarbeitung zu. Mit der Telefonleitung 9 kann
ein internes Modem und eine (nicht abgebildete) Sprachempfangsschaltung
verbunden sein, so dass der PC 1 mit beispielsweise einem
sich entfernt befindenden Computer oder mit einem sich entfernt
befindenden Benutzer kommunizieren kann.
-
Die
Programmanweisungen, die den PC 1 veranlassen, gemäß der vorliegenden
Erfindung zu arbeiten, können
zur Verwendung mit dem PC 1 auf beispielsweise einer Speichervorrichtung,
wie beispielsweise einer magnetischen Disk 13, oder durch
Herunterladen der Software von einem sich entfernt befindenden Computer über beispielsweise
das Internet über
das interne Modem und die Telefoneinheit 9 zugeführt werden.
-
Nun
wird der Betrieb bzw. die Operation des in dem PC 1 ausgeführten Spracherkennungssystems 14 unter
Bezugnahme auf 2 ausführlicher beschrieben. Elektrische
Signale, die die von dem Benutzer eingegebene Sprache von dem Mikrophon 7 repräsentieren,
werden auf eine Vorverarbeitungseinrichtung bzw. einen Vorprozessor 15 angewendet,
der das eingegebene Sprachsignal in eine Sequenz von Parameterrahmen umwandelt,
die jeder einen entsprechenden Zeitrahmen des eingegebene Sprachsignals
repräsentieren.
Die Sequenz von durch den Vorprozessor 15 ausgegebenen
Parameterrahmen wird dann der Spracherkennungsmaschine 17 zugeführt, wo
die Sprache durch Vergleich der eingegebene Sequenz von Parameterrahmen
mit Phonemmodellen 19 erkannt wird, um eine Sequenz von
Phonemen zu erzeugen, die die eingegebene Äußerung repräsentieren. Während der
normalen Betriebsart des Spracherkennungssystems 14 wird
diese Sequenz von Phonemen über
einen Schalter 20 in die Wortdecodiereinrichtung 21 eingegeben,
welche Wörter
in der erzeugten Phonemsequenz identifiziert, indem die Phonemsequenz
mit denjenigen verglichen wird, die in einem Wort-zu-Phonem-Lexikon
bzw. Wort-zu-Phonem-Wörterbuch 23 gespeichert
sind. Die durch die Wortdecodiereinrichtung 21 ausgegebenen
Wörter 25,
werden dann durch den PC 1 verwendet, um entweder die auf
dem PC 1 laufenden Softwareanwendungen zu steuern, oder
zur Einfügung
als Text in ein auf dem PC 1 laufendes Wort- bzw. Textverarbeitungsprogramm.
-
Um
in der Lage zu sein, Wörter
in das Wort-zu-Phonem-Wörterbuch 23 hinzuzufügen, hat
das Spracherkennungssystem 14 auch eine Trainingsbetriebsart.
Diese wird durch den Benutzer durch Anwenden eines geeigneten Befehls
durch die Benutzerschnittstelle 27 unter Verwendung der
Tastatur 3 oder der Zeigevorrichtung 5 aktiviert.
Diese Anforderung zum Eintreten in die Trainingsbetriebsart wird
an die Steuereinheit 29 weitergegeben, welche den Schalter 20 veranlasst,
die Ausgabe der Spracherkennungsmaschine 17 mit der Eingabe
einer Wortmodellerzeugungseinheit 31 zu verbinden. Zu der
selben Zeit gibt die Steuereinheit 29 über die Benutzerschnittstelle 27 eine
Aufforderung an den Benutzer aus, mehrere Wiedergaben des hinzuzufügenden Worts
zur Verfügung
zu stellen. Jede dieser Wiedergaben wird durch den Vorprozessor 15 und
die Spracherkennungsmaschine 17 verarbeitet, um eine Vielzahl
von Sequenzen von Phonemen zu erzeugen, die eine jeweilige Wiedergabe
des neuen Worts repräsentieren.
Diese Sequenzen von Phonemen werden in die Wortmodellerzeugungseinheit 31 eingegeben,
welche sie verarbeitet, um die am meisten wahrscheinliche Phonemsequenz
zu identifizieren, welche als alle die Trainingsexemplare fehlerkannt
hätte werden
können, und
diese Sequenz wird zusammen mit einer geschriebenen Version des
durch den Benutzer eingegebenen Worts in dem Wort-zu-Phonem-Wörterbuch 23 gespeichert.
Nachdem der Benutzer ein Hinzufügen
von Wörtern
zu dem Wörterbuch 23 beendet
hat, führt
die Steuereinheit 29 das Spracherkennungssystem 14 in
seine normale Betriebsart zurück,
indem die Ausgabe der Spracherkennungsmaschine durch den Schalter 20 zurück mit der
Wortdecodiereinrichtung 21 verbunden wird.
-
WORTTRAINING
-
3 zeigt
die Komponenten der zuvor diskutierten Wortmodellerzeugungseinheit 31 ausführlicher. Wie
gezeigt, gibt es einen Speicher 41, der jede Phonemsequenz
empfängt,
die von der Spracherkennungsmaschine 17 für jede der
Wiedergaben des durch den Benutzer eingegebenen neuen Worts ausgegeben werden.
Nachdem der Benutzer ein Eingeben der Trainingsbeispiele beendet
hat (was aus einer von dem Benutzer durch die Benutzerschnittstelle 27 empfangenen
Eingabe bestimmt wird), werden die in dem Speicher 41 gespeicherten
Phonemsequenzen auf die dynamische Programmierabgleicheinheit 43 angewendet,
welche bei diesem Ausführungsbeispiel
eine dynamische Programmierabgleichtechnik verwendet, um die Phonemsequenzen
zu vergleichen und den besten Abgleich zwischen ihnen zu bestimmen.
Bei diesem Ausführungsbeispiel
führt die
Abgleicheinheit 43 den Vergleich und den Abgleich aller
Phonemsequenzen zu der gleichen Zeit durch. Der identifizierte Abgleich
zwischen den Eingabesequenzen wird dann in eine Phonemsequenzbestimmungseinheit 45 eingegeben,
welche diesen Abgleich verwendet, um die Sequenz von Phonemen zu
bestimmen, welche die beste Abstimmung mit den eingegebenen Phonemsequenzen
ergibt.
-
Wie
Fachmänner
erkennen werden, kann jede Phonemsequenz, die eine Wiedergabe des
neuen Worts repräsentiert,
Einfügungen
und Löschungen
relativ zu ihrer unbekannten Sequenz von Phonemen haben, welche
die beste Abstimmung mit den eingegebenen Phonemsequenzen ergibt.
Dies wird in 4 veranschaulicht, welche eine
mögliche
Abstimmung zwischen einer ersten Phonemsequenz (bezeichnet d1 i, d1 i+1, d1 i+2 ...),
die eine erste Wiedergabe des neuen Worts repräsentiert, einer zweiten Phonemsequenz
(bezeichnet d2 j,
d2 j+1, d2 j+2 ...), die eine
zweite Wiedergabe des neuen Worts repräsentiert, und einer Sequenz
von Phonemen (bezeichnet pn, pn+1,
pn+2 ...) , die eine kanonische Sequenz
von Phonemen des Textes repräsentiert,
welche die beste Abstimmung mit den zwei eingegebenen Sequenzen
ergibt. Wie in 4 gezeigt, muss die dynamische
Programmierabgleicheinheit 43 die Einfügung von Phonemen in sowohl
der ersten und zweiten Phonemsequenz (die durch die eingefügten Phoneme
d1 i+3 und d2 j+1 repräsentiert
werden) als auch die Löschung von
Phonemen von der ersten und zweiten Phonemsequenz (die durch Phoneme
d1 i+1 und d2 i+2 repräsentiert werden,
welche beide mit zwei Phonemen in der kanonischen Sequenz von Phonemen
abgeglichen sind) relativ zu der kanonischen Sequenz von Phonemen
ermöglichen.
-
ÜBERBLICK ÜBER DP-ABGLEICH
-
Wie
Fachmänner
auf dem Gebiet von Sprachverarbeitung wissen, ist dynamische Verarbeitung
eine Technik, die zum Finden des optimalen Abgleichs zwischen Sequenzen
von Merkmalen verwendet werden kann, welche bei diesem Ausführungsbeispiel
Phoneme sind. Bei dem einfachen Fall, bei dem es zwei Wiedergaben
eines neuen Worts gibt (und daher nur zwei Sequenzen von Phonemen
abzugleichen sind), berechnet die dynamische Programmierabgleicheinheit 43 den
optimalen Abgleich durch gleichzeitiges Weiterführen einer Vielzahl von dynamischen
Programmierpfaden bzw. durch Fortschreiten auf ihnen, die jeder
einen möglichen
Abgleich zwischen einer Sequenz von Phonemen von der (die erste
Wiedergabe repräsentierenden) ersten
Sequenz und einer Sequenz von Phonemen von der (die zweite Wiedergabe
repräsentierenden)
zweiten Sequenz. Alle Pfade beginnen bei einem Startnullknoten,
der sich bei dem Anfang der zwei eingegebenen Sequenzen von Phonemen
befinden, und führen
weiter bzw. schreiten fort, bis sie einen Endnullknoten erreichen,
welcher an dem Ende der zwei Sequenzen von Phonemen ist.
-
5 und 6 veranschaulichen
schematisch den durchgeführten
Abgleich und dieses Pfadweiterführen
bzw. Pfadfortschreiten. Insbesondere zeigt 5 ein rechteckiges
Koordinatendiagramm, bei welchem die horizontale Achse für die die
erste Wiedergabe repräsentierende
erste Phonemsequenz zur Verfügung
gestellt ist, und die vertikale Achse für die die zweite Wiedergabe
repräsentierende
zweite Phonemsequenz zur Verfügung
gestellt ist. Der Startnullknoten Φs ist in der oberen linken
Ecke zur Verfügung
gestellt, und der Endnullknoten Φe
ist in der unteren rechten Ecke zur Verfügung gestellt. Wie in 6 gezeigt,
sind die Phoneme der ersten Sequenz entlang der horizontalen Achse
zur Verfügung
gestellt, und die Phoneme der zweiten Sequenz sind entlang der vertikalen
Achse zur Verfügung
gestellt. 6 zeigt auch eine Anzahl von
Gitterpunkten, die jeder einen möglichen
Abgleich (oder Decodierung) zwischen einem Phonem der ersten Phonemsequenz
und einem Phonem der zweiten Phonemsequenz repräsentieren. Beispielsweise repräsentiert
der Gitterpunkt 21 einen möglichen Abgleich zwischen einem
ersten Sequenzphonem d1 3 und
einem zweiten Sequenzphonem d2 1. 6 zeigt
auch drei dynamische Programmierpfade m1,
m2 und m3, welche
drei mögliche Abgleiche
zwischen der ersten und zweiten Phonemsequenz repräsentieren,
und welche bei dem Startnullknoten Φs beginnen und durch die Gitterpunkte
bis zu dem Endnullknoten Φe
weiterführen
bzw. fortschreiten.
-
Um
den besten Abgleich zwischen der ersten und zweiten Phonemsequenz
zu bestimmen, hält
die dynamische Programmierabgleicheinheit 43 eine Punktzahl
bzw. Ergebnis für
jeden der dynamischen Programmierpfade, welche ihn weiterführen, wobei
die Punktzahl von der insgesamten Ähnlichkeit der entlang des Pfades
abgeglichenen Phoneme abhängig
ist. Zusätzlich
platziert der dynamische Programmierprozess, um die Anzahl von Löschungen
und Einfügungen
von Phonemen in den gerade abgeglichenen Sequenzen zu begrenzen,
bestimmte Bedingungen auf dem Weg, auf welchem jeder dynamische
Programmierpfad weiterführen
bzw. fortschreiten kann.
-
7 zeigt
die bei diesem Ausführungsbeispiel
verwendeten dynamischen Programmierbedingungen. Falls insbesondere
ein dynamischer Programmierpfad bei Gitterpunkt (i, j) endet, der
einen Abgleich zwischen Phonem d1 i der ersten Phonemsequenz und Phonem d2 j der zweiten Phonemsequenz
repräsentiert, dann
kann dieser dynamische Programmierpfad zu den Gitterpunkten (i+1,
j), (i+2, j), (i+3, j), (i, j+1), (i+1, j+1), (i+2, j+1), (i, j+2),
(i+1, j+2) und (i, j+3) weiterführen.
Diese Weiterführungen
ermöglichen
daher die Einfügung und
Löschung
von Phonemen in der ersten und zweiten Phonemsequenz relativ zu
der unbekannten kanonischen Sequenz von Phonemen, die dem Text entsprechen,
der tatsächlich
gesprochen wurde.
-
Wie
zuvor erwähnt,
hält die
dynamische Programmierabgleicheinheit 78 eine Punktzahl
für jeden
der dynamischen Programmierpfade, wobei die Punktzahl abhängig von
der Ähnlichkeit
der entlang des Pfades abgeglichenen Phoneme ist. Daher fügt der dynamische
Programmierprozess, wenn ein bei Punkt. (i, j) endender Pfad zu
diesen anderen Punkten weiterführt,
die jeweiligen "Kosten" dafür zu der
sich ansammelnden Punktzahl für
den bei Punkt (i, j) endenden Pfad hinzu, welcher in einem mit diesem
Punkt in Zusammenhang stehenden Speicher (SCORE(i, j)) gespeichert
wird. Bei diesem Ausführungsbeispiel
umfassen diese Kosten Einfügewahrscheinlichkeiten
für beliebige
eingefügte
Phoneme, Löschungswahrscheinlichkeiten
für beliebige Löschungen
und Decodierwahrscheinlichkeiten für einen neuen Abgleich zwischen
einem Phonem von der ersten Phonemsequenz und einem Phonem von der
zweiten Phonemsequenz. Insbesondere wenn es eine Einfügung gibt,
wird die kumulative bzw. sich ansammelnde Punktzahl BZW: Ergebnis
(score) mit der Wahrscheinlichkeit des Einfügens des gegebenen Phonems
multipliziert; wenn es eine Löschung
gibt, wird die kumulative bzw. sich ansammelnde Punktzahl mit der
Wahrscheinlichkeit des Löschens
des Phonems multipliziert; und wenn es eine Decodierung gibt, wird
die kumulative bzw. sich ansammelnde Punktzahl mit der Wahrscheinlichkeit
des Decodierens der zwei Phoneme multipliziert.
-
Um
in der Lage zu sein, diese Wahrscheinlichkeiten zu berechnen, speichert
das System eine Wahrscheinlichkeit für alle möglichen Phonemkombinationen
in einem Speicher 47. Bei diesem Ausführungsbeispiel wird die Löschung eines
Phonems von entweder der ersten oder zweiten Phonemsequenz auf eine ähnliche
Weise wie eine Decodierung behandelt. Dies wird durch einfaches
Behandeln einer Löschung
als ein anderes Phonem erzielt. Wenn für das System 43 Phoneme
bekannt sind, dann wird daher das System eintausendachthundertzweiundneunzig
(1892(= 43 × 44)
Decodier/Löschwahrscheinlichkeiten,
eine für
jede mögliche
Phonemdecodierung und -löschung,
speichern. Dies ist in 8 veranschaulicht, welche die
für das
Phonem /ax/ gespeicherten möglichen
Phonemdecodierungen zeigt und welche das Löschphonem (Φ) als eine der Möglichkeiten
umfasst. Wie Fachmänner
erkennen werden, müssen
alle der Decodierwahrscheinlichkeiten für ein gegebenes Phonem sich
zu eins summieren, da es keine anderen Möglichkeiten gibt. Zusätzlich zu
diesen Decodier/Löschwahrscheinlichkeiten
sind in dem Speicher 47 auch 43 Einfügewahrscheinlichkeiten (PI()), eine
für jede
mögliche
Phonemeinfügung,
gespeichert. Wie es später beschrieben
wird, werden diese Wahrscheinlichkeiten im Voraus aus Trainingsdaten
bestimmt.
-
Bei
diesem Ausführungsbeispiel
summiert das System, zur Berechnung der Wahrscheinlichkeit einer Decodierung
eines Phonems (d
2 j)
von der zweiten Phonemsequenz als ein Phonem (d
1 i) von der ersten Phonemsequenz, über alle
möglichen
Phoneme p
r die Wahrscheinlichkeit einer
Decodierung des Phonems p als das erste Sequenzphonem d
1 i und als das zweite Sequenzphonem d
2 j, gewichtet durch
die Wahrscheinlichkeit des ohne Bedingung auftretenden Phonems p,
das heißt:
wobei
N
P die Gesamtzahl von dem System bekannten
Phonemen ist; p (d
1 i|p
r) die Wahrscheinlichkeit des Decodierphonems
p
r als das erste Sequenzphonem d
1 i ist; p (d
2 j|p
r)
die Wahrscheinlichkeit des Decodierphonems p
r als
das zweite Sequenzphonem d
2 j ist;
und P(p
r) die Wahrscheinlichkeit des Phonems
p
r ist, das ohne Bedingung auftritt.
-
Zur
Veranschaulichung der Punktzahlweiterführung bzw. Punktzahlfortschreitung
wird nun ein Beispiel betrachtet. Insbesondere wird, wenn von dem
Gitterpunkt (i, j) zu Gitterpunkt (i+2, j+1) weitergeführt bzw.
fortgeschritten wird, das Phonem d
1 i+1 von der ersten Phonemsequenz relativ
zu der zweiten Phonemsequenz eingefügt, und es gibt eine Decodierung
zwischen Phonem d
1 i+2 von
der ersten Phonemsequenz und Phonem d
2 j+1 von der zweiten Phonemsequenz. Daher
ist die zu Punkt (i+2, j+1) weitergeführte Punktzahl gegeben durch:
-
Wie
Fachmänner
erkennen werden, werden sich während
dieser Pfadweiterführung
bzw. -fortschreitung mehrere Pfade an dem selben Gitterpunkt treffen.
Damit der beste Pfad weitergeführt
wird, wird bei jedem Gitterpunkt ein Vergleich zwischen den Punktzahlen
vorgenommen, und der Pfad mit der besten Punktzahl wird fortgesetzt,
wohingegen der (die) anderen Pfad e) ausgesondert werden. Damit
der beste Abgleich zwischen den zwei eingegebenen Phonemsequenzen
bestimmt werden kann, wird, wo sich Pfade treffen und Pfade ausgesondert
werden, ein Rückwärtszeiger
gespeichert, der zu dem Gitterpunkt zeigt, von welchem der nicht
ausgesonderte Pfad weiterführte.
Auf diese Weise kann, sobald die dynamische Programmierabgleicheinheit 76 die
Pfade durch den Nullendknoten weitergeführt hat und der Pfad mit der
insgesamt besten Punktzahl bestimmt worden ist, eine Rückwärtswegfindungsroutine
Verwendung finden, um den besten Abgleich der Phoneme in den zwei
eingegebenen Phonemsequenzen zu identifizieren. Die Phonemsequenzbestimmungseinheit 79 verwendet
dann diesen Abgleich, um die Sequenz von Phonemen zu bestimmen,
die am Besten die eingegebenen Phonemsequenzen repräsentiert.
Die Weise, auf welche dies bei diesem Ausführungsbeispiel erzielt wird,
wird später
beschrieben.
-
AUSFÜHRLICHE
BESCHREIBUNG VON DP-ABGLEICH
-
Nun
wird eine ausführlichere
Beschreibung des Betriebs bzw. der Operation der dynamischen Programmierabgleicheinheit 43 gegeben,
wenn zwei Sequenzen von Phonemen (für zwei Wiedergaben des neuen
Worts) abgeglichen werden. Zu Anfangs werden die mit allen Knoten
in Zusammenhang stehenden Punktzahlen auf einen geeigneten Anfangswert
gesetzt. Die Abgleicheinheit 43 führt dann Pfade von dem Nullstartknoten
(Φs) zu
allen möglichen
Startpunkten weiter bzw. schreitet auf ihnen fort, die durch die
zuvor diskutierten dynamischen Programmierbedingungen definiert
sind. Die dynamische Programmierpunktzahl bzw. das dynamische Programmierergebnis
für die
begonnenen Pfade wird dann gleich der Übergangspunktzahl bzw. dem Übergangsergebnis
zum Laufen von dem Nullstartknoten zu dem jeweiligem Startpunkt
gesetzt. Die auf diese Weise gestarteten bzw. begonnenen Pfade werden
dann durch das Array von Gitterpunkten weitergeführt bzw. es wird auf ihnen
fortgeschritten, die durch die erste und zweite Phonemsequenz definiert
sind, bis sie den Nullendknoten Φe
erreichen. Um dies vorzunehmen, verarbeitet die Abgleicheinheit 78 das
Array von Gitterpunkten Spalte um Spalte in einer rasterähnlichen
Technik.
-
Der
zur Steuerung dieser Rasterverarbeitungsoperation bzw. dieses Rasterverarbeitungsbetriebs
verwendete Steueralgorithmus ist in 9 gezeigt.
Wie bei Schritt s149 gezeigt, initialisiert das System einen Schleifenzeiger
der ersten Phonemsequenz, i, und einen Schleifenzeiger der zweiten
Phonemsequenz, j, mit Null. Dann vergleicht das System bei Schritt
s151 den Schleifenzeiger i der ersten. Phonemsequenz mit der Anzahl
von Phonemen in der ersten Phonemsequenz (Nseq1). Zu Anfangs wird
der Schleifenzeiger i der ersten Phonemsequenz auf Null gesetzt,
und daher setzt sich die Verarbeitung mit Schritt s153 fort, bei
welchem ein ähnlicher
Vergleich für
den Schleifenzeiger j der zweiten Phonemsequenz relativ zu der gesamten
Anzahl von Phonemen in der zweiten Phonemsequenz (Nseq2) vorgenommen
wird. Zu Anfangs wird der Schleifenzeiger j auch auf Null gesetzt,
und daher setzt sich die Verarbeitung mit Schritt s155 fort, bei
welchem das System den bei Gitterpunkt (i, j) endenden Pfad unter
Verwendung der zuvor diskutierten dynamischen Programmierbedingungen
weiterführt
bzw. auf ihm fortschreitet. Die Art und Weise, auf welche das System
die Pfade bei Schritt s155 weiterführt bzw. auf ihnen fortschreitet
wird später
ausführlicher
beschrieben. Nach Schritt s155 wird der Schleifenzeiger j bei Schritt
s157 heraufgesetzt und die Verarbeitung kehrt zu Schritt s153 zurück. Sobald
diese Verarbeitung durch alle Phoneme in der zweiten Phonemsequenz
geschleift bzw. in einer Schleife geführt wurde (wodurch die derzeitige
Spalte von Gitterpunkten verarbeitet wird), setzt sich die Verarbeitung
mit Schritt s159 fort, bei welchem der Schleifenzeiger j auf Null
zurückgesetzt
wird und der Schleifenzeiger i um eins heraufgesetzt wird. Die Verarbeitung
kehrt dann zu Schritt s151 zurück,
bei welchem für
die nächste
Spalte von Gitterpunkten eine ähnliche
Prozedur durchgeführt
wird. Sobald die letzte Spalte von Gitterpunkten verarbeitet worden
ist, setzt sich die Verarbeitung mit Schritt s161 fort, bei welchem
der Schleifenzeiger i auf Null zurückgesetzt wurde und die Verarbeitung
endet.
-
Weiterführen bzw.
Fortschreiten (propagate) Bei dem in 9 gezeigten
Schritt s155, führt
das System den bei Gitterpunkt (i, j) endenden Pfad unter Verwendung
der zuvor diskutierten dynamischen Programmierbedingungen weiter
bzw. schreitet auf ihm fort. 10 ist
ein Flussdiagramm, welches die bei Durchführung dieses Fortschreitschrittes
involvierten Verarbeitungsschritte veranschaulicht. Wie bei Schritt
s211 gezeigt, setzt das System die Werte von zwei Variablen mxi
und mxj und initialisiert einen Schleifenzeiger i2 der ersten Phonemsequenz
und einen Schleifenzeiger j2 der zweiten Phonemsequenz. Diese Schleifenzeiger
i2 und j2 werden zum Laufen einer Schleife durch alle die Gitterpunkte
zur Verfügung
gestellt, zu welchen der bei Punkt (i, j) endende Pfad fortschreiten
kann, und die Variablen mxi und mxj werden verwendet, um sicherzustellen,
dass i2 und j2 nur die Werte annehmen können, welche durch die dynamischen
Programmierbedingungen erlaubt sind. Insbesondere wird mxi gleich
i plus mxhops gesetzt (welche eine Konstante mit einem Wert ist,
der um eins größer als
die maximale Anzahl von "Hüpfern" ("hops") ist, die durch
die dynamischen Programmierbedingungen erlaubt sind, und bei diesem
Ausführungsbeispiel
ist sie auf einen Wert von vier gesetzt, da ein Pfad am weitesten
zu einem Phonem springen kann, dass sich drei Phoneme weiter entlang
der Sequenz befindet), vorausgesetzt dies ist kleiner als oder gleich
der Anzahl von Phonemen in der ersten Phonemsequenz, ansonsten wird
mxi gleich der Anzahl von Phonemen in der ersten Phonemsequenz (Nseq1)
gesetzt. In ähnlicher
Weise wird mxj gleich j plus mxhops gesetzt, vorausgesetzt dies
ist kleiner als oder gleich der Anzahl von Phonemen in der zweiten
Phonemsequenz, ansonsten wird mxj gleich der Anzahl von Phonemen
in der zweiten Phonemsequenz (Nseq2) gesetzt. Zuletzt initialisiert
das System bei Schritt s211 den Schleifenzeiger i2 der ersten Phonemsequenz,
dass er gleich dem derzeitigen Wert des Schleifenzeigers i der ersten
Phonemsequenz ist, und den Schleifenzeiger j2 der zweiten Phonemsequenz,
dass er gleich dem derzeitigen Wert des Schleifenzeigers j der zweiten
Phonemsequenz ist.
-
Die
Verarbeitung setzt sich dann mit Schritt s219 fort, bei welchem
das System den Schleifenzeiger i2 der ersten Phonemsequenz mit der
Variable mxi vergleicht. Da der Schleifenzeiger i2 auf i gesetzt
ist und mxi gleich i+4 gesetzt ist, wird sich die Verarbeitung bei
Schritt s211 mit Schritt s221 fortsetzen, bei welchem ein ähnlicher
Vergleich für
den Schleifenzeiger j2 der zweiten Phonemsequenz vorgenommen wird.
Dann setzt sich die Verarbeitung mit Schritt s223 fort, welcher
sicherstellt, dass der Pfad nicht bei dem selben Gitterpunkt (i,
j) bleibt, da zu Anfangs i2 gleich i sein wird und j2 gleich j sein
wird. Daher wird sich die Verarbeitung zu Anfangs mit Schritt s225
fortsetzen, bei welchem der Fragephonemschleifenzeiger j2 um eins
heraufgesetzt wird.
-
Dann
kehrt die Verarbeitung zu Schritt s221 zurück, bei welchem der heraufgesetzte
Wert von j2 mit mxj verglichen wird. Ist j2 kleiner als mxj, dann
kehrt die Verarbeitung zu Schritt s223 zurück und setzt sich dann mit
Schritt s227 fort, welcher betreibbar ist, um einen zu großen Hüpfer entlang
beiden Phonemsequenzen zu verhindern. Sie tut dies durch Sicherstellen,
dass der Pfad nur weitergeführt
wird bzw. nur auf ihm fortgeschritten wird, wenn i2 + j2 kleiner
als i + j + mxhops ist. Dies stellt sicher, dass nur die in 7 gezeigte dreieckige
Gruppe von Punkten verarbeitet wird. Vorausgesetzt, dass diese Bedingung
erfüllt
ist, setzt sich die Verarbeitung mit Schritt s229 fort, bei welchem
das System die Übergangspunktzahl
bzw. das Übergangsergebnis
(TRANSCORE) von Gitterpunkt (i, j) zu Gitterpunkt (i2, j2) berechnet.
Bei diesem Ausführungsbeispiel sind
die Übergangs-
und Ansammlungspunktzahlen bzw. -ergebnisse wahrscheinlichkeitsbasiert,
und sie werden durch Multiplizieren der Wahrscheinlichkeiten miteinander
kombiniert. Jedoch kommen bei dem System bei diesem Ausführungsbeispiel,
um den Bedarf zu beseitigen, Multiplikationen durchzuführen, und
um die Verwendung von hoher Fließpunktpräzision zu vermeiden, log-Wahrscheinlichkeiten
für die Übergangs-
und Ansammlungspunktzahlen bzw. -ergebnisse zum Einsatz.
-
Daher
addiert das System diese Übergangspunktzahl
bzw. dieses Übergangsergebnis
bei Schritt s231 zu der für
den Punkt (i, j) gespeicherten Ansammlungspunktzahl bzw. Ansammlungsergebnis
und kopiert es zu einem zeitweisen Speicher, TEMPSCORE.
-
Wie
zuvor erwähnt,
werden bei diesem Ausführungsbeispiel,
wenn sich zwei oder mehr dynamische Programmierpfade bei dem selben
Gitterpunkt treffen, die mit jedem der Pfade in Zusammenhang stehenden Ansammlungsergebnisse
verglichen und es werden alle außer dem besten Pfad (das heißt, der
Pfad mit der besten Punktzahl bzw. Ergebnis) ausgesondert bzw. weggeworfen.
Daher vergleicht das System bei Schritt s233 TEMPSCORE mit dem bereits
für Punkt
(i2, j2) gespeicherten Ansammlungsergebnis, und das größte Ergebnis
wird in SCORE (i2, j2) gespeichert, und es wird ein geeigneter Rückwärtszeiger
gespeichert, um zu identifizieren, welcher Pfad das größere Ergebnis
hat. Dann kehrt die Verarbeitung zu Schritt s225 zurück, bei welchem
der Schleifenzähler
j2 um eins heraufgesetzt wird, und die Verarbeitung kehrt zu Schritt
s221 zurück. Sobald
der Schleifenzeiger j2 der zweiten Phonemsequenz den Wert von mxj
erreicht hat, setzt sich die Verarbeitung mit Schritt s235 fort,
bei welchem der Schleifenzeiger j2 auf den Anfangswert j zurückgesetzt
wird und der Schleifenzeiger i2 der ersten Phonemsequenz um eins
heraufgesetzt wird. Die Verarbeitung kehrt dann zu Schritt s219
zurück,
bei welchem die Verarbeitung erneut für die nächste Spalte von Punkten beginnt, die
in 7 gezeigt ist. Sobald auf dem Pfad von Punkt (i,
j) zu allen anderen in 7 gezeigten Punkten fortgeschritten
wurde, endet die Verarbeitung.
-
Übergangspunktzahl
bzw. Übergangsergebnis Bei
Schritt s229 wird die Übergangspunktzahl
bzw. Übergangsergebnis
von Punkt (i, j) zu einem anderen Punkt (i2, j2) berechnet. Dies
involviert ein Berechnen der geeigneten Einfügewahrscheinlichkeiten, Löschwahrscheinlichkeiten
und Decodierwahrscheinlichkeiten relativ zu dem Startpunkt und Endpunkt
des Übergangs.
Die Art und Weise, auf welche dies bei diesem Ausführungsbeispiel
erzielt wird, wird nun unter Bezugnahme auf 11 und 12 beschrieben.
-
Insbesondere
zeigt 11 ein Flussdiagramm, welches
die allgemeinen Verarbeitungsschritte veranschaulicht, die bei einer
Berechnung der Übergangspunktzahl
bzw. des Übergangsergebnisses
für einen
von Gitterpunkt (i, j) zu einem anderen Gitterpunkt (i2, j2) fortschreitenden
Pfad involviert sind. Bei Schritt s291 berechnet das System für jedes
erste Sequenzphonem, das zwischen Punkt (i, j) und Punkt (i2, j2)
eingefügt
ist, die Punktzahl bzw. das Ergebnis zur Einfügung des (der) eingefügten Phonems
(Phoneme) (welche bzw. welches gerade der zuvor diskutierte Logarithmus
(log) von Wahrscheinlichkeit PI() ist), und addiert dies zu einem geeigneten
Speicher INSERTSCORE. Dann setzt sich die Verarbeitung mit Schritt
s293 fort, bei welchem das System eine ähnliche Berechnung für jedes
zweite Sequenzphonem durchführt,
welches zwischen Punkt (i, j) und Punkt (i2, j2) eingefügt ist,
und addiert dies zu INSERTSCORE. Wie zuvor erwähnt, sind die berechneten Ergebnisse
log-basierte Wahrscheinlichkeiten, weshalb die Addition der Ergebnisse
in INSERTSCORE der Multiplikation der entsprechenden Einfügewahrscheinlichkeiten
entspricht. Die Verarbeitung setzt sich dann mit Schritt s295 fort,
bei welchem das System (gemäß der voranstehenden
Gleichung (1)) die Ergebnisse für jede
Löschung
und/oder Decodierung bei Fortschreiten von Punkt (i, j) zu Punkt
(i2, j2) berechnet, und diese Ergebnisse werden in einem geeigneten
Speicher, DELSCORE, gespeichert. Dann setzt sich die Verarbeitung mit
Schritt s297 fort, bei welchem das System INSERTSCORE und DELSCORE
addiert und das Ergebnis in TRANSCORE kopiert.
-
Nun
wird die bei Schritt s295 involvierte Verarbeitung zum Bestimmen
der Lösch-
und/oder Decodierpunktzahlen bzw. -ergebnisse beim Fortschreiten
von Punkt (i, j) zu Punkt (i2, j2) unter Bezugnahme auf 12 ausführlicher
beschrieben. Wie gezeigt, bestimmt das System zu Anfangs bei Schritt
s325, ob der Schleifenzeiger i2 der ersten Phonemsequenz gleich
dem Schleifenzeiger i der ersten Phonemsequenz ist. Wenn dies so
ist, dann setzt sich die Verarbeitung mit Schritt s327 fort, bei
welchem ein Phonemschleifenzeiger r mit eins initialisiert wird.
Der Phonemzeiger r wird verwendet, um durch jedes mögliche Phonem,
das dem System bekannt ist, während
der Berechnung der vorangehenden Gleichung (1) eine Schleife zu
laufen. Dann setzt sich die Verarbeitung mit Schritt s329 fort,
bei welchem das System den Phonemzeiger r mit der Anzahl von dem
System bekannten Phonemen, Nphonemes (welche bei diesem Ausführungsbeispiel
gleich 43 ist), vergleicht. Zu Anfangs wird r bei Schritt s327 auf
eins gesetzt, weshalb sich die Verarbeitung mit Schritt s331 fortsetzt,
bei welchem das System die log-Wahrscheinlichkeit eines Auftretens
von Phonem pr (das heißt, log P(pr))
bestimmt, und diese in eine temporäre bzw. zeitweise Punktzahl
bzw. Ergebnis TEMPDELSCORE kopiert. Ist der erste Schleifenzeiger
i2 der ersten Phonemsequenz gleich dem Annotationsphonem i, dann schreitet
das System auf dem bei Punkt (i, j) endenden Pfad zu einem der Punkte
(i, j+1), (i, j+2), oder (i, j+3) fort. Daher gibt es ein Phonem
in der zweiten Phonemsequenz, welches es nicht in der ersten Phonemsequenz gibt.
Als Konsequenz davon addiert das System bei Schritt s333 die log-Wahrscheinlichkeit
einer Löschung von
Phonem pr aus der ersten Phonemsequenz (das
heißt,
log P(Φ|pr)) zu TEMPDELSCORE. Dann setzt sich die
Verarbeitung mit Schritt s335 fort, bei welchem das System die log-Wahrscheinlichkeit
einer Decodierung von Phonem pr als als
zweites Sequenzphonem d2 j2 (das
heißt
log P (d2 j2|pr) ) zu TEMPDELSCORE addiert. Dann setzt
sich die Verarbeitung mit Schritt s337 fort, bei welchem eine "log-Addition" von TEMPDELSCORE und
DELSCORE durchgeführt
wird und das Ergebnis in DELSCORE gespeichert wird.
-
Bei
diesem Ausführungsbeispiel
wandelt dieser "log-Addition-"Betrieb, da die Berechnung
einer Decodierung von Wahrscheinlichkeiten (gemäß der vorangehenden Gleichung
(1)) Summierungen und Multiplikationen von Wahrscheinlichkeiten
umfasst, und da wir log-Wahrscheinlichkeiten
verwenden, TEMPDELSCORE und DELSCORE von log-Wahrscheinlichkeiten
effektiv zurück
in Wahrscheinlichkeiten, addiert sie und wandelt sie dann zurück in log-Wahrscheinlichkeiten.
Diese "log-Addition" ist eine gut bekannte
Technik auf dem Gebiet von Sprachverarbeitung und ist beispielsweise
in dem Buch mit dem Titel "Automatic
Speech Recognition. The development of the (Sphinx)-System", von Lee, Kai-Fu,
veröffentlicht
durch Kluwer Academic Publishers, 1989, auf den Seiten 28 und 29
beschrieben. Nach Schritt s337 setzt sich die Verarbeitung mit Schritt
s339 fort, bei welchem der Phonemschleifenzähler r um eins heraufgesetzt
wird, und dann kehrt die Verarbeitung zu Schritt s329 zurück, bei
welchem eine ähnliche
Verarbeitung für
das nächste,
dem System bekannte Phonem durchgeführt wird. Sobald diese Berechnung
für jedes
dem System bekannte Phonem durchgeführt worden ist, endet die Verarbeitung.
-
Bestimmt
das System bei Schritt s325, dass i2 nicht gleich i ist, dann setzt
sich die Verarbeitung mit Schritt s341 fort, bei welchem das System
bestimmt, ob der Schleifenzähler
j2 der zweiten Phonemsequenz gleich dem Schleifenzähler j der
zweiten Phonemsequenz ist. Ist dies der Fall, dann setzt sich die
Verarbeitung mit Schritt s343 fort, bei welchem der Phonemschleifenzähler r mit
eins initialisiert wird. Dann setzt sich die Verarbeitung mit Schritt
s345 fort, bei welchem der Phonemschleifenzähler r mit der gesamten Zahl
von dem System bekannten Phonemen (Nphonemes) verglichen wird. Zu
Anfangs wird r bei Schritt s343 auf eins gesetzt, und daher setzt
sich die Verarbeitung mit Schritt s347 fort, bei welchem die log-Wahrscheinlichkeit
eines Auftretens von Phonem pr bestimmt
wird und in den temporären
Speicher TEMPDELSCORE kopiert wird. Dann setzt sich die Verarbeitung
mit Schritt s349 fort, bei welchem das System die log-Wahrscheinlichkeit
eines Decodierens von Phonem pr als erstes
Sequenzphonem d1 j2 bestimmt,
und addiert diese zu TEMPDELSCORE. Ist der Schleifenzeiger j2 des
zweiten Phonemsequenz gleich dem Schleifenzeiger j, dann schreitet
das System über
den bei Punkt (i, j) endenden Pfad zu einem der Punkte (i+1, j),
(i+2, j) oder (i+3, j) fort. Daher gibt es ein Phonem in der ersten
Phonemsequenz, das es nicht in der zweiten Phonemsequenz gibt. Als
Konsequenz davon bestimmt das System bei Schritt s351 die log-Wahrscheinlichkeit
eines Löschens
von Phonem pr aus der zweiten Phonemsequenz
und addiert diese zu TEMPDELSCORE. Dann setzt sich die Verarbeitung mit
Schritt s353 fort, bei welchem das System die log-Addition von TEMPDELSCORE
und DELSCORE durchführt
und das Ergebnis in DELSCORE speichert. Dann wird der Phonemschleifenzähler r bei
Schritt s355 um eins heraufgesetzt, und die Verarbeitung kehrt zu
Schritt s345 zurück.
Sobald die Verarbeitungsschritte s347 bis s353 für alle dem System bekannten
Phoneme durchgeführt
wurden sind, endet die Verarbeitung.
-
Wenn
das System bei Schritt s341 bestimmt, dass der Schleifenzeiger j2
der zweiten Phonemsequenz nicht gleich dem Schleifenzeiger j ist,
dann setzt sich die Verarbeitung mit Schritt s357 fort, bei welchem
der Phonemschleifenzähler
r mit eins initialisiert wird. Dann setzt sich die Verarbeitung
mit Schritt s359 fort, bei welchem das System den Phonemzähler r mit
der Anzahl von dem System bekannten Phonemen (Nphonemes) vergleicht.
Zu Anfangs wird r bei Schritt s357 auf eins gesetzt, und daher setzt
sich die Verarbeitung mit Schritt s361 fort, bei welchem das System
die log-Wahrscheinlichkeit eines Auftretens von Phonem pr bestimmt und diese zu der zeitweisen Punktzahl
bzw. Ergebnis TEMPDELSCORE kopiert. Ist der Schleifenzeiger j2 nicht
gleich dem Schleifenzeiger j, darin schreitet das System auf dem
bei Punkt (i, j) endenden Pfad zu einem der Punkte (i+1, j+1), (i+1,
j+2) und (i+2, j+1) fort. Daher gibt es keine Löschungen sondern nur Einfügungen und
Decodierungen. Die Verarbeitung setzt sich daher mit Schritt s363
fort, bei welchem die log-Wahrscheinlichkeit einer Decodierung von
Phonem pr als erstes Sequenzphonem d1 i2 zu TEMPDELSCORE
addiert wird. Dann setzt sich die Verarbeitung mit Schritt s365
fort, bei welchem die log-Wahrscheinlichkeit einer Decodierung von
Phonem pr als zweites Sequenzphonem d2 j2 bestimmt und
zu TEMPDELSCORE addiert wird. Dann führt das System bei Schritt
s367 die log-Addition von TEMPDELSCORE und DEÖSCORE aus und speichert das
Ergebnis in DELSCORE. Dann wird der Phonemzähler r bei Schritt s360 um
eins heraufgesetzt, und die Verarbeitung kehrt zu Schritt s359 zurück. Sobald
die Verarbeitungsschritte s361 bis s367 für alle dem System bekannten
Phoneme durchgeführt
worden sind, endet die Verarbeitung.
-
Rückwärtswegfindung und Phonemsequenzerzeugung
-
Wie
zuvor erwähnt,
wird, nachdem auf den dynamischen Programmierpfaden zu dem Nullendknoten Φe fortgeschritten
worden ist, der Pfad mit der besten Ansammlungspunktzahl bzw. -ergebnis
identifiziert, und die dynamische Programmierabgleicheinheit
43 findet
einen Weg rückwärts durch
die Rückwärtszeiger,
welche bei Schritt s233 für
den besten Pfad gespeichert sind, um den besten Abgleich zwischen
den zwei eingegebenen Sequenzen von Phonemen zu identifizieren.
Bei diesem Ausführungsbeispiel
bestimmt die Phonemsequenzbestimmungseinheit
45 dann, für jedes
abgeglichene Paar von Phonemen (d
1 m, d
2 n)
mit dem besten Abgleich, das unbekannte Phonem, p, welches maximiert:
unter Verwendung der zuvor
diskutierten Decodierwahrscheinlichkeiten, die in Speicher
81 gespeichert
sind. Dieses Phonem, p, ist das Phonem, das genommen wird, um das
abgeglichene Paar von Phonemen am besten zu repräsentieren. Durch Identifikation
von Phoneme, p, für
jedes abgeglichene Paar, identifiziert die Bestimmungseinheit
45 die
Sequenz von kanonischen Phonemen, die am besten die zwei eingegebenen
Phonemsequenzen repräsentieren.
Bei diesem Ausführungsbeispiel
wird diese kanonische Sequenz dann durch die Bestimmungseinheit
45 ausgegeben
und in dem Wort-zu-Phonem-Wörterbuch
23 zusammen
mit dem Text des neuen Worts gespeichert, das durch den Benutzer
eingeschrieben ist.
-
ZWEITES AUSFÜHRUNGSBEISPIEL
-
Zuvor
wurde eine Beschreibung der Art und Weise, auf welche die dynamische
Programmierabgleicheinheit 43 zwei Sequenzen von Phonemen
abgleicht, und der Art und Weise gegeben, auf welche die Phonemsequenzbestimmungseinheit 45 die
Sequenz von Phonemen erlangt, welche die zwei eingegebenen Sequenzen
bei diesem gegebenen besten Abgleich am besten repräsentiert.
Wie Fachmänner
erkennen werden, kann der Benutzer beim Trainieren eines neuen Worts
mehr als zwei Wiedergaben eingeben. Daher sollte die dynamische
Programmierabgleicheinheit 43 vorzugsweise in der Lage
sein, eine beliebige Anzahl von eingegebenen Phonemsequenzen abzugleichen,
und die Bestimmungseinheit 45 sollte in der Lage sein,
die Phonemsequenz abzuleiten, die eine beliebige Anzahl von eingegebenen
Phonemsequenzen bei gegebenem besten Abgleich zwischen ihnen am
besten repräsentiert.
Nun wird eine Beschreibung der Art und Weise gegeben, auf welche
die dynamische Programmierabgleicheinheit 43 drei eingegebene
Phonemsequenzen miteinander abgleicht, und wie die Bestimmungseinheit 45 die
Phonemsequenz bestimmt, welche die drei eingegebenen Phonemsequenzen
am besten repräsentiert.
-
13 zeigt ein dreidimensionales Koordinatendiagramm,
bei dem eine Dimension für
jede der drei Phonemsequenzen zur Verfügung gestellt ist, und veranschaulicht
das dreidimensionale Gitter von Punkten, welche in diesem Fall durch
die dynamische Programmierabgleicheinheit 43 verarbeitet
werden. Die Abgleicheinheit 43 verwendet die selben Übergangspunktzahlen
bzw. -ergebnisse und Phonemwahrscheinlichkeiten und ähnliche
dynamische Programmierbedingungen, um jeden der Pfade durch das
dreidimensionale Netzwerk von Gitterpunkten in dem in 13 gezeigten Diagramm weiterzuführen bzw.
auf ihm fortzuschreiten und zu punkten.
-
Nun
wird eine ausführliche
Beschreibung unter Bezugnahme auf 14 bis 17 des dreidimensionalen dynamischen Programmierabgleichs
gegeben, der in diesem Fall durch die Abgleicheinheit 43 ausgeführt wird. Wie
Fachmänner
aus einem Vergleich von 14 bis 17 mit 9 bis 12 erkennen
werden, ist der durchgeführte
dreidimensionale dynamische Programmierprozess im Wesentlichen der
selbe, wie der zweidimensionale dynamische Programmierprozess, der
durchgeführt
wird, wenn es nur zwei eingegebene Phonemsequenzen gibt, außer mit
der Addition von wenigen weiteren Steuerschleifen, um die extra
Phonemsequenz zu berücksichtigen.
-
Wie
bei dem ersten Fall, werden die mit allen Knoten in Zusammenhang
stehenden Punktzahlen bzw. Ergebnisse initialisiert, und dann schreitet
die dynamische Programmierabgleicheinheit 43 auf dynamischen Programmierpfaden
von dem Nullstartknoten Φe
zu jeden der durch die dynamischen Programmierbedingungen definierten
Startpunkte fort. Dann führt
sie diese Pfade von diesen Startpunkten zu dem Nullendknoten Φe weiter
bzw. schreitet auf ihnen fort, indem sie die Punkte in dem Suchraum
auf eine rasterähnliche
Weise verarbeitet. Der zur Steuerung dieses Rasterverarbeitungsbetriebs
verwendete Steueralgorithmus ist in 14 gezeigt.
Wie aus einem Vergleich von 14 mit 9 ersichtlich,
hat dieser Steueralgorithmus die selbe allgemeine Form wie der Steueralgorithmus,
der Verwendung findet, wenn es nur zwei Phonemsequenzen abzugleichen
gab. Die einzigen Unterschiede liegen in dem komplexeren Fortschreitschritt
s419 und in der zur Verfügung
Stellung von Abfrageblock s421, Block s423 und Block s425, welche
benötigt
werden, um die zusätzlichen
Gitterpunkte zu verarbeiten, die durch die dritte Phonemsequenz
verursacht werden. Für
ein besseres Verständnis,
wie der in 17 veranschaulichte Steueralgorithmus
läuft,
wird der Leser auf die zuvor für 12 gegebene
Beschreibung verwiesen.
-
15 ist
ein Flussdiagramm, welches die Verarbeitungsschritte veranschaulicht,
die bei dem in 10 gezeigten Fortschreitschritt
s419 umfasst sind. 10 zeigt das entsprechende Flussdiagramm
für den
zuvor beschriebenen zweidimensionalen Fall. Wie aus einem Vergleich
von 15 mit 10 ersichtlich, bestehen
die Hauptunterschiede zwischen den beiden Flussdiagrammen in den
zusätzlichen
Variablen (mxk und k2) und Verarbeitungsblöcken (s451, s453, s455 und
s457), welche zur Verarbeitung der zusätzlichen Gitterpunkte aufgrund
der dritten Phonemsequenz erforderlich sind. Für ein besseres Verständnis der
bei dem in 15 gezeigten Flussdiagramm involvierten
Verarbeitungsschritte, wird der Leser auf die Beschreibung von 10 verwiesen.
-
16 ist
ein Flussdiagramm, welches die Verarbeitungsschritte veranschaulicht,
die beim Berechnen der Übergangspunktzahl
umfasst sind, wenn ein dynamischer Programmierpfad von Punkt (i,
j , k) zu Punkt (i2, j2, k2) während
den Verarbeitungsschritten in 15 weitergeführt wird
bzw. auf ihm fortgeschritten wird. 11 zeigt
das entsprechende Flussdiagramm für den zuvor beschriebenen zweidimensionalen
Fall. Wie aus einem Vergleich von 16 mit 11 ersichtlich,
besteht der Hauptunterschied zwischen den beiden Flussdiagrammen
in dem zusätzlichen
Prozessschritt s461 zur Berechnung der Einfügewahrscheinlichkeiten zum
Einfügen
von Phonemen in der dritten Phonemsequenz. Daher wird der Leser
für ein
besseres Verständnis
der bei dem in 16 gezeigten Flussdiagramm involvierten
Verarbeitungsschritte auf die Beschreibung von 11 verwiesen.
-
Nun
werden die bei Schritt s463 in 16 umfassten
Verarbeitungsschritte zur Bestimmung der Löschung und/oder Decodierung
von Punktzahlen bzw. Ergebnissen beim Weiterführen bzw. Fortschreiten von Punkt
(i, j , k) zu Punkt (i2, j2, k2) unter Bezugnahme auf 17 ausführlicher beschrieben. Zu Anfangs
bestimmt das System (bei den Schritten s525 bis s537), ob es irgendwelche
Phonemlöschungen
aus irgendeiner der drei Phonemsequenzen gibt, indem i2, j2, und
k2 jeweils mit i, j und k verglichen werden. Wie in den 17a bis 17d gezeigt,
gibt es acht Hauptzweige, welche arbeiten, um die geeigneten Decodier-
und Löschwahrscheinlichkeiten
für die
acht möglichen
Situationen zu bestimmen. Da die bei jeder Situation durchgeführte Verarbeitung
sehr ähnlich
ist, wird eine Beschreibung nur von einer der Situationen gegeben.
-
Wenn
das System insbesondere bei. den Schritten s525, s527 und s531 bestimmt,
dass eine Löschung
von der ersten Phonemsequenz war (da i2 = i gilt), und dass es aus
den anderen zwei Phonemsequenzen keine Löschungen gab (da j2 ≠ j und k2 ≠ k), dann
setzt sich die Verarbeitung mit Schritt s541 fort, bei welcher ein
Phonemschleifenzähler
r mit eins initialisiert wird. Der Phonemschleifenzähler r wird
verwendet, um durch jedes mögliche
dem System bekannte Phonem während
der Berechnung einer Gleichung, die ähnlich zu der zuvor beschriebenen
Gleichung (1) ist, eine Schleife zu führen. Die Verarbeitung setzt
sich dann mit Schritt s543 fort, bei welchem das System den Phonemzeiger
r mit der Anzahl von dem System bekannten Phonemen, Nphonemes (welche
bei diesem Ausführungsbeispiel
gleich 43 ist), vergleicht. Zu Anfangs wird r bei Schritt s541 auf
eins gesetzt. Daher setzt sich die Verarbeitung mit Schritt s545
fort, bei welchem das System die log-Wahrscheinlichkeit eines Auftretens
von Phonem pr bestimmt und kopiert diese
zu einer temporären
Punktzahl bzw. Ergebnis TEMDELSCORE. Dann setzt sich die Verarbeitung
mit Schritt s547 fort, bei welchem das System die log-Wahrscheinlichkeit
einer Löschung
von Phonem pr in der ersten Phonemsequenz bestimmt
und diese zu TEMDELSCORE addiert. Dann setzt sich die Verarbeitung
mit Schritt s549 fort, bei welchem das System die log-Wahrscheinlichkeit
einer Decodierung von Phonem pr als Phonem
d2 j2 der zweiten Sequenz
bestimmt und diese zu TEMDELSCORE addiert. Dann setzt sich die Verarbeitung
mit Schritt s551 fort, bei welchem das System die log-Wahrscheinlichkeit
einer Decodierung von Phonem pr als Phonem
d3 k2 der dritten
Sequenz bestimmt und diese zu TEMDELSCORE addiert. Dann setzt sich
die Verarbeitung mit Schritt s553 fort, bei welchem das System die
log-Addition von TEMDELSCORE mit DELSCORE durchführt und das Ergebnis in DELSCORE
speichert. Dann setzt sich die Verarbeitung mit Schritt s555 fort,
bei welchem der Phonemzeiger r um eins heraufgesetzt wird. Dann
kehrt die Verarbeitung zu Schritt s543 zurück, bei welchem eine ähnliche
Verarbeitung für
das nächste,
dem System bekannte Phonem durchgeführt wird. Sobald diese Berechnung
für jedes
der 43 dem System bekannten Phoneme durchgeführt worden ist, endet die Verarbeitung.
-
Wie
aus einem Vergleich der in
17 durchgeführten Verarbeitungsschritte
und der in
12 durchgeführten Schritte ersichtlich,
ist der Term, der in dem dynamischen Programmieralgorithmus für Decodierungen
und Löschungen
berechnet wird, ähnlich
zu Gleichung (1), jedoch hat er einen zusätzlichen Wahrscheinlichkeitsterm für die dritte
Phonemsequenz. Insbesondere hat er die folgende Form:
-
Wie
bei dem zweidimensionalen Fall, identifiziert die dynamische Programmierabgleicheinheit
78, nachdem
die dynamischen Programmierpfade durch den Nullendknoten Φe fortgeschritten
worden sind, den Pfad mit der besten Punktzahl bzw. dem besten Ergebnis
und verwendet die für
diesen Pfad gespeicherten Rückwärtszeiger,
um die abgeglichenen Phonemtrios (das heißt die abgeglichenen Phoneme
in den drei Sequenzen) zu identifizieren, welche entlang dieses
besten Pfads liegen. Bei diesem Ausführungsbeispiel bestimmt die
Phonemsequenzbestimmungseinheit
79 für jedes dieser abgeglichenen
Phonemtrios (d
1 m,
d
2 n, d
3 o) das Phonem, p, welches einen maximalen
Wert annimmt:
um die kanonische Sequenz
von Phonemen zu erzeugen, welche die drei eingegebenen Phonemsequenzen am
besten repräsentiert.
-
Zuvor
wurde eine Beschreibung der Art und Weise gegeben, auf welche die
dynamische Programmierabgleicheinheit 43 zwei oder drei
Sequenzen von Phonemen abgleicht. Wie es für den Fall der drei Phonemsequenzen
demonstriert wurde, umfasst die Addition einer weiteren Phonemsequenz
einfach die Addition einer Anzahl von Schleifen in dem Steueralgorithmus,
um die zusätzliche
Phonemsequenz zu berücksichtigen. Wie
Fachmänner
erkennen werden, kann die Abgleicheinheit 43 daher den
besten Abgleich zwischen irgendeiner Anzahl von eingegebenen Phonemsequenzen
identifizieren, indem sie identifiziert, wie viele Sequenzen eingegeben
werden, und indem sie dann sicher stellt, dass für jede eingegebene Sequenz
geeignete Steuervariable zur Verfügung gestellt werden. Die Bestimmungseinheit 45 kann
dann unter Verwendung dieser Abgleichergebnisse die Sequenz von
Phonemen identifizieren, welche die eingegebenen Phonemsequenzen am
besten repräsentiert.
-
DRITTES AUSFÜHRUNGSBEISPIEL
-
Zuvor
wurde ein System beschrieben, welches es einem Benutzer ermöglicht,
Wortmodelle zu einem bei einem Spracherkennungssystem verwendeten
Wort-zu-Phonem-Wörterbuch
hinzuzufügen.
Das neue Wort wird, wie es eingeschrieben wird, in dem Wörterbuch
bzw. Lexikon zusammen mit der Sequenz oder Phonemen gespeichert,
die am besten mit den gesprochenen Wiedergaben des neuen Worts übereinstimmt.
Wie Fachmänner
erkennen werden, haben viele Wörter
verschiedene Ausspracheformen. In diesem Fall kann der Benutzer
die verschiedenen Ausspracheformen als verschiedene Wortmodelle
eingeben. Alternativ kann ein Gitter der die verschiedenen Ausspracheformen
repräsentierenden
Phonemsequenzen für
das einzelne Wort erzeugt und gespeichert werden. Nun wird ein drittes
Ausführungsbeispiel
beschrieben, welches die Art und Weise veranschaulicht, in welcher
Phonemsequenzen erzeugt werden können,
die verschiedene Ausspracheformen eines neuen Worts repräsentieren,
und wie ein derartiges Gitter von Phonemsequenzen geschaffen werden
kann. Bei diesem dritten Ausführungsbeispiel
wird das zuvor beschriebene Verfahren eines Worttrainings verwendet,
um zu Anfangs eine einzelne angenommene Phonemsequenz für ein Wort
zu schaffen, das aus einer großen
Anzahl von phonetischen Beispieldecodierungen des Worts genommen
wird. Diese angenommene Version wird dann verwendet, um alle Decodierungen
des Worts gemäß ihrer Ähnlichkeit
zu der angenommenen Form zu punkten. Versionen mit ähnlichen
Punktzahlen bzw. Ergebnissen werden dann zu einem Cluster zusammengefasst.
Kommt mehr als ein Cluster zustande, dann wird eine angenommene
Darstellung bzw. Repräsentation
für jedes
Cluster bestimmt und die ursprünglichen
Decodierungen werden relativ zu den neu angenommenen Repräsentationen
erneut gepunktet und erneut zu Clustern zusammengefasst. Dieser
Vorgang bzw. Prozess wird dann iteriert, bis ein gewisses Konvergenzkriterium
erzielt ist. Nun wird dieser Prozess unter Bezugnahme auf die 18 bis 20 ausführlicher
erläutert.
-
18 zeigt
die Hauptkomponenten der Wortmodellerzeugungseinheit 31 des
dritten Ausführungsbeispiels
ausführlicher.
Wie gezeigt, ist die Worterzeugungseinheit 31 ähnlich zu
der Worterzeugungseinheit des ersten Ausführungsbeispiels. Insbesondere
umfasst sie einen Speicher 41, welcher jede Phonemsequenz (D1) empfängt,
die für
jede der Wiedergaben des durch den Benutzer eingegebenen neuen Worts
aus der Spracherkennungsmaschine 17 ausgegeben ist. Nachdem
der Benutzer ein Eingeben der Trainingsbeispiele beendet hat, werden
die in dem Speicher 41 gespeicherten Phonemsequenzen auf
die dynamische Programmierabgleicheinheit 43 angewendet,
die der beste Abgleich zwischen den Phonemsequenzen auf die zuvor beschriebene
Weise bestimmt.
-
Dann
bestimmt die Phonemsequenzbestimmungseinheit
45 (auch auf
die zuvor beschriebene Weise) die Sequenz von Phonemen, welche am
besten mit den eingegebenen Phonemsequenzen abgestimmt ist. Diese
beste Phonemsequenz (D
best) und die ursprünglich eingegebene
Phonemsequenz (D
1) werden dann an eine Analyseeinheit
61 weitergegeben,
welche die beste Phonemsequenz mit jeder der eingegebenen Sequenzen
vergleicht, um zu bestimmen, wie gut jede der eingegebenen Sequenzen
der besten Sequenz entspricht. Hat die eingegebene Sequenz die gleiche
Länge wie
die beste Sequenz, dann tut die Analyseeinheit dies bei diesem Ausführungsbeispiel
durch Berechnung von:
wobei
d
i j und d
best j jeweils die
entsprechenden Phoneme aus der derzeit eingegebenen Sequenz und
der repräsentierenden
Sequenz sind. Hat andererseits die eingegebene Sequenz nicht die
gleiche Länge
wie die beste Sequenz, dann vergleicht die Analyseeinheit bei diesem
Ausführungsbeispiel
die zwei Sequenzen unter Verwendung einer dynamischen Programmiertechnik,
wie beispielsweise der zuvor Beschriebenen.
-
Die
Analyseeinheit 61 analysiert dann jede dieser Wahrscheinlichkeiten
unter Verwendung eines Clusterbildungsalgorithmus, um zu identifizieren,
ob innerhalb dieser Wahrscheinlichkeitspunktzahlen bzw. Wahrscheinlichkeitsergebnissen
verschiedene Cluster gefunden werden können – was anzeigen würde, dass
die eingegebenen Sequenzen verschiedene Ausspracheformen für das eingegebene
Wort umfassen. Dies ist in dem in 19 gezeigten
Diagramm schematisch veranschaulicht. Insbesondere hat 19 die
auf die vorangehende Weise bestimmten Wahrscheinlichkeitspunktzahlen
bzw. Wahrscheinlichkeitsergebnisse auf der x-Achse geplottet, wobei
die Anzahl von Trainingssequenzen mit dieser Punktzahl bzw. Ergebnis
auf der y-Achse geplottet sind.
-
(Wie
Fachmänner
erkennen werden, wird der Plot bzw. das Diagramm in der Praxis ein
Histogramm sein, da es unwahrscheinlich ist, dass viele Punktzahlen
genau die selben sein werden). Die zwei Spitzen 71 und 73 in
diesem Diagramm zeigen an, dass es zwei verschiedene Ausspracheformen
des Trainingsworts gibt. Sobald die Analyseeinheit 61 den
Clusterbildungsalgorithmus durchgeführt hat, weist sie jede der
eingegebenen Phonemsequenzen (D1) einem
der verschiedenen Cluster zu. Die Analyseeinheit 61 gibt
dann die eingegebenen Phonemsequenzen jedes Clusters zurück zu der
dynamischen Programmierabgleicheinheit 43, welche die eingegebenen
Phonemsequenzen in jedem Cluster separat verarbeitet, so dass die
Phonemsequenzbestimmungseinheit 45 eine repräsentative
Phonemsequenz für
jedes der Cluster bestimmen kann. Bei diesem Ausführungsbeispiel
werden, wenn die Abgleicheinheit 43 die Phonemsequenzen
eines Clusters verarbeitet, die Phonemsequenzen des Clusters oder
jedes anderen Clusters in dem Speicher 47 gespeichert.
Sobald eine repräsentative
Sequenz für
jedes Cluster bestimmt worden ist, dann vergleicht die Analyseeinheit 61 jede
der eingegebenen Phonemsequenzen mit allen der clusterrepräsentativen
Sequenzen und bildet erneut Cluster für die eingegebenen Phonemsequenzen.
Dieser ganze Prozess wird dann iteriert, bis ein geeignetes Konvergenzkriterium
erzielt worden ist.
-
Die
repräsentative
Sequenz für
jedes unter Verwendung dieses Prozesses identifizierten Clusters kann
dann in dem Wort-zu-Phonem-Wörterbuch 23 zusammen
mit der geschriebenen Version des Worts gespeichert werden. Jedoch
werden bei diesem Ausführungsbeispiel,
wie in 18 gezeigt, die Clusterdarstellungen
in eine Phonemsequenzkombinationseinheit 63 eingegeben,
welche die repräsentativen
Phonemsequenzen kombiniert, um unter Verwendung einer Vorwärts/Rückwärts-Stammbildungstechnik
ein Phonemgitter zu erzeugen. Dies ist in den 20 und 21 veranschaulicht.
Insbesondere zeigt 20 zwei Sequenzen von Phonemen 75 und 77,
die durch Sequenzen A-B-C-D
und A-E-C-D repräsentiert
sind, und 21 zeigt das resultierende Phonemgitter 79,
das durch Kombination der in 20 gezeigten
zwei Sequenzen unter Verwendung der Vorwärts/Rückwärts-Stammbildungstechnik erlangt
wird. Das durch die Phonemkombinationseinheit 63 ausgegebene
Phonemgitter 79 wird dann in dem Wort-zu-Phonem-Wörterbuch 23 zusammen mit
der geschriebenen Version des Worts gespeichert.
-
Wie
Fachmännern
erkennen werden, reduziert ein Speichern der verschiedenen Ausspracheformen in
einem Gitter auf diese Weise die Speicherplatzmenge, die für die Phonemsequenzen
in dem Wort-zu-Phonem-Wörterbuch 23 erforderlich
ist.
-
TRAINING
-
Bei
den vorangehenden Ausführungsbeispielen
verwendete die dynamische Programmierabgleicheinheit 78 eine
Anzahl von 1892 Decodier/Löschwahrscheinlichkeiten
und 43 Einfügewahrscheinlichkeiten,
um die dynamischen Programmierpfade bei dem Phonemabgleichbetrieb
zu punkten. Bei diesem Ausführungsbeispiel
werden diese Wahrscheinlichkeiten im Voraus während einer Trainingssitzung
bestimmt, und sie werden in dem Speicher 47 gespeichert.
Insbesondere wird während
dieser Trainingssitzung ein Spracherkennungssystem verwendet, um
eine Phonemdecodierung von Sprache auf zwei Arten zur Verfügung zu
stellen. Bei der ersten Art bzw. Weg ist das Spracherkennungssystem
mit sowohl der Sprache als auch den tatsächlich gesprochenen Wörtern ausgestattet.
Das Spracherkennungssystem kann daher diese Informationen verwenden,
um die kanonischen Phonemsequenzen der gesprochenen Wörter zu
erzeugen, um eine ideale Decodierung der Sprache zu erlangen. Das
Spracherkennungssystem wird dann verwendet, um die selbe Sprache
zu decodieren, jedoch dieses Mal ohne Kenntnis der tatsächlich gesprochenen
Wörter
(was nachfolgend als die freie Decodierung bezeichnet wird). Die
aus der freien Decodierung erzeugten Phonemsequenzen werden sich
von der kanonischen Phonemsequenz auf die folgenden Arten unterscheiden:
- i) die freie Decodierung kann Fehler machen
und Phoneme in die Decodierung einfügen, die nicht in der kanonischen
Sequenz vorhanden sind, oder alternativ Phoneme bei der Decodierung
auslassen, die in der kanonischen Sequenz vorhanden sind;
- ii) ein Phonem kann mit einem anderen verwechselt werden; und
- ii) auch wenn das Spracherkennungssystemn die Sprache perfekt
decodiert, kann sich aufgrund der Unterschiede zwischen Ausspracheform
bei Konversation und kanonischer Ausspracheform nichtsdestotrotz
die freie Decodierung von der kanonischen Decodierung unterscheiden,
beispielsweise wird das Wort „and" (dessen kanonische
Formen /ae/ /n( /d/ und /ax/ /n/ /d/ sind) bei der Konversationssprache
häufig
auf /ax/ /n/ oder sogar /n/ reduziert.
-
Werden
daher eine große
Anzahl von Äußerungen
in ihre kanonischen Formen und ihre frei decodierten Formen decodiert,
dann kann ein dynamisches Programmierverfahren (ähnlich zu dem zuvor Beschrieben) zum
Abgleich der Beiden Verwendung finden. Dies stellt Zählwerte
davon, was decodiert wurde, d, bereit, wenn das Phonem kanonisch
ein p hätte
sein sollen. Aus diesen Trainingsergebnissen können die vorangehenden Decodier-,
Lösch-
und Einfügewahrscheinlichkeiten
auf die folgende Weise angenähert
werden.
-
Die
Wahrscheinlichkeit, dass Phonem, p, eine Einfügung ist, ist gegeben durch:
wobei
I
d die Anzahl von Malen ist, die das automatische
Spracherkennungssystem Phonem d einfügte, und n
o d die Gesamtzahl von decodierten Phonemen
ist, welche relativ zu der kanonischen Sequenz eingefügt sind.
-
Die
Wahrscheinlichkeit, dass Phonem p als Phonem d decodiert wird, ist
gegeben durch:
wobei
c
dp die Anzahl von Malen ist, die das automatische
Spracherkennungssystem d decodierte, wenn es p hätte sein sollen, und n
p ist die Anzahl von Malen, die das automatische
Spracherkennungssystem etwas beliebiges decodierte (einschließlich einer
Löschung),
wenn es p hätte
sein sollen.
-
Die
Wahrscheinlichkeit, dass gar nichts decodiert wird (das heißt, es gibt
eine Löschung),
wenn das Phonem p decodiert hätte
werden sollen, ist gegeben durch:
wobei
O
p ist die Anzahl von Malen ist, die das
automatische Spracherkennungssystem nichts decodierte, wenn es p
decodieren hätte
sollen, und n
p ist das selbe wie zuvor.
-
ALTERNATIVE
AUSFÜHRUNGSBEISPIELE
-
Wie
Fachmänner
erkennen werden, ist die vorliegende Erfindung, auch wenn der Ausdruck „Phonem" durch die ganze
vorangehende Beschreibung verwendet worden ist, nicht auf seine
linguistische Bedeutung beschränkt,
sondern er umfasst die verschiedenen Unterworteinheiten, die in
Spracherkennungssystemen normalerweise identifiziert und verwendet
werden. Insbesondere deckt der Ausdruck „Phonem" jede beliebige derartige Unterworteinheit
bzw. Teilworteinheit ab, wie beispielsweise Phone, Silben oder Katakana
(Japanisches Alphabet).
-
Wie
Fachmänner
erkennen werden, wurde die vorangehende Beschreibung des dynamischen
Programmierabgleichs der Sequenzen von Phonemen nur anhand eines
Beispiels vorgenommen, und es können verschiedenste
Modifikationen vorgenommen werden. Beispielsweise können, auch
wenn eine Rasterabtasttechnik zum Weiterführen der Pfade bzw. auf ihnen
Fortschreiten durch die Gitterpunkte zum Einsatz kam, andere Techniken
zum Einsatz kommen, welche progressiv die Pfade durch die Gitterpunkte
fortschreiten. Zusätzlich
können,
wie Fachmänner
erkennen können,
andere als die zuvor beschriebenen dynamischen Programmierbedingungen
verwendet werden, um den Abstimmprozess zu steuern.
-
Bei
dem vorangehenden Ausführungsbeispiel
berechnete die dynamische Programmierabgleicheinheit Decodierpunktzahlen
bzw. -ergebnisse für
jeden Übergang
unter Verwendung der vorangehenden Gleichung (1). Anstelle eines
Summierens über
alle möglichen
dem System bekannten Phoneme gemäß Gleichung
(1) kann die dynamische Programmierabgleicheinheit stattdessen dahingehend
ausgestaltet sein, dass sie das unbekannte Phonem, p, identifiziert,
welches den Wahrscheinlichkeitsterm in der Summation maximiert,
und dass sie diesen maximalen Wahrscheinlichkeitsterm als die Wahrscheinlichkeit
einer Decodierung der entsprechenden Phoneme bei den eingegebenen
Sequenzen verwendet. Bei einem derartigen Ausführungsbeispiel würde die
dynamische Programmierabgleicheinheit auch vorzugsweise eine Anzeige
des Phonems speichern, welches diese Wahrscheinlichkeit mit dem
geeigneten Rückwärtszeiger
maximiert, so dass, nachdem der besten Abgleich zwischen den eingegebenen
Phonemsequenzen bestimmt worden ist, die die eingegebenen Sequenzen
am besten repräsentierende
Sequenz von Phonemen einfach durch die Phonemsequenzbestimmungseinheit
aus diesen gespeicherten Daten bestimmt werden kann.
-
Bei
dem vorangehenden Ausführungsbeispiel
werden die Einfüge-,
Lösch-,
und Decodierwahrscheinlichkeit aus Statistiken des Spracherkennungssystems
unter Verwendung einer maximalen Anscheinsabschätzung der Wahrscheinlichkeiten
berechnet. Wie Fachmänner
auf dem gebiet der Statistik erkennen werden, können andere Techniken, wie
beispielsweise Maximumentropietechniken, verwendet werden, um diese Wahrscheinlichkeiten
abzuschätzen.
Details einer geeigneten Maximumentropietechnik können auf
den Seiten 45 bis 52 in dem Buch mit dem Titel „Maximum Entropy and Bayesian
Methods", veröffentlicht
durch Kluwer Academic publishers und geschrieben von John Skilling,
gefunden werden.
-
Bei
den vorangehenden Ausführungsbeispielen
wurde ein dynamischer Programmieralgorithmus verwendet, um die durch
die Spracherkennungsmaschine ausgegebene Sequenz von Phonemen abzugleichen. Wie
Fachmänner
erkennen werden, könnte
eine beliebige Abgleichtechnik Verwendung finden. Beispielsweise kann
eine naive Technik Verwendung finden, welche alle möglichen
Abgleiche berücksichtigt.
Jedoch wird die dynamische Programmierung aufgrund ihrer einfachen
Implementierung unter Verwendung von Standardverarbeitungshardware
bevorzugt. zusätzlich
kann, auch wenn die dynamische Programmierabgleicheinheit bei dem
vorangehenden Ausführungsbeispiel
den „besten" Abgleich zwischen
den eingegebenen Sequenzen von Phonemen bestimmte, dies bei einigen
Anwendungen nicht unbedingt notwendig sein. Beispielsweise kann stattdessen
der zweite, dritte oder vierte beste Abgleich Verwendung finden.
-
Bei
den vorangehenden Ausführungsbeispielen
war die dynamische Programmierabgleicheinheit betreibbar, um eine
Vielzahl von eingegebenen Sequenzen von Phonemen simultan abzugleichen,
um den besten Abgleich zwischen ihnen zu identifizieren. Bei einem
alternativen Ausführungsbeispiel
kann die dynamische Programmierabgleicheinheit dahingehend ausgestaltet
sein, um zwei Sequenzen von eingegebenen Phonemen gleichzeitig zu
vergleichen. In diesem Fall würde
beispielsweise die dritte eingegebene Phonemsequenz mit der Sequenz
von Phonemen abgeglichen, welche die ersten beiden Sequenzen von
Phonemen repräsentiert
usw.
-
Bei
dem zuvor beschriebenen Ausführungsbeispiel
wurde während
dem dynamischen Programmieralgorithmus die Gleichung (1) für jedes
abgeglichene Paar von Phonemen berechnet. Bei der Berechnung von Gleichung
(1) wurden die erste Phonemsequenz und das zweite Sequenzphonem
mit jedem dem System bekannten Phonem verglichen. Wie Fachmänner erkennen
werden, werden für
ein gegebenes erstes Sequenzphonem- und ein zweites Sequenzphonempaar
viele der in Gleichung (1) gegebenen Wahrscheinlichkeiten gleich
oder sehr nah bei Null liegen. Daher können bei einem alternativen
Ausführungsbeispiel
die abgeglichenen Phoneme nur mit einer Untergruppe bzw. Teilgruppe
aller bekannten Phoneme verglichen werden, wobei die Teilgruppe
im Voraus aus den Trainingsdaten bestimmt wird. Zur Ausführung eines
derartigen Ausführungsbeispiels
könnten
die abzugleichenden eingegebenen Phoneme zur Adressierung einer
Nachschlagetabelle verwendet werden, welche die Phoneme identifizieren
würde,
welche mit ihnen unter Verwendung von Gleichung (1) verglichen werden
müssen
(oder ihre äquivalente
mehrfacheingegebene Sequenz).
-
Bei
dem vorangehenden Ausführungsbeispiel
gab der Benutzer eine Anzahl von gesprochenen Wiedergaben eines
neuen eingegebenen Worts zusammen mit einer geschriebenen Wiedergabe
des neuen Worts ein. Bei einem alternativen Ausführungsbeispiel kann es, eher
als Einschreiben einer Wiedergabe des neuen Worts, als eine handgeschriebene
Version eingegeben werden, welche anschließend unter Verwendung von geeigneter
Handschrifterkennungssoftware in Text umgewandelt wird.
-
Bei
den vorangehenden Ausführungsbeispielen
wurden neue Wortmodelle zur Verwendung bei einem Spracherkennungssystem
erzeugt. Insbesondere werden die neuen Wortmodelle bei den zuvor
gegebenen Beispielen zusammen mit einer Textversion des Worts gespeichert,
so dass der Text in einer Wortverarbeitungsanwendung Verwendung
finden kann. Jedoch können
die Wortmodelle, wie in der Einleitung erwähnt, als ein Steuerbefehl verwendet
werden, eher dass sie zur Verwendung bei einer Erzeugung von entsprechendem Text
sind. In diesem Fall würde,
eher als ein Speichern von dem neuen Wortmodell entsprechenden Text, die/der
entsprechende Steueraktion oder -befehl eingegeben und gespeichert.
-
Zuvor
wurden eine Anzahl von Ausführungsbeispielen
und Modifikationen beschrieben. Wie es Fachmänner zu schätzen wissen, gibt es viele
andere Ausführungsbeispiele,
welche Fachmänner
erkennen werden.