• このエントリーをはてなブックマークに追加

はじめに

MMDAgentとiRemoconを組み合わせてみたらなかなか良かったので、まとめてみる。

 

ミクさんに登場してもらうまで

こちらのサイトを参考にしました。
サクライロニガワライ雑記

まずは以下のサイトから、BinaryPackageをダウンロード。
http://www.mmdagent.jp/

MMDAgent.exeを起動すると、メイちゃんが現れるので「こんにちは」と声をかけてみる。

image

これが成功したら、初音ミクのモデルと声を設定する。

モデル

以下のサイトから選択。たくさんあるけど、自分は[初音ミク@七葉1052式]を落としてきた。
http://www6.atwiki.jp/vpvpwiki/pages/298.html

落としてきたモデルは、C:/xxx/MMDAgent/Model/配下にフォルダを作成して配置する。
MMDAgent.fstを開き、140行目あたりの # 0011-0020 Initialization からの
11から下を編集して、モデルファイル(xxx.pmd)を指定する。

ついでに、その下にある2行を消せば、キャラクターの周りのメニューも消えるので、
消したほうが良い。

11 14 MODEL_EVENT_ADD|bootscreen MODEL_ADD|mei|Model\miku\初音ミク@七葉1052式.pmd|0.0,0.0,-14.0
#12 13 MODEL_ADD|menu|Accessory\menu\menu.pmd|0.0,-4.5,0.0|0.0,0.0,0.0|mei
#13 14 MOTION_ADD|menu|rotate|Motion\menu_rotation\menu_rotation.vmd|FULL|LOOP|OFF
14 15 STAGE|Stage\building2\floor.bmp,Stage\building2\background.bmp

再び、MMDAgent.exeを起動して、ミクちゃんにご対面。

image

以下のサイトから、音響モデル(TYPE-a/TYPE-bどちらでもよい)を落とす。
MMDAgent & Project-NAIP wiki

Voice配下にあるフォルダに、落としてきた音声データを上書きする。

コマンド実行をお願いするまで

こちらのサイトを参考にしました。
MMDAgentとPC-OP-RS1で実現するリモコンの音声操作-ナレッジエース

会話からコマンドを実行するには、MMDAgent.fstにシナリオを定義する。
たとえば、電卓を起動して欲しい場合は、こんな感じで記述する。

1 3 RECOG_EVENT_STOP|ミク SYNTH_START|mei|mei_voice_normal|はい。
232 260 SYNTH_START|mei|mei_voice_normal|電卓つけます。
260 2 SYNTH_EVENT_STOP|mei

はじめに、[ミク]と呼びかけて、はいといってくれたら、次の命令を実行させることがミソ。

また、コマンドを実行するには、EXECUTEマクロをつかう。
EXECUTE|(実行したいコマンド)で任意のコマンドを実行できるので、
ここで、後述するTeraTerm用のTTLファイルを指定して、iRemoconへコマンドを送るのだ。

3 184 RECOG_EVENT_STOP|電気つけて EXECUTE|C:\MMDAgent\Macro\LightsOn.ttl
184 200 SYNTH_START|mei|mei_voice_normal|電気つけます。

しかし、これだけでは、多分反応しないだろう。いろいろと言葉を知りすぎているために、
誤認識してしまう。なので、もっとおバカになってもらう。

Julius記述文法の設定

ミクの耳には、オープンソースである音声認識ソフト、Juliusが使われている。
なので、Juliusの記述文法にしたがって、言葉を定義して教える。
まずは、MMDAgent配下にgrammarフォルダをつくって、こんな感じで定義ファイルを作成。

call.grammar

S : NS_B CALL NS_E

call.voca

% CALL ミク m i k u
こんにちは k o N n i ch i w a
ありがとう a r i g a t o u
なんでもない n a N d e m o n a i
かわいい k a w a i i
みくみくにして m i k u m i k u n i sh i t e
電卓つけて   d e N t a k u t u k e t e
電気つけて   d e N k i k u t u k e t e
電気消して   d e N k i k e sh i t e
% NOISE
<sp>sp
% NS_B <s>silB
% NS_E <s>silE

作成した2つのファイルは、

Julius 3.5.2に付随しているmkdfa.plを落としてきてコンパイルする。

http://sourceforge.jp/projects/julius/downloads/21175/julius-3.5.2-win32bin.zip/

./mkdfa.pl call

苦労したこのエントリも参考にしてください。
cygwin 環境で mkdfa.plが動作しない
最後に、/MMDAgent/AppData/Julius配下にjconf.txtというファイルがあるので、
文末に以下の行を追加。

-nogram
-gram "C:\MMDAgent\grammar\call"

-nogramで、すでに登録されている単語をすべて忘れて、
次の行で、今回自分が用意した単語と文法を教えてあげる。
(詳しくはココ)JuliusBook 第7章 言語モデル

iRemoconの設定

まずはiRemoconの調達を。

 

iRemoconに通信するTTLファイルの作り方は以下を参照(結構たいへんなので、説明は割愛)iRemocon 音声操作設定

作成したTTLファイルを音声から実行すると、ミクさんが電気をつけてくれます。

まとめ

5月ごろに以下の動画をみて、自分も家のオートメーション化をしてみたけれど、
ようやく完成な気がした。
MMDAgentは、これからもまだまだ可能性が広がっていきそうだ。
日本製のオープンソースなので、Siriに負けずに頑張って欲しい。