Ausführen von Batchvorgängen mit der Speech-Befehlszeilenschnittstelle
Häufige Aufgaben bei der Verwendung des Speech-Dienstes sind Batchvorgänge. In diesem Artikel erfahren Sie, wie Sie eine Batchsprache mit Text (Spracherkennung), Batchtext zu Sprache (Sprachsynthese) mit der Speech CLI durchführen. Dabei lernen Sie insbesondere Folgendes:
- Ausführen der Spracherkennung für ein Verzeichnis mit Audiodateien
- Ausführen einer Batch-Sprachsynthese mittels Durchlaufen einer Datei vom Typ
.tsv
Batch-Spracherkennung (Sprache-in-Text)
Der Speech-Dienst wird häufig zur Erkennung von Sprache aus Audiodateien verwendet. In diesem Beispiel erfahren Sie, wie Sie ein Verzeichnis mithilfe der Speech CLI durchlaufen, um die Erkennungsausgabe für jede .wav
Datei zu erfassen. Mit dem Flag --files
wird auf das Verzeichnis verwiesen, in dem Audiodateien gespeichert sind, und mithilfe des Platzhalters *.wav
wird die Speech-Befehlszeilenschnittstelle angewiesen, die Erkennung für jede Datei mit der Erweiterung .wav
auszuführen. Die Ausgabe für die jeweilige Erkennungsdatei wird als durch Tabstopps getrennter Wert in speech_output.tsv
geschrieben.
Hinweis
Das --threads
-Argument kann außerdem im nächsten Abschnitt für spx synthesize
-Befehle verwendet werden, und die verfügbaren Threads hängen von der CPU und dem aktuellen Prozentsatz ihrer Auslastung ab.
spx recognize --files C:\your_wav_file_dir\*.wav --output file C:\output_dir\speech_output.tsv --threads 10
Hier ist ein Beispiel für die Ausgabedateistruktur.
audio.input.id recognizer.session.started.sessionid recognizer.recognized.result.text
sample_1 07baa2f8d9fd4fbcb9faea451ce05475 A sample wave file.
sample_2 8f9b378f6d0b42f99522f1173492f013 Sample text synthesized.
Batch-Sprachsynthese (Text-zu-Sprache)
Die einfachste Möglichkeit zum Ausführen einer Batch-Sprachsynthese besteht darin, eine neue Datei vom Typ .tsv
(tab-separated-value) zu erstellen und den Befehl --foreach
im Speech-CLI aufzurufen. Eine Datei vom Typ .tsv
kann mit einem beliebigen Text-Editor erstellt werden. In diesem Beispiel heißt die Datei text_synthesis.tsv
:
Wichtig
Achten Sie beim Kopieren des Inhalts dieser Textdatei darauf, dass sich Ihrer Datei zwischen dem Dateispeicherort und dem Text keine Leerzeichen befinden, sondern Tabstopps. Manchmal werden Tabstopps beim Kopieren des Inhalts aus diesem Beispiel in Leerzeichen konvertiert. Ist dies der Fall, kann der Befehl spx
nicht erfolgreich ausgeführt werden.
audio.output text
C:\batch_wav_output\wav_1.wav Sample text to synthesize.
C:\batch_wav_output\wav_2.wav Using the Speech CLI to run batch-synthesis.
C:\batch_wav_output\wav_3.wav Some more text to test capabilities.
Führen Sie als nächstes einen Befehl aus, um auf text_synthesis.tsv
zu verweisen, Synthese für jedes text
-Feld auszuführen und das Ergebnis unter dem entsprechenden audio.output
-Pfad als .wav
-Datei zu schreiben.
spx synthesize --foreach in @C:\your\path\to\text_synthesis.tsv
Dieser Befehl ist das Äquivalent zur Ausführung von spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav
für jeden Datensatz in der .tsv
-Datei.
Ein paar Dinge sind zu beachten:
- Die Spaltenüberschriften
audio.output
undtext
entsprechen dem Befehlszeilenargument--audio output
bzw.--text
. Mehrteilige Befehlszeilenargumente wie--audio output
müssen in der Datei ohne Leerzeichen, ohne führende Bindestriche und ohne Punkte zur Trennung von Zeichenfolgen formatiert werden (Beispiel:audio.output
). Alle anderen vorhandenen Befehlszeilenargumente können der Datei als weitere Spalten mit diesem Muster hinzugefügt werden. - Wenn die Datei auf diese Weise formatiert ist, müssen keine anderen Argumente an
--foreach
übergeben werden. - Achten Sie darauf, jeden Wert in der
.tsv
-Datei mit einem Tabstopp zu trennen.
Das folgende Beispiel zeigt dagegen eine Datei vom Typ .tsv
, deren Spaltenüberschriften nicht den Befehlszeilenargumenten entsprechen:
wav_path str_text
C:\batch_wav_output\wav_1.wav Sample text to synthesize.
C:\batch_wav_output\wav_2.wav Using the Speech CLI to run batch-synthesis.
C:\batch_wav_output\wav_3.wav Some more text to test capabilities.
Sie können diese Feldnamen mit den richtigen Argumenten überschreiben, sofern Sie dazu im --foreach
-Aufruf die folgende Syntax verwenden. Mit diesem Befehl wird derselbe Aufruf wie zuvor ausgeführt.
spx synthesize --foreach audio.output;text in @C:\your\path\to\text_synthesis.tsv