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.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

次のステップ