Nachbearbeitung in automatischen Spracherkennungssystemen

On By Pavel Pekichev8 Min Read
Post-processing in Automatic Speech Recognition systems

Einführung

Systeme für die automatische Spracherkennung (Automatic Speech Recognition, ASR) erstellen Abschriften von Texten. In der Regel sind das Abfolgen von Wörtern. Cisco setzt ASR-Systeme ein, um in Webex Meetings in Echtzeit Untertitel zu erstellen. Ein Problem besteht darin, dass es schwierig sein kann, Untertitel zu lesen, in denen weder Interpunktion noch Groß- und Kleinschreibung verwendet wird. Die Verständlichkeit der Bedeutung eines Textes hängt von der Interpunktion ab. So gibt es bei der englischen Wortfolge:

„thank you your donation just helped someone get a job“ zwei unterschiedliche Interpunktionsmöglichkeiten.

Option A: „Thank you! Your donation just helped someone get a job.“ Das bedeutet auf Deutsch: „Vielen Dank! Mit Ihrer Spende haben Sie gerade jemandem geholfen, einen Job zu finden.“

Option B: „Thank you! Your donation just helped someone. Get a job.“ Das hat auf Deutsch allerdings eine ganz andere Bedeutung, nämlich: „Vielen Dank! Mit Ihrer Spende haben Sie gerade jemandem geholfen. Suchen Sie sich einen Job.“

Ein einziges Satzzeichen macht einen gewaltigen Unterschied.

Wir stellen einige Überlegungen an, die bei der Entwicklung eines Systems für die Nachbearbeitung berücksichtigt werden müssen:
  • Hochgradig präzise Modelle für die Wiederherstellung von Satzzeichen und Groß-/Kleinschreibung aus Rohtexten. Schnelle Schlussfolgerungen anhand von Zwischenergebnissen, um mit den Untertiteln in Echtzeit Schritt zu halten.
  • Geringe Ressourcennutzung: Spracherkennung benötigt viel Rechenleistung. Deswegen dürfen die Interpunktionsmodelle nicht auch noch rechenintensiv sein.
  • Fähigkeit, Wörter zu verarbeiten, die nicht im Vokabular enthalten sind: Manchmal muss die Groß- und Kleinschreibung oder Interpunktion für Wörter festgelegt werden, die das Modell noch nicht kennt.
Einige klassische, auf N-Grammen basierende Ansätze [1] weisen eine relativ gute Qualität auf. Sie haben allerdings auch Nachteile. Zwar ermöglichen N-Gramm-Modelle schnelle Rückschlüsse, aber selbst 3-Gramm-Modelle benötigen, je nach Vokabular der jeweiligen Sprache, mehrere Gigabyte Speicherplatz. Ein weiterer Nachteil ist der Umgang mit Wörtern, die nicht im Vokabular enthalten sind. Wenn ein Wort in den Training-Daten nicht enthalten war, kann es von dem Modell nicht in der gewohnten Weise verarbeitet werden und die Genauigkeit kann abnehmen. Moderne Ansätze verwenden effektive Techniken wie etwa ein bidirektionales RNN [3], die jedoch viel Rechenleistung in Anspruch nehmen, oder Attention- und Transformer-basiserte neuronale Netzarchitekturen [2]. Diese Modelle sind sehr genau [2], aber möglicherweise nicht gut für die Anwendung beim Live-Streaming geeignet, weil sie die vollständige Eingabesequenz benötigen, um Rückschlüsse ziehen zu können. Wenn man beispielsweise nur einen Eingabetoken für ein bidirektionales RNN hat, müssen die verborgenen Zustände („Hidden States“) aller Token aktualisiert werden, mit denen das Modell bereits konfrontiert war (Abbildung 1).
Berechnungen zur Rückwärtsberechnung eines bidirektionalen RNN

