エージェントを気軽に作成,実行するためのツールとして Galatea Toolkitを用いて研究をしています.
Galatea Toolkitのページはこちら

以下で動作例や機能追加について述べています.
Visual C++ 6.0で,C:\galatea4win\engine\FSM\src\Resource.hを開く ---------------------------------- ..... ..... // Face /* const int DEF_WINDOW_WIDTH = 256; ←ここを変更 const int DEF_WINDOW_HEIGHT = 256; ←ここを変更 */ const int DEF_WINDOW_WIDTH = 512; たとえば… const int DEF_WINDOW_HEIGHT = 512; ..... ..... ---------------------------------- を変更.ビルドすると,fsm_mmi.exeができるので,これを利用する. (上記でキャプチャする場合は,左上の座標を[5,30],幅512,高さ512にすればうまく収まる)
■1■ 圧縮ファイルを適当なディレクトリで解凍してください. ファイルの中身は以下です. f_cfg.txt(設定サンプルファイル) ctrl_agent8_p1.bat(デフォルトのポートでの起動用バッチファイルの例) ctrl_agent8_p2.bat(ssmのポート10602,fsmのポート10702での起動用バッチファイルの例) ctrl_agent8.class sub_thread.class sub_thread_ready.class main_ctrl2.class ctrl_agent8.java sub_thread.java sub_thread_ready.java main_ctrl2.java red.bmp blue.bmp ■2■ 背景の動作確認のために,red.bmp,blue.bmpを使っています. 背景のディレクトリに2つの画像を入れて,config.txtを編集してください. (背景の制御が不必要な方は作業は必要ありません) 画像 C:\galatea4win\engine\FSM\backg\red.bmp C:\galatea4win\engine\FSM\backg\blue.bmp 設定ファイル C:\galatea4win\engine\FSM\data\config.txt # BackgroundFile: 背景の名前 背景のファイル名 (登録可能最大10個まで) BackgroundFile bg1 ../sample/BG/bg1.bmp BackgroundFile bg2 ../sample/BG/bg2.bmp BackgroundFile bg3 ../sample/BG/bg3.bmp BackgroundFile bg4 ../sample/BG/bg4.bmp BackgroundFile bg_white ../harashima/white.bmp BackgroundFile red ../backg/red.bmp ←追加 BackgroundFile blue ../backg/blue.bmp ←追加 ■3■ バッチファイル(ctrl_agent8_p1.batやctrl_agent8_p2.bat)の中身を 書き換えてください. your_homeには,javaのclassファイルがある場所を galatea_homeには,galateaのある場所を 入れてください. 例: set your_home=C:\work\galatea\test set galatea_home=C:\galatea4win ポート番号などを変更した場合以下を変更してください. (ただしgtalkは127.0.0.1以外は指定できません.gtalkとはポートは使わず, 標準出力でパラメータを受け取っているためです) java -classpath %your_home% ctrl_agent8 ウェイト %your_home%一時ファイル名 gtalk用IPアドレス gtalk用ポート番号 fsm用IPアドレス fsm用ポート番号 例: java -classpath %your_home% ctrl_agent8 6000 %your_home%\f1.txt 127.0.0.1 10600 127.0.0.1 10700 ■4■ f_cfg.txtを適宜編集してください. 書き方は, 一時ファイル名:キャラクタの名前,セリフ,表情,頭部X 頭部Y 頭部Z,視線X 視線Y 視線dur,背景指定:ウェイト (例) f1.txt:male01,テスト,ANGRY,5 5 5,5 5 0,red:2900 f1.txt:male01,テストです,ANGRY,5 5 5,5 5 0,blue:900 f2.txt:male01,テストです,HAPPY,-3 -3 -3,3 3 0,red:2900 f2.txt:male01,テストです,HAPPY,-3 -3 -3,3 3 0,blue:900 ウェイトに合わせて,順次一時ファイルが作成されます. 一時ファイル名をバッチファイルと合わせることで時間制御ができるようになります. ■5■ バッチファイルをダブルクリックして実行してください. 次にコマンドプロンプトから > java main_ctrl2 を実行してください.これで上記のf_cfg.txtに合わせて一時ファイルが作成されます. 一時ファイルをもとに,それぞれのポートでgtalk,fsmが動作します.
下記の表情の表出調整のタグを追加するためのソースは こちらです.
FSMのソースを変更し,以下のパラメータを使えるようにしました.
<output type="agent" event="face_exp"> <![CDATA[ <param name="expression">HAPPY</param> <param name="stg">10</param> ←強さの設定,ここでは10%としている <param name="dur">50000</param> ←長さ(ミリ秒?) ]]> </output>
-----config.txt----------------------------------------------------------- .......... # 瞬き # FaceMotBlink 瞬きに要する時間[ms] (登録最大可能数:無限) # IDは上から順番に1, 2, 3 ... と自動設定されます。 FaceMotBlink 100 FaceMotBlink 200 FaceMotBlink 400 FaceMotBlink 600 ..... ..... # Autonomous定義ファイル等を入れる場所 # AutonomousBlink: 出現確率[(整数)%] 瞬きパターン (登録最大可能数:無限) # IDは上から順番に1, 2, 3 ... と自動設定されます。 # 瞬きパターンはFaceMotBlinkで定義したパターンを入力してください AutonomousBlink 1 1 AutonomousBlink 1 2 AutonomousBlink 1 3 AutonomousBlink 1 4 AutonomousBlink 2 1 AutonomousBlink 2 3 ..... -----config.txt-----------------------------------------------------------config.txt内では,
FaceMotBlink 100 ← 瞬きパターンのID1(1行目) FaceMotBlink 200 ← 瞬きパターンのID2(2行目) FaceMotBlink 400 ← 瞬きパターンのID3(3行目) FaceMotBlink 600 ← 瞬きパターンのID4(4行目) AutonomousBlink 1 1 1%の出現確率 瞬きパターンのID1を指定 ← これがBLINKパターンのID1(1行目) AutonomousBlink 10 2 10%の出現確率 瞬きパターンのID2を指定 ← これがBLINKパターンのID2(2行目) AutonomousBlink 11 3 11%の出現確率 瞬きパターンのID3を指定 ← これがBLINKパターンのID3(3行目)…という関係になっています. xislファイルでは,以下のように記述します.
-----XXXXXX.xislファイル内------------------------------------------------ ..... <output type="agent" event="autonomous"> <![CDATA[ <param name="action">BLINK</param> <param name="id">1</param> ← これがBLINKパターンのID1(1行目) ]]> </output> ..... -----XXXXXX.xislファイル内------------------------------------------------
最近では, エージェントの視線の向きに興味があり, エージェントの視線を表現できるツールとして Galatea Toolkitを用い, 2つのエージェントを用いて対話させるデモを作ってみました.
Galatea Toolkitのページはこちら

