- 2012-10-23 (火) 23:29
- 戯言
VOICEROID+ 民安ともえ買いました。
民安の声いいですねー。
有料ソフトだけあって、フリーのものよりは流暢に読み上げてくれます。
声的な面の話はネット探せばそこらにあるので、ソフト的な話をします。
声的には良いのですが、フロントエンドになっているソフトウェアが残念です。
基本的にはスタンドアロンでテキストをタイプ、もしくはコピー・アンド・ペーストされることしか想定されていません。
読子として利用するには、他のユーザアプリから呼び出しやすいようになっていて欲しいところですが、連携なんて全く考えてくれていません。
APIとか全く無いです。
UIの作りが面倒で、外部から操作しにくい
APIがなくてもGUIがある以上は、外部からGUIを操作するのが一般的な手法です。
Windows APIを使用して作成したGUI部品には、Windowハンドルというものが割り当てられています。
それを、Windows API関数のFindWindowなどで取得し、SendMessage関数を使ってテキストを書き換えたりボタンを押下させたりします。
つまりは、ユーザの代わりにプログラムにテキストを入力させて、再生ボタンを押させるわけです。
VOICEROID+のGUI、ボタンの押下は簡単に出来ますが、テキストの書き換えができません。
読み上げさせたい文字列を入力するテキストボックスは標準のGUI部品ではないみたいです。
なので、SendMessage関数でメッセージを送って書き換えることはできません。
キーの押下状態は受け付けるようなので、一度クリップボードにテキストを送信して、VOICEROID+のウィンドウにCtrl+V(貼り付け)キーを押下した情報を送信することで、なんとか読み上げさせたいテキストを送信することができます。
VOICEROID+を棒読みちゃんから呼び出すVoiceroidTalkPlusは、この方法をとっているようです。
VoiceroidTalkPlusを使ってて、クリップボードに読み上げた内容が勝手に入るのは、このあたりの操作の残骸です。
コピー後にすぐ元の状態に戻せば良いはずなんですが、やってないんですよね。
連携アプリを作るには有料のSDKが必要
メーカのホームページを見ていたら、AITalk SDKなるものを見つけました。
開発したAITalkなるソフトウェアに民安の声を付けたものがVOICEROID+という位置づけだと推測できます。
なので、正規の手段で他アプリと連携したり、民安声を呼び出すアプリなり作りたいならSDKを買うしか無いという感じではないかと思います。
見た感じ企業向けのSDKなので安くて数十万とかだと思います。
個人が遊びで手を出せるものではないですね。
他の方法を探る
とはいえ、標準の使いにくく、ほかアプリとも連携できない糞フロントエンドは嫌なので、何とかして使えるようにしたいですね。。。
考えられる手段としては
- DLLの仕様を解析してGUIを起動せずに直接操作する
理想的だが面倒、SDK販売しているライブラリなので、メーカがうるさいかも
DLL自体、エントリポイントが初期化関数のものしか見えないのである程度解析しないと使えなさそう - メモリを解析してわーいってやる
アプリのメモリを直接弄って操作すると、割と楽かもしれない
メモリの解析が面倒だし、アドレスがランダムだと位置を計算するのが面倒 - アプリがバイトコード+実行環境な感じなのでバイトコードを逆コンパイルする
探した感じ丁度いい逆コンパイラがないので駄目っぽい。
出来るならこれが一番良いかな。
暇があったらやってみたいですけど、忙しいから無理かなぁ。。。
連携さえ出来れば
もうちと値段を抑えて、ほかアプリと連携するAPI作れば売れると思うんだけどしてくれないですよね。。。
スポンサード リンク
- Newer: TeamSpeak3 棒読みちゃん読み上げプラグイン更新
- Older: ウォークマン用microUSBアダプタ