HAI シンポジウム 2013
Human-Agent Interaction Symposium 2013

P1

Web ベース MMI システムを実現するための JavaScript ライ
ブラリ MMI.js への対話割り込み機能の実装
Implementation of barge-in function on MMI.js : the JavaScript libraryrealizing Web based Multimodal Interaction system田中

遼1

桂田浩一 1

入部

百合絵 2 新田恒雄 1,3

Ryo Tanaka1, Kouichi Katsurada1, Yurie Iribe2, and Tsuneo Nitta1,3
1

豊橋技術科学大学
1
Toyohashi University ofTechnology

2

愛知県立大学2
Aichi PrefecturalUniversity

3

3

早稲田大学
Waseda University

Abstract: This paper provides barge-in function that is incorporated into a JavaScript library called“MMI.js” which enables to use multiple modalities on Web browsers. This library supports sequential
multimodal inputs/outputs, simultaneous multimodal inputs/outputs, alternative multimodalinputs/outputs, synchronization of multimodal inputs/outputs and gestures given by the dialogue agents.
By added the barge-in function, developers can construct multimodal interaction systems that can deal
with unintended inputs from user.

1. はじめに
近年，スマートフォンやタブレットの普及により，Siri[1]やしゃべってコンシェル[2]を始めとする対話エージェントの利用が活発になってきている．こうした対話エージェントを web アプリケーション開発者が容易に開発できるようにするため，筆者が所属する研究室では，これまでに Web ブラウザ上で動作するマルチモーダル対話システムを実現するためのJavaScript 用ライブラリ MMI.js[3]を提案してきた．
しかし MMI.js ではエージェントとの対話中に生じる割り込みに対応する機能を備えていなかった．そのためユーザの咄嗟の入力に対応する機能を対話エージェントに組み込むことができなかった．そこで
本論文では，MMI.js を改良し，対話割り込み機能を追加することによって，ユーザが不便さを感じない対話エージェントの開発を可能にする．
こうした割り込み機能はすでに音声対話を記述す
る言語 VoiceXML[4]やマルチモーダル対話を記述す
る言語 XISL[5]において，複数の対話タスク（本タスクと割り込み対話のタスク）を同時に受け付ける方法により実現されている．本研究ではこれらの技術を参考に，プログラム実行中の任意の場所で割り込みを発生させる事ができる機能を組み込むと共に，有効範囲の設定や，割り込み終了後の動作の指定につても記述できるよう MMI.js を拡張する．

43

以下では，まず先行研究である MMI.js の概要と特徴を説明した後に MMI.js の改良内容について述べる．

2. 先行研究
まず本論文で改良するライブラリのベースとなる
MMI.js について説明する．MMI.js は Web ブラウザ
上で動作するマルチモーダル対話システムを記述するための JavaScript 用ライブラリである．Web ブラウザがあれば動作するので，開発者はプラットフォームを気にする必要がなく，特別なソフトウェアのインストールなしに気軽に利用することができる．
MMI.js には主要な機能として逐次的，同時的，択一的なマルチモーダル入出力機能，マルチメディアコンテンツの同期制御機能，エージェントの制御機能が備えられている．本節ではこれらの機能について説明する．

2.1. マルチモーダル入出力機能
MMI.js ではマルチモーダル入出力を実現するた
めに，逐次的，同時的，択一的な入力を受け付ける
関数 mmi.seqInput，mmi.parInput，mmi.altInput，および逐次的，同時的な出力を行う関数 mmi.seqOutput，mmi.parOutput が用意されている．また，逐次的，同時的，択一的な入出力を行う関数 mmi.Seq，mmi.Par，mmi.Alt が用意されている．マルチモーダル入力を

受け付ける際には，type（入力手段），event（入力に利用するイベント），match（入力を受け付ける HTMLの要素）または grammar（音声入力に用いる文法フ
ァイルのパス），および必要に応じたその他オプションを JSON 形式で記述する．入力結果は mmi.execute関数に指定した関数オブジェクトの引数に渡され，入力結果を用いた対話において利用される．
表 1 に入出力関数の一覧を，図 1 に MMI.js を用いた対話の記述例を示す．図 1 には択一的入力と同時的入力の二つの例が記述されている．2 行目から始まる mmi.altInput 関数はエージェントをクリックまたは音声入力のどちらかを受け付ける同時的入力である．また，15 行目から始まる mmi.parOutout 関数
はエージェントが指さし動作を行いながら「商品を選択してください」と発話する同時的出力である．それそれ，入出力の内容と共に次節で説明する同期制御のための引数が指定されている．

