Galatea DMに同梱されているサブモジュールについて説明する.これらは,Perl, Ruby, Javaで記述されており,改変は容易である.
Galatea DMはこれらの追加サブモジュールを利用している.Galatea DMの更新に伴って,追加サブモジュールも変更が行なわれる.
Galatea DMのAM-MCLはRubyにより独自に実装されている.(Modules/AM-MCL.rb)
Perl版のAM-MCLと同等のset Speak命令がVoiceXMLのprompt要素などで使用される.
また,以下の命令が拡張されており,Galatea VoiceXMLのnative要素で使用できる.
to @AM-MCL set AutoEmotionSpeak = 1 to @AM-MCL set AutoMove = 1 to @AM-MCL set AutoGaze = 0 to @AM-MCL set Mask = woman01 HAPPY 100 0 0 0
Galatea DMのFS-MCLは複数の種類のエージェントの顔や背景の種類,連続的な動きなどを情報を管理するサブモジュールであり,Javaで実装されている.
$ java -cp ../lib/gdm.jar galatea.BehaviorManager -c ./gdm.conf
以下の命令が用意されており,Galatea VoiceXMLのnative要素で使用できる.
to @FS-MCL set Background = man02 bg1 to @FS-MCL set Mask = man02 to @FS-MCL set HeadMoveRatio = 1.0 1.0 to @FS-MCL set Emotion = FEARED 30 to @FS-MCL set Rot = -2 -1 0 to @FS-MCL set EmotionNow = FEARED 30 to @FS-MCL set RotNow = -2 -1 0
SNDは,指定された音声ファイルを再生するサブモジュールである.VoiceXMLにおけるaudio要素を実現するために使用される.
このモジュールの仕様は将来変更される可能性がある.
SNDは内部処理で/usr/bin/play
を使用している.
コマンドset Play
の値にファイル名の絶対パスを与える.再生開始と再生終了の時点でtell start
およびtell end
を送信する.
to @SND set Play = /usr/share/sndconfig/sample.au From @SND tell start /usr/share/sndconfig/sample.au From @SND tell end /usr/share/sndconfig/sample.au
PARは,音声合成の出力開始と同期して,複数のコマンドを逐次実行するサブモジュールである.
このモジュールの仕様は将来変更される可能性がある.
コマンドset Init = 1
は,出力リストの初期化を行なう.
コマンドset Cmd = sleep XXX
は,出力リストの末尾に,一定時間のウェイトを行なう命令を追加する.
コマンドset Cmd = to @XXX XXX
は,出力リストの末尾に,他のサブモジュールに対する出力命令を追加する.
出力リストの実行は,SSMからのSSMSpeak.stat = SPEAKING
を受信することによって開始する.
to @PAR set Init = 1 to @PAR set Cmd = sleep 1.0 to @PAR set Cmd = to @FSM set FaceExp = HAPPY 1 100 1000 to @PAR set Cmd = sleep 1.4 to @PAR set Cmd = to @FSM set FaceExp = SAD 1 100 1000 to @PAR set Cmd = sleep 2.0 to @PAR set Cmd = to @FSM set FaceMot = NOD 1 to @AM-MCL set Speak = 私には、うれしいことも、悲しいことも、いろいろあります。
Galatea DMのSRMはオリジナル版から独自に修正している.
主な修正点:
SIMは,音声入力SRMからの認識結果(XML)をDMが受理できるイベントに変換するサブモジュールである.
tellメッセージは3桁のステータスコードを返す.
SIMの主要な命令は次の通り.
to @SIM set SRM_Recog = START to @SIM set SRM_Julian = mictest to @SIM set SRM_XML_File = mictest.xml to @SIM set SRM_XML_String = <grammar> xxxx : DMが使用 to @SIM set CompileGrammar = .... to @SIM set ButtonPressed = はい to @SIM set SlotAlias = RESET to @SIM set DialogName = form1
Galatea DMのDIMはユーザとエージェントの発話状態に応じてまばたきやアイコンタクトの制御を行うための実験的なモジュールであり,Rubyで実装されている.(DIM.rb)以下の命令が用意されている.
to @DIM set AgentSpeakState = 0 to @DIM set UserSpeakState = 0 to @DIM set Busy = 0 to @DIM set AutoGaze = 0