使用語音 CLI 執行批次作業
使用語音服務時的常見工作是批次作業。 在本文中,您將瞭解如何使用語音 CLI 執行批次語音轉換文字(語音辨識)、批次文字到語音轉換(語音合成)。 具體而言,您將了解如何:
- 在音訊檔案目錄上執行批次語音辨識
- 逐一查看
.tsv
檔案來執行批次語音合成
批次語音轉換文字 (語音辨識)
語音服務通常用來辨識來自音訊檔案的語音。 在此範例中,您會瞭解如何使用語音 CLI 逐一查看目錄,以擷取每個 .wav
檔案的辨識輸出。 旗 --files
標用來指向儲存音訊檔案的目錄,並使用通配符 *.wav
告訴語音 CLI 在每個擴展名 .wav
為 的檔案上執行辨識。 每個辨識檔案的輸出都會以索引 speech_output.tsv
標籤分隔值的形式寫入。
注意
自 --threads
變數也可以在下一節中用於 spx synthesize
命令,而可用的線程將取決於 CPU 及其目前的負載百分比。
spx recognize --files C:\your_wav_file_dir\*.wav --output file C:\output_dir\speech_output.tsv --threads 10
以下是輸出檔案結構的範例。
audio.input.id recognizer.session.started.sessionid recognizer.recognized.result.text
sample_1 07baa2f8d9fd4fbcb9faea451ce05475 A sample wave file.
sample_2 8f9b378f6d0b42f99522f1173492f013 Sample text synthesized.
批次文字到語音轉換(語音合成)
要執行批次文字轉語音,最簡單的方式是建立新的 .tsv
(定位字元分隔值) 檔案,並在語音 CLI 中使用 --foreach
命令。 您可以使用您慣用的文字編輯器來 .tsv
建立檔案,在此範例中,讓我們將其稱為 text_synthesis.tsv
:
重要
複製此文字文件的內容時,請確定您的檔案在檔案位置和文字之間有一個 製表 元而非空格。 有時候,從這個範例複製內容時,索引標籤會轉換成空格,導致 spx
命令在執行時失敗。
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.
接下來,您會執行命令以指向 text_synthesis.tsv
、在每個欄位上 text
執行合成,並將結果寫入對應的 audio.output
路徑做為 .wav
檔案。
spx synthesize --foreach in @C:\your\path\to\text_synthesis.tsv
此命令相當於針對檔案中的每個記錄執行spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav
。.tsv
要注意的幾個事項:
- 資料列標頭
audio.output
和text
分別對應至命令行自變數--audio output
和--text
。 之類的--audio output
多部分命令行自變數應該在檔案中格式化,不含空格、沒有前置虛線,以及分隔字串的句點,audio.output
例如 。 任何其他現有的命令行自變數都可以新增至檔案,因為有更多數據行使用此模式。 - 以這種方式格式化檔案時,不需要將其他自變數傳遞至
--foreach
。 - 請務必使用索引標籤隔 中的
.tsv
每個值。
不過,如果您有.tsv
類似下列範例的檔案,且具有不符合命令行自變數的數據行標頭:
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.
您可以使用呼叫中的 --foreach
下列語法,將這些功能變數名稱覆寫為正確的自變數。 此命令會發出與之前相同的呼叫。
spx synthesize --foreach audio.output;text in @C:\your\path\to\text_synthesis.tsv