Abbildung 1. Berechnungen zur Rückwärtsberechnung eines bidirektionalen RNN. Bei jeder neuen Eingabe müssen alle vorherigen verborgenen Zustände der Reihe nach aktualisiert werden.

  Einige Ansätze versuchen, das Problem der Interpunktion und Groß- und Kleinschreibung zu lösen, indem zwei verschiedene Modelle erstellt werden [3][6], andere kombinieren die beiden zu einem einzigen Modell, weil die Ausgaben stark miteinander korrelieren [4][2]. Die Wörter, die unmittelbar auf die Satzzeichen folgen, verdeutlichen diese Korrelation gut: In vielen Sprachen werden Wörter nach einem Punkt mit hoher Wahrscheinlichkeit groß geschrieben und Wörter nach einem Komma wahrscheinlich klein. Einige Ansätze schlagen eine Architektur mit mehreren Ausgaben vor [4]: jeweils eine pro Aufgabe. Sie zeigen, dass diese Architektur besser funktioniert als Architekturen, bei denen Interpunktion und Groß- und Kleinschreibung getrennt sind. Auf der Grundlage dieser Erwägungen haben wir beschlossen, ein einzelnes GRU-basiertes neuronales Netz mit zwei Ausgaben für Interpunktion sowie Groß- und Kleinschreibung zu verwenden. Im Umgang mit Wörtern, die nicht im Vokabular enthalten sind, verwenden wir eine Technik, die der SentencePiece-Technik [6] ähnelt und die unbekannte Wörter in kleinere Token oder im Extremfall in Zeichen unterteilt. Mit den Einzelheiten und Überlegungen dazu werden wir uns nun beschäftigen.

TruncBiRNN

Intuition und Experimente zeigen, dass es unabdingbar ist, den zukünftigen Kontext zu kennen, wenn man ein Interpunktionsmodell entwickelt, weil es schwieriger ist, die Interpunktion an einer bestimmten Position zu bestimmen, wenn man die folgenden Wörter nicht kennt. Damit wir Informationen über die nächsten Token nutzen können und nicht alle verborgenen Zustände aller Token rückwärts aktualisieren müssen, haben wir beschlossen, die Bearbeitung in Rückwärtsrichtung zu beschränken und auf ein festes Fenster zu kürzen. In Vorwärtsrichtung handelt es sich lediglich um ein normales RNN. In Rückwärtsrichtung berücksichtigen wir bei jedem Token nur ein festes Fenster und wenden das RNN auf dieses Fenster an (Abbildung 2). Mithilfe dieses Fensters können wir eine konstante Zeitinferenz für neue Eingabetoken erhalten (wir müssen einen verborgenen Zustand in Vorwärtsrichtung berechnen und n+1 in Rückwärtsrichtung).
TruncBiRNN-Beispiel

Abbildung 2. In diesem Beispiel werden bei der Rückwärtsberechnung des verborgenen Zustands für jeden aktuellen Token jeweils nur die beiden folgenden berücksichtigt.

  Wir erhalten nun für jedes Token verborgene Zustände für die Vorwärts- und Rückwärtsrichtung. Nennen wir diese Ebene einmal TruncBiRNN oder TruncBiGRU (weil wir GRU verwenden). Diese verborgenen Zustände können innerhalb von konstanten Zeiträumen berechnet werden, die nicht von der Länge der Eingabe abhängen. Der Vorgang muss innerhalb einer konstanten Zeit ablaufen, damit er mit den Untertiteln in Echtzeit Schritt halten kann.

Architektur

Die Architektur besteht aus Einbettungsebene, TruncBiGRU- und unidirektionaler GRU-Ebene und vollständig vernetzter Ebene. Für die Ausgabe verwenden wir zwei Softmax-Ebenen, je eine für die Interpunktion und die Groß- und Kleinschreibung (Abbildung 3).
Abbildung 3. Modellarchitektur mit einer Fenstergröße von zwei Token für TruncBiGRU

