PatentDe  


Dokumentenidentifikation DE19911720A1 28.12.2000
Titel Steuerung für eine Sprachausgabe
Anmelder Siemens AG, 80333 München, DE
Erfinder Wegge, Klaus-Peter, 33100 Paderborn, DE
DE-Anmeldedatum 16.03.1999
DE-Aktenzeichen 19911720
Offenlegungstag 28.12.2000
Veröffentlichungstag im Patentblatt 28.12.2000
IPC-Hauptklasse G10L 13/00
IPC-Nebenklasse H04M 1/64   
Zusammenfassung Einrichtung zur Sprachausgabe mit einer Kette von Umsetzern, wobei eine Steuerung die innerhalb der Kette übertragenen Daten überwacht und bei Eintreffen eines asynchronen Kommandos dieses an den betroffenen Umsetzer sendet, wobei zusätzlich zu den Daten Indices erzeugt werden und die Überwachung bevorzugt die Indices betrifft.

Beschreibung[de]
Technisches Gebiet

Die Erfindung betrifft die Steuerung einer Sprachausgabe.

Stand der Technik

In der Patentschrift US 5,825,854 ist eine Einrichtung beschrieben, in der unter anderem codierte Texte einem Benutzer vorgelesen werden können, der mit der Einrichtung über einen Handapparat und ein Telefonnetz verbunden ist. Dabei ist auch vorgesehen, daß eine Ausgabe komplett abgebrochen wird und durch Hinterlegung einer Musik einzelne Teile der Ausgabe "farbig" markiert werden. Genauere Angaben, wie diese interaktive Steuerung den Prozeß der Spracherzeugung so steuert, daß die Ausgabe einerseits gut steuerbar und dennoch ohne Pausen und unnatürliche Übergänge erfolgt, sind nicht enthalten.

In der Patentschrift US 5,673,362 ist eine Einrichtung zur Sprachsynthese beschrieben, bei der ein Teil der Spracherzeugung über ein Netzwerk gemeinsam zugegriffen werden kann. Es werden verschiedene Maßnahmen beschrieben, wie die durch die Übertragung von Teilaufgaben an Server bewirkten Problem kompensiert werden.

Hingegen ist bislang nicht bekannt, wie eine Feinsteuerung des Ausgabeprozesses einer Spracherzeugung erfolgen kann, wenn die Komponenten der Spracherzeugung relativ unabhängig voneinander in Form einer durch Kanäle vorhandenen Kette vorliegen. Nach den bislang bekannten Verfahren muß hierzu immer die gesamte Kette gelöscht und mit den neuen Parametern neu aufgebaut werden.

Darstellung der Erfindung

Die Erfindung stellt sich hierzu die Aufgabe, eine solche Kette von Komponenten zur Sprachererzeugung derart zu gestalten, daß eine laufende Sprachausgabe beeinflußt werden kann, ohne daß dies auf der Ausgabeseite Störungen verursacht. Ferner löst die Erfindung die Aufgabe, wie eine kontinuierliche Eingabe von auszugebenden Texten derart erfolgen kann, daß sowohl ein Anhalten, Wiederholgen und ein definierter sofortiger Abbruch möglich sind, obwohl die betroffenen Texteile sich bereits in der Verarbeitung durch Komponenten der Kette befinden.

Die Erfindung löst die Aufgabe, indem eine Steuerung vorhanden ist, welche die Kommunikation der Komponenten überwacht und gemäß den dadruch gewonnenen Daten über den Zustand der Komponenten ein auf einer Kommandoschnitstelle eintreffendes Kommando für die Modifikation der laufenden Ausgabe an die danach betroffene Komponnente weiterleitet.

Es handelt sich also um eine Einrichtung zur Sprachausgabe mit einr Kette von Umsetzern, wobei eine Steuerung die innerhalb der Kette übertragenen Daten überwacht und bei Eintreffen eines asynchronen Kommandos dieses an den betroffenen Umsetzer sendet, wobei zusätzlich zu den Daten Indices erzeugt werden und die Überwachung bevorzugt die Indices betrifft.

Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung, welche in Verbindung mit den beigefügten Zeichnungen die Erfindung an Hand eines Ausführungsbeispiels erläutert.

Kurzbeschreibung der Zeichnungen

Es zeigt

Fig. 1 eine schematische Anordnung eines Spracherzeugungssystems mit einer Kette von Komponenten, die durch eine Steuerung überwacht werden,

Fig. 2 eine erste Variante der Überwachung der Kommunikation zwischen den Komponenten und

Fig. 3 eine zweite Variante der Überwachung.

Beschreibung einer Ausführungsform der Erfindung

