Vorbereiten von Trainingsdaten für das Anzeigetextformat für Custom Speech
Der Azure KI Speech-Dienst umfasst zwei Komponenten: Spracherkennung und Anzeigetextformatierung. Die Spracherkennung transkribiert Audio in lexikalischen Text, der dann in Anzeigetext transformiert wird.
Das Anzeigetextformatfeature wird für folgende Gebietsschemas unterstützt: da-DK, de-DE, en-AU, en-CA, en-GB, en-HK, en-IE, en-IN, en-NG, en-NZ, en-PH, en-SG, en-US, es-ES, es-MX, fi-FI, fr-CA, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, nb-NO, nl-NL, pl-PL, pt-PT, sv-SE, tr-TR, zh-CN und zh-HK.
Standard-Anzeigetextformatierung
Die Anzeigetextpipeline besteht aus einer Sequenz von Anzeigeformatgeneratoren. Jeder Generator entspricht einer Anzeigeformataufgabe wie ITN, Großschreibung und Filterung anstößiger Ausdrücke.
- Umgekehrte Textnormalisierung (Inverse Text Normalization, ITN): Dient dazu, den Text gesprochener Zahlen in das Anzeigeformat zu konvertieren. Beispiel:
"I spend twenty dollars" -> "I spend $20"
- Großschreibung: Dient dazu, Entitätsnamen, Akronyme oder den ersten Buchstaben eines Satzes großzuschreiben. Beispiel:
"she is from microsoft" -> "She is from Microsoft"
- Filterung anstößiger Ausdrücke: Dient zum Maskieren oder Entfernen anstößiger Wörter in einem Satz. Wenn beispielsweise „abcd“ ein anstößiges Wort ist, wird es durch die Maskierung anstößiger Wörter maskiert:
"I never say abcd" -> "I never say ****"
Microsoft verwaltet die Basisgeneratoren der Anzeigetextpipeline für universelle Anzeigeverarbeitungsaufgaben. Sie erhalten die Basisgeneratoren standardmäßig, wenn Sie den Speech-Dienst verwenden. Weitere Informationen zur sofort verwendbaren Formatierung finden Sie unter Anzeigen der Textformatierung mit Spracherkennung.
Benutzerdefinierte Anzeigetextformatierung
Neben den von Microsoft verwalteten Basis-Generatoren können Sie benutzerdefinierte Regeln für die Anzeigetextformatierung definieren, um die Pipeline für die Anzeigetextformatierung für Ihre spezifischen Szenarien anzupassen. Die Regeln für die benutzerdefinierte Anzeigetextformatierung werden in einer Datei für die benutzerdefinierte Anzeigetextformatierung definiert.
- Benutzerdefinierte ITN: Ermöglicht die Erweiterung der Funktionen der Basis-ITN durch Anwenden eines regelbasierten benutzerdefinierten ITN-Modells des Kunden.
- Benutzerdefiniertes Umschreiben: Ermöglicht das Umschreiben von Ausdrücken basierend auf einem regelbasierten Modell des Kunden.
- Benutzerdefinierte Filterung anstößiger Ausdrücke: Ermöglicht die Behandlung anstößiger Ausdrücke auf der Grundlage einer vom Kunden bereitgestellten Liste mit anstößigen Wörtern.
Die Reihenfolge der Textformatierungspipeline wird im folgenden Diagramm veranschaulicht:
Benutzerdefinierte ITN
Bei der musterbasierten benutzerdefinierten ITN können Sie die gewünschte endgültige Ausgabe angeben. Der Speech-Dienst ermittelt, wie die Wörter gesprochen werden können, und ordnet die vorhergesagten gesprochenen Ausdrücke dem angegebenen Ausgabeformat zu.
Ein benutzerdefiniertes ITN-Modell basiert auf einer Reihe von ITN-Regeln. Eine ITN-Regel ist ein regulärer Ausdruck (beispielsweise eine Musterzeichenfolge), der Folgendes beschreibt:
- Ein übereinstimmendes Muster der Eingabezeichenfolge
- Das gewünschte Format der Ausgabezeichenfolge
Die von Microsoft bereitgestellten ITN-Standardregeln werden zuerst angewendet. Die Ausgabe des ITN-Standardmodells wird als Eingabe des benutzerdefinierten ITN-Modells verwendet. Der Abgleichsalgorithmus im benutzerdefinierten ITN-Modell berücksichtigt die Groß-/Kleinschreibung.
Bei benutzerdefinierten ITN-Regeln gibt es vier Musterabgleichskategorien:
- Muster mit Literalen
- Muster mit Platzhaltern
- Muster mit RegEx-ähnlicher Notation
- Muster mit expliziter Ersetzung
Muster mit Literalen
Angenommen, ein Entwickler bzw. eine Entwicklerin verfügt über ein Element (z. B. ein Produkt), das mit dem alphanumerischen Format JO:500
benannt ist. Der Sprachdienst stellt fest, dass Benutzer den Buchstabenteil als J O
sagen, oder sie sagen joe
und den Nummernteil als five hundred
oder five zero zero
oder five oh oh
oder five double zero
, und sie erstellen dann ein Modell, das all diese Möglichkeiten zurück auf JO:500
zuordnet (einschließlich des Einfügens des Doppelpunkts).
Muster können parallel angewendet werden, indem in der Datei für die Anzeigetextformatierung jeweils eine Regel pro Zeile angegeben wird. Hier ist ein Beispiel für eine Datei für die Anzeigetextformatierung mit zwei Regeln:
JO:500
MM:760
Muster mit Platzhaltern
Sie können auf eine ganze Reihe alphanumerischer Elemente (z. B. JO:500
, JO:600
, JO:700
) verweisen, ohne alle Möglichkeiten auf verschiedene Weise erstellen zu müssen.
Mithilfe der Notation [...]
können Zeichenbereiche angegeben werden, sodass JO:[5-7]00
drei ausgeschriebenen Mustern entspricht.
Es gibt auch eine Reihe von Platzhalterelementen, die verwendet werden können. Eines davon ist \d
(beliebige Ziffer). JO:\d00
deckt also JO:000
, JO:100
bis hin zu JO:900
ab.
Genau wie bei einem regulären Ausdruck gibt es mehrere vordefinierte Zeichenklassen für eine ITN-Regel:
\d
: Verwendet eine Ziffer von 0 bis 9 und gibt sie direkt aus.\l
: Verwendet einen Buchstaben (ohne Beachtung der Groß-/Kleinschreibung) und wandelt ihn in einen Kleinbuchstaben um.\u
: Verwendet einen Buchstaben (ohne Beachtung der Groß-/Kleinschreibung) und wandelt ihn in einen Großbuchstaben um.\a
: Verwendet einen Buchstaben (ohne Beachtung der Groß-/Kleinschreibung) und gibt ihn direkt aus.
Es gibt auch Escapeausdrücke, um auf Zeichen zu verwesen, die andernfalls eine spezielle syntaktische Bedeutung haben:
\\
: Verwendet das Zeichen\
und gibt es aus.\(
und\)
\{
und\}
\|
\+
,\?
und\*
Muster mit RegEx-ähnlicher Notation
Um die Flexibilität beim Schreiben von Mustern zu verbessern, werden RegEx-ähnliche Konstruktionen von Ausdrücken mit Alternativen und Kleene-Abschluss unterstützt.
- Ein Ausdruck wird mit Klammern angegeben (z. B.
(...)
): Die Klammern gelten nicht abzugleichende Zeichen. - Mit dem Zeichen
|
können Alternativen innerhalb eines Ausdrucks angegeben werden (z. B.(AB|CDE)
). - Sie können einen Ausdruck mit dem Suffix
?
versehen, um anzugeben, dass er optional ist.+
gibt an, dass er wiederholt werden kann, und*
gibt beides an. Sie können Ausdrücke nur mit diesen Zeichen als Suffix versehen. Die Verwendung einzelner Zeichen (was restriktiver ist als die meisten Implementierungen regulärer Ausdrücke) ist nicht möglich.
Ein Muster wie (AB|CD)-(\d)+
würde Konstrukte wie „AB-9“ oder „CD-22“ darstellen und auf gesprochene Wörter wie A B nine
und C D twenty two
(oder C D two two
) erweitert werden.
Muster mit expliziter Ersetzung
Die allgemeine Philosophie ist: Sie zeigen uns, wie die Ausgabe aussehen soll, und der Speech-Dienst findet heraus, wie es gesprochen wird. Das funktioniert allerdings nicht immer, da es in manchen Szenarien möglicherweise unvorhergesehene Möglichkeiten gibt, Dinge zu sagen, oder weil die Hintergrundregeln des Speech-Diensts unter Umständen nicht lückenlos sind. So kann es etwa umgangssprachliche Aussprachen für Initialen und Akronyme geben. ZPI
kann zum Beispiel als zippy
gesprochen werden. In diesem Fall funktioniert ein Muster wie ZPI-\d\d
wahrscheinlich nicht, wenn Benutzer zippy twenty two
sagen. Für derartige Situationen gibt es die Notation {spoken>written}
für das Anzeigetextformat. Dieser spezielle Fall kann als {zippy>ZPI}-\d\d
ausgeschrieben werden.
Dies kann für die Behandlung von Dingen hilfreich sein, die von den Speech-Zuordnungsregeln noch nicht unterstützt werden. Sie können z. B. das Muster \d0-\d0
schreiben und erwarten, dass das System „-“ als Bereichsangabe erkennt, die als twenty to thirty
gesprochen wird (wie etwa bei to
). Das funktioniert aber vielleicht nicht. Also können Sie ein expliziteres Muster wie \d0{to>-}\d0
schreiben und angeben, wie der Bindestrich interpretiert werden soll.
Sie können auch >
und das nachfolgende geschriebene Format weglassen, um Wörter anzugeben, die zwar erkannt, aber ignoriert werden sollen. Bei einem Muster wie {write} (\u.)+
wird also write A B C
erkannt und A.B.C
ausgegeben. Der Teil write
wird dagegen weggelassen.
Beispiele für benutzerdefinierte ITN
Gruppieren von Ziffern
So gruppieren Sie sechs Ziffern in zwei Gruppen und fügen dazwischen einen Bindestrich („-“) ein
ITN-Regel:
\d\d\d-\d\d\d
Beispiel:"cadence one oh five one fifteen" -> "cadence 105-115"
Formatieren eines Filmnamens
Space: 1999 ist ein berühmter Film. Verwenden Sie Folgendes, um ihn zu unterstützen:
ITN-Regel:
Space: 1999
Beispiel:"watching space nineteen ninety nine" -> "watching Space: 1999"
Muster mit Ersetzung
ITN-Regel:
\d[05]{ to >-}\d[05]
Beispiel:fifteen to twenty -> 15-20
Benutzerdefinierte Umschreibung
Im Allgemeinen versucht das Umschreibmodell bei einer Eingabezeichenfolge, den ursprünglichen Ausdruck (original phrase
) in der Eingabezeichenfolge durch den entsprechenden neuen Ausdruck (new phrase
) für jede Umschreiberegel zu ersetzen. Ein Umschreibmodell ist eine Sammlung von Umschreiberegeln.
- Bei einer Umschreiberegel handelt es sich um ein Paar mit zwei Ausdrücken: einem ursprünglichen Ausdruck und einem neuen Ausdruck.
- Die beiden Ausdrücke werden durch ein Tabstoppzeichen getrennt. Beispiel:
original phrase
{TAB}new phrase
. - Der ursprüngliche Ausdruck wird abgeglichen (ohne Berücksichtigung der Groß-/Kleinschreibung) und durch den neuen Ausdruck ersetzt (unter Berücksichtigung der Groß-/Kleinschreibung). Grammatische Satzzeichen im ursprünglichen Ausdruck werden beim Abgleich ignoriert.
- Bei einem Konflikt zwischen Umschreiberegeln wird die Regeln mit dem längeren ursprünglichen Ausdruck (
original phrase
) als Übereinstimmung verwendet.
Das Umschreibmodell unterstützt standardmäßig die grammatische Großschreibung. Hierbei wird jeweils der erste Buchstabe eines Satzes für en-US
-ähnliche Gebietsschemas großgeschrieben. Sie wird deaktiviert, wenn das Großschreibungsfeature der Anzeigetextformatierung in einer Spracherkennungsanforderung deaktiviert ist.
Grammatische Satzzeichen
Grammatische Satzzeichen werden zur Trennung von Sätzen oder Ausdrücken verwendet und verdeutlichen, wie ein Satz oder Ausdruck gelesen werden soll.
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
Hier finden Sie die Regeln für grammatische Satzzeichen:
- Die unterstützten Satzzeichen fungieren als grammatische Satzzeichen, wenn nach ihnen ein Leerzeichen folgt oder wenn sie sich am Anfang oder Ende eines Satzes oder Ausdrucks befinden.
.
inx. y
(mit einem Leerzeichen zwischen.
undy
) ist beispielsweise ein grammatisches Satzzeichen. - Satzzeichen, die sich in der Mitte eines Worts befinden (mit Ausnahme von
zh-cn
undja-jp
), sind keine grammatischen Satzzeichen. In diesem Fall sind sie normale Zeichen..
inx.y
ist beispielsweise kein grammatisches Satzzeichen. - Bei
zh-cn
undja-jp
(Gebietsschemas ohne Leerzeichen) werden Satzzeichen immer als grammatische Satzzeichen verwendet, auch wenn sie sich zwischen Zeichen befinden..
in中.文
ist beispielsweise ein grammatisches Satzzeichen.
Beispiele für Umschreibungen
Rechtschreibekorrektur
Der Name COVID-19
wird möglicherweise als covered 19
erkannt. Verwenden Sie die folgende Umschreiberegel, um sicherzustellen, dass nicht covered 19 is a virus
, sondern COVID-19 is a virus
angezeigt wird:
#rewrite
covered 19{TAB}COVID-19
Großschreibung von Namen
Gottfried Wilhelm Leibniz war ein deutscher Mathematiker. Verwenden Sie die folgende Umschreiberegel, um sicherzustellen, dass Gottfried Wilhelm Leibniz
großgeschrieben wird:
#rewrite
gottfried leibniz{TAB}Gottfried Leibniz
Benutzerdefinierte anstößige Ausdrücke
Ein benutzerdefiniertes Modell für anstößige Ausdrücke funktioniert genau wie das Basismodell für anstößige Ausdrücke. Der einzige Unterschied besteht in der Verwendung einer benutzerdefinierten Liste mit anstößigen Ausdrücken. Außerdem versucht das benutzerdefinierte Modell für anstößige Ausdrücke, alle anstößigen Ausdrücke, die in der Datei für die Anzeigetextformatierung definiert sind, abzugleichen (ohne Berücksichtigung der Groß-/Kleinschreibung).
- Die anstößigen Ausdrücke werden abgeglichen (ohne Berücksichtigung der Groß-/Kleinschreibung).
- Bei einem Konflikt der Regeln für anstößige Ausdrücke wird der längste Ausdruck als Übereinstimmung verwendet.
- Folgende Satzzeichen werden in einem anstößigen Ausdruck nicht unterstützt:
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
. - Für die Gebietsschemas
zh-CN
undja-JP
werden anstößige Ausdrücke in englischer Sprache nicht unterstützt. Anstößige Ausdrücke in englischer Sprache werden unterstützt. Anstößige Ausdrücke für die Gebietsschemaszh-CN
undja-JP
werden unterstützt.
Der anstößige Ausdruck wird abhängig von den Einstellungen der Spracherkennungsanforderung entweder entfernt oder maskiert.
Nachdem anstößige Ausdrücke der Regeldatei für das Anzeigetextformat hinzugefügt wurden und das benutzerdefinierte Modell trainiert wurde, werden sie für die Standardausgabe der Batch-Spracherkennung und der Spracherkennung in Echtzeit verwendet.
Beispiele für benutzerdefinierte anstößige Ausdrücke
Hier sind einige Beispiele für die Maskierung anstößiger Wörter und Ausdrücke in der Datei für die Anzeigetextformatierung.
Beispiel für die Maskierung eines einzelnen anstößigen Worts
Angenommen, xyz
ist ein anstößiges Wort. Gehen Sie zum Hinzufügen wie folgt vor:
#profanity
xyz
Hier ist ein Testbeispiel: Turned on profanity masking to mask xyz -> Turned on profanity masking to mask ***
Maskieren eines anstößigen Ausdrucks
Angenommen, abc lmn
ist ein anstößiger Ausdruck. Gehen Sie zum Hinzufügen wie folgt vor:
#profanity
abc lmn
Hier ist ein Testbeispiel: Turned on profanity masking to mask abc lmn -> Turned on profanity masking to mask *** ***