BSDでespeakを使用して、テキストを音声として出力しています。私の問題は、それを.mp3として受け取りたいのですが、運がほとんどないということです。出力をティーにパイプしてみましたが、サウンドを再生するだけでなく、stdoutでのみ機能すると思います。
何か案は?私の最後の手段は、ファイルを再生する代わりにファイルに保存できる独自のバージョンのespeakを再コンパイルすることです。
あなたはそれをwaveとして書き、それを次のように変換することができますffmpeg
:
espeak "HelloWorld" -w <file>.wav
またはパイプでffmpeg
espeak "HelloWorld" --stdout | ffmpeg -i pipe:0 output.mp3
ドキュメントから:
-w<wavefile>
音声出力を話すのではなくWAV形式のファイルに書き込みます。--stdout
音声出力を、話すのではなく、生成時にstdoutに書き込みます。データは、データのサンプルレートと形式を示すWAVファイルヘッダーで始まります。ヘッダーが生成されるときにデータの長さが不明であるため、長さフィールドはゼロに設定されます。
これらのオプションはどちらもWAVファイルを生成するように見えますが、ffmpegなどの別のプログラムがなくても簡単に変換できます。