Fig. 1 zeigt schematisch eine Anordnung von Komponenten für ein Spracherzeugungssystem gemäß der Erfindung. Die Komponenten werden dabei bevorzugt als Software-Module in einem Rechner mit einem geeigneten Betriebssystem, z. B. Linux, realisiert. Die folgende Beschreibung verwendet daher überwiegend Begriffe aus dieser Umgebung, die bei anderen Ausführungen sinn- und funktionsgemäß umzusetzen sind.

Insbesondere für die Schnittstellen zwischen Moduln werden Mittel zur Datenübergabe zwischen Prozessen verwendet. Diesen können einerseits gemeinsame Dateien sein, die jedoch im vorliegenden Kontext sehr umständlich sind. Besser sind die als 'pipe' bezeichneten unidirektionalen Kanäle oder als 'shared memory' bezeichnete gemeinsame Speicherbereiche. Ausführliche Anleitungen zur Verwendung sind vielfältig in der Literatur zu finden; lediglich als Beispiel sei das Kapitel 7 des Buches "Advanced UNIX Programming" von Marc J. Rochkind angeführt.

Eine Steuerung 10 hat einen Texteingang 12 und einen Steuereingang 11. Der Texteingang 12 stellt den primären Eingang dar, über den Texte, die in Sprache umgewandelt werden sollen, in normaler zeichencodierter Form eingegeben werden. über den Steuereingang können Kommandos eingegeben werden, die sich, entsprechend gekennzeichnet, entweder auf zukünftige Texteingaben beziehen und z. B. Stimmlage oder Tempo vorab bestimmen. Da solche Angaben auch in bekannter Art als speziell markierte Befehle in der Texteingabe vorliegen können und in Bezug auf die Erfindung relativ uninteressant sind, werden sie nicht weiter behandelt.

Von Bedeutung sind die Kommandos, die sich auf bereits in der Ausgabe befindliche Texte beziehen und daher auch als asynchron bezeichnet werden. Ein solches Kommando kann z. B. das Tempo der laufenden Ausgabe oder die Stimmlage verändern oder eine Ausgabe abzubrechen bewirken.

Die Umwandlung erfolgt in bekannter Art durch vier logische Schritte, nämlich einen Präprozessor 20, einen Phonem- Generator 30a. .c, einen Synthesizer 40a. .c und einem Codierer 50. Phonem-Generator 30a. .c und Synthesizer 40a. .c können für mehrere Sprachen mehrfach vorliegen; in den nachfolgenden Ausfürhrungen soll der Einfachheit halber nur die erste Sprache und damit der Phonem-Generator 30a und der Synthesizer 40a betrachtet werden. Alle vier Stufen der Umwandlung sind in Fig. 1 in Form einer 'pipeline' derart miteinander verbunden, daß der Ausgang einer Stufe mit dem Eingang der nachfolgenden verbunden ist. Der Ausgang 53 der letzten Stufe 50 ist logisch mit einer akustischen Ausgabe 60 verbunden, die hier durch ein Lautsprechersymbol dargestellt ist. In einer konkreten Anwendung kann dies beispielsweise die Tonausgabeeinheit eines Modem sein, welches die erzeugte Sprache als PCM-codiertes Signal erhält und in passender Weise auf die Telefonleitung umsetzt.

Als Präprozessor 20, Phonem-Generator 30a, Synthesizer 40a und Codierer 50 werden in der Funktion bekannte Komponenten verwendet, die je nach Ausfürhrungsform angepaßt werden müssen, wie im folgenden ausgeführt wird.

Die Erfindung beruht dabei darauf, daß die Steuerung jederzeit über den Datentransfer zwischen den Komponenten informiert ist. Dies ist in Fig. 1 dadurch angedeutet, daß zwar der Ausgang 23 des Präprozessors 20 mit dem Eingang 31 des Phonemgenrators 30a direkt verbunden ist, jedoch eine Abzweigung 24 zur Steuerung vorgesehen ist. Ferner ist vorgesehen, daß die Steuerung über einen Kommandopfad 32 den Ablauf in dem Phonemgenerator beeinflussen kann. Hierzu ist die Komponente 10b in der Steuerung zuständig, die die Ausgaben des Präprozessors überwacht und gegebenenfalls über die Steuerung den Phonemgenerator beieinflußt.

Eine erste Implementation dieser logischen Struktur, die ohne Änderungen an dem Phonem-Generator auskommt, ist in Fig. 2 dargestellt. Dabei werden die gesamten Ausgabedaten über die Komponente 10b der Steuerung 10 geleitet. Komponente 10b fügt nach Bedarf Steueranweisungen an den Phonemgenerator ein bzw. unterdrückt Ausgaben des Präprozessors.

