Untertitelung mit Spracherkennung
In diesem Leitfaden erfahren Sie, wie Sie mithilfe der Spracherkennung Untertitel erstellen. Untertitelung ist der Prozess der Konvertierung des Audioinhalts einer Fernsehsendung, Webcast, Film, Video, Live-Veranstaltung oder anderer Produktionen in Text und die anschließende Darstellung auf einem Bildschirm, Monitor oder einem anderen visuellen Anzeigesystem.
Zu den Konzepten gehören die Synchronisierung von Untertiteln mit Ihrem Audio-Eingangssignal, das Anwenden von Filtern für anstößige Ausdrücke, das Abrufen von Teilergebnissen, das Anwenden von Anpassungen und das Identifizieren gesprochener Sprachen in mehrsprachigen Szenarien. In diesem Leitfaden wird die Untertitelung für Sprache behandelt, er behandelt aber keine Sprecher-ID oder Klangeffekte wie Glockenläuten.
Hier sehen Sie einige häufige Untertitelungsszenarien:
- Onlinekurse und Lehrvideos
- Sportveranstaltungen
- Sprach- und Videoanrufe
Die folgenden Aspekte sollten bei der Verwendung von Untertiteln berücksichtigt werden:
- Teilen Sie Ihrem Publikum mit, dass die Untertitel von einem Dienst automatisch generiert werden.
- Zentrieren Sie Untertitel horizontal auf dem Bildschirm in einer großen und auffälligen Schriftart.
- Überlegen Sie, ob Teilergebnisse verwendet werden sollen, wann die Anzeige von Untertiteln beginnen soll und wie viele Wörter gleichzeitig angezeigt werden sollen.
- Erfahren Sie mehr über Untertitelprotokolle wie SMPTE-TT.
- Berücksichtigen Sie Ausgabeformate wie SRT (SubRip Text) und WebVTT (Web Video Text Tracks). Diese können in den meisten Videoplayern wie VLC geladen werden und fügen Ihrem Video die Untertitel automatisch hinzu.
Tipp
Probieren Sie Speech Studio aus, und wählen Sie einen Beispielvideoclip aus, um das in Echtzeit oder offline verarbeitete Untertitelergebnis zu sehen.
Testen Sie den Azure KI Video Indexer, als Demonstration, wie Sie an Untertitel für hochgeladene Videos gelangen.
Die Untertitelung kann Sprache in Echtzeit oder aus Aufzeichnungen begleiten. Unabhängig davon, ob Sie Untertitel in Echtzeit oder aus einer Aufzeichnung anzeigen, können Sie das Speech SDK oder die Speech CLI verwenden, um die Sprache zu erkennen und Transkriptionen abzurufen. Für vorab aufgezeichnete Videos können Sie außerdem die Batch-Transkription-API verwenden.
Untertitel-Ausgabeformat
Der Speech-Dienst unterstützt Ausgabeformate wie SRT (SubRip Text) und WebVTT (Web Video Text Tracks). Diese können in den meisten Videoplayern wie VLC geladen werden und fügen Ihrem Video die Untertitel automatisch hinzu.
Tipp
Der Speech-Dienst bietet Optionen für die Filterung von anstößigen Ausdrücken. Sie können angeben, ob anstößige Ausdrücke maskiert, entfernt oder angezeigt werden sollen.
Das Ausgabeformat für Zeitintervalle von SRT (SubRip Text) ist hh:mm:ss,fff
.
1
00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.
Das Ausgabeformat für Zeitintervalle von WebVTT (Web Video Text Tracks) ist hh:mm:ss.fff
.
WEBVTT
00:00:00.180 --> 00:00:03.230
Welcome to applied Mathematics course 201.
{
"ResultId": "8e89437b4b9349088a933f8db4ccc263",
"Duration": "00:00:03.0500000"
}
Audioeingabe an den Speech-Dienst
Verwenden Sie für Echtzeit-Untertitelung ein Mikrofon oder einen Audio-Eingabestrom anstelle von Dateieingabe. Beispiele für die Erkennung von Sprache aus einem Mikrofon finden Sie in der Schnellstartanleitung zur Spracherkennung und der Dokumentation Erkennen von Sprache. Weitere Informationen zum Streaming finden Sie unter Verwenden des Audioeingabestreams.
Zur Untertitelung einer Vorabaufzeichnung senden Sie die Dateieingabe an den Speech-Dienst. Weitere Informationen finden Sie unter Verwenden von komprimierten Eingabeaudiodaten.
Untertitel und Sprachsynchronisierung
Es ist sinnvoll, Untertitel mit der Audiospur für Sprache in Echtzeit oder aus Aufzeichnungen zu synchronisieren.
Der Speech-Dienst gibt den Offset und die Dauer der erkannten Sprache zurück.
- Offset: Der im Audiostream erkannte Zeitversatz, der als Dauer ausgedrückt wird. Der Offset wird in Takten gemessen, beginnend mit dem ersten Takt
0
(null), der dem ersten vom SDK verarbeiteten Byte an Audiodaten zugeordnet ist. Der Offset beginnt z. B. beim Starten der Erkennung, da das SDK die Verarbeitung des Audiostreams startet. Ein einzelner Takt stellt hundert Nanosekunden oder ein Zehnmillionstel einer Sekunde dar. - Dauer: Dauer der Äußerung, die erkannt wird. Die Dauer in Takten umfasst nicht nachfolgende oder führende Stille.
Weitere Informationen finden Sie unter Abrufen von Spracherkennungsergebnissen.
Abrufen von Teilergebnissen
Überlegen Sie, wann die Anzeige von Untertiteln beginnen soll und wie viele Wörter gleichzeitig angezeigt werden sollen. Die Ergebnisse der Spracherkennung können sich ändern, während die Erkennung einer Äußerung noch andauert. Für jedes Recognizing
-Ereignis werden Teilergebnisse zurückgegeben. Während der Verarbeitung jedes Worts führt der Speech-Dienst eine Neubewertung einer Äußerung im neuen Kontext durch und gibt wiederum das beste Ergebnis zurück. Das neue Ergebnis ist nicht zwangsläufig mit dem vorherigen Ergebnis identisch. Die vollständige und endgültige Transkription einer Äußerung wird mit dem Recognized
-Ereignis zurückgegeben.
Hinweis
Für Teilergebnisse steht keine Zeichensetzung zur Verfügung.
Bei der Untertitelung vorab aufgezeichneter Sprache oder in allen Fällen, in denen Latenz kein Problem darstellt, können Sie auf die vollständige Transkription jeder Äußerung warten, bevor Sie Wörter anzeigen. Angesichts des festen Offsets und der Dauer jedes Worts in einer Äußerung wissen Sie, wann nachfolgende Wörter im Tempo der Tonspur angezeigt werden sollen.
Die Untertitelung in Echtzeit bedingt demgegenüber Kompromisse in Bezug auf Latenz gegenüber Genauigkeit. Sie könnten den Text aus jedem Recognizing
-Ereignis zum frühest möglichen Zeitpunkt anzeigen. Wenn Sie jedoch eine gewisse Latenz akzeptieren können, können Sie die Genauigkeit der Untertitel verbessern, indem Sie den Text aus dem Recognized
-Ereignis anzeigen. Es gibt auch einen mittleren Bereich, der als „stabile Teilergebnisse“ bezeichnet wird.
Sie können anfordern, dass der Sprachdienst weniger Recognizing
-Ereignisse zurückgibt, die dafür genauer sind. Dies erfolgt durch Festlegen der SpeechServiceResponse_StablePartialResultThreshold
-Eigenschaft auf einen Wert zwischen 0
und 2147483647
. Der von Ihnen festgelegte Wert ist die Anzahl der Male, die ein Wort erkannt werden muss, bevor der Speech-Dienst ein Recognizing
-Ereignis zurückgibt. Wenn Sie beispielsweise den Eigenschaftswert von SpeechServiceResponse_StablePartialResultThreshold
auf 5
festlegen, gibt der Speech-Dienst die Teilergebnisse mit einem Recognizing
-Ereignis erst an Sie zurück, nachdem er ein Wort mindestens fünfmal erkannt hat.
speechConfig.SetProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig->SetProperty(PropertyId::SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.SetProperty(common.SpeechServiceResponseStablePartialResultThreshold, 5)
speechConfig.setProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.setProperty(sdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
[self.speechConfig setPropertyTo:5 byId:SPXSpeechServiceResponseStablePartialResultThreshold];
self.speechConfig!.setPropertyTo(5, by: SPXPropertyId.speechServiceResponseStablePartialResultThreshold)
speech_config.set_property(property_id = speechsdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, value = 5)
spx recognize --file caption.this.mp4 --format any --property SpeechServiceResponse_StablePartialResultThreshold=5 --output vtt file - --output srt file -
Das Anfordern stabilerer Teilergebnisse reduziert das „Flackern“ oder Ändern des Texts, kann jedoch die Wartezeit für zuverlässigere Ergebnisse erhöhen.
Beispiel für einen stabilen Teilschwellenwert
In der folgenden Erkennungssequenz ohne festgelegten stabilen Teilschwellenwert wird „Mathe“ als Wort erkannt, der endgültige Text lautet aber „Mathematik“. An einem anderen Punkt wird „Kurs 2“ erkannt, aber der endgültige Text lautet „Kurs 201“.
RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied math
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZING: Text=welcome to applied mathematics course 2
RECOGNIZING: Text=welcome to applied mathematics course 201
RECOGNIZED: Text=Welcome to applied Mathematics course 201.
Im vorherigen Beispiel verhielten sich die Transkriptionen ergänzend, und es wurde kein Text zurückgezogen. Aber in anderen Fällen kann sich herausstellen, dass die Teilergebnisse ungenau waren. In beiden Fällen können die instabilen Teilergebnisse beim Anzeigen als „Flackern“ wahrgenommen werden.
Wenn in diesem Beispiel der Schwellenwert für stabile Teilergebnisse auf 5
festgelegt wird, werden keine Wörter geändert oder zurückgesetzt.
RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZED: Text=Welcome to applied Mathematics course 201.
Sprachenerkennung
Wenn sich die Sprache im Audiostream möglicherweise ändert, verwenden Sie die kontinuierliche Sprachenerkennung. Bei der Sprachidentifikation werden anhand einer Liste unterstützter Sprachen die in der Audioquelle gesprochenen Sprachen identifiziert. Sie geben bis zu zehn mögliche Sprachen an, von denen mindestens eine in der Audiowiedergabe erwartet wird. Der Speech-Dienst gibt die Sprache mit der höchsten Wahrscheinlichkeit im Audio zurück.
Anpassungen zur Verbesserung der Genauigkeit
Eine Ausdrucksliste ist eine Liste mit Wörtern oder Ausdrücken, die Sie unmittelbar vor dem Starten der Spracherkennung übergeben. Das Hinzufügen eines Begriffs zu einer Begriffsliste erhöht seine Bedeutung und dadurch die Wahrscheinlichkeit, dass er erkannt wird.
Beispiele für Begriffe:
- Namen
- Geografische Orte
- Homonyme
- Branchen- oder organisationsspezifische Wörter oder Akronyme
Es gibt einige Situationen, in denen das Trainieren eines benutzerdefinierten Modells wahrscheinlich die beste Option darstellt, um die Genauigkeit zu verbessern. Beispiel: Beim Untertiteln von Orthodontievorträgen sollten Sie ein benutzerdefiniertes Modell mit den entsprechenden Domänendaten trainieren.