-
Die
vorliegende Erfindung betrifft ein automatisches Sprachantwortsystem
und insbesondere ein System, das eine Antwort durch automatisch
synthetisierte Sprache unter Verwendung einer Spracherkennung erzeugt.
-
Wenn
eine Sprachanwendung automatisch eine Systemnachricht ausgibt, verwendet
sie eine im Voraus aufgezeichnete Sprachdatei. Im Falle von VoiceXML,
bei dem eine Standardsprachschnittstelle definiert wird, wird die
Ausgabe einer solchen Nachricht beispielsweise durch Kennzeichnen
eines Sprachdateinamens mittels einer Kennzeichnung <audio> (<audio> tag)
ausgeführt.
Ein auf VoIP beruhendes Sprachsystem unter Verwendung von VoiceXML
wird beispielsweise im folgenden Patentdokument 1 beschrieben.
Patentdokument
1: Veröffentlichung
der
japanischen Patentanmeldung
Nr. 2002-57724 .
-
Es
besteht jedoch das Problem, dass im Falle einer in der Nachricht
enthaltenen Variablen die Belastung auf der Anwendung erheblich
ist. Genauer gesagt bedeutet dies, dass im Falle der Einfügung einer
Variablen in eine Sprachdatei durch eine VoiceXML-Anwendung in einem
herkömmlichen
Sprachserver der Vorgang und die Ausführung der Anwendung beispielsweise
so erfolgen, dass ein Servlet entwickelt wird, das die Funktionen zur
Vorbereitung einer Sprachdatei aufweist, in der ein Satz an der
Position der Variablen geteilt wird, und zur Festlegung eines Namens
für die
Sprachdatei aus der Variablen, um dynamisch ein VXML-Dokument zur
Wiedergabe der Sprachdatei zu erzeugen. Sprachdateien vor und nach
einer variablen werden in einem VXML-Dokument durch zwei Kennzeichnungen <audio> gekennzeichnet, und
das Servlet wird durch eine geeignete Zeitsteuerung als Teilsprachdaten
aufgerufen.
-
Im
Falle der Wiedergabe einer Nachricht durch eine Sprachdatei auf
diese Weise besteht das Problem, dass die Belastung auf der Anwendung
bezüglich
der folgenden Punkte erheblich ist. Als Erstes besteht ein Problem
bei der Ausführung
der Anwendung. Das heißt,
es ist notwendig, dass die Anwendung zuerst eine Logik zum Kennzeichnen
und Wiedergeben einer Sprachdatei für ein Variablensegment zum
Zeitpunkt der Ausführung
entwickelt. Mit anderen Worten, es besteht das Problem, dass eine
Notwendigkeit zur Entwicklung einer großen Menge von komplizierten
Anwendungen besteht. Außerdem
besteht das Problem, dass eine Änderung
der Anwendung entsprechend der Änderung
von Sätzen
notwendig ist.
-
Außerdem gibt
es Probleme hinsichtlich der für
einen Vorgang zum Vorbereiten einer Aufzeichnungsdatei benötigten Zeit
sowie der Qualität
und Verwaltung der Aufzeichnungsdatei. Gemäß dem herkömmlichen Verfahren ist es notwendig,
dass eine Sprachdatei aufgezeichnet wird, indem sie in ein Segment
vor einer Variablen, ein Variablensegment und ein Segment nach der
Variablen geteilt wird. Im Falle eines Satzes "Bei Ihrer Bestellung handelt es sich
um Reis, nicht wahr",
der einen Artikelnamen als Variablensegment enthält, müssen beispielsweise Sprachdateien "bei Ihrer Bestellung
handelt es sich um", "Reis" und "nicht wahr" vorbereitet werden.
In einem solchen Fall ist es notwendig, dass eine aufzeichnende
Person unnatürlich
geteilte Satzteile ausspricht, wobei die Aussprache in Bezug auf
Natürlichkeit
und Redefluss wahrscheinlich mangelhaft ist.
-
Außerdem gibt
es ein Verfahren der fortlaufenden Aufzeichnung des ganzen Satzes
und der Teilung durch einen Sprachdateieditor. In diesem Fall ist
es jedoch notwendig, dass eine die Sprachdatei bearbeitende Person
die Beschaffenheit einer Anwendung genau versteht. Außerdem ist
die Wahrscheinlichkeit eines Fehlers bei der Bearbeitung hoch, da
komplizierte Vorgänge,
unter anderem die Teilung einer Sprachdatei, erforderlich sind.
Außerdem
besteht das Problem einer erhöhten
Arbeitsbelastung aufgrund der Notwendigkeit vieler Vorgänge, unter
anderem Sprachdateibearbeitungsvorgänge. Außerdem nimmt die Anzahl von
Sprachdateien zu, da Sprachdateien, die durch Teilen eines Satzes
an der Position einer Variablen erzeugt werden, im Voraus vorbereitet
werden. Außerdem
ist es notwendig, geräuschlose
Teile an Anfang und Ende von jeder der Sprachdateien unter Verwendung
des Sprachdateieditors auszuschneiden und zu bearbeiten, um die
Sprachdateien flüssig
miteinander zu verketten. Solche Bearbeitungsvorgänge nehmen
proportional zur Anzahl von Sprachdateien zu. Wenn die Anzahl von
Sprachdateien zunimmt, wird die Arbeitsbelastung enorm hoch, und komplizierte
Vorgänge
nehmen zu. Außerdem
besteht die Möglichkeit,
dass die Dateibenennung und die Dateiverwaltung durch eine erhöhte Anzahl
von Sprachdateien kompliziert werden.
-
Das
Dokument
US 6 334 103 beschreibt
eine Sprachbenutzerschnittstelle, wobei die ausgewählte Eingabeaufforderung
vorhergehende Spracherkennungsergebnisse enthalten kann, die tatsächliche
Parameter in einem Sprachsyntheseskript ersetzen würden. Die
Eingabeaufforderungen würden
als Verkettung von aufgezeichneten Eingabeaufforderungen und synthetischen Äußerungen
erzeugt.
-
Zur
Lösung
der oben beschriebenen Probleme werden ein Sprachantwortsystem,
ein Sprachantwortverfahren, ein Sprachserver, ein Sprachdateiverarbeitungsverfahren
und Programme gemäß der Definition
in den angehängten
Ansprüchen
bereitgestellt.
-
Nun
werden bevorzugte Ausführungsformen
der vorliegenden Erfindung lediglich beispielhaft mit Bezugnahme
auf die begleitenden Zeichnungen beschrieben, in denen:
-
1 ein
Blockschaltbild ist, das eine Hardwarekonfiguration eines als Ausführungsform
der vorliegenden Erfindung entsprechend realisierten Computers schematisch
zeigt.
-
2 ein
Blockschaubild ist, das die vorliegende Erfindung unter Verwendung
funktioneller Blöcke zeigt.
-
3 eine
Darstellung ist, die die Logik der Erzeugung einer Grammatik im
Sprachdateiverarbeitungsabschnitt 231 zeigt.
-
4 eine
Darstellung ist, die Einzelheiten der Grammatikerzeugungslogik zeigt.
-
5 eine
Darstellung ist, die die Logik der Teilung einer Sprachdatei durch
Spracherkennung in der Spracherkennungsmaschine 232 zeigt.
-
6 eine
Darstellung ist, die das Ergebnis der Teilung der Sprachdatei durch
Spracherkennung in der Spracherkennungsmaschine 232 zeigt.
-
7 ein
Flussdiagramm ist, das ein Beispiel des Verarbeitungsflusses im
Sprachserver 230 der vorliegenden Erfindung zeigt.
-
1 ist
ein Blockschaltbild, das eine Hardwarekonfiguration eines zum Ausführen der
vorliegenden Erfindung geeigneten Computers schematisch zeigt.
-
1 zeigt
eine Hardwarekonfiguration eines als Ausführungsform realisierten Computers.
Der Computer weist Folgendes auf: eine CPU (Zentraleinheit) 101,
die ein Datenverarbeitungsmittel ist, einen Hauptspeicher 103,
der über
den Chipsatz 102 einer Hauptplatine (mother board – M/B) und
einen CPU-Bus mit der CPU 101 verbunden ist, eine Videokarte 104,
die ebenfalls durch den Hauptplatinen-Chipsatz 102 und
einen AGP (Accelerated Graphics Port) mit der CPU 101 verbunden
ist, eine Festplatte 105, die durch einen PCI-Bus (Peripheral
Component Interconnect bus) mit dem Hauptplatinen-Chipsatz 102 verbunden
ist, eine Netzschnittstelle 106, die ebenfalls durch den
PCI-Bus mit dem Hauptplatinen-Chipsatz verbunden ist, einen USB-Anschluss 107,
der ebenfalls durch den PCI-Bus mit dem Hauptplatinen-Chipsatz verbunden
ist, ein Diskettenlaufwerk 109, das vom PCI-Bus durch eine
Brückenschaltung 108 und
einen Bus mit niedriger Übertragungsgeschwindigkeit
(low-speed bus), beispielsweise einen ISA-Bus (Industry Standard
Architecture bus) mit dem Hauptplatinen-Chipsatz 102 verbunden
ist, und eine Tastatur/eine Maus 110, die ebenfalls durch
die Brückenschaltung 108 und
den Bus mit niedriger Übertragungsgeschwindigkeit
mit dem Hauptplatinen-Chipsatz 102 verbunden sind.
-
1 zeigt
nur ein Beispiel einer Hardwarekonfiguration eines typischen als
Ausführungsform
realisierten Computers, und eine beliebige andere Konfiguration
kann übernommen
werden, falls diese Ausführungsform
angewandt werden kann. Beispielsweise kann eine Konfiguration übernommen
werden, so dass nur ein Videospeicher anstelle der Videokarte 104 aufgenommen
wird und Bilddaten von der CPU 101 verarbeitet werden.
Ein durch eine Schnittstelle wie ATA (AT Attachment) verbundenes
CD-ROM-(Compact Disc Read Only Memory) oder DVD-ROM-Laufwerk (Digital Versatile Disc
Read Only Memory drive) kann bereitgestellt werden. Außerdem kann
ein Lautsprecher oder dergleichen zur Sprachwiedergabe bereitgestellt
werden.
-
2 ist
ein Blockschaubild, das die vorliegende Erfindung unter Verwendung
funktioneller Blöcke zeigt.
Ein Sprachantwortsystem 210 wird von einem Sprachserver 220 und
einem Anwendungsserver 230 gebildet. Der Sprachserver 220 und
der Anwendungsserver 230 können als ein Computer ausgeführt werden, wie
in 1 gezeigt wird, oder als eine Kombination aus
zwei oder mehr Computern oder eine Kombination aus einem Computer
und einem Speicher.
-
Der
Anwendungsserver 220 enthält eine Sprachdatei 221 mit
Aufzeichnung eines ganzen Satzes (whole sentence recording voice
file), Variablenaufzeichnungsdateien 222, 223 und
Sprachdaten 224. Diese können als ein im Anwendungsserver
ausgeführtes
Anwendungsprogramm oder als Teile des Anwendungsprogramms verstanden
werden. Die Sprachdatei 221 mit Aufzeichnung eines ganzen
Satzes ist ein ganzer Satz, der ein Variablensegment enthält, d. h.
ein Segment, das einen Eintrag einer Variablen zeigt und als eine Datei
aufgezeichnet wird. In der aufzuzeichnenden Sprachdatei 221 mit
Aufzeichnung eines ganzen Satzes wird ein bestimmtes Wort durch
das Variablensegment ersetzt. Als dieses Wort wird ein im Sprachserver
im Voraus gekennzeichnetes Wort verwendet. Beispielsweise wird ein
Wort "Artikelname" für das Variablensegment
verwendet, und ein Satz "Bei
Ihrer Bestellung handelt es sich um Artikelname, nicht wahr?" wird in Sprachform
vorbereitet und als eine Sprachdatei mit Aufzeichnung eines ganzen
Satzes gespeichert.
-
Außerdem wird
in das Variablensegment einzugebende Sprache als Variablenaufzeichnungsdateien 1,
2, ... (222, 223) im Anwendungsserver 220 gespeichert.
Beispielsweise werden in Sprachform vorbereitete Dateien von "Reis" und "Miso" gespeichert. Es
kann eine Vielzahl von Variablensegmenten verwendet werden. In einem
solchen Fall werden den Variablensegmenten entsprechende Variablenaufzeichnungsdateien
gespeichert. Beispielsweise werden die Variablensegmente 1 und 2
als "Artikelname" und "Anzahl von Artikeln" und ein in Sprachform
vorbereiteter Satz "Bei
Ihrer Bestellung handelt es sich um Artikelname und die Menge ist
eine Anzahl von Artikeln, nicht wahr" als eine Sprachdatei mit Aufzeichnung eines
ganzen Satzes gespeichert. Außerdem
werden Variablenaufzeichnungs-Sprachdateien gespeichert, die "Artikelname" und "Anzahl von Artikeln" entsprechen (beispielsweise "Reis" und "Miso" für die ersteren
sowie "eins" und "zwei" für die letzteren).
-
Des
Weiteren werden Sprachdaten 224 im Anwendungsserver 220 gespeichert.
Die Sprachdaten 224 enthalten einen Dateinamen für die Sprachdatei
mit Aufzeichnung eines ganzen Satzes, Variablendaten und einen alternativen
Text. Die Variablendaten enthalten zumindest Daten, die das Vorhandensein/Nichtvorhandensein
eines Variablensegments anzeigen, d. h. Daten, die die Notwendigkeit/keine
Notwendigkeit zur Verarbeitung einer Variablen anzeigen. Der alternative
Text ist die Gesamtheit einer Textfolge, die das Variablensegment
beinhaltet. Im Falle des oben beschriebenen Beispiels lautet der
alternative Text "Bei
Ihrer Bestellung handelt es sich um <Variablensegment>, nicht wahr". Falls eine Vielzahl von Sprachdateien
mit Aufzeichnung eines ganzen Satzes vorliegt, können Sprachdaten für jede dieser
Sprachdateien vorbereitet werden.
-
Der
Sprachserver 230 weist einen Sprachdateiverarbeitungsabschnitt 231,
eine Spracherkennungsmaschine 232 und einen Sprachverarbeitungsabschnitt
(voicing processing section) 233 auf. Der Sprachdateiverarbeitungsabschnitt 231 entnimmt
die Sprachdaten 224 und die von den Sprachdaten gekennzeichnete Sprachdatei 221 mit
Aufzeichnung eines ganzen Satzes aus dem Anwendungsserver 220,
stellt aus den in den Sprachdaten enthaltenen Variablendaten fest,
ob eine Notwendigkeit zur Verarbeitung einer Variablen besteht und
erzeugt dynamisch eine Grammatik aus dem alternativen Text, falls
eine Variable verarbeitet werden muss.
-
Die
Spracherkennungsmaschine 232 empfängt die Sprachdatei mit Aufzeichnung
eines ganzen Satzes und die dynamisch erzeugte Grammatik aus dem
Sprachdateiverarbeitungsabschnitt 234. Die Spracherkennungsmaschine 232 teilt
die auf dieser Grundlage erkannte Sprachdatei mit Aufzeichnung eines
ganzen Satzes in eine dem Variablensegment entsprechende Variablensprachdatei
und eine Teilsprachdatei, die ein von der Variable verschiedenes
Segment darstellt. Es werden nicht unbedingt nur eine Variablensprachdatei und
nur eine Teilsprachdatei erhalten. Es können eine Vielzahl von Variablensprachdateien
und eine Vielzahl von Teilsprachdateien vorhanden sein.
-
Der
Sprachverarbeitungsabschnitt 233 empfängt die Teilsprachdatei und
die Variablensprachdatei von der Spracherkennungsmaschine 232.
Der Sprachverarbeitungsabschnitt 233 erhält die Variablenaufzeichnungs-Sprachdatei,
die als die der Variablensprachdatei entsprechende Ersatzdatei gekennzeichnet
ist, vom Anwendungsserver 220. Dieser Vorgang kann im Sprachdateiverarbeitungsabschnitt
ausgeführt
und an den Sprachverarbeitungsabschnitt übergeben werden. Die Teilsprachdatei
und die Variablenaufzeichnungs-Sprachdatei werden verkettet und
entsprechend dem wiederzugebenden alternativen Text in Sprache umgesetzt.
-
Eine
Sprachausgabeeinheit 240 ist mit dem Sprachantwortsystem 210 verbunden,
um Sprache auf der Grundlage der wiedergegebenen Sprachdatei wiederzugeben
und auszugeben.
-
Diese
Sprachausgabeeinheit kann beispielsweise eine Lautsprechereinheit
für einen
Computer sein, wie in 1 gezeigt wird, d. h. das gleiche
System wie das Sprachantwortsystem, oder ein durch eine öffentliche
Telefonschaltung oder dergleichen verbundener Telefonanschluss oder Ähnliches.
-
3 zeigt
die Logik der Erzeugung einer Grammatik im Sprachdateiverarbeitungsabschnitt 231.
Als Erstes wird der gesamte Satz des alternativen Textes in das
Variablensegment und das(die) vom Variablensegment verschiedene(n)
Segment(e) geteilt (310). Als Nächstes wird ein festgelegtes
Wort durch das Variablensegment ersetzt (320). Dieses Wort
wird vom Sprachserver im Voraus festgelegt. In der Sprachdatei mit Aufzeichnung
eines ganzen Satzes wird dieses in Sprachform vorbereitete Wort
unter Verwendung eines festgelegten Wortes als Variablensegment
aufgezeichnet. Eine Grammatik wird auf der Grundlage des Textes
mit dem ersetzten Wort dynamisch erzeugt (330).
-
Ein
Beispiel der Erzeugung einer Grammatik wird mit Bezugnahme auf 4 ausführlicher
beschrieben. Ein festgelegtes Wort wird zunächst durch das Variablensegment
des alternativen Textes ersetzt (410). Auf der Grundlage
des alternativen Textes wird eine Textdatei erzeugt. Zu diesem Zeitpunkt
besteht die Notwendigkeit zum Ausführen einer Wortteilung, so
dass die Spracherkennungsmaschine die Textdatei erkennen kann (420).
Bei dieser Wortteilung beinhaltet die Verarbeitung beispielsweise
die Interpunktion und die Teilung in Wörter durch ein Verfahren mit Übereinstimmung
der maximalen Länge
(maximum length matching method) mit Bezugnahme auf Wörter, die
in einem Wörterbuch
für die
Spracherkennungseinheit aufgezeichnet sind. Um der Spracherkennungsmaschine
das Teilungsergebnis bereitzustellen, wird dieses in eine Form umgesetzt,
die von der Spracherkennungseinrichtung (430) erkannt werden
kann. Die auf diese Weise erzeugte Grammatik wird der Spracherkennungsmaschine
zur Registrierung bereitgestellt.
-
5 zeigt
die Logik der Teilung einer Sprachdatei durch Spracherkennung in
der Spracherkennungsmaschine 232. Die Spracherkennungsmaschine
wird zuerst in einen Modus versetzt, um eine Datei aus einer erkannten
Sprache zu bilden (510). Als Nächstes werden eine Sprachdatei
mit Aufzeichnung eines ganzen Satzes, die eine Variable enthält, und
eine erzeugte Grammatik in die Spracherkennungsmaschine 232 eingegeben
(520). Die Spracherkennungsmaschine 232 erkennt
die Sprachdatei mit Aufzeichnung eines ganzen Satzes auf der Grundlage
der Grammatik (530). Die Spracherkennungsmaschine 232 teilt
die erkannte Sprachdatei mit Aufzeichnung eines ganzen Satzes in
eine dem Variablensegment entsprechende Variablensprachdatei und
eine oder mehrere vom Variablensegment verschiedene Teilsprachdatei(en),
wobei folglich Sprachdateien erzeugt werden (540).
-
6 zeigt
das Ergebnis der Teilung einer Sprachdatei auf der Grundlage von
Spracherkennung in der Spracherkennungsmaschine 232. In
diesem Beispiel wird vorausgesetzt, dass ein Variablensegment "Artikelname" lautet. Als Ergebnis
(620) von Spracherkennung und Teilung wird eine Sprachdatei 610 mit
Aufzeichnung eines ganzen Satzes in eine einem Variablensegment
entsprechende Variablensprachdatei 622 und die vom Variablensegment
verschiedenen Teilsprachdateien 621 und 623 unterteilt.
-
7 ist
ein Flussdiagramm, in dem ein Beispiel des Verarbeitungsflusses
im Sprachserver 230 der vorliegenden Erfindung beschrieben
wird. Als Erstes wird festgestellt, ob eine Notwendigkeit zur Verarbeitung einer
Variablen entsprechend dem Vorhandensein/Nichtvorhandensein von
Daten besteht, die eine Kennzeichnung der Variablen zeigen, die
in den Variablendaten in den vom Anwendungsserver 220 erhaltenen Sprachdaten 224 enthalten
ist (701). Wenn festgestellt wird, dass keine Notwendigkeit
zur Verarbeitung einer Variablen besteht, wird die übliche Audioverarbeitung
ausgeführt
(720). Die übliche
Audioverarbeitung erfolgt beispielsweise folgendermaßen: wenn
eine wiederzugebende Sprachdatei, die mit einem Dateinamen in den Sprachdaten übereinstimmt,
im Anwendungsserver vorhanden ist, wird diese wiedergegeben. Wenn
im Falle des Nichtvorhandenseins einer wiederzugebenden Sprachdatei
ein alternativer Text in den Sprachdaten vorhanden ist, wird der
alternative Text wiedergegeben. Wenn kein alternativer Text vorliegt,
wird eine Fehlerverarbeitung ausgeführt, oder bei Nichtvorhandensein
einer Fehlerverarbeitung endet die Verarbeitung in einem Fehler.
-
Falls
im Schritt 701 festgestellt wird, dass eine Notwendigkeit
zur Verarbeitung einer Variablen besteht, werden eine Sprachdatei
mit Aufzeichnung eines ganzen Satzes und ein entsprechender alternativer
Text aus den Sprachdaten 224 entnommen (702).
Anschließend
wird geprüft,
ob irgendeine Sprachdatei mit Aufzeichnung eines ganzen Satzes im
Anwendungsserver 220 vorliegt (703). Falls keine
Sprachdatei mit Aufzeichnung eines ganzen Satzes im Anwendungsserver 220 vorhanden
ist, werden die die Kennzeichnung der Variablen zeigenden Daten
gelöscht,
und anschließend
wird die übliche
Audioverarbeitung wie oben beschrieben ausgeführt (730).
-
Falls
eine Sprachdatei mit Aufzeichnung eines ganzen Satzes im Anwendungsserver 220 vorhanden ist,
wird außerdem
geprüft,
ob ein alternativer Text vorhanden ist (704). Wenn kein
alternativer Text vorhanden ist, führt dies zu einem Fehler, und
der Prozess endet (740, 741). Wenn ein alternativer
Text vorhanden ist, wird festgestellt, ob die Sprachdatei mit Aufzeichnung
eines ganzen Satzes bereits in einem Cachespeicher (nicht gezeigt)
im Sprachserver 230 vorhanden war (705). Falls
die Sprachdatei mit Aufzeichnung eines ganzen Satzes bereits im
Cachespeicher vorhanden war, geht der Prozess weiter zum Schritt 709.
Im Falle des Nichtvorhandenseins im Cachespeicher wird die Sprachdatei
mit Aufzeichnung eines ganzen Satzes aus dem Anwendungsserver 220 erhalten
(706). Unter Verwendung des alternativen Textes und der
Sprachdatei mit Aufzeichnung eines ganzen Satzes wird eine Grammatik
dynamisch erzeugt (707). Anschließend wird eine Spracherkennung
ausgeführt,
um die Sprachdatei mit Aufzeichnung eines ganzen Satzes zu teilen
(708).
-
Anschließend wird
geprüft,
ob eine Variablenaufzeichnungs-Sprachdatei
im Anwendungsserver 220 vorliegt (709). Wenn eine
Variablenaufzeichnungs-Sprachdatei im Anwendungsserver 220 vorliegt,
wird sie aus diesem erhalten (710). Diese Sprachdateien
werden der Reihe nach verkettet, um in Sprachform wiedergegeben
zu werden (711). Die erzeugte Sprachdatei wird für eine notwendige
Zeitspanne im Cachespeicher zwischengespeichert (712),
so dass sie bei Bedarf sofort verwendet werden kann. Wenn im Schritt 709 keine Variablenaufzeichnungs-Sprachdatei
vorhanden ist, wird unter Verwendung des der Variablen entsprechenden alternativen
Textes eine Sprachdatei durch Sprachsynthese erzeugt (750).
-
Diese
Folge von Prozessschritten wird als Computerprogramm realisiert.
Dieses Computerprogramm kann bereitgestellt werden, indem es auf
einem computerlesbaren Speichermedium, beispielsweise einer CD-ROM
oder einer Diskette, gespeichert wird.
-
Ein
in 7 gezeigtes Beispiel einer VXML-Browserausführung der
Verarbeitung der vorliegenden Erfindung wird beschrieben. Die Abschnitte
(1) bis (9) entsprechen dem Inhalt von 7. Ein "VMXL-Browser" ist ein Mittel zur
Bereitstellung der dem Sprachdateiverarbeitungsabschnitt 231 und
dem Sprachverarbeitungsabschnitt 233 der vorliegenden Erfindung
entsprechenden Funktionen zur Verarbeitung in VXML.
- (1) Das Symbol '#' einer Audiokennzeichnung,
auf das als Markierung für
eine Anforderung zur Verarbeitung einer Variablen Bezug genommen
wird, wird überprüft. Wenn
kein entsprechendes Symbol vorhanden ist, wird die übliche Audioverarbeitung
ausgeführt.
- (2) Ein Name einer Sprachdatei mit Aufzeichnung eines ganzen
Satzes und ein der Sprachdatei mit Aufzeichnung eines ganzen Satzes
entsprechender alternativer Text werden der Audiokennzeichnung entnommen.
- (3) Wenn keine Sprachdatei mit Aufzeichnung eines ganzen Satzes
vorhanden ist, wird '#' genommen und die übliche Tonverarbeitung
ausgeführt.
Bei Bedarf wird eine Sprachsynthese ausgeführt.
- (4) Wenn kein alternativer Text vorhanden ist, führt dies
zu einem Fehler, und der Prozess endet.
- (5) Wenn die entsprechende Verarbeitung bereits ausgeführt wurde,
wird eine zwischengespeicherte Sprachdatei verwendet. Falls nur
das Variablensegment geändert
wurde, wird lediglich eine Variablenaufzeichnungsdatei aus dem Anwendungsserver
erhalten.
- (6) Aus dem alternativen Text und der festgelegten Zeichenfolge
für das
Variablensegment wird eine Grammatik gebildet.
- (7) Die Grammatik und die Sprachdatei mit Aufzeichnung eines
ganzen Satzes werden zur Teilung der Sprachdatei mit Aufzeichnung
eines ganzen Satzes von der Spracherkennungsmaschine erkannt.
- (8) Wenn keine Variablenaufzeichnungs-Sprachdatei vorhanden
ist, wird eine Sprachsynthese für
das Variablensegment ausgeführt.
- (9) Die erhaltenen Sprachdateien (und eventuell ein Sprachsyntheseergebnis)
werden zur Wiedergabe verkettet.
-
Die
folgenden Tabellen 1 bis 7 zeigen einen Pseudocodeausdruck der in 7 gezeigten
Verarbeitung der vorliegenden Erfindung. Die Abschnitte (1) bis
(9) entsprechen dem Inhalt von 7. Die folgende
Tabelle 1 zeigt die Folge der Prozessschritte.
-
-
Tabelle
2 betrifft die Verarbeitung zur Teilung des alternativen Textes
in (4) in der in Tabelle 1 gezeigten Verarbeitung.
-
-
Tabelle
3 zeigt weitere Einzelheiten der Verarbeitung (5) in der in Tabelle
1 gezeigten Verarbeitung.
-
-
Tabelle
4 zeigt weitere Einzelheiten eines Teils der Verarbeitung (6) in
der in Tabelle 1 gezeigten Verarbeitung.
-
-
Tabelle
5 zeigt weitere Einzelheiten eines anderen Teils der Verarbeitung
(6) in der in Tabelle 1 gezeigten Verarbeitung.
-
-
Tabelle
6 zeigt weitere Einzelheiten der Verarbeitung (7) in der in Tabelle
1 gezeigten Verarbeitung.
-
-
Tabelle
7 zeigt weitere Einzelheiten der Verarbeitung (8) der in Tabelle
1 gezeigten Verarbeitung.
-
-
Nun
wird ein konkretes Beispiel für
die Ausführung
der vorliegenden Erfindung im Falle von VoiceXML beschrieben.
-
Diese
Erweiterung kann realisiert werden, ohne die vorhandenen Funktionen
zu beeinflussen und ohne die VoiceXML-Spezifikation zu verletzen.
-
Im Anwendungsserver vorbereitete
Sprachdateien
-
Eine
Sprachdatei mit Aufzeichnung eines ganzen Satzes wird aufgezeichnet,
indem der ganze eine Variable enthaltende Satz als eine Datei vorbereitet
wird. Ein bestimmtes Wort wird durch das aufzuzeichnende Variablensegment
ersetzt. Dieses bestimmte Wort wird mit dem Sprachserver vereinbart.
Ein solches Wort ist beispielsweise "Variable". Ein Name einer Variablenaufzeichnungs-Sprachdatei
ist "(Inhalt der
Variablen).wav".
Falls Variablenzeichenfolgen Zeichen enthalten, die in einer Sprachdateispeicherumgebung
als Dateiname nicht zulässig
sind, wird eine Abbildungslistendatei (mapping list file) vorbereitet,
in der Variablen gegenüber
Sprachdateinamen in CSV-Form abgebildet werden. Ein Name einer Abbildungslistendatei
ist ein feststehender Name gemäß einer
Vereinbarung mit dem Sprachserver. Ein solcher Name einer Abbildungslistendateiname
ist beispielsweise "value-wav.map".
-
Eine
Variablenaufzeichnungs-Sprachdatei und in einigen Fällen eine
Abbildungslistendatei werden in einem aktuellen Pfad platziert.
Eine oder eine Vielzahl von Variablenaufzeichnungs-Sprachdateien können in Kategorien
unterteilt werden. Eine Kategorie weist einen Ordner auf, der speziell
für die
Kategorie unter einem aktuellen Pfad mit demselben Namen wie der
Kategoriename bereitgestellt wird. Eine zur Kategorie gehörende Variablenaufzeichnungs-Sprachdatei
und in einigen Fallen eine die Beschreibung der Datei enthaltende
Abbildungslistendatei werden in den speziell für die Kategorie bereitgestellten
Ordner gestellt.
-
Beschreibung von Sprachdaten im Anwendungsserver
-
In Übereinstimmung
mit einer Sprachdatei mit Aufzeichnung eines ganzen Satzes wird
Sprachdaten eine Markierung zugeordnet, die anzeigt, ob die Sprachdatei
mit Aufzeichnung eines ganzen Satzes eine Variable aufweist. Außerdem werden
in Übereinstimmung
mit einer Sprachdatei mit Aufzeichnung eines ganzen Satzes, die
mindestens eine Variable aufweist, Daten zu einem aus einem ganzen
Satz bestehenden Text (alternativer Text), der mindestens ein Variablensegment
und einen Namen für
die einzufügende
Variable aufweist, in Sprachdaten gespeichert. Bei Bedarf wird außerdem ein
Name für
eine Kategorie gespeichert, zu der eine Sprachdatei für eine Variable
gehört.
In manchen Fällen
wird eine Abbildungslistendatei in einem aktuellen Pfad oder einem
speziell für
eine Kategorie bereitgestellten Ordner platziert.
-
Ein
konkretes Beispiel der Einrichtung der oben beschriebenen, auf VoiceXML
angewandten Regeln wird beschrieben. Im Folgenden wird eine Anwendung
der vorliegenden Erfindung auf die Kennzeichnung <audio> von VoiceXML beschrieben.
-
Üblicherweise
wird eine Sprachanwendung unter Verwendung einer Sprachdatei ausgeführt, in
der eine menschliche Stimme gespeichert ist. Da die Anwendung ohne
die Sprachdatei entwickelt werden muss, ist während der Entwicklung der Anwendung
jedoch Sprachsynthese verwendet. Zur Anpassung an eine solche Umgebung
wird die in VoiceXML definierte Kennzeichnung <audio> zur
Wiedergabe einer Sprachdatei so angegeben, dass ein Sprachdateiname
und eine Zeichenfolge beschrieben werden; bei Vorhandensein wird eine
Sprachdatei wiedergegeben; und eine Zeichenfolge wird durch Sprachsynthese erzeugt,
falls die Sprachdatei sich in einem nicht wiedergebbaren Zustand
befindet.
-
Beispiel einer Beschreibung: "<audio src="wav/sample.wav"> bestellter
Artikel</audio>"
-
Die
vorliegende Erfindung wird gemäß den wesentlichen
Angaben der Kennzeichnung <audio> hinsichtlich Funktion
und Format angewandt.
-
Das
Feld "src"-Attribut" (src attribute field)
der Kennzeichnung <audio> wird verwendet, um
anzuzeigen, ob die Sprachdatei mit Aufzeichnung eines ganzen Satzes
ein Variablensegment aufweist. "#" wird an den Anfang
des Namens der Sprachdatei mit Aufzeichnung eines ganzen Satzes
gestellt, um die Notwendigkeit zur Verarbeitung einer Variablen
anzuzeigen. Der Teil des alternativen Textes der Kennzeichnung <audio> wird verwendet, um
Daten zu einer Sprachdatei mit Aufzeichnung eines ganzen Satzes
mit einem Variablensegment hinzuzufügen. Der Text des die Variable
enthaltenden ganzen Satzes wird im Teil des alternativen Textes beschrieben.
Die einzufügende
Variable wird durch eine Kennzeichnung <value> gekennzeichnet,
und die Kennzeichnung <value> wird an der Einfügungsposition
eingefügt.
Im Falle der Zugehörigkeit
zu einer Kategorie wird die Kennzeichnung <value> von
einer Kennzeichnung <sayas> umgeben, die den Kategorienamen durch
ein Kategorieattribut kennzeichnet. Eine Abbildungslistendatei wird
in einem speziell für
die Kategorie bereitgestellten oder einem aktuellen Pfad platziert.
-
Beispiel:
Sprachdateien, die im Falle der Wiedergabe einer Nachricht "bestellter Artikel
ist (?)" durch eine
Sprachdatei vorbereitet werden
"wav\sample.wav" Sprachdatei mit "bestellter Artikel ist eine Variable" wird als Sprachdatei
mit Aufzeichnung eines ganzen Satzes aufgezeichnet
"aktueller Pfad\Produkt\Reis.wav" Sprachdatei, in
der "Reis"
als eine Variablenaufzeichnungs-Sprachdatei
aufgezeichnet wird Beschreibung des VXML-Dokuments (entsprechend
den Sprachdaten)
<audio
src="#wav/sample.wav">
Bestellter Artikel ist
<sayas class="product">
<value
expr="ProductName"/>
</sayas>
</audio>
wobei # die Notwendigkeit
zur Verarbeitung einer Variablen ausdrückt und "wav/sample.wav" ein Name einer Sprachdatei mit Aufzeichnung
eines ganzen Satzes ist. Außerdem
ist der Teil
"bestellter
Artikel ist
<sayas
class="product">
<value
expr="ProductName"/>
</sayas>" ein alternativer Text.
-
Diese
Beschreibungen werden als Teile eines im Anwendungsserver ausgeführten Anwendungsprogramms
gemacht.
-
Funktionen auf Seiten des
Sprachserver
-
Auf
der Grundlage des Vorhandenseins/Nichtvorhandenseins der für Sprachdateien
angegebenen Markierung wird festgestellt, ob eine Sprachdatei mit
Aufzeichnung eines ganzen Satzes eine Variable aufweist, und eine
Verzweigung zu einer geeigneten einfachen Wiedergabeverarbeitung
oder einer Wiedergabeverarbeitung mit erforderlicher Einfügung der
Variablen wird ausgewählt.
Eine einfache Sprachdateiwiedergabe ist gleich der herkömmlichen
Verarbeitung. Eine Variableneinfügungsverarbeitung,
bei er es sich um eine Laufzeitverarbeitung handelt, wird im Folgenden
beschrieben.
-
Ein
alternativer Text, der einer Sprachdatei mit Aufzeichnung eines
ganzen Satzes entspricht, wird in ein Variablensegment und vom Variablensegment
verschiedene Segmente geteilt und eine Grammatik mit Teilen als
Regeln dynamisch erzeugt. Als ein Wort/ein Satzteil zum Erkennen
des Variablensegments wird eine Regel zum Erkennen eines das Variablensegment
ersetzenden Wortes/eines Satzteils der Grammatik hinzugefügt. Ein
solches Wort ist beispielsweise "variable".
-
Die
Erzeugung einer Grammatik wird im Folgenden ausführlicher beschrieben. Eine
Zielbeschreibung lautet folgendermaßen:
<audio src="#confirm.wav">
Bei
Ihrer Bestellung handelt es sich um <value
expr="Product"/>,
nicht wahr?
</audio>
-
Der
Prozess der Grammatikerzeugung wird im Folgenden beschrieben.
- 1. Ein Text für ein Variablensegment wird
durch das Variablensegment ersetzt.
(Vor der Umformung) Bei
Ihrer Bestellung handelt es sich um
<value expr="Product"/>,
nicht wahr?
(Nach der Umformung) Bei Ihrer Bestellung handelt
es sich um eine Variable, nicht wahr?
- 2. Eine Textdatei (BNF-Datei) wird erzeugt. Zu diesem Zeitpunkt
ist die Ausführung
einer Wortteilung notwendig, um eine Erkennung durch die Spracherkennungsmaschine
zu ermöglichen.
Das Ergebnis in diesem Beispiel lautet folgendermaßen:
<_rule1>=Bei Ihrer Bestellung
handelt es sich um eine Variable nicht wahr
- 3. Um einen annehmbaren Satz zu liefern, der an die Spracherkennungsmaschine
geäußert werden
muss, wird der Satz in einer für
die Spracherkennungsmaschine verständlichen Form bereitgestellt.
Insbesondere wird eine BNF-Datei hinsichtlich der Grammatik kompiliert,
um ein Grammatikvokabular zu erzeugen (FSG-Datei). Die Grammatikkompilation
ist eine Verarbeitung zum Ändern
einer Grammatik in eine für
die Spracherkennungsmaschine verständliche Form. Beispielsweise
wird die Kompilation in das für
die Spracherkennungsmaschine verständliche FSG-Format unter Verwendung einer Grammatik-Compiler-Programmierschnittstelle
(grammar compiler API) ausgeführt.
Das Dateiformat FSG (finite state grammar) ist eine kompilierte
Grammatikdatei in einem für
die Spracherkennungsmaschine verständlichen Format. Das Dateiformat
FSG wird auch von W3C Speech Interface Framework unterstützt. Die
gemäß der obigen
Beschreibung erzeugte Grammatik wird der Spracherkennungsmaschine
zur Registrierung bereitgestellt.
-
Die
erzeugte Grammatik wird durch die Spracherkennungsmaschine aktiviert.
Die Spracherkennungsmaschine wird in einen Modus zum Erstellen einer
Datei aus einer erkannten Sprache versetzt. Die die Variable enthaltende
Sprachdatei mit Aufzeichnung eines ganzen Satzes wird in die Spracherkennungsmaschine eingegeben.
Auf der Grundlage der Grammatik erkennt die Spracherkennungsmaschine
die eingegebene Sprache im Zustand der Teilung in das Variablensegment
und die von diesem verschiedenen Segmente. Die Spracherkennungsmaschine
teilt sodann die erkannte Sprache in erkannte Einheiten, um eine
Sprachdatei zu bilden.
-
Es
wird eine vom Anwendungsprogramm gekennzeichnete Variablenaufzeichungs-Sprachdatei
mit einem Dateinamen "(Inhalt
der Variablen).wav" gesucht.
Der Ort der Suche ist ein speziell für eine Kategorie bereitgestellter
Pfad, falls die Sprachdatei zu der Kategorie gehört, oder ein aktueller Pfad,
falls die Sprachdatei nicht zu der Kategorie gehört. Wenn die Datei "(Inhalt der Variablen).wav" nicht vorhanden
ist, wird eine Abbildungsliste von Variablen gegenüber Sprachdateinamen
gelesen, um einen Dateinamen zu erhalten, und eine Suche nach der
Datei ausgeführt.
Falls aufgrund des Nichtvorhandenseins einer Abbildungsliste keine
Sprachdatei zur Umformung gefunden wird, wird eine Kennzeichnung
bezüglich
der Zielvariablen oder einer der Zielvariablen zugeordneten Sprachdatei
in der Abbildungsliste oder aus anderen Gründen eine Sprachsynthese auf
der Grundlage des Variablentextes ausgeführt.
-
Die
durch Teilung erzeugte Sprachdatei, die durch eine Suche oder eine
Variablentext-Sprachsynthese des Variablentextes erhaltene Variablenaufzeichnungs-Sprachdatei
wird gemäß der Textfolge
der Reihe nach wiedergegeben. Zur Verbesserung der Leistungsfähigkeit
werden die geteilten Sprachdateien gespeichert, bis die Anwendung
endet. Ein geeignetes Löschen von
Dateien sollte jedoch ausgeführt
werden. Es ist angebracht, Regeln zu befolgen, die im Sprachserver
im Hinblick auf die Cachespeicher-Dateiverwaltung im Voraus bereitgestellt
werden. Der Zustand des Vorhandenseins von geteilten Sprachdateifragmenten
wird gespeichert, um eine Verwendung von einigen der vorhandenen
geteilten Sprachdateien zu ermöglichen.
-
Über die Festlegung der Variablen
-
Ein
einer Variablen entsprechender Text ist ein Wert einer Variablen
in der Anwendung. Der Wert wird zum Zeitpunkt der Ausführung festgelegt.
Die Auswahl hinsichtlich des Zeitpunktes und des Ortes der Festlegung
des Variablenwertes hängt
von der Anwendungslogik ab. Beispielsweise kann der gewünschte Wert
zu jedem beliebigen Zeitpunkt als Produkt="Variablenwert" gesetzt werden. Außerdem kann ein beispielsweise zum
Zeitpunkt der Bestellannahme erkanntes Wort/ein Satzteil geschrieben
werden, um als Wert gesetzt zu werden.
-
Im
Folgenden wird eine Folge von Prozessschritten, die die Festlegung
einer Variablen beinhalten, genauer beschrieben.
-
Im
Folgenden werden zwei Typen von Auswahlverfahren in Bezug auf "wann und wo wird
der Variablenwert festgelegt" in
Abhängigkeit
von der Ausführung
der Anwendung beschrieben. (1) Einem als Variablenname zu verwendenden
Erkennungsziel wird ein Name gegeben, und ein zum Zeitpunkt der Äußerung durch einen
Benutzer erkanntes Wort/ein Satzteil wird als ein Variablenwert
gesetzt. (2) Eine Variable wird im Voraus deklariert, und ein Variablenwert
wird zu einem je nach Wunsch ausgewählten Zeitpunkt gesetzt.
-
Die
folgende Tabelle 8 zeigt ein Verarbeitungsbeispiel.
-
-
-
Dieses
Beispiel ist eine VoiceXML-Anwendung, die einen im Folgenden gezeigten
Dialog bereitstellt und von den herkömmlichen Funktionen geschrieben
wird.
System: Ihren Namen, bitte.
Benutzer: Kato: Wert
der Variablen Benutzername (UserName) ="Kato",
wenn diese Äußerung erkannt
wird.
System: Sie sind Kato, nqicht wahr?: Anschließend lautet
der Rückgabewert
der Adressvariablen der Funktion
"value=getUserAddress" beispielsweise durch die Kennzeichnung
<assign> "Shibuya-ku, Tokyo".
System: Bestellung, bitte.
Benutzer:
Reis: Wert der Produktvariablen ="Reis",
wenn diese Äußerung erkannt
wird.
System: Bei ihrer Bestellung handelt es sich um Reis,
nicht wahr?
-
Ein
Beispiel des Typs (1) verwendet eine Variable "Benutzername", eine Produktvariable und eine Antwortvariable.
Ein Beispiel vom Typ (2) verwendet eine Adressvariable. Wenn auf
den Variablenwert Bezug genommen wird, wird die Kennzeichnung <value> verwendet. Im Falle
der Verwendung als Parameter für
eine SCRIPT-Funktion wird der Variablenname direkt verwendet.
-
Die
Variable "Benutzername" im Typ (1) wird
ausführlicher
beschrieben. Der VXML-Verarbeitungsabschnitt liest zuerst die VXML-Anwendung
im Anwendungsserver. In der fünften
Zeile des Dialogs weist der VXML-Verarbeitungsabschnitt die Spracherkennungsmaschine
an, "ein Wort/einen
Satzteil Kato oder Sato durch die Grammatik zu erkennen". Wenn die vom Benutzer
als "Kato" geäußerte Sprache
in der Spracherkennungsmaschine eintrifft, erkennt diese das Wort/den
Satzteil "Kato" durch Textvergleich
(collation) mit der Grammatik. Die Spracherkennungsmaschine benachrichtigt
den VXML-Verarbeitungsabschnitt, dass "erkanntes Wort/der erkannte Satzteil:
Kato" ist. Der VXML-Verarbeitungsabschnitt
setzt den Variablenwert "Kato" in die Variable
Benutzername. Sowohl der VXML-Verarbeitungsabschnitt als auch die
Spracherkennungsmaschine werden beispielsweise im Sprachserver realisiert.
Der VXML-Verarbeitungsabschnitt kann beispielsweise als Teil des
Sprachverarbeitungsabschnitts realisiert werden.
-
Die
Adressvariable im Typ (2) wird ausführlicher beschrieben. Der VXML-Verarbeitungsabschnitt
empfängt
eine Benachrichtigung, dass die Erkennung des Feldes "Benutzername" beendet ist, und
startet die Verarbeitung in der zwölften Zeile. Der VXML-Verarbeitungsabschnitt
ruft eine als "getUserAddress" bezeichnete Funktion
auf, um durch Bezugnahme auf eine Client-Datenbank mit Verknüpfung von
Name und Adresse eine Adresse zurückzugeben, und ordnet die Rückgabevariable
der Adressvariable als Variablenwert zu.
-
Festlegung des Variablennamens
-
In
einem Beispiel in dieser Ausführungsform
wird "variable value"+".wav" als
Name der Variablenaufzeichungsdatei bereitgestellt. Beispielsweise
ist der Name der Variablensegment-Aufzeichungsdatei = "Reis.wav", wenn der Wert der
Produktvariablen "Reis" ist, falls es sich
bei der Variablen um die Variable "Produkt" handelt. Eine diesbezügliche ausführlichere
Beschreibung erfolgt mit Bezugnahme auf ein in der folgenden Tabelle
9 gezeigtes Beispiel.
-
-
-
Dies
ist eine Beschreibung für
einen Fall, in dem in einer Anwendung um eine Bestellung gebeten
wird und eine Notwendigkeit für
den Satz "Bei Ihrer
Bestellung handelt es sich um OO, nicht wahr" besteht. In diesem Beispiel kann der
folgende Dialog zwischengespeichert werden.
System: Bestellung,
bitte.
Benutzer: Reis.
System: Bei Ihrer Bestellung handelt
es sich um Reis, nicht wahr.
-
Bei
einer solchen Anwendung wird eine Variablenaufzeichnungsdatei in
Bezug auf Werte, die als die Variable "Produkt" gültig
sind, zum Zeitpunkt der Entwicklung der Anwendung im Voraus vorbereitet
und im Anwendungsserver gespeichert. Ein Dateiname für die Variablenaufzeichnungsdatei
ist "variable value"+".wav".
Wenn gültige
Werte der Variablen "Reis" und "Miso" sind, werden "Reis.wav" und "Miso.wav" vorbereitet und
im Anwendungsserver gespeichert. Der Sprachserver stellt einen Variablensegment-Aufzeichnungsdateinamen
("Reis.wav") in das Segment <value expr="Produkt"/> aus dem Wert der Variablen "Produkt" (z. B. "Reis") zum Zeitpunkt der
Ausführung
bereit. Falls die Datei im Anwendungsserver vorhanden ist, gibt der
Sprachserver diese wieder. Falls die Datei nicht im Anwendungsserver
vorhanden ist, führt
der Sprachserver eine Sprachsynthese des Variablenwertes ("Reis") aus. Eine solche
Dateinamenerstellung wird beispielsweise gemäß (8) "ob eine Variablenaufzeichnungs-Sprachdatei vorhanden
ist" in dem in 7 gezeigten Flussdiagramm
ausgeführt.