2010年09月18日

Open JTalk の VC++2008 用ソリューションファイルを作ってみた。

Open JTalk を Windows環境でビルドしやすいように、ソリューションファイルとプロジェクトファイルを作りました。
これまでは以前作った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に対応させるとか、そうすると面白いかなと思っていますが、まだ何もしていません。


posted by takayan at 21:48 | Comment(4) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年09月20日

Microsoft Speech Platform が出てた。

最近、Windows 関連の情報を全然チェックしていなかったので、今頃になって、Microsoft Speech Platform が出ていたことを知りました。
昨日 SAPI5 のことを久しぶりに思い出して、完全なオープンソースの SAPI5 日本語音声というのは、ちょっとやり甲斐がある仕事だなと思っていましたが、これを見つけてこの気持ちは消えてしまいました。

新しい音声合成システム Microsoft Speech Platform には、ちゃんと日本語音声が用意されていました。いままでこれがないことで、どれだけ困っていたことか。Fire Vox で SAPI4 の日本語音声が使えるようにするために、XPCOMの勉強をしたり、なんかもうほんと苦労しました。

無料でインストールできる日本語の合成音声があれば、ソフトを作る側はほんとに楽になります。Aquestalk の登場で爆発的に改善されましたが、今後標準になるだろう Windows の音声合成のシステムで最初から日本語が用意されているというのは、ほんとに素晴らしいことです。欲を言えば、インストーラが日本語になりインストールがもっと楽になってくれるといいですね。将来、 iOS のようにインストールさえせずに設定画面でチェックを入れるだけで使えるようになれば、もっといいですけど。

日本語音声を使えるようにするには、次の二つのファイルをダウンロードし、インストールする必要があります。

次のページから、Microsoft Speech Platform - Server Runtime 。
Download details: Microsoft Speech Platform - Server Runtime (Version 10.2)
プラットフォームに合わせて、下記のどちらかをダウンロードし、インストール。
x64\SpeechPlatformRuntime.msi
x86\SpeechPlatformRuntime.msi

次のページから、日本語音声 MSSpeech_TTS_ja-JP_Haruka.msi を探して、ダウンロードし、インストール。
Download details: Microsoft Speech Platform - Server Runtime Languages (Version 10.2)


開発者は、さらに次の Microsoft Speech Platform - Software Development Kit (SDK) も。
Download details: Microsoft Speech Platform - Software Development Kit (SDK) (Version 10.2)


詳しいインストールの仕方は、既に詳しい記事がいくつか書かれているので、そちらを見てください。

特に、aさんも紹介してくれたこのサイトの記事は、とても詳しく書かれています。
Microsoft Speech Platform の日本語音声合成エンジン - 電脳スピーチ blog
インストールできたら、ここで公開されている spcbght.bat で試してみましょう。入力文字の読み上げから音声ファイルの作成までたいていのことができます。

ただし、これは10.1用の記事で、記事の中にもあるように現在のバージョンは10.2です。Microsoft Speech Platform 10.2 - 電脳スピーチ blog

それから、読み上げソフトの SofTalk が2010.08.31に Microsoft Speech Platform に対応していました。最近 Aquestalk2 にも対応しました。
SofTalk - トップページ



SDKの中の sapi.h をsapi5のものと見比べてみると、sapi5からバージョンアップされたもの以外の何物でもないのがわかります。よく見ると、sapi.h内で_SAPI_VER が0x055に定義されていて、16進数ですが、これは sapi5.5 を意味していると考えて差し支えないでしょう。
それでも、SAPI5 のようにコントロールパネルで操作できないし、内部の名前もいくつか違っているので、sapi5のシリーズの延長線上にある別物という位置づけなのでしょう。プログラムを作る側としては、sapi5ととてもよく似ているので、新しいことを覚えなくてすむため、移行や併用が簡単にできるので、少なくともその点だけはありがたいです。


posted by takayan at 00:40 | Comment(13) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

プライミーバル 第3章 第8話「絶望の世界」

第3章のことを書くのは初めてですが、しっかり楽しんで見てました。ただ第3章は10話もあるんで、書き出したら大変だろうなと思って、感想を書くのが億劫になっていました。
もう8話が終わってしまったので、残すは2話だけです。さあ、どうな最終回を迎えるのでしょうか。

8話はとにかく見ていて、アビーの弟がもうたまらなく、うざくてうざくて、こちらの感情を逆撫でてきます。姉のアビーのほうも、冷静な判断ができなくなって、これほどアビーを見ていてイラついた回はないです。みんな命がけで弟を助け出すのですが、その助けられた後の弟の態度とかも最悪で、もうむかついてきて、もうお前が次食われちゃえと思わずにはいられなくなってしまいます。でもそれもこれも、この物語の中での最大のイベントであるコナーとアビーの初キスのための壮大な演出だったわけですね。終わりよければ全てよしって感じです。キスのきっかけは弟が生き残ってコナーについての助言を姉にしてくれたからですものね。そもそも弟が死んじゃったら、こんな場面はありえませんものね。見終わってしまうと、あんな弟でも生き残ってくれて、ほんとによかったねと思えてくるから不思議です。

さて、未来の絶望の世界で見かけたあの女はいったい何者なのだろうか。もちろんどう考えても、残り2話を盛り上げてくれる鍵を握る女なのでしょう。すでに最終回まで日本で放送されてしまったわけですから、ネタばれはいたるところに転がっています。初見の人はこんなブログの記事をやたら読んでいると絶対損をしますよ。恐竜の登場よりも、いろいろ意表を衝いて驚かせてくれるのが、「プライミーバル」の真骨頂ですからね。白紙の状態で見るに限ります。


それはそうと、先日、新作の方の「タイタンの戦い」を見たら、プライミーバルのあの人が出てました。本編見ててもぜんぜん気付かなかったのですが、特典映像にあるメイキングで新リーダーのダニーが撮影裏話のインタビュー受けてました。プライミーバルのときと同じ、地も陽気な感じでした。


posted by takayan at 03:04 | Comment(0) | TrackBack(0) | プライミーバル | このブログの読者になる | 更新情報をチェックする