PHP 文章・テキストの合成、音声変換

テキストを音声に変換

はじめに

当記事では、AquesTalk テキスト音声合成ミドルウェアを利用して、PHPで日本語の文章・テキストを音声に変換する方法を紹介しています。

機能概要

  • ブラウザで日本語の入力し、サーバーに送信
  • サーバーは受け取った文字列を音声に変換し、wavファイルを返却
  • ブラウザは受け取ったwavファイルをダウンロード、または再生

作成ファイル

フォーム(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>

こんな感じですね。

PHPから音声合成ソフトをパイプ

送信された文字列を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ファイルを出力

最後にwavファイルを出力します。
convert.phpに、wavファイルを出力するプログラムを記述するだけです。

生成されたファイルをダウンロードするリンクを張っても良いですし、クリック不要でダウンロードや自動再生しても良いです。
自動再生はWindowsMediaPlayer埋め込み用タグ自動生成スクリプトのツールを使用すると簡単です。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る