Abbildung 3. Modellarchitektur mit einer Fenstergröße von zwei Token für TruncBiGRU.

  Das Modell sagt die Groß- und Kleinschreibung für jedes Wort sowie die darauf folgende Interpunktion vorher. Um die beiden Ausgaben besser synchronisieren und die Groß- und Kleinschreibung vorhersagen zu können, müssen wir auch die Einbettung des vorherigen Token kennen (um das Satzzeichen aus dem vorherigen Schritt wiederherzustellen). Zusammen mit einer benutzerdefinierten Verlustfunktion (siehe nächster Abschnitt) können wir so verhindern, dass Sätze mit klein geschriebenen Wörtern beginnen. Für die Vorhersage der Interpunktion ist es auch hilfreich, die Vorhersage der Groß- und Kleinschreibung des nächsten Wortes hinzuzuziehen. Deswegen verknüpfen wir die aktuelle Einbettung mit der folgenden. Eine Ausgabeebene für die Interpunktion sagt die Verteilung über alle Satzzeichen hinweg voraus. In unserem Modell ist es eine Folge:

Punkt – Punkt in der Mitte eines Satzes, der nicht zwangsläufig darauf hinweist, dass das nächste Wort groß geschrieben werden sollte („z. B., „d. h.“ usw.)

Komma

Fragezeichen

Auslassungszeichen

Doppelpunkt

Bindestrich

abschließender Punkt – Punkt am Satzende

  Für die Groß- und Kleinschreibung verwenden wir vier Klassen:

Kleinbuchstaben

Großbuchstaben – alle Buchstaben werden groß geschrieben („IEEE“, „NASA“, usw.)

Großbuchstabe am Wortanfang

Mischform – Wörter wie „iPhone“

Großbuchstabe am Satzanfang – Wörter, die einen Satz einleiten

Die zusätzlichen Klassen „Großbuchstabe am Satzanfang“ (leading capitalized) und abschließender Punkt“ (terminal period) mögen zunächst überflüssig erscheinen, sie leisten jedoch einen Beitrag zu konsistenteren Antworten im Hinblick auf Groß- und Kleinschreibung sowie Interpunktion. Der „abschließende Punkt“ deutet darauf hin, dass die Antwort bei der nächsten Frage der Groß- und Kleinschreibung nicht „Kleinbuchstaben“ sein kann, wohingegen „Großbuchstabe am Satzanfang“ bedeutet, dass das vorhergehende Satzzeichen ein „abschließender Punkt“ oder ein Fragezeichen sein muss. Diese Klassen spielen eine wichtige Rolle für die Verlustfunktion. Verlustfunktion: Wir müssen die Groß- und Kleinschreibung und die Interpunktion optimieren. Dazu verwenden wir die Summe aus einer logarithmischen Verlustfunktion mit einem Koeffizienten: Verlustfunktion Wie jedoch bereits erwähnt, korrelieren die Ausgaben neuronaler Netze nicht immer optimal miteinander. Ein Beispiel dafür wäre, wenn die für das Setzen von Satzzeichen zuständige Funktion „abschließender Punkt“ für das aktuelle Wort vorhersagt, die für die Groß- und Kleinschreibung zuständige Funktion jedoch nicht „Großbuchstabe am Satzanfang“ für den folgenden Token. Diese Art von Fehler ist zwar selten, sie kann aber sehr auffällig sein. Deswegen verwenden wir eine zusätzliche Abzugsbedingung in der Verlustfunktion, die bei dieser Art von Fehler zu einem Abzug führt: Abzug bei Abweichung Die erste Bedingung entspricht der Wahrscheinlichkeit, dass ein „Großbuchstabe am Satzanfang“ nach einem Token mit einem anderen Wert als „abschließender Punkt“ steht, und die zweite für die Wahrscheinlichkeit, dass „Großbuchstabe am Satzanfang“ nicht nach „abschließender Punkt“ steht.  Dieser Abzug summiert sich, wenn der Fehler bei mehreren Token auftritt. Außerdem übertragen wir zwei aufeinanderfolgende Tensoren von der vorherigen Ebene auf die Softmax-Ebenen. So können wir Abzugsbedingungen effizient reduzieren. Und schließlich ist da noch die Verlustfunktion: Verlustfunktion

