インフィニットループ 技術ブログ

2013年02月14日 (木)

著者 : matsui

ゆっくりボイスをしゃべらせるためのPHPプログラム「YukkuriTalk」を作成してみました

こんにちは、代表のmatsuiです。
弊社では、サーバの監視で異常を検知すると、
(ゆっくりの声で) ”○○のサーバが沈黙しました。○○のサーバが沈黙しました。各員戦闘配置についてください。”
といった、音声が流れます。(内容はプロジェクトによって異なり、上は戦争ゲームなのでこのようなアラートになっています)
Linux上からこういった”ゆっくりボイス”による発声を簡単に行えるためのツール「YukkuriTalk」を作成してみましたので、記事にしてみたいと思います。

ゆっくりボイスについて


ゆっくりボイスといえば、テキスト文章読み上げソフトSofTalkが有名ですが、その音声ライブラリには株式会社アクエストの「AquesTalk」が使用されています。YukkuriTalkも発声処理にこのライブラリを使用しています。
→ 株式会社アクエスト AquesTalk
注意しなければいけないのは、利用や開発にライセンスがいるということです。
営利を目的としない個人の利用の場合は、一定の条件のもとで無償で利用できるようです。
また開発ライセンスも、オンラインストアから安価に購入できます。
法人の場合は、同じく使用ライセンスをオンラインストアで購入したり、別途問い合わせての開発ライセンス購入が必要になります。
弊社と私はゆっくりが大好きなので、一式の法人および個人ライセンスを購入しましたが、とりあえず試してみたいという方は評価版がダウンロードできますので、ひとまずそちらを使うと良いと思います。
詳しくは上記サイトにライセンスというページがありますので、そちらをご覧ください。
また、Windows版とLinux版で微妙に声が異なります。
設定の問題なのかもしれませんが、私はよく分からず解決できませんでした。
Windows版の方が聞き慣れたゆっくりボイスで、可愛いらしく感じますので、こちらを使うことにしました。

必要なパッケージのインストール

Ubuntu12.10 日本語 Remixへのインストールを例に説明します。
前述の理由で、わざわざWindows用バイナリをWineを使って実行しています。
php5 : このプログラムはPHPで書かれており実行に必要です

$ sudo apt-get install php5-cli

Wine : Windows環境のexeやdllを利用するために必要です

$ sudo apt-get install mingw32
$ sudo apt-get install wine

MeCab : 漢字からひらがなへの変換に使用します

$ sudo apt-get install mecab libmecab-dev mecab-ipadic

インストール後、以下のコマンドを実行し、辞書をUTF-8に変換してください

$ sudo /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8

発声用の実行ファイル「AquesTalk.exe」を作る

テキストを受け取りWavファイルを出力するようなexeを作成します。
バイナリの配布には頒布ライセンスが必要なようなので、ここでは公開しておりません。ご自身で作成してください。
こちらのブログが参考になります。
→ ⊥=⊥ Wineでもゆっくりしていってね!!!
必要なライブラリやドキュメントはAquesTalkのページからダウンロードできます。
AquesTalk(2ではなく1)のWin版をダウンロードしてください。
コンパイルの実行例
上記ブログを参考にSampleTalk.cに発声プログラムを書き、AquesTalk.dll, AquesTalk.h, AquesTalk.libを同じディレクトリに置いた状態で、

$ i586-mingw32msvc-gcc SampleTalk.c AquesTalk.lib -o AquesTalk.exe

でコンパイルできます。
これで「AquesTalk.exe」が作成されました。このexeは次項で使用します。

実行方法

GitHubからプログラム本体をダウンロードします。
→ GitHub ketaiorg / YukkuriTalk

$ git clone https://github.com/ketaiorg/YukkuriTalk.git

実行プログラム本体の「yukkuritalk」と同じディレクトリに、前項で作成した「AquesTalk.exe」とダウンロードした「AquesTalk.dll」を置き、次のように実行します。

$ ./yukkuritalk "あいうえお"
[talked] (あいうえお)

実行すると[talkd]のように表示されて発声が行われます。

$ echo "かきくけこ" | ./yukkuritalk
[talked] (かきくけこ)

のように、パイプによる文字列渡しも可能です。

応用

いかがでしたでしょうか。
AquesTalkのHPで公開されているAqKanji2Koeを使ったり、SoftalkをWine上から実行すれば同様のことができるのかも知れませんが、試した限りうまく動作しなかったというのと、記号の読みなどが調整できるという点や、簡単に利用できるサンプルがあったという点から、今回はPHPによる再実装を選びました。
このソフトの使い道として、私は自宅で、「今日は何のゴミの日か」をしゃべらせることで、ゴミの出し忘れを軽減しています。
また朝の通勤前にGoogleカレンダーの今日の予定をしゃべらせ、ゆっくり秘書として活用しています。
Googleカレンダー上のデータを、発声のためテキストに落とすプログラムはこちらで公開しています。
これらを実行しつつ、パイプでyukkuritaikに食わせてやればOKです。
→ GitHub ketaiorg / gomi-gcal
→ GitHub ketaiorg / gcal2txt
みなさんもゆっくりボイスで癒やされて、ゆっくりとした生活を過ごしてみてはいかがでしょうか。

ブログ記事検索

このブログについて

このブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。 お仕事で使えるITネタを社員たちが発信します!