JTalkをVS2008でご無沙汰しています。久しぶりに書いてます。JTalkというのを見つけたので、ちょっと試してみました。license)の音声合成システムです。linux向けのものですが、Windowsでもビルドし実行することができます。前者はタイトル通りVisualStudio2005でのコンパイル方法が、後者ではUbuntuとWindowsのCygwin環境での動作例が解説されています。今回は、手元にVS2008があるので、それでコンパイルしてみました。上記ページと同じwavファイルが作れました。ソースを手を加えずにビルドするための単純なものです。環境でもうまくいきました。それから現在Microsoftで評価版として公開されているVisualStudio2010RCをインストールした環境でも、ソースに2行書き加えればコンパイルできることも確認できました。それでは、VS2008向けの手順です。分かりやすいようにバッチファイルの内容も書いておきます。必要なのは以下の4つのファイルです。hts_engine_API-1.03.tar.gzhts_voice_nitech_jp_atr503_m001-1.01.tar.gzopen_jtalk_dic_shift_jis-1.00.tar.gzopen_jtalk-1.01.tar.gz最初の一つは次のページから、http://hts-engine.sourceforge.net/残りの3つのは次のページからhttp://open-jtalk.sourceforge.net/持ってきます。適当な新しいフォルダを作って、この4つのファイルをその中に入れます。同じフォルダに入れます。これらの5つのファイルを圧縮解凍ソフトの手順に従って展開します。7-zipを入れていれば、次のようにしてコマンドラインで展開します。(7-zipのインストール先が違うときは書き換えてください。open_jtalk-1.01_vs_makefile.zip展開がすんだら、次のビルド用のコマンドを実行します。..最初の行がVisualStudio2008の環境設定です。そのあとhts_engine_APIをビルドして、そのあとopen_jtalkを作ります。open_jtalk.exeがアーカイブを入れたフォルダに出来上がります。何でもいいのですが、比較して確認できるように先人を踏襲します。次の内容のシフトJIS形式でtest.txtと名前をつけて保存します。新成人のみなさん、おめでとうございます。私も成人したころを懐かしく思い出します。作り、同じフォルダに入れます。実行すると、音声が出力されるはずです。フォルダには音声ファイルとログファイルができているはずです。上記サイトと同じファイルができたでしょうか?音声をパソコンから出力せずに音声ファイルだけを作る改造の仕方はそのページに書いてあります。リークの可能性という警告がでてしまいます。音を出してみるのが目的だったので、今回はそのままにしています。本格的に使うときには修正が必要かもしれません。利用するようにはできていないようです。生成するようにもできますが、今回は生成しないようにしています。商用の音声合成に比べれば物足りなさを感じますが、フリーでここまでできれば十分だと思います。開発された方々に感謝します。dll化したり、SAPI5で使えるようにしたり、いろいろできたらいいですね。興味があるのがLinuxでの利用です。いままでも、制限付きのAquesTalkの試用版を使ったり、MBROLAを使ったりすれば、お金をかけずにLinuxでの日本語の発音もできたのですが、ソースが公開されていなかったり、ライセンス的にいろいろ面倒でした。このOpen_JTalkはオープンソースということなのでいろいろ自由にやれそうです。最後に、次は参考までに現在評価版として入手できるVS2010RCでのビルド手順です。ファイルの展開までは上記とまったく同じです。このままmakeしても途中で止まってしまいます。挿入すればいいようです。2つのファイルを修正します。|2010年02月28日PythonでMBROLAを使って日本語をしゃべらせるMBROLAというシステムを使って日本語をしゃべらせるスクリプトの紹介です。MBROLAはあらゆるプラットフォームに対応していますが、このスクリプトはWindows限定です。MBROLAというものがあるのを知って、「日本語を音素に分解してくれるPythonスクリプト」というエントリーを書いたのがもう2年以上前になります。pythonでも似たようなことができないかと思って調べて書いたものです。このときは音素に分解するだけで満足してしまって、作業を止めてしまったのですが、最近になって音声出力の部分を完成させてみようという気になりました。完全な形ではないのですが、とりあえずしゃべるようになったので公開しておきます。現時点では音声の停止ができない、音量などのパラメータの変更ができないなど、まだ基本的な機能もできていないのですが、単独で日本語をしゃべってくれるようになりました。それから今回の作業で2年前の変換スクリプトに数値を正しく読まないなどの問題があったので、そこらへんも修正しておきました。・日本語を棒読みしてくれます。・数値も読んでくれます。・ユーザー辞書で特殊な読み方を登録できます。・音声ファイル(wav)を作成できます。・音声の停止や、前の声を強制的に終わらせて発音したり、キューに音声をためて発音させたりする機能もほしい。・抑揚が表現できればいい。その暁にはUnidicのアクセント情報も利用できればいい。MeCabを使っているのに、品詞情報を利用しない手はない。・記号の読みの抑制や、辞書変換の抑制などもパラメータで制御できるようにできればいい。・英語音声で英単語も読めるといい。仕組み日本語文字列をMeCabを使って、仮名書きに変換します。これをMBROLAが処理できるPHO形式に変換します。これをpho2wav.pydを使ってmbrola.dllの関数を呼び出し、音声ファイルに変換します。変換された音声ファイルを再生し出力します。必要なものこのスクリプトを利用するには以下のものが必要です。リンクをクリックするとダウンロードが始まります。ダウンロード後インストールしておきます。voices」リンクを開きます。」リンクをクリックすると日本語音声データベースのダウンロードが始まります。binaryのリストの中のPC/Windowsリンクを開きます。Windows」リンクをクリックするとWindows向けパッケージのダウンロードが始まります。MbrolaToolsを実行し、インストールします。jp2のzipファイルはあとで使います。MS-Windows」の下にある「ダウンロード」リンクをクリックするとダウンロードが始まります。ダウンロード後インストールしておきます。インストールするとき文字コードの選択画面でSJISを選択します。・Windows用MeCabをPythonから利用するためのパッケージ(今回ビルドしてみました)mecab-python-0.98.win32-py2.6.exeダウンロード後インストールしておきます。利用しても問題無いと思います。そちらの方がpythonやmecabのバージョンに煩わされなくていいかもしれません。利用するスクリプトと同じフォルダに置いて使ってください。PythonのLIBフォルダに放り込んでも使えると思います。mmttsmmtts.set_rate(3.0)mmtts.set_pitch(1.0)mmtts.set_volume(1.0)mmtts.speak('こんにちは')音声を出力する関数はspeak(str)です。set_rate(num)、set_pitch(num)、set_volume(num)では小数点数で標準状態との比を指定します。それぞれ文字列を指定すると、それを指定した名前のWAVファイルやPHOファイルに変換してくれます。いう名前のファイルを探して読み上げるようにしています。ダブルクリックをしてみてください。細かな説明は次回にします。(06/28)OpenJTalkの共有ライブラリを作ってみました。追加しました(03/14)点字タイプ入力ソフトに、テンキー点字入力機能を追加しました(11/13)OpenJTalkの共有ライブラリを作ってみました。2.0QRコードSeesaaブログ。