Hierbei wird, ggf. durch entsprechende Modifikation, davon ausgegangen, daß die Schnittstelle zwischen Präprozessor und Phonem-Generator derart gestaltet ist, daß der übermitttelte Datenstrom neben den umzusetzenden Primärdaten, hier den in Phoneme umzusetzenden Wörtern, noch Möglichkeiten für die Übergabe von Kommandos enthält, die in bekannter Art beispielsweise durch ein Sonderzeichen eingeleitet werden. Eines dieser Kommandos sollte von der der Komponente inhaltlich ignoriert werden, aber an entsprechender Stelle wieder im Ausgabedatenstrom auftauchen. Diese zukünftig als Index bezeichneten Kommandos dienen der Steuerung dazu, festzustellen, welcher Teil des über die Eingabeschnittstelle 12 eingegebenen Textes nunmehr wieweit bearbeitet ist. In der bevorzugten Ausführungsform können Indexangaben entweder in den über die Eingabeschnittstelle 12 eingegebenen Texten enthalten sein oder synchron dazu über die Steuerschnittstelle 11 eingesteut werden. Der Präprozessor seinerseits fügt in der bevorzugten Ausführungsform weitere Indices ein, z. B. für Satz- und Halbsatzgrenzen.

In der in Fig. 2 gezeiten Ausführung, bei der der gesamte Datenstrom zwischen zwei Komponenten über die Steuerung geführt wird, beschränkt sich diese vorzugsweise darauf, die Indices zu erkennen. Der Rest der Daten wird normalerweise unverändert weitergeleitet.

Im Rahmen der Erfindung ist es von Bedeutung, daß die an dem Steuereingang eintreffenden Befehle sich auf einen Index beziehen können, welcher Index auch die aktuelle Position sein kann.

Beispielsweise enthalte der über die Textschnittstelle 12 eingegebene Text ein Wort, welches aus Gründen der akustischen Markierung in weiblicher statt männlicher Stimmfärbung gesprochen werden soll. Herkömmliche Systeme müssen zunächst abwarten, bis die Stimmerzeugung bis zu diesem Wort abgeschlossen ist, sodann den Synthesizer auf weibliche Stimmlage umstellen, das auszugebende Wort einspeisen, wieder das Ende der Ausgabe abwarten und den Synthesizer auf männliche Stimmlage zurückstellen. Selbst bei schnellen Systemen entsteht durch das Anhalten und anschließende erneute Starten der Komponenten eine deutlich und als störend empfundene Pause. Diese entsteht dardurch, zunächst die Phoneme in einer Datei aufgesucht werden müssen und der Synthesizer auch eine gewisse Zeit braucht, bis er Daten an seinem Ausgang bereitstellen kann. Währnd der laufenden Ausgabe arbeiten die Komponenten kontinuierlich weiter, bis (nicht dargestellte) Puffer zwischen den Komponenten gefüllt sind und so eine kontinuierliche Ausgabe gesichert ist. Gleichfalls störend ist es zudem, daß die Ausgabe unbefriedigend wird, da das modifziert auszuprechende Wort aus dem Zusammenhang gerissen ist. Denn der Präprozessor und die Phonem-Synthese funktionieren nur dann optimal, wenn sie den Kontext eines Wortes bestimmen können. Dazu ist es insbesondere notwendig, die nachfolgenden Wörter und Satzzeichen zu kennnen.

Durch die Einfügung von Indices kann die Steuerung nunmehr den Text, wie er über die Textschnittstelle 12 eintrifft, kontinuierlich in den Präprozessor einspeisen, ohne Rücksicht darauf, daß möglicherweise über die Steuerschnittstelle eintreffende asynchrone Befehle die Ausgabe modifizieren. Dabei ist die Steuerung 10 logisch in den Komponenten zugeordnete Teilsteuerungen 10a, 10b, 10c, 10d aufgeteilt, die vozugsweise Instanziierungen derselben Klasse von Objekten sind und als Prozesse im Speicherraum der Steuerung ('threads') ablaufen. Zwischen den Teilsteuerungen sind (nicht gezeigt) Wartschlangen-Puffer für die Indizies eingefügt, die in der jeweiligen Komponente in Bearbeitung sind.

Wird beispielsweise eine Beschleunigung der Ausgabe gewünscht, dann kann bei einer bisherigen Architektur diese erst dann wirksam werden, wenn die bereits in Arbeit und den Puffern befindlichen Daten auch ausgegeben sind.

Die Erfindung erlaubt es, die Ausgabe nahezu sofort und an definierter Stelle, beispielsweise am Wortende, zu beschleunigen. Die Geschwindigkeit der Ausgabe wird zwar primär von dem Codierer 50 bewirkt, muß aber bei der Phonemsynthese berücksichtigt werden. Daher wird der Befehl für die neue Geschwindigkeit sofort an die dem Phonemgenerator zugeordnete Teilsteuerung 10c weitergeleitet. Diese synchronisiert mit dem nächsten Wortindex, setzt die Geschwindigkeit höher und vermerkt bei dem Wortindex an die Teilsteuerung 10d für den Codierer 50 die neue Geschwindigkeit, wenn dieses nicht bereits synchron über die Schnitstelle zwischen Synthesizer und Codierer 50 vorgesehen ist.

