Speech CLI を使ってバッチ操作を実行する
音声サービスを使用する場合の一般的なタスクは、バッチ操作です。 この記事では、Speech CLI を使用して、バッチ音声テキスト変換 (音声認識)、バッチ テキスト読み上げ (音声合成) を行う方法について説明します。 具体的には、次の方法を学習します。
- オーディオ ファイルのディレクトリでバッチ音声認識を実行する
.tsv
ファイルを反復処理してバッチ音声合成を実行する
バッチ音声テキスト変換 (音声認識)
音声サービスは、多くの場合、オーディオ ファイルから音声を認識するために使用されます。 この例では、Speech CLI を使用してディレクトリを反復処理し、各 .wav
ファイルの認識出力をキャプチャする方法について説明します。 --files
フラグを使用してオーディオ ファイルが格納されているディレクトリを指定し、ワイルドカード *.wav
を使用して拡張子が .wav
であるすべてのファイルに対して認識を実行するように Speech CLI に指示します。 各認識ファイルの出力は、タブ区切り値として speech_output.tsv
に書き込まれます。
Note
--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
(タブ区切り値) ファイルを作成し、Speech 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
このコマンドは、.tsv
ファイルの各レコードに対して spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav
を実行するのと同じです。
注意すべき点がいくつかあります。
- 列ヘッダーの
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