1// 択一的入力

2

mmi.altInput({3“type”: “click”,

4“match”: “agent”,

5“options”:{“dur” :10000

6
7“begin”:1000,}},{

8“type”: “speech”,

9“grammar”: “かいものをしたい”,

10“options”:{“dur” : 10000

11
12“begin”: 1000,}});

1314// 同時的出力

15mmi.parOutput({16“type”: “agent”,

17“event”: “speech”,

2.2. マルチメディアコンテンツ同期制御

18“text”: “商品を選択してください”,

19“options”:{

MMI.js ではマルチメディアコンテンツの同期制御を行うための言語 SMIL[6]で提供されているメディア同期機能を参考に，入出力のタイミング制御を行うための 17 種類の引数が用意されている．入出力の開始，終了を制御する際には引数“begin”，“end”に時間（ミリ秒単位）またはブラウザ上で発生するイベントを，入出力の継続時間を制御する際には引数“dur”に継続時間を記述することができる．これらの機能は表１に示したマルチモーダル入出力関数に引数を与えることにより利用できる．
図 1 の例では，5 行目と 10 行目の“begin”に 1000，6 行目と 11 行目の“dur”に 10000 が設定されているため，プログラムが読み込まれてから 1 秒後に 10 秒間継続する入力の受付を開始することになる．また，
15 行目の mmi.parOutout 関数の部分では 19 行目と24 行目に“begin”に 500 が設定されているため，2 行目の入力の後 0.5 秒後に出力を行うことになる．

20

分類

mmi.seqInput

逐次的な入力を受付ける

mmi.parInput

同時的な入力を受付ける

mmi.altInput

択一的な入力を受付ける

マルチモー

mmi.seqOutput

逐次的な出力を行う

ダル出力

mmi.parOutput

同時的な出力を行う

mmi.Seq

逐次的な入出力を行う

mmi.Par

同時的な入出力を行う

mmi.Alt

択一的な入出力を行う

マルチモー
ダル入出力

“event”: “gesture”,

23“gesture”: “point”,

24“options”: {“begin”: 500}});

図1

対話の記述例筒井らが提案したエージェントを用いたプレゼンテーションを記述する言語 MPML[7]や，NHK が開発したテレビ番組を記述するための言語 TVML[8]を参考に，MMI.js では“お辞儀”や“指さし”といったエージェントの 62 種類の動作が用意されている．これらの機能もメディアの同期制御機能と同様に，入出力関数に引数を与えることで利用可能になる．図
1 の例では 23 行目で“gesture”に“point”が指定されているため，エージェントは発話と同時に指さしの動作を行う．

入出力関数一覧
処理内容

ダル入力“type”: “agent”,22

3. 対話割り込み機能の追加

関数名マルチモー}},{2125

2.3. エージェントの動作
表1“begin”: 500

3.1. 要求される機能
対話割り込みは対話中において常に発生する可能性がある．たとえば，ユーザが電車に乗るなどユーザ環境の変化により対話を一時中断する場合や，対話を急きょ終了する場合などである．
VoiceXML や XISL ではルートドキュメント（割り込み対話）とそれに付随するリーフドキュメント（本タスクの対話）を同時に入力の受け付け可能にすることで割り込み対話に対応している．この機能は対44

話中のどのような場面でも利用可能であることから， 1
2
対話エージェントの開発者は有効範囲を気にせずに3割り込み対話を記述することができる．MMI.js で割4
り込み対話をサポートする際にも，割り込み可能な5範囲を限定しないことが望ましい．
6
一方で，現在進行している対話の内容によっては7
途中で割り込みが発生することが不都合な場合もあ89る．たとえば，エージェントが注意や警告など非常10に重要なことを発話している最中に割り込みが発生11する場合である．そこで，割り込み対話の有効な範12囲を指定できるようにする機能もサポートすること13が望ましい．
14
また，割り込み対話終了後の動作は VoiceXML や15
XISL ではこれらのインタプリタによって適切な位1617
置に復帰する．ただし goto 要素等を用いることで任18
意の位置へ対話を遷移させることもできる．これに19
よって対話を適切な位置から再開することができ，20
割り込み対話と割り込み後の対話が自然につながる．
21
しかし，進行中の対話が中途半端な状態のときに割22
り込みが発生した場合，割り込み発生直前の位置か23
ら対話を再開するとエージェントの動作や発話が不24
自然になる可能性がある．これを回避するために，
25
26
自然な区切り位置から対話に復帰する手段が必要で27あると考えられる．
28
本研究では，以上から次の要求仕様を満たす対話
29
割り込み機能を実現する．
30【要求仕様】
31
1. 割り込み可能な範囲を限定しない
32
2. 割り込み対話の有効範囲を設定できる
33
34
3. 割り込み対話終了後は任意の位置への遷移
35だけでなく割り込み前の対話に復帰可能に
36
する
37
38
39
40
41
42
43
44
45
46
47
48
49

3.2. 対話の記述方法// 割り込み対話 1
mmi.bargein( “alt”,{{ “type” : “speech”, “grammar” : ”はじめから” },{ “type” : “click”, “match” : “#button_start” }},function() {mmi.output({ “type” : “agent”, “event” : “speech”,”text” : ”もう一度始めから説明しますね” });mmi.goto({ “type” : ”bookmark”, “name” : “start” });});// 割り込み対話 2
mmi.bargein( “alt”,{{ “type” : “speech”, “grammar” : “スキップ” },{ “type” : “click”, “match” : “#button_skip” }},function() {mmi.output({ “type” : “agent”, “event” : “speech”,“text” : “スキップしますね”});
mmi.goto({ “type” : “succeeding” });}, “skip_bargein” );// 割り込み対話 3
mmi.bargein( “alt”,{{ “type” : “speech”, “grammar” : “もういちど” },{ “type” : “click”, “match” : “#button_skip” }},function() {mmi.output({ “type” : “agent”, “event” : “speech”,“text” : “今の記事を読み直しますね” });mmi.goto({ “type” : “previous” });});// 主の対話mmi.scenario( function() {mmi.bookmark( “start” );mmi.bargeinState( “skip_bargein”, false );要求仕様の 1 を満たすために割り込み対話を記述
mmi.output({ “type” : “agent”, “event” : “speech”,する mmi.bargein 関数を用意した．この関数に割り込“text”:”今日の重要なニュースは○○です”});み発生条件と割り込み対話のシナリオを指定するこ
mmi.bargeinState( “skip_bargein”, true );とで，割り込みの受付を開始する．この関数を用いて記述された割り込み対話は有効範囲を設定していmmi.output({ “type” : “agent”, “event” : “speech”,ない限り，プログラム実行中の任意の場所で割り込“text” : “<BOOKMARK mark=’news1’/>”
むことが可能である．関数の使用例を図 2 に示す．
+ “一つ目のニュースは××です”
13 行目～21 行目の mmi.bargein 関数では，15 行目の+ “ <BOOKMARK mark=’news2’/>”“button_skip”という ID を持つボタンをクリックする+ “二つ目のニュースは△△です” });か，音声で「スキップ」と発話することによって割50 });図 2 記述例
り込むことができる択一的な入力を受け付けている．
この割り込みは，次節で説明する有効範囲から外れトが「スキップしますね」と発話し，一つニュースる 40 行目の出力部分以外ならば発生させることがをスキップする．mmi.bargein 関数の第一引数には他できる．この割り込みが発生した場合，エージェンにも“seq”と“par”を指定することができ，逐次的入力

45

と同時的入力を割り込み条件に指定することができる．

クマークへ対話が遷移する．

4. まとめ3.3. 割り込みの有効範囲の指定

本論文では，Web ブラウザ上で動作するマルチモーダル対話システムを実現する JavaScript 用ライブ
ラリ MMI.js への対話割り込み機能の追加について報告した．これによりプログラム実行中の任意の場所で割り込みを発生させる事や，割り込み可能な有効範囲，割り込み終了後を動作を指定可能にし，現実に発生する割り込み対話に幅広く対応できるようにした．しかし現在の仕様では，対話を階層的に記述することができないため，割り込み対話の有効範囲を設定する時にソースコードが冗長になるという問題がある．今後は対話を階層的に記述する仕組みの導入のほか，モダリティを容易に追加できるようにする仕組みや，エージェントを可変にする機能，システム発話から指示対象を同定する[10]機能等を組み込みたい．

要求仕様の 2 を満たすために mmi.bargeinState 関数を用意した．この関数の第 1 引数に割り込み対話のID（mmi.bargein 関数の第 4 引数）を指定することで特定の割り込み対話を有効／無効にできる．有効にする際には第 2 引数に true を指定し，無効にする際に は false を 指 定 す る ． 図 2 で は 38 行 目 のmmi.bargeinState 関数が呼び出されるまで割り込み対話“skip_bargein”が有効であり，その後無効となり，43 行目の mmi.bargeinState 関数が呼び出されると再び割り込み対話が有効になる．

3.4. 割り込み対話終了後の動作要求仕様の 3 を満たすために mmi.bookmark 関数，および mmi.goto 関数を用意した．また，発話文中への対話の遷移ができるように，日本語テキスト音声合成用記号[10]で定義された BOOKMARK 要素を発話文中に挿入できるようにした．mmi.bookmark 関数
または BOOKMARK 要素で任意の位置にブックマークを設定し，mmi.goto 関数を用いて任意のブックマークまで対話を遷移させることができる．例えば図2 の 24 行目～32 行目の mmi.bergein 関数では 31 行目にある mmi.goto 関数の引数内の“type”に“previous”を指定している．“previous”を指定することで，割り込み発生位置の直前のブックマークから対話を再開できる．したがって図 2 の例の 47 行目の発話文「一つ目のニュースは××です」の部分でこの割り込みが発生した場合，46 行目の“news1”という名前のブックマークの直後から再開し，「一つ目のニュースは××です」の部分を再度発話することになる．一方で，“type”に“succeeding”を指定すると，割り込み発生位置の直後のブックマークから対話を再開することがで き る ． 図 2 に お い て は 13 行 目 ～ 21 行 目 のmmi.bargein 関数の 20 行目で“succeeding”が指定されている．このため，47 行目の発話文の部分でこの割り込みが発生した場合，48 行目の“news2”という名前のブックマークの直後から再開し，49 行目の発話文「二つ目のニュースは△△です」の部分から発話を開始することになる．
また，“type”に“bookmark”を指定し，“name”にブックマークの名前を指定すると，そのブックマークに対話を遷移することができる．図 2 では 9 行目にある mmi.goto 関数の引数に“start”という名前のブックマークを指定しているため，2 行目～10 行目の割り込みの終了後は 36 行目の“start”という名前のブッ

参考文献[１] http://www.apple.com/jp/ios/siri/[２] http://www.nttdocomo.co.jp/service/information/shabette_concier/[３] 菊 地 泰 己 , 桂 田 浩 一 , 入 部 百 合 絵 , 新 田 恒 雄 :JavaScript ライブラリ MMI.js を用いた Web ブラウザ
上でのマルチモーダル対話の実現, 情報処理学会全国大会講演論文集, Vol. 2013, No. 1, pp. 97-99, (2013)[４] http://www.w3.org/TR/voicexml21/[５] 桂田浩一, 中村有作, 山田真, 山田博文, 小林聡,

新田恒雄: MMI 記述言語 XISL の提案, 情報処理学会
論文誌, Vol. 44, No. 11, pp. 2681-2689, (2003)[６] http://www.w3.org/AudioVideo/[７] 筒井貴之, 石塚満, キャラクタエージェント制御機能を有するマルチモーダル・プレゼンテーション
記述言語 MPML, 情報処理学会論文誌, Vol. 41, No. 4,
pp. 1124-1133, (2000)[８] Hayashi, M., Ueda, H. and Kurihara, T.: TVML (TVprogram Making Language) - Automatic TV Program
Generation from Text-based Script -, ACM Multimedia'97
State of the Art Demos, (1997)[９] 蓑輪 利光, 赤羽 誠, 板橋 秀一: JEIDA 日本語テキ
スト音声合成用記号, 日本音響学会研究発表会講演
論文集, Vol. 2000, No. 2, pp. 183-184, (2000)[１０]

松山 匡子，駒谷 和範，武田 龍，尾形 哲也，

奥乃 博: バージイン許容音声対話システムにおけるユーザ発話の分析と指示対象同定への応用, 情報処
理学会研究報告, Vol.2010, No.21,pp. 1-6, (2010)46