-
Die vorliegende Erfindung betrifft ein System zur Text-Sprache-
Umsetzung zur Umwandlung eines eingegebenen Textes in ein
akustisches Ausgangssignal, das die natürliche Sprache
nachahmt.
-
Systeme zur Text-Sprache-Umsetzung (TTS) erzeugen künstliche
Sprachtöne direkt aus dem eingegebenen Text. Die
konventionellen TTS-Systeme arbeiten im allgemeinen streng
sequentiell. Der eingegebene Text wird in einem externen
Prozess in relativ große Segmente, beispielsweise Sätze,
zerlegt. Jedes Segment wird dann überwiegend sequentiell,
Schritt für Schritt, verarbeitet, bis der gewünschte akustische
Ausgang erzeugt werden kann. Beispiele von TTS-Systemen werden
beschrieben in "Talking Machines: Theories, Models and
Designs", Herausgeber: G. Bailly und C. Benoit, North Holland,
1992; siehe auch Vortrag von Klatt mit dem Titel "Review of
text-to-speech conversion for English" im Journal of the
Acoustical Society of America, Band 82/3, Seite 737-793, 1987.
-
Die aktuellen TTS-Systeme können Stimmqualitäten und
Sprachstile hervorbringen, die zwar künstlich klingen, jedoch
für viele Aufgaben durchaus verständlich und geeignet sind,
beispielsweise zur Mitteilung von Informationen, für den Dialog
mit einer Workstation und als Hilfe für behinderte Menschen.
Eine weitere Verbreitung wurde jedoch durch die wahrgenommene
roboterhafte Qualität einiger Stimmen, durch
Transkriptionsfehler aufgrund ungenauer Regeln sowie durch eine
schlechte Verständlichkeit von intonationsbezogenen Hinweisen
verhindert. Im allgemeinen entstehen die Probleme durch eine
ungenaue oder unzureichende Modellierung der jeweiligen
Sprachfunktion. Um diese Mängel zu überwinden, widmete man
daher der Modellierung grammatikalischer Informationen etc.
viel Aufmerksamkeit, obwohl diese Arbeit noch erfolgreich in
die im Handel erhältlichen Systeme integriert werden muss.
-
Ein herkömmliches Text-Sprache-System hat zwei
Hauptkomponenten, einen linguistischen Prozessor und einen
akustischen Prozessor. Der Eingang in das System ist Text, der
Ausgang ist eine akustische Wellenform, die von einem Menschen
als dem Eingangstext entsprechende Sprache erkannt wird. Die
von dem linguistischen Prozessor an den akustischen Prozessor
über die Schnittstelle weitergegebenen Daten umfassen eine
Liste von Sprachsegmenten sowie Steuerungsinformationen (zum
Beispiel Phoneme, plus Dauer- und Tonlagewerte). Der akustische
Prozessor ist dann verantwortlich für die Erzeugung der Töne
entsprechend den spezifizierten Segmenten, sowie für die
korrekte Bearbeitung der Grenzen zwischen diesen, um eine
natürlich klingende Sprache zu erzeugen. Die Funktionen des
linguistischen Prozessors und des akustischen Prozessors sind
zum großen Teil voneinander unabhängig. In EPA 158270 wird zum
Beispiel ein System beschrieben, in dem der linguistische
Prozessor Aktualisierungen an mehrere, dezentral verteilte
akustische Prozessoren liefert.
-
Ein TTS-System mit einem linguistischen Prozessor und einem
akustischen Prozessor wird auch ausführlich von Higuchi et al.
in "A Portable Text to Speech System Using a Pocket Sized
Formant Speech Synthesizer", IEICE Transactions on Fundamentals
of Electronics, Communications, and Computer Sciences, 76a
(1993), November, Nr. 11, Tokio, Seite 1981-1989, beschrieben.
-
Die Architektur herkömmlicher TTS-Systeme basierte im typischen
Fall auf einem "Wurst"-Maschinenkonzept, und zwar insofern, als
der jeweilige Eingangstext komplett durch den linguistischen
Prozessor durchläuft, bevor die Liste der Sprachsegmente an den
akustischen Prozessor weitergeleitet wird. Auch die einzelnen
Komponenten in dem linguistischen Prozessor werden generell in
einer ähnlichen, vollständig sequentiellen Weise betrieben (bei
einem akustischen Prozessor ist die Situation etwas anders,
weil das System von der Notwendigkeit bestimmt ist,
Tonabtastungen mit einer festen Geschwindigkeit auszugeben).
-
Ein solcher Ansatz ist zufriedenstellend für akademische
Studien von TTS-Systemen, jedoch weniger geeignet für den in
vielen kommerziellen Anwendungen erforderlichen
Echtzeitbetrieb. Die Methoden nach dem Stand der Technik
erfordern zudem große Zwischenspeicher und führen zu
überflüssigem Rechenaufwand, wenn aus irgendeinem Grand
eventuell nur ein Teil des Textes benötigt wird.
-
Die Erfindung stellt dementsprechend ein System zur Text-
Sprache-Umsetzung (TTS) bereit, das eingegebenen Text in ein
akustisches Ausgangssignal umwandelt, welches natürliche
Sprache nachahmt, wobei das Text-Sprache-System einen
linguistischen Prozessor zur Erzeugung einer Liste von
Sprachsegmenten mit den zugehörigen Parametern aus dem
eingegebenen Text umfasst, und einen akustischen Prozessor zur
Erzeugung der akustischen Ausgangswellenform aus der genannten
Liste der Sprachsegmente mit den zugehörigen Parametern. Das
System ist dadurch gekennzeichnet, dass der akustische
Prozessor eine Anforderung an den linguistischen Prozessor
sendet, sobald er eine weitere Liste von Sprachsegmenten plus
den zugehörigen Parametern benötigt, und der linguistische
Prozessor den Eingangstext in Antwort auf diese Anforderungen
verarbeitet.
-
In TTS-Systemen muss die sprachliche Entschlüsselung des Satzes
vor der Erzeugung der akustischen Wellenform stattfinden.
-
Einige der einzelnen Verarbeitungsschritte der linguistischen
Verarbeitung müssen außerdem nach einer bestimmten Ordnung
ausgeführt werden. So müssen zum Beispiel normalerweise
Textkonventionen, beispielsweise Abkürzungen, zu
Standardwortformen verarbeitet werden, bevor die
orthographische Wortdarstellung in ihre phonetische
Transkription umgesetzt werden kann. Die sequentielle
Verarbeitung der typischen Systeme nach dem Stand der Technik
war jedoch bisher nicht auf die Bedürfnisse des potentiellen
Users abgestimmt.
-
Die Erfindung erkennt an, dass die Fähigkeit, große Texte in
einer natürlichen Form zu artikulieren, in vielen kommerziellen
Situationen nur einen begrenzten Vorteil hat, wenn es sich zum
Beispiel bei dem Text einfach um eine Folge von Zahlen handelt
(zum Beispiel Zeitpläne), oder um kurze Fragen (zum Beispiel
bei einem interaktiven Telefonsprachdienst), und dass die
Fähigkeit, Text in Echtzeit in Sprache umzusetzen, von
wesentlicher Bedeutung sein kann. Jedoch sind andere Faktoren,
beispielsweise eine begrenzte verfügbare Verarbeitungsleistung,
oft von wesentlich größerer Bedeutung. Viele der aktuellen
akademischen Systeme sind für solche kommerziellen Bedürfnisse
sehr schlecht geeignet. Im Gegensatz dazu wurde die Architektur
der vorliegenden Erfindung speziell dafür konzipiert, übermäßig
hohe Verarbeitungsleistungen zu vermeiden.
-
Das TTS-System empfängt vorzugsweise einen Befehl, die
Erzeugung einer Ausgangssprache zu stoppen, und dieser Befehl
wird zuerst an den linguistischen Prozessor übermittelt. Wenn
also beispielsweise der TTS-Prozess unterbrochen wird (zum
Beispiel deswegen, weil der Anrufer vielleicht die ihn
interessierenden Informationen bereits abgehört und den Hörer
aufgelegt hat), dann wird die Beendigung des TTS-Prozesses auf
die Ausgangsseite angewendet. Diese Beendigung pflanzt sich
dann effektiv in umgekehrter Richtung rückwärts durch das TTS-
System fort. Weil die Beendigung auf die Ausgangsseite
angewendet wird, fällt sie natürlicherweise mit dem Endpunkt
zusammen, der vom User diktiert wurde, der nur den Ausgang des
Systems oder einen akustisch geeigneten Unterbrechungspunkt
(zum Beispiel das Ende eines Satzes) hört. Es ist nicht
notwendig, zu überlegen, an welchem Punkt des Eingangstextes
beendet werden soll oder das Ende an einen beliebigen
Pufferpunkt im Eingangstext zu setzen.
-
Es wird außerdem bevorzugt, dass der linguistische Prozessor
eine Antwort auf die Anforderung vom akustischen Prozessor
sendet, um die Verfügbarkeit einer weiteren Liste von
Sprachsegmenten plus zugehörigen Parametern anzuzeigen. Für den
akustischen Prozessor ist es günstig, für jede Anforderung
Sprachsegmente vom linguistischen Prozessor zu erhalten, die
einer Atemgruppe entsprechen.
-
In einem bevorzugten Ausführungsbeispiel umfasst das TTS-System
weiter einen Prozessverteiler, der als Zwischenglied zwischen
dem akustischen Prozessor und dem linguistischen Prozessor
arbeitet, was bedeutet, dass die Anforderung und die Antwort
durch den Prozessverteiler geleitet werden. Natürlich können
zwischen dem akustischen Prozessor und dem linguistischen
Prozessor Steuerungsbefehle direkt kommuniziert werden (wie es
auch bei Daten der Fall ist), jedoch wird durch Verwendung
eines Prozessverteilers ein leicht zu identifizierender
Steuerungspunkt bereitgestellt. So können Befehle, das TTS-
System zu starten oder zu stoppen, an den Prozessverteiler
geleitet werden, der dann die entsprechende Aktion durchführen
kann. Im typischen Fall pflegt der Prozessverteiler eine Liste
von Anforderungen, die noch keine Antworten erhalten haben, um
den Betrieb des TTS-Systems zu überwachen.
-
In einem bevorzugten Ausführungsbeispiel umfassen der
akustische Prozessor oder der linguistische Prozessor (oder
beide) eine Vielzahl von Stufen, die sequentiell vom Eingang
bis zum Ausgang angeordnet sind, wobei jede Stufe bei der
Verarbeitung auf eine Anforderung von der folgenden Stufe
reagiert (die "folgende Stufe" ist die benachbarte Stufe in
Richtung des Ausgangs). Man beachte, dass es innerhalb der
Stufensequenz einige parallele Verzweigungen geben kann. Das
gesamte System wird demnach vom Ausgang auf Komponentenebene
angetrieben. Hierdurch werden die oben beschriebenen Vorteile
maximiert. Steuerungskommunikationen zwischen benachbarten
Stufen können wiederum über einen Prozessverteiler durchgeführt
werden. Es wird weiter bevorzugt, dass die Ausgangsgröße bei
der genannten Vielzahl von Stufen variiert. Jede Stufe kann
also ihre natürlichste Ausgangseinheit erzeugen; zum Beispiel
könnte eine Stufe einzelne Worte an die Folgestufe ausgeben,
eine andere Stufe könnte Phoneme ausgeben, während wiederum
eine andere Atemgruppen ausgeben könnte.
-
Vorzugsweise umfasst das TTS-System zwei Mikroprozessoren,
wobei der linguistische Prozessor mit dem einen und der
akustische Prozessor im wesentlichen parallel dazu mit dem
anderen Mikroprozessor arbeitet. Eine solche Anordnung ist
besonders geeignet für eine Workstation, die mit einer
Adapterkarte mit eigenem DSP ausgestattet ist. Der
linguistische Prozessor und der akustische Prozessor (oder die
darin befindlichen Komponenten) können jedoch auch als Threads
auf einem einzelnen oder auf vielen Mikroprozessoren
implementiert sein. Indem man den linguistischen Prozessor und
den akustischen Prozessor voneinander unabhängig betreibt, kann
die Verarbeitung in diesen beiden Abschnitten asynchron und
parallel ausgeführt werden. Die Gesamtgeschwindigkeit wird
gesteuert von den Bedürfnissen der Ausgangseinheit; der
linguistische Prozessor kann in seinem eigenen Rhythmus
arbeiten (vorausgesetzt jedoch, dass er insgesamt einen Text
schnell genug bearbeiten kann, so dass er im Durchschnitt den
akustischen Prozessor immer versorgen kann). Dies muss der
herkömmlichen Methoden gegenübergestellt werden, bei der die
Verarbeitung im linguistischen Prozessor und im akustischen
Prozessor hauptsächlich sequentiell abläuft. Eine parallele
Lösung bietet also wesentliche Leistungsvorteile.
-
Im typischen Fall läuft der linguistische Prozessor auf der
Host-Workstation, während der akustische Prozessor auf einem
separaten digitalen Verarbeitungschip auf einer an der
Workstation befindlichen Adapterkarte läuft. Diese vorteilhafte
Anordnung ist einfach zu implementieren, angesichts der großen
Verfügbarkeit geeigneter Adapterkarten, die als akustischer
Prozessor dienen können, und verhindert eine gegenseitige
störende Beeinflussung zwischen der Sprachverarbeitung und der
akustischen Verarbeitung.
-
Es sollen nun, unter Bezugnahme auf die folgenden Zeichnungen,
verschiedene Ausführungsbeispiele der Erfindung beschrieben
werden:
-
Fig. 1 ist ein vereinfachtes Blockdiagramm eines
Datenverarbeitungssystems, das zur Implementierung der
vorliegenden Erfindung eingesetzt werden kann;
-
Fig. 2 ist ein High-Level-Blockdiagramm eines Echtzeit-Text-
Sprach-Systems entsprechend der vorliegenden Erfindung;
-
Fig. 3 ist ein Diagramm mit den Komponenten des linguistischen
Prozessors der Fig. 2;
-
Fig. 4 ist ein Diagramm mit den Komponenten des akustischen
Prozessors der Fig. 2; und
-
Fig. 5 ist ein Flussbild, auf dem die Steuerungsvorgänge in
dem TTS-System dargestellt sind.
-
Fig. 1 zeigt ein Datenverarbeitungssystem, das zur
Implementierung der vorliegenden Erfindung eingesetzt werden
kann, mit einer zentralen Verarbeitungseinheit (CPU) 105, einem
Direktzugriffsspeicher (RAM) 110, einem Nurlesespeicher (ROM)
115, einem Massespeicher 120, beispielsweise einer Festplatte,
einer Eingabevorrichtung 125 und einer Ausgabevorrichtung 130;
alle Komponenten sind über eine Busarchitektur 135 miteinander
verbunden. Der zu synthetisierende Text wird über den
Massespeicher oder über die Eingabevorrichtung, typischerweise
eine Tastatur, eingegeben und an der Ausgabevorrichtung,
typischerweise ein Lautsprecher 140, in einen Tonausgang
umgewandelt (man beachte, dass das Datenverarbeitungssystem im
allgemeinen noch andere Teile umfasst, beispielsweise eine Maus
und ein Anzeigesystem, die in Fig. 1 nicht dargestellt und für
die vorliegende Erfindung nicht relevant sind). Ein:Beispiel
für ein Datenverarbeitungssystem, das zur Implementierung der
vorliegenden Erfindung eingesetzt werden kann, ist ein Risk
System/6000, das mit einer Multimedia Audio Capture and
Playback (MACP)-Adapterkarte ausgestattet ist, beide erhältlich
bei International Business Machines Corporation, obwohl auch
viele andere Hardwaresysteme geeignet wären.
-
Fig. 2 ist ein High-Level-Blockdiagramm der Komponenten und
des Befehlsflusses des Text-Sprach-Systems. Wie in den Systemen
nach dem Stand der Technik sind die beiden Hauptkomponenten der
linguistische Prozessor 210 und der akustische Prozessor 220.
Diese werden weiter unten ausführlicher beschrieben, führen
jedoch im wesentlichen dieselben Aufgaben wie Geräte nach dem
Stand der Technik aus, das heißt, der linguistische Prozessor
empfängt den eingegebenen Text und wandelt ihn in eine Sequenz
von mit Anmerkungen versehenen Textsegmenten um. Diese Sequenz
wird dann dem akustischen Prozessor präsentiert, der die mit
Anmerkungen versehenen Textsegmente in Ausgangstöne umformt. In
dem aktuellen Ausführungsbeispiel umfasst die Sequenz von mit
Anmerkungen versehenen Textsegmenten eine Liste von Phonemen
(manchmal als Phone bezeichnet) plus Tonlage- und Dauerwerte.
Es könnten jedoch auch andere Sprachsegmente (zum Beispiel
Silben oder Diphone) ohne weiteres verwendet werden, sowie
andere Informationen (zum Beispiel Lautstärke).
-
Fig. 2 zeigt ebenfalls einen Prozessverteiler 230. Dieser
dient zur Steuerung des Betriebs des linguistischen und des
akustischen Prozessors und insbesondere zur Interaktion
zwischen diesen beiden Geräten. Der Prozessverteiler regelt
also effektiv den gesamten Systembetrieb. Dies wird erreicht
durch das Senden von Nachrichten zwischen den Anwendungen, wie
die Pfeile A-D in Fig. 2 zeigen (derartige Kommunikationen
zwischen einzelnen Prozessen sind dem Fachmann bekannt).
-
Beim Starten des TTS-Systems sendet der akustische Prozessor
eine Nachricht an den Prozessverteiler (Pfeil D) und fordert
die entsprechenden Eingangsdaten an. Der Prozessverteiler
wiederum leitet diese Anforderung an den linguistischen
Prozessor weiter (Pfeil A), der dementsprechend eine geeignete
Menge des Eingabetextes verarbeitet. Der linguistische
Prozessor benachrichtigt dann den Prozessverteiler, dass die
nächste Ausgangseinheit von mit Anmerkungen versehenem Text
verfügbar ist (Pfeil B). Diese Benachrichtigung wird an den
akustischen Prozessor gesendet (Pfeil C), der dann den
entsprechenden, mit Anmerkung versehenen Text von dem
linguistischen Prozessor holen kann.
-
Hier wäre zu beachten, dass die Rückbenachrichtigung, die den
Pfeilen B und C entspricht, nicht notwendig ist, weil der
akustische Prozessor, nachdem von ihm weitere Daten angefordert
wurden, einfach die Ausgangsstufe des linguistischen Prozessors
zyklisch abfragen könnte, bis solche Daten verfügbar werden.
Die zuerst angezeigte Rückbenachrichtigung vermeidet jedoch den
akustischen Prozessor und hält nach Daten Ausschau, die noch
nicht angekommen sind, und ermöglicht außerdem dem
Prozessverteiler, den Systemgesamtstatus aufzuzeichnen. Der
Prozessverteiler speichert also Informationen über jede
unvollständige Anforderung (dargestellt von den Pfeilen D und
A), die dann mit der Rückbenachrichtigung verglichen werden
können (Pfeile B und C).
-
Fig. 3 zeigt die Struktur des linguistischen Prozessors 210
sowie den im Inneren des linguistischen Prozessors
stattfindenden Datenfluss. Es sollte anerkannt werden, dass
diese Struktur den Fachleuten hinlänglich bekannt ist; der
Unterschied gegenüber bekannten Systemen liegt nicht in der
Identität oder Funktion der Komponenten, sondern vielmehr in
der Art und Weise, wie der Datenfluss zwischen ihnen gesteuert
wird. Des einfacheren Verständnisses wegen sollen die
Komponenten in der Reihenfolge beschrieben werden, in der sie
von dem Eingangstext angetroffen werden, das heißt,
entsprechend der Methode "Wurstmaschine", wie sie nach dem
Stand der Technik bekannt ist, obwohl der Betrieb des
linguistischen Prozessors, wie später noch erläutert wird, auf
eine ganz andere Weise gesteuert wird.
-
Die erste Komponente 310 des linguistischen Prozessors (LEX)
führt eine Tokenisation und Vorverarbeitung des Textes durch.
Die Funktion dieser Komponente besteht darin, einen Eingang von
einer Quelle zu erhalten, beispielsweise der Tastatur oder
einer gespeicherten Datei, die erforderlichen E/A-Operationen
auszuführen und den Eingangstext in Tokens (Worte) aufzuteilen,
basierend auf dem Abstand, der Interpunktion usw. Die
Eingangsgröße kann nach Wunsch angeordnet werden; sie kann eine
feste Anzahl von Zeichen darstellen, einen kompletten Satz oder
eine Textzeile (das heißt, bis zum nächsten Punkt
beziehungsweise Rücksetzzeichen), oder ein beliebiges anderes
geeignetes Segment. Die nächste Komponente 315 (WRD) ist
verantwortlich für die Wortumsetzung. Es wird eine Reihe von ad
hoc-Regeln implementiert, um lexikalische Elemente in
kanonische Wortformen abzubilden. So werden zum Beispiel Zahlen
in Wortketten umgesetzt und Akronyme sowie Abkürzungen werden
in der Langform wiedergegeben. Der Ausgang aus dieser
Operationsschritt ist ein Wortstrom, der die Diktatform des
eingegebenen Textes darstellt, das heißt den Text, wie er einer
Sekretärin diktiert worden wäre, um sicherzustellen, dass der
Text korrekt niedergeschrieben werden kann. Hierzu ist ein
Hinweis auf vorhandene Interpunktionen notwendig.
-
Die Verarbeitung teilt sich dann in zwei Abzweigungen auf, von
denen eine im wesentlichen mit einzelnen Worten befasst ist,
während die andere größere grammatikalische Wirkungen behandelt
(Prosodie). Die erste Abzweigung soll zuerst beschrieben
werden. Sie umfasst eine Komponente 320 (SYL), die dafür
zuständig ist, Worte in ihre einzelnen Silben zu zerlegen.
-
Normalerweise geschieht dies unter Zuhilfenahme eines
Wörterbuchs, obwohl es auch sinnvoll ist, einen Backup-
Mechanismus zur Verfügung zu haben, um Worte verarbeiten zu
können, die nicht in diesem Wörterbuch vorhanden sind. Dies
geschieht oft, indem man beispielsweise jedes mögliche Präfix
oder Suffix entfernt, um festzustellen, ob es sich um ein Wort
handelt, das sich bereits im Wörterbuch befindet (und das somit
analog dazu in Silben zerlegt werden kann). Die nächste
Komponente 325 (TRA) führt dann eine phonetische Transkription
durch, bei der das in Silben zerlegte Wort noch weiter in seine
einzelnen Phoneme zerlegt wird, auch hier unter Zuhilfenahme
einer in einem Wörterbuch stehenden Nachschlagtabelle,
erweitert um allgemeine Regeln für nicht im Wörterbuch stehende
Worte. Es gibt eine Verknüpfung mit einer Komponente POS auf
der Prosodie-Abzweigung, die nachfolgend beschrieben wird, da
grammatikalische Informationen manchmal dazu verwendet werden
können, phonetische Mehrdeutigkeiten zu lösen (zum Beispiel
ändert sich die Aussprache von "present" in Abhängigkeit davon,
ob es sich um ein Verb oder ein Nomen handelt). Man beachte,
dass es durchaus möglich wäre, SYL und TRA in einer einzigen
Verarbeitungskomponente miteinander zu kombinieren.
-
Der Ausgang von TRA ist eine Phonemsequenz, welche die zu
erzeugende Sprache darstellt, und welche an die
Dauerzuweisungskomponente 330 (DUR) weitergegeben wird. Diese
Phonemsequenz wird schließlich, zusammen mit Anmerkungen,
welche die Tonlage und die Dauer der Phoneme beschreiben, vom
linguistischen Prozessor an den akustischen Prozessor
weitergegeben. Diese Anmerkungen werden von den Komponenten des
linguistischen Prozessors wie folgt entwickelt. Zuerst versucht
die Komponente 335 (POS), jedem Wort einen Satzteil zuzuordnen.
Hierfür gibt es verschiedene Möglichkeiten: ein bisher üblicher
Weg ist die einfache Prüfung des Wortes anhand eines
Wörterbuchs. Oft sind noch weitere Informationen nötig, die von
Regeln bereitgestellt werden können, die entweder auf einer
grammatikalischen oder einer statistischen Basis festgelegt
werden; Beispiel: auf das Wort "the" folgt üblicherweise ein
Nomen oder ein Adjektiv. Wie bereits oben erwähnt, kann die
Satzteilzuordnung der phonetischen Transkriptionskomponente
(TRA) zur Verfügung gestellt werden.
-
Die nächste Komponente 340 (GRM) in der prosodischen Abzweigung
legt anhand der Satzteilzuordnungen für eine Reihe von Worten
die Phrasengrenze fest; zum Beispiel liegen Konjunktionen
häufig an Phrasengrenzen. Die Phrasenkennzeichnungen können
auch Interpunktionsinformationen verwenden, beispielsweise die
Lage von Kommata und Punkten, die von der
Wortumsetzungskomponente WRD eingeholt werden. Die
Phrasenkennzeichnungen werden dann an die Atemgruppen-Assembly-
Einheit BRT weitergegeben, wie weiter unten noch ausführlicher
beschrieben wird, sowie an die Dauerzuweisungekomponente 330
(DUR). Die Dauerzuweisungskomponente kombiniert die
Phraseninformation mit der Phonemsequenz, die von der
phonetischen Transkription TRA bereitgestellt wurde, um eine
geschätzte Dauer für jedes Phonem in der Ausgangssequenz
festzulegen. Typischerweise wird die Dauer bestimmt, indem man
jedem Phonem eine Standarddauer zuweist, die dann entsprechend
bestimmter Regeln modifiziert wird, zum Beispiel die Identität
benachbarter Phoneme oder die Position innerhalb einer Phrase
(Phoneme am Ende von Phrasen werden meistens ausgedehnt). Eine
alternative Methode, in der ein Hidden Markov Model (HMM)
verwendet wird, um die Dauer von Segmenten vorauszusagen, wird
in der gleichzeitig anhängigen Patentanmeldung GB 9412555.6
(UK9-94-007) beschrieben.
-
Die letzte Komponente 350 (BRT) in dem linguistischen Prozessor
ist die Atemgruppen-Assembly-Einheit, die eine Atemgruppe
darstellende Phonemsequenzen assembliert. Eine Atemgruppe
entspricht im wesentlichen einer Phrase, wie sie von der
Phrasenkennzeichnungskomponente GRM gekennzeichnet wird. Jedem
Phonem in der Atemgruppe wird eine Tonlage zugeordnet, die auf
einer Tonlagenkontur für die Atemgruppenphrase basiert.
-
Hierdurch kann der linguistische Prozessor an den akustischen
Prozessor die mit Anmerkungen versehene Phonemliste plus
Tonlage und Dauer ausgeben, wobei jede Liste eine Atemgruppe
darstellt.
-
Wenden wir uns nun dem akustischen Prozessor zu, der in Fig. 4
ausführlicher dargestellt ist. Bei den Komponenten des
akustischen Prozessors handelt es sich um herkömmliche
Komponenten, die dem Fachmann hinlänglich bekannt sind. Eine
Diphon-Bibliothek 420 enthält vorher aufgezeichnete
Diphonsegmente (ein Diphon ist der Übergang zwischen zwei
Phonemen) Oft werden viele Abtastwerte eines jeden Diphons
erfasst und für die Verwendung in der Diphonbibliothek
statistisch gemittelt. Da es etwa 50 gebräuchliche Phoneme
gibt, verfügt die Diphonbibliothek potentiell über etwa
2500 Einträge, obwohl in Wirklichkeit nicht alle
Phonemkombinationen in der natürlichen Sprache vorkommen.
-
Nachdem der akustische Prozessor die Phonemliste empfangen hat,
werden also im ersten Schritt 410 (DIP) die Diphone in dieser
Eingangsliste identifiziert, basierend einfach auf den
aufeinanderfolgenden Phonempaaren. Die relevanten Diphone
werden dann aus der Diphonbibliothek abgerufen und von der
Diphonverkettungseinheit 415 (PSOLA) miteinander verkettet. Mit
entsprechenden Interpolationstechniken wird sichergestellt,
dass es zwischen den Diphonen keine hörbare Unterbrechung gibt;
die Länge dieser Interpolation kann gesteuert werden, um
sicherzustellen, dass jedes Phonem die vom linguistischen
Prozessor vorgegebene korrekte Dauer hat. "PSOLA", die
Abkürzung für Pitch synchronous overlap-add, stellt eine
besondere Form der Synthese dar (siehe "Pitch synchronous
waveform processing techniques for text-to-speech synthesis
using diphones", von Carpentier und Moulines, in Proceedings
Eurospeech 89 (Paris, 1989), Seite 13-19, oder "A diphone
Synthesis System based on time-domain prosodic modifications of
speech" von Hamon, Moulines und Charpentier, in ICASSP 89
(1989), IEEE, Seite 238-241); auch jede andere geeignete
Synthesetechnik könnte eingesetzt werden. Die nächste
Komponente 425 (PIT) ist dann verantwortlich für die
Modifizierung der Diphonparameter entsprechend der gewünschten
Tonlage, während es sich bei der letzten Komponente 435 (XMT)
um einen Gerätetransmitter handelt, der die akustische
Wellenform erzeugt, um einen Lautsprecher oder andere:
Tonausgabegeräte anzutreiben. In der aktuellen Implementierung
wurden PIT und XMT in einem Einzelschritt zusammengefasst, der
eine sowohl in der Tonlage- als auch in der Dauer-Dimension
verzerrte Wellenform erzeugt.
-
Die von jeder Komponente bereitgestellte Ausgangseinheit ist in
Tabelle 1 aufgeführt. Ein solcher Ausgang wird auf Anforderung
als Eingang für die nachfolgende Stufe bereitgestellt,
natürlich mit Ausnahme der Endstufe XMT, die einen Lautsprecher
in Echtzeit ansteuert und daher einen Ausgang mit einer
konstanten Datenrate erzeugen muss. Man beachte, dass die
Ausgangseinheit die Größe der Texteinheit darstellt (zum
Beispiel Wort, Satz, Phonem); bei vielen Stufen werden hierzu
noch weitere Informationen für diese Einheit geliefert (zum
Beispiel Dauer, Satzteil etc.).
Tabelle 1
-
Es sollte anerkannt werden, dass sowohl die Struktur des
linguistischen Prozessors als auch die des akustischen
Prozessors nicht mit den oben beschriebenen Strukturen
übereinstimmen müssen. Der Stand der Technik (vergleiche das
Buch "Talking Machines" und den bereits oben erwähnten Vortrag
von Klatt) bietet viele mögliche Anordnungen, die dem Fachmann
bekannt sein dürften. Die vorliegende Erfindung beeinflusst die
Art dieser Komponenten nicht, noch deren tatsächlichen Eingang
oder Ausgang in bezug auf Phoneme, in Silben zerlegte Worte und
ähnliches. Die vorliegende Erfindung beschäftigt sich vielmehr
damit, wie die verschiedenen Komponenten bei der allgemeinen
Flusssteuerung zusammenwirken, unabhängig von ihrer
eigentlichen Natur oder Funktion.
-
Fig. 5 ist ein Flussbild, das diese Steuerung des Datenflusses
durch eine Komponente des TTS-Systems zeigt. Dieses Flussbild
zeigt sowohl den Betrieb des High Level linguistischen/-
akustischen Prozessors als auch den Betrieb der in diesen
befindlichen Komponenten der weiter unten liegenden Ebenen. Der
linguistische Prozessor kann zum Beispiel als eine einzelne
Komponente betrachtet werden, die einen Eingangstext in
derselben Weise empfängt, wie die Text-Tokenisationkornponente,
und diesen Text in derselben Weise ausgibt, wie die
Atemgruppen-Assembly-Komponente, wobei dazwischen eine "Black
Box"-Verarbeitung liegt. In einer solchen Situation ist es
möglich, dass die Verarbeitung innerhalb des linguistischen
oder akustischen Prozessors eine herkömmliche Verarbeitung ist,
wobei die Methode der vorliegenden Erfindung nur zur Steuerung
des Datenflusses zwischen dem linguistischen und dem
akustischen Prozessor verwendet wird.
-
Ein wichtiger Aspekt des TTS-Systems ist, dass es in Echtzeit
arbeiten soll. Es sollte also eine Situation vermieden werden,
in der der akustische Prozessor weitere Daten von dem
linguistischen Prozessor anfordert, dem akustischen Prozessor
jedoch aufgrund der Rechenzeit innerhalb des linguistischen
Prozessors die Daten ausgehen, bevor diese Anforderung
befriedigt werden kann (was zu einer Lücke in dem Sprachausgang
führen würde). Es kann daher für bestimmte Komponenten
vorteilhaft sein, zu versuchen, eine möglichst kleine Menge von
Ausgangsdaten im Zwischenspeicher zu halten, so dass künftige
Datenanforderungen rechtzeitig befriedigt werden können.
Komponenten, wie beispielsweise die Atemgruppen-Assembly-
Einheit BRT, die relativ große Dateneinheiten ausgeben (siehe
Tabelle 1), benötigen generell häufiger eine solche
Mindestmenge von Ausgangspufferdaten, während es bei anderen
Einheiten gut sein kann, dass sie keine solche Mindestmenge
benötigen. Der erste Schritt 510 in Fig. 5 stellt also eine
Prüfung dahingehend dar, ob der Ausgangspuffer für die
Komponente genügend Daten enthält, und ist nur auf diejenigen
Komponenten anwendbar, die hier eine Mindestmenge angeben. Der
Ausgangspuffer kann entweder bei der Initialisierung oder nach
der Lieferung der Daten an die Folgestufe unter diesem Minimum
liegen. Wenn ein Füllen des Ausgangs erforderlich ist,
geschieht dies wie nachfolgend beschrieben.
-
Man beachte, dass der Ausgangspuffer auch dann verwendet wird,
wenn eine Komponente mehrere Ausgangseinheiten für jede von ihr
empfangene Eingangseinheit produziert. Zum Beispiel kann die
Silbenzerlegungskomponente aus jeder Eingangseinheit (das heißt
jedem Wort), das sie von der vorherigen Stufe empfängt, mehrere
Silben erzeugen. Diese können im Ausgangspuffer gespeichert
werden, so dass die nächste Komponente auf jeweils eine von
ihnen gleichzeitig zugreifen kann (phonetische Transkription).
-
Der nächste Schritt 520 ist der Empfang einer Anforderung von
der nächsten Stufe als Eingang (dieser könnte eintreffen, wenn
der Ausgangspuffer gefüllt wird, wobei in diesem Fall eine
Warteschlange gebildet werden kann). In einigen Fällen kann die
Anforderung aus den bereits im Ausgangspuffer vorhandenen Daten
befriedigt werden (siehe Schritt 530), wobei in diesem Fall die
Daten entsprechend geliefert werden können (Schritt 540), ohne
dass eine weitere Verarbeitung stattfindet. Ist dies jedoch
nicht der Fall, muss ein Eingang von der unmittelbar
davorliegenden Stufe beziehungsweise den unmittelbar
davorliegenden Stufen angefordert werden (Schritt 550). So kann
beispielsweise die phonetische Transkription Daten sowohl von
der Satzteilzuordnungs- als auch der Silbenzerlegungskomponente
benötigen. Wenn die Anforderung(en) befriedigt wurde(n)
(Schritt 560), wird geprüft, ob die Komponente jetzt genügend
Eingangsdaten hat (Schritt 570); wenn nicht, muss sie weiterhin
Eingangsdaten anfordern. So müßte zum Beispiel die Atemgruppen-
Assembly-Komponente mehrere Anforderungen, jeweils für ein
einzelnes Phonem, an die Dauerzuweisungskomponente senden, bis
eine ganze Atemgruppe assembliert werden könnte. Entsprechend
benötigt die Satzteilzuweisungskomponente POS normalerweise
eine ganze Phrase oder einen ganzen Satz und wird daher
wiederholt einen Eingang anfordern, bis ein Punkt oder ein
anderer geeigneter Begrenzer angetroffen wird. Nachdem genügend
Daten vorhanden sind, kann die Komponente dann die betreffende
Verarbeitung ausführen (Schritt 580) und die Ergebnisse im
Ausgangspuffer speichern (Schritt 590). Die Ergebnisse können
dann an die nächste Stufe weitergegeben werden (540), in
Antwort auf die ursprüngliche Anforderung der Stufe 520, oder
sie können gespeichert werden, um eine spätere derartige
Anforderung zu beantworten. Man beachte, dass der
Weitergabeschritt 540 das Senden einer Antwort an die
anfordernde Komponente umfassen kann, die dann zum Abruf der
angeforderten Daten auf den Ausgangspuffer zugreift.
-
Es kommt zu einer leichten Komplikation, wenn eine Komponente
einen Ausgang an mehr als eine Stufe sendet oder von mehr als
einer Stufe einen Eingang empfängt. Diese Komplikation kann
jedoch leicht aufgrund der sequentiellen Natur des Textes
gehandhabt werden. Wenn also eine Komponente einen Ausgang an
zwei andere Komponenten liefert, kann sie zwei voneinander
unabhängige Ausgangspuffer pflegen und die Ergebnisse ihrer
Verarbeitung in beide Puffer kopieren. Wenn eine Komponente
einen Eingang von zwei Komponenten empfängt, kann es sein, dass
sie einen Eingang von beiden anfordern muss, bevor sie mit der
Verarbeitung beginnen kann. Ein Eingang kann gepuffert werden,
wenn er sich auf eine größere Texteinheit als der andere
Eingang bezieht.
-
Obwohl dies in Fig. 5 nicht ausdrücklich dargestellt ist,
werden alle Anforderungen (Schritte 520 und 550) über einen
Prozessverteiler geleitet, der noch ausstehende Anforderungen
verfolgen kann. In ähnlicher Weise wird die Lieferung von Daten
an die folgende Stufe (Schritte 560 und 540) implementiert,
indem zuerst über den Prozessverteiler eine Benachrichtigung an
die anfordernde Stufe gesendet wird, dass die Daten zur
Verfügung stehen. Die anfordernde Stufe reagiert dann auf diese
Benachrichtigung und holt die Daten von der vorhergehenden
Stufe.
-
Das TTS-System mit der oben beschriebenen Architektur wird
nicht wie üblich gestartet oder gestoppt. Das heißt, es wird
kein Eingangstext eingegeben, sondern nachdem ein Startbefehl
empfangen wurde (zum Beispiel vom Prozessverteiler), wird
dieser an den akustischen Prozessor, möglicherweise bis zu
dessen letzter Komponente, weitergeleitet. Daraufhin wird an
die davorliegende Komponente eine Anforderung zurückgegeben,
wodurch dann die Anforderung kaskadenartig bis zur letzten
Eingangsstufe zurückgegeben wird. Hierdurch wiederum kommt es
dann zur Eingabe von Daten in das System. Entsprechend wird
auch ein Stoppbefehl bis zum Ende des Systems geleitet, von wo
aus er sich durch die anderen Komponenten nach hinten
fortpflanzt.
-
Das oben beschriebene System zur Text-Sprache-Umsetzung verfügt
über ein Maximum an Flexibilität, da jede Algorithmus- oder
Synthesetechnik übernommen werden kann, ist jedoch aufgrund
seiner präzisen Steuerung und wirtschaftlichen Verarbeitung
besonders geeignet für den kommerziellen Einsatz.