はじめに

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

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

こちらのサイトを参考にしました。

サクライロニガワライ雑記

まずは以下のサイトから、BinaryPackageをダウンロード。

https://www.mmdagent.jp/

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どちらでもよい)を落とす。

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を落としてきてコンパイルする。

https://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の調達を。

Glamo 【自宅や外出先から、お使いの家電をコントロールできる学習リモコンの決定版! 】 iRemocon(アイリモコン) IRM-01L

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

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

まとめ

5月ごろに以下の動画をみて、自分も家のオートメーション化をしてみたけれど、

ようやく完成な気がした。

MMDAgentは、これからもまだまだ可能性が広がっていきそうだ。

日本製のオープンソースなので、Siriに負けずに頑張って欲しい。