当記事では、AquesTalk テキスト音声合成ミドルウェアを利用して、PHPで日本語の文章・テキストを音声に変換する方法を紹介しています。
フォーム(form.html)
音声合成ソフト(convert.exe)
音声合成プログラム(convert.php)
form.htmlで日本語を入力し、convert.phpに渡します。
convert.phpはconvert.exeを実行して受け取ったテキストをwavファイルに変換します。
そしてconvert.phpは生成されたたwavファイルを出力するという流れです。
form.htmlというファイル名で日本語テキストを入力して送信するためのフォームを作成します。
送信先はconvert.phpとし、methodはpostとします。
<form action="convert.php" method="post">
<input type="text" name="text" />
<input type="submit" value="submit" />
</form>
こんな感じですね。
送信された文字列をconvert.phpで受け取ります。
そして、あとで作成する音声合成用のconvert.exeにパイプで渡します。
$text = $_POST['text'];
shell_exec("convert.exe " . $text);
次にconvert.exeを作成します。
このファイルはパイプで渡された文字列を音声(wav)ファイルに作成して特定のディレクトリ上に保存するという処理を行います。
今回は、「AquesTalk」というツールを利用します。
AquesTalkのサイトからダウンロードできます。
まずは、プログラミングガイドにサンプルコードが掲載されているので、Visual C++で記述します。
ビルドすると実行ファイルができるので、convert.exeという名前でconvert.phpと同じディレクトリに配置します。
これで、テキストを音声に変換し、作成されたwavファイルが特定のディレクトリに生成されるようになりました。
最後にwavファイルを出力します。
convert.phpに、wavファイルを出力するプログラムを記述するだけです。
生成されたファイルをダウンロードするリンクを張っても良いですし、クリック不要でダウンロードや自動再生しても良いです。
自動再生はWindowsMediaPlayer埋め込み用タグ自動生成スクリプトのツールを使用すると簡単です。