使用語音 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.outputtext分別對應至命令行自變數 --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

下一步