Die in Fig. 2 gezeigte Umleitung der Daten durch die Steuerung ist bei Verwendung von Kanälen ('pipes') zur Interprozesskommunikation eine einfache Möglichkeit. Alternativ kann auch, wie in Fig. 3 angedeutet, ein einfacher Kanal zwischen den Komponenten verwendet werden. Dann müssen die Komponenten dahingehend verändert werden, daß sie die eintreffenden Indizes, die sie ohnehin abtrennen müssen, über einen weiteren Kanal 32a an die Steuerung leiten und über den Kanal 32b gegebenenfalls Kommandos erhalten. Alternativ kann auch die absendende Komponente die Indizes abtrennen und über einen eigenen Kanal 32a' an die Steuerung senden.

Optimal werden als als Kommunikationsmittel gemeinsame Speicherbereiche ('shared memory') eingesetzt. Diese erlauben, wenn auch etwas komplizierter zu synchronisieren, eine Datenübertragung mit hoher Bandbreite und geringer Latenz; zudem ist es einfach, eine Anzahl davon schnell daraufhin zu untersuchen, ob Daten vorliegen.

In der Erfindung verwenden die Komponenten in bekannte Art gemeinsame Speicherbereiche, in die die zu übergebenden Daten eingeschriebe werden. Ein vom Sender gesetzter Merker zeigt dem Empfänger an, daß Daten vorliegen. Er wird vom Empfänger zurückgesezt, wenn die Daten abgeholt sind. Da der Codierer 50 die Ausgabegeschwindigkeit bestimmt, sollten nach kurzer Einschwingzeit in allen Übergabebereiche sind Daten anfinden und die Komponenten ggf. darauf warten, daß diese abgeholt sind, um die bereits neu vorbereiteten abliefern zu können. Daher wird in der Regel das System so gestaltet sein, daß die Komponenten vor der letzten mit etwa halber Maximalgeschwindigkeit arbeiten, damit genügend Pufferzeit zur Verfügung steht und eine kontinuierliche Ausgabe gesichert ist. Eine Komponente hat also eine Teilaufgabe aufbereitet, wartet darauf, daß der Inhalt im gemeinsamen Speicherbereich abgeholt wird, gibt dann dorthin seine Daten aus, bereitet die nächsten auf und wartet wieder, weil die vorhigen noch nicht abgeholt sind. Das bedeutet, daß die gemeinsamen Speicherbereiche in der Regel gefüllt sind. Die (Teil-) Steuerung braucht also nur kontinuierlich die gemeinsamen Speicherbereiche zu überwachen, ob dort neue Indizes vorhanden sind. Sollte sie einen verfehlen, so kann sie einfach in der Warteschlage nach dem aktuellen Index suchen und, wenn gefunden, die anderen als bereits durchgelaufen ansehen. Auch wenn hierdurch störende Pausen in der Ausgabe auftreten, kann jedoch auch die Abfrage mit beiden Empfängern sychronisiert werden. Hierzu muß dann der Absender für jeden Empfänger einen Semaphor verwenden und den Puffer nur dann überschreiben, wenn beide zurückgesetzt sind.

Obwohl die Erfindung an Hand von vier Komponenente beschrieben ist, kann selbstverständlich eine geringere oder größere Anzahl von Komponenten verwendet werden, wenn die gewählte Methode der Sprachausgabe oder andere Gesichtspunkte dies fordern, nahelegen oder ermöglichen.


Anspruch[de]
  1. 1. Einrichtung zur Sprachausgabe einer codierten Textfolge, wobei eine Kette von Umsetzern verwendet wird, die an ihrem Anfang die auszugebenden Texte und an ihrem Ausgang Sprachausgabe erzeugt, gekennzeichnet dadurch, daß zusätzlich zu den Umsetzern eine Steuerung vorhanden ist, die die innerhalb der Kette übertragenen Daten überwacht und zu jedem Umsetzer eine jeweilige Kommandoschnittstelle hat und, wenn an einem Kontrolleingang der Steuerung ein Kommando zur Modifikation der laufenden Ausgabe aufscheint, ein Kommando über die jeweilige Kommandoschnittstelle an den betroffenen Umsetzer sendet.
  2. 2. Einrichtung nach Anspruch 1, wobei zusätzlich zu den Daten Indizes erzeugt und zwischen den Komponenten übertragen werden und die innerhalb der Kette übertragenen Daten auf das Auftauchen der Indizes überwacht werden.






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

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

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