Training

Für das Training verwenden wir Abschriften von Texten aus einigen internen Webex Meetings und Textdaten von Wikipedia. Zunächst werden die Training-Daten bereinigt und in Sätze unterteilt. Während des Trainings wird jedes Beispiel aus aufeinanderfolgenden Sätzen generiert und auf eine beliebige Länge aus einer festen Verteilung gekürzt. Auf diese Weise wird das Modell im Training mit abgeschnittenen Phrasen konfrontiert, die es dem Modell ermöglichen, beim Folgern mit Zwischenergebnissen zu arbeiten. Anschließend trainieren wir ein Modell mit etwa 300 Megabyte Text von Wikipedia und nehmen dann mithilfe der Abschriften von Webex Meetings Feinabstimmungen vor. Das Vorab-Training mit Wikipedia trägt zu Verbesserungen bei allen Interpunktionsklassen bei, es ist jedoch besonders hilfreich bei den Klassen für die Groß- und Kleinschreibung. Wir vermuten, das liegt daran, dass der Wikipedia-Korpus sehr viele Substantive enthält. Wir wenden dieselbe Datenvorbereitung auf unsere Bewertungssätze an, indem wir Sätze kürzen und sie bei einer beliebigen Länge „abschneiden“. Auf diese Weise können wir die Genauigkeit der Ergebnisse erfassen, die wir bei den Zwischenstufen der Abschriften erwarten können.

Fazit

Wir haben relativ einfache Techniken mit einigen Anpassungen bei der Architektur, z. B. gekürzte GRU und zusätzliche Abzüge in Verlustfunktionen, eingesetzt, um ein Modell zu entwickeln, das online ausgeführt werden kann. Live-Untertitel sind deutlich leichter lesbar, wenn Interpunktion sowie Groß- und Kleinschreibung in Echtzeit hinzugefügt werden. Literatur [1] A. Gravano, M. Jansche und M. Bacchiani: „Restoring punctuation and capitalization in transcribed speech“, in ICASSP 2009, 2009, S. 4741–4744. [2] Monica Sunkara, Srikanth Ronanki, Kalpit Dixit, Sravan Bodapati, Katrin Kirchhoff: „Robust Prediction of Punctuation and Truecasing for Medical ASR“ [3] Tilk, Ottokar und Alumäe, Tanel (2016): „Bidirectional Recurrent Neural Network with Attention Mechanism for Punctuation Restoration“, 3047-3051. 10.21437/Interspeech.2016-1517 [4] Vardaan Pahuja, Anirban Laha, Shachar Mirkin, Vikas Raykar, Lili Kotlerman, Guy Lev: „Joint Learning of Correlated Sequence Labelling Tasks Using Bidirectional Recurrent Neural Networks“ [5] Wang, Peilu und Qian, Yao und Soong, Frank und He, Lei und Zhao, Hai. (2015): „Part-of-Speech Tagging with Bidirectional Long Short-Term Memory Recurrent Neural Network“ [6] Lita, Lucian und Ittycheriah, Abe und Roukos, Salim und Kambhatla, Nanda (2003): tRuEcasIng. 10.3115/1075096.1075116. [7] https://github.com/google/sentencepiece Bei Webex anmelden Besuchen Sie unsere Homepage oder kontaktieren Sie uns direkt, wenn Sie Unterstützung benötigen. Klicken Sie hier, um mehr über die Angebote von Webex zu erfahren und sich für ein kostenloses Konto anzumelden.

About The Author

Pavel Pekichev
Pavel Pekichev Machine Learning Scientist Cisco
Pavel Pekichev is a Machine Learning Scientist at Cisco working on speech recognition systems.
Learn more

Topics


More like this