はじめに
MMDAgentとiRemoconを組み合わせてみたらなかなか良かったので、まとめてみる。
ミクさんに登場してもらうまで
こちらのサイトを参考にしました。
まずは以下のサイトから、BinaryPackageをダウンロード。
MMDAgent.exeを起動すると、メイちゃんが現れるので「こんにちは」と声をかけてみる。
これが成功したら、初音ミクのモデルと声を設定する。
モデル
以下のサイトから選択。たくさんあるけど、自分は[初音ミク@七葉1052式]を落としてきた。
https://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を起動して、ミクちゃんにご対面。
声
以下のサイトから、音響モデル(TYPE-a/TYPE-bどちらでもよい)を落とす。
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を落としてきてコンパイルする。
https://sourceforge.jp/projects/julius/downloads/21175/julius-3.5.2-win32bin.zip/
./mkdfa.pl call
苦労したこのエントリも参考にしてください。
最後に、/MMDAgent/AppData/Julius配下にjconf.txtというファイルがあるので、
文末に以下の行を追加。
-nogram
-gram "C:\MMDAgent\grammar\call"
-nogramで、すでに登録されている単語をすべて忘れて、 次の行で、今回自分が用意した単語と文法を教えてあげる。
(詳しくはココ)JuliusBook 第7章 言語モデル
iRemoconの設定
まずはiRemoconの調達を。
Glamo 【自宅や外出先から、お使いの家電をコントロールできる学習リモコンの決定版! 】 iRemocon(アイリモコン) IRM-01L
iRemoconに通信するTTLファイルの作り方は以下を参照(結構たいへんなので、説明は割愛)iRemocon 音声操作設定
作成したTTLファイルを音声から実行すると、ミクさんが電気をつけてくれます。
まとめ
5月ごろに以下の動画をみて、自分も家のオートメーション化をしてみたけれど、
ようやく完成な気がした。
MMDAgentは、これからもまだまだ可能性が広がっていきそうだ。
日本製のオープンソースなので、Siriに負けずに頑張って欲しい。