これまでは以前作ったnmake用の簡単なMakefileで済ませていましたが、せっかく便利なVisualStudioの開発環境があるのですから、それを利用できるようにしてみました。
できるかぎり、ソースの改変なしに必要なアーカイブの展開だけでビルドできるようにしてみました。
興味がある方は、自己責任でお使いください。
↓↓↓ダウンロード↓↓↓
https://neu101.up.seesaa.net/etc/open_jtalk_v9_sln-1.01.zip
(追記 2010/09/26)
文字セットを変えられるようにちょっとだけ修正しました。pythonがインストールされている場合、expand.bat の先頭にある変数 CHARSET の値を変えると、pythonスクリプトで文字セットを自動的に変換する処理を加えました。
標準は shift_jis です。これを utf_8、euc_jp に変えられます。他の表記は受け付けません。
(追記終わり)
これは Visual C++ 2008向けのファイルです。Professional版、Express版で試しています。
Visual C++ 2010 Express での動作も確認しました。ただし変換ウィザードを使って変換の必要があります。またソースを2箇所編集する必要があります。mecabのソースの dictionary_rewriter.cpp 、viterbi.cpp の先頭のほうに #include <iterator> を挿入します。
なお、今回確認したプラットフォームは Windows7、32ビット版です。他の Windows だとまた違ってくるかもしれません。
さて、利用法です。
まず必要なものとして、Microsoft Visual C++ 2008 か Microsoft Visual C++ 2010 です。
無償のExpress版は次のリンクからダウンロード可能です。
VC++2008 - http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/
VC++2010 - http://www.microsoft.com/japan/msdn/vstudio/express/
それとアーカイブの展開用に 7-zip も必要です。同梱しているバッチファイルは7zipの存在を前提に書いています。
必要なものがそろったら、先のアーカイブを適当なところで展開します。すると4つのファイルが現れます。
open_jtalk_vc9_shift_jis-1.00.zip
expand.bat
testsjis.bat
test.txt
これらのファイルと同じところに Open JTalk の関連ファイルを4つダウンロードして展開せずに配置します。
まず、Open JTalk本体のソースコード、変換辞書、HTS音声
http://open-jtalk.sourceforge.net/
3つのファイルは、このページからそれぞれ次のリンクを開いてダウンロードします。
Open JTalk : Source Code
Dictionary for Open JTalk : Shift-JIS
HTS voice : Acoustic model
残りの hts_engine API は次のリンクからソースコードをダウンロードします。
http://hts-engine.sourceforge.net/
現在(2010/09/18)のファイル名は、次の通りです。
open_jtalk-1.01
open_jtalk_dic_shift_jis-1.00
hts_voice_nitech_jp_atr503_m001-1.01
hts_engine_API-1.03
バージョンが進んだり、ファイル名が変わった場合には、expand.bat や testsjis.bat 内の名前を修正します。
全てのファイルがそろったら、expand.bat を実行します。これでアーカイブファイルが展開され、ソリューションファイルやプロジェクトファイルも配置されます。
しばらく待って、このバッチファイルの実行が終わったら、open_jtalk フォルダ内に、open_jtalk.sln があるので、これをVC++で開きます。VC++がインストールされていれば、ダブルクリックで開きます。VC++を起動させた後、「ファイル」メニューの「開く」から、ソリューションを開いてもかまいません。
(※VC++2010の場合、このとき変換ウィザードが起動します。変換終了後、mecabのソースの dictionary_rewriter.cpp 、viterbi.cpp の2つのファイルの先頭部分に#include <iterator> の行を追加します。)
無事開くことができれば、あとはソリューション構成をReleaseにして、F7キーを押してソリューションのビルドを実行すれば、アーカイブを展開した場所に open_jtalk.exe が生成されます。
うまくビルドされていれば、 testsjis.bat を実行すると発音してくれます。text.txt の内容を書き換えると、別なことをしゃべります。
実験的ですがDLLも作成できるようにしています。ソリューション構成をRelease_DLL、Debug_DLLにすると、DLL を使った open_jtalk.exe が生成されます。
ただこれはDLLを作る最初の一歩で、DLL化できるかソリューション構成を作って試しただけのものです。まだ実用的ではありません。少なくとも、構造体へのポインタが必要だという仕様は変えなければいけないでしょう。このままだと他のプログラミング言語からの利用が面倒です。所定のフォルダに音声データや辞書ファイルがあればそれを利用するとか、文字列で音声化するテキストを渡せるとか、そういうふうにしないと実用的にはならないでしょう。扱いやすいようにAquesTalkのDLLと全く同じ関数群を用意するとか、いっそのことSAPI5に対応させるとか、そうすると面白いかなと思っていますが、まだ何もしていません。