yuasa_galatea_test2.mpg (22.8MB)
(2つのエージェントを表示すると動作が重くなってしまい, 音声がずれて発声されたり,最後まで動かなかったりしてしまいました. キャプチャ時にも音声がずれてしまったので動画作成時に調整してあります.)
2つのエージェントによる対話処理の作成するために, 以下の作業をしました.下記の視線の回転,頭部の回転,背景の変更のタグを追加するための ソースは こちら です.
<output type="agent" event="eye_rot"> <![CDATA[ <param name="dx">5</param> <param name="dy">-15</param> <param name="dur">5000</param> ]]> </output>
<output type="agent" event="head_rot_abs"> <![CDATA[ <param name="dx">3</param> <param name="dy">-12</param> <param name="dz">3</param> ]]> </output>
<output type="agent" event="character"> <![CDATA[ <param name="mask">yuasa01</param> ]]> </output>

(元画像)
<output type="agent" event="background"> <![CDATA[ <param name="img">bg5</param> ]]> </output>

(背景画像)

(手書きの画像)

(以下は以前のものです)
目や口の部分の調整が十分ではありませんが, とりあえず動くか試してみました.

yuasa_galatea_test.mpg (4.7MB)
顔の向きと目玉の向きについて, 実装されてなかったので,ソースを書き換えました. (最後に右側をきちんと向いていることに注目です)
タグを使って背景も変えられるはずですが, これも実装されていません(ソースを変更しようと思ってます).
「擬人化音声対話エージェント基本ソフトウェア Galatea Toolkit」 の著作権は以下に帰属します. Copyright(c) 2000-2003 情報処理振興事業協会(IPA) Copyright(c) 2000-2003 京都高度技術研究所(ASTEM)