擬人化エージェント のための VoiceXML 処理系の開発

Development of the VoiceXML Interpreter for the Anthropomorphic AgentSoftware
岐津三泰 西本卓也 荒木雅弘
Mitsuhiro KIZU, Takuya NISHIMOTO and Masahiro ARAKI京都工芸繊維大学 工芸学部 電子情報工学科
Department of Electronics and Information Science, Kyoto Institute of Technology

Abstract
This paper reports the development of the VoiceXML interpreter which controls the anthropomorphic spoken dialog agent (ASDA). Using the VoiceXML for controlling the features of ASDA, such as
speech recognition, speech synthesis and face animation synthesis, the development of spoken dialog applications will become easier, and the developer can modularize the functions of dialog systems to prepare for
future reuse. As the original VoiceXML language has no capability of controlling the face animation and isemotionally expressionless, we propose a method which deals with multi-modal interaction as an extensionof VoiceXML.
As VoiceXML has the built-in logics for ﬁlling forms, the developer can build slot-ﬁlling and database search
dialogs that are easy to use for both novice and expert users. It is, however, diﬃcult to use VoiceXML
for writing interactions in which the user can have the initiative, such as the interactions which have bothgraphical user interface (GUI) and voice interface. It is also diﬃcult to use the VoiceXML concept formaking a voice-accessible document browser which the novice user can use without previous knowledge.
There may be some requirements necessary to design and implement new languages for writing multi-modal
tasks as some interaction styles cannot be realized without complicated notations. Therefore, we designed
our VoiceXML interpreter to adapt easily to new languages which contain the functions for multi-modalinteractions. This is enabled by dividing the system into the translator, from VoiceXML documents to theintermediate language, and the dialog controller that interprets the intermediate language documents.
We also describe our ongoing work of the development and our future plans.

1

はじめに

人間性豊かな擬人化音声対話エージェントを構築する場合，自然で多様な表情が可能な顔画像合成，感情を表現できる音声合成といった要素と，意味理解や推論など の自然言語処理能力といった要素が重要になる．しかし，幅広い応用を前提とした汎用ツールキットにおいては，対話タスクにおける自然言語処理は必ずしも必要ではなく，アプリケーションにゆだねられる部分も多い．また，擬人化音声対話エージェントを具体的な対話タスクで利用する上で不可欠である対話記述は，従来は専門外の開発者にとっては必ずしも容易ではなかった [4]．
我々は，擬人化音声対話ソフトウェアツールキットが有する音声合成，音声認識，顔画像合成などの機能を統合し，対話記述言語によって制御可能にすることにより，擬人化音声対話エージェントを用いたアプリケーションの開発が容易になり，対話記述の再利用や部分利用が可能になると考え，対話制御ソフトウェア
Phoenix(仮称) を設計し，実装した．

2

対話タスクの記述

Phoenix は，擬人化音声対話エージェントと人間の対話をマルチモーダル対話 (Multi-Modal Interaction,MMI) と捉える．MMI の実現にはいくつかの方法が考えられるが，Phoenix においては，マルチモーダル拡張を施した VoiceXML を採用する．しかし，様々なタスクを効率よく記述できるようにするためには新たなタスク記述言語が必要となる場合がある．Phoenix
は，VoiceXML の機能をベースに新たな対話記述言語を容易に追加可能な対話インタプ リタを持つ．その設

計については後述する．
本章ではマルチモーダル拡張 VoiceXML に加えて，VoiceXML で記述することが煩雑な説明タスクを簡潔に記述できる RDoc(仮称) を紹介する．

2.1

VoiceXML のマルチモーダル拡張

従来 MMI の多くは，HTML や GUI などの視覚的インタフェースに音声入出力を付加した対話システムである．視覚的インタフェースを使いやすくする既知のノウハウが活用できるため，音声対話エージェントを活かした使いやすい MMI を実現できる．
しかし ，車載機器や携帯電話，視覚障害者や高齢者向け インタフェースなど ，視覚に依存しない音声インタフェースにも大きなニーズがある．これを特に
VUI(Voice User Interface) と呼び，MMI と区別する．
VUI は対話の履歴やシステムの状態などを見通しにくい (眺望感の欠如) という問題があるため，MMI とは異なる配慮が求められる．音声対話エージェントも，顔表示以外の視覚的要素を持たない場合は VUI に近いと考えられる．
VUI のための代表的な技術として，電話音声応答システムのための言語 VoiceXML がある．VoiceXML は主に電話を利用した音声応答サービスの提供を支援するマークアップ言語であり，XML をベースとした言語仕様になっている．AT&T，IBM，Lucent，Motorola ，によって設立された VoiceXML Forum が仕様を作成しており，Version 1.0 が 2000 年 3 月に公開された．
現在は World Wide Web Consortium(W3C) における音声対話記述言語として，Version 2.0 の標準化が行われている∗ ．
VoiceXML のアーキテクチャでは，データベース検索や推論など の処理は VoiceXML インタプ リタの外側にあるド キュメントサーバに依頼する．これはWeb で動的なページを生成する処理系ににており，VoiceXML インタプ リタは Web と同じ HTTP プ ロ
トコルでド キュメントサーバと通信する (図 1)．
このような構成を取ることにより，VoiceXML イン
タプ リタはユーザ・インタフェースに関する処理に専念し，アプリケーション固有の処理には Web サーバと共通の手法 (CGI, PHP, Servlet など ) を利用できる．
現在のバージョンの VoiceXML は，視覚的な手段を持たない電話音声応答システムでの利用を前提としており，入力として仕様に含まれているのは音声または DTMF(数字キー入力) である．出力は音声合成ま∗ http://www.w3.org/Voice/

図 1: VoiceXML と Web アーキテクチャの比較
たは録音音声 (オーデ ィオファイル ) の再生が可能である．
対話はフォーム及び メニューを単位とする状態遷移によって行われる．入力はフォームに含まれる各フィールドの入力またはメニューの選択肢からの項目選択が基本単位となる．ABNF 形式および XML 形式のグラマー (音声認識文法) に，意味情報を表すタグを付与することができる．タグを用いることで 1 発話で複数のフィールド への入力を行うことが容易になる．
VoiceXML ではスロットフィリング形式の対話記述が容易にできるが，タグ付きグラマーの利用や，実行中のフォーム以外の対話に移動するリンク機能などによって，混合主導的な音声対話も実現できる．
Phoenix では音声対話記述言語 VoiceXML から，特に電話環境に固有の機能を削除しつつ，擬人化音声対話エージェント独自の機能を活かす機能拡張を行ったものを用いている．
VoiceXML のモデルに沿ったマルチモーダル対話であれば，メニューやプロンプトなどの概念を拡張することで実現できる [1]．この際に，なるべく低レベルの実装に依存した処理を隠蔽し，上位概念での記述ができることが望ましい．図 2 にエージェントが音声合成を行うプロンプト記述例を示す (キャラクタエージェ
ントを用いたプレゼンテーション記述言語 MPML を参考にしている [2] † )．選択肢の文字や画像を指差すジェスチャを行ったり，テキストの特定の部分のみ感情を付与することを想定している．

2.2

説明タスク記述言語

一種類の MMI 記述方式ですべての利用場面やタスクなどのニーズを満たすことは難しい．本節ではそのような例について述べる．具体的には，ユーザ主導対話による説明タスクを例に挙げて，MMI において効果的な対話モデルが VUI では有効に機能しにくい場合があることを示す．
† http://www.miv.t.u-tokyo.ac.jp/MPML/jp/

<menu><prompt>
ノートパソコンには<play act="point">
αタイプ，βタイプ</play>がございます．
<emotion type="happy">
どちらにしますか？
</emotion></prompt><choice next="xx" img="a.gif">αタイプ</choice><choice next="xx" img="b.gif">βタイプ</choice></menu>

図 3: VoiceXML と RDoc のグラマー記述方式の比較• なるべく全ての状態でバージインを有効にして，発話してよいか悪いのか，といった状態把握を不要にする．
• 語彙を容易に把握したり推測することができ，何を言えばよいのか，どの状態で言えばよいのか，といった判断を不要にする．そのために，すべてのグラマーができるだけ常に有効となるようにする．

図 2: VoiceXML 拡張によるエージェント制御の例
表 1: 対話タスクの分類
(1)
(2)
(3)

情報の流れ
システム⇒ユーザ
ユーザ⇒システム
ユーザ⇔システム

主導権
ユーザ
システム
混合

タスクの種類説明
スロットフィリング
データベース検索

対話タスクは情報の流れから表 1 のように分類できる．(2) および (3) はバックエンド のアプ リケーションとの連携によって動的な情報を提示する必要があるが，(1) は静的な情報を提示すればよいため，コンテンツ作成は容易なはずである．GUI では階層型メニューをたど る操作が一般的であり，MMI においても有効である．
しかし例えば VoiceXML で記述した VUI は，簡潔で可読性が高い反面，ユーザ主導対話の使いやすさは損なわれる．
VoiceXML は階層型メニューを音声コマンドでたどる操作を前提にしており，使用可能な語彙が不明な場合はシステム主導の選択操作となってし まう．また，
VUI では眺望感がないため状態把握が難し く，グラマーが動的に変化していくことも知覚しにくい．現在の音声ポータルはこの問題があるために，初めて使うユーザには操作が難しい．
VUI においてユーザ主導の操作を行うためには，大語彙や自由発話の音声認識を用いた検索機能が有望である．しかしこれは説明タスクをデータベース検索タスクに置き換えたものであり，簡潔で可読性の高いコンテンツ記述は難しい．
VUI 環境で説明タスクのための使いやすい対話システムを実現するためには以下の配慮が求められる．

このような VUI を簡潔に記述するために，各セクションの中に，その場所に移動するためのグラマーを記述する，という形式のコンテンツ記述言語 RDoc(仮称) の提案を行っている [3]．RDoc は，音声ポータルや擬人化エージェントを用いたキオスク端末などを想定し，ユーザ主導型のコンテンツ閲覧を初心者にも使いやすい操作で実現し，コンテンツ記述も簡潔である．
VoiceXML では各ダ イアログにその外に遷移するためのグラマーを記述するが，RDoc はその逆である(図 3)．また RDoc から VoiceXML へのリンクによって，スロットフィリングやデータベース検索への連携が可能である．ただし ，複数の遷移先に共通なグラマーが存在する場合には，コンテクストに応じて遷移先を決定したり絞り込み対話を行う必要がある．

3

VoiceXML 処理系の設計

Phoenix は，擬人化音声対話エージェントがさまざまな研究やアプリケーションと開発に用いられることを想定して，さまざ まな拡張が容易に行えるような設計を行っている．例えば，VoiceXML を拡張した言語だけでなく，2.2 節で述べた RDoc のような対話記述言語を容易に追加実装可能である．
本章では，Phoenix の基本的な設計について述べる．

3.1

内部表現形式

Phoenix は対話タスクを状態遷移モデルとして扱う．VoiceXML を扱うには DOM‡ (Document Object‡ http://www.w3.org/DOM/

<?xml version="1.0" encoding="Shift_JIS" ?><vxml version="1.0"><menu id="hello"><prompt timeout="5s"><emotion type="HAPPY">
こんにちは，ご用件は何ですか？
</emotion></prompt><choice next="#red">
シャツを赤にして下さい</choice><choice next="#blue">
シャツを青にして下さい</choice><nomatch>
もう一度おっしゃってください</nomatch></menu><form id="red"><block>
シャツを赤にしました．
</block></form><form id="blue"><block>シャツを青にしました．
</block></form></vxml>

表 2: Phoenix の内部表現に対応する状態遷移表
状態
hello

nomatchhello
redblue

内部表現
OUTPUT(Emotion = HAPPY)OUTPUT(”こんにちは，ご用件は何ですか ?”)OUTPUT(Emotion = NEUTRAL)
IF(”シャツを青にして下さい”, GOTO(blue))IF(”シャツを赤にして下さい”, GOTO(red))IF(nomatch, GOTO( nomatch hello))IF(noinput, GOTO(hello))
OUTPUT(”もう一度おっしゃってください”)
GOTO(hello)
OUTPUT(”シャツを赤にしました”)
EXIT()OUTPUT(”シャツを青にしました”)
EXIT()­¸ÉÀ¸¹Ã¼ÊÅË¼ÉÇÉ¼Ë¼É
ÆÅË¼ÏË¤¸Å¸¾¼É§¿Æ¼ÅÀÏÆº£Æ¸»¼É

¹ÊËÉ¸ºËÆº­¯¤£ÆºÅË¼É¸ºËÀÆÅÆÅËÉÆÃ¼É©¸Î§¿Æ¼ÅÀÏÆº¦ÌËÇÌË¼ÍÀº¼Ê¤ÌÃËÀ¤Æ»¸Ã¤¸Å¸¾¼ÉÅÇÌË¼ÍÀº¼ÆÅÊÆÃ¼«¿É¼¸»¦ÌËÇÌË¼ÍÀº¼¤«¿É¼¸»

É¼¸Â«¿É¼¸»ªÌ¹§ÉÆº¼ÊÊ

図 4: Phoenix に対応した VoiceXML の例Model) を用いて VoiceXML の構造を再現した内部表
現を用いるのが容易であるが，新たな対話記述言語を追加実装することが困難になる．そこで Phoenix では VoiceXML に依存した内部表現ではなく，より汎用性のある状態遷移モデルを用い，さまざ まなタスク記述言語を Phoenix の内部表現に変換することによって動作する．
VoiceXML ファイルを内部表現に変換した場合，1つの <menu> 要素は実行可能内容の数に対応する複数の状態に分割され る．例えば ，<prompt> 要素の内容を出力系列として持ち，<choice> 要素の内容を入力に対するイベントハンド ラとして持つ 1 つの状態が存在する．ただし，Phoenix のイベントハンド ラは別状態への遷移のみを扱うので，VoiceXML におけるイベント ハンド ラ (<nomatch> 要素など ) に対しては，その内容をもつ新しい状態を生成し，それへの遷移を Phoenix 内のイベントハンド ラとして持つ．1 つの <form> 要素はフォームアイテムの数とイベントハンド ラの数の合計に等しい内部状態を生成する．
図 4 と表 2 に例を示す．図 4 は変換前の VoiceXML
ド キュメントで表 2 は変換後の内部表現である．

Fq{c·sb®¦ÌË¨Ì¼Ì¼¤¸Å¸¾¼É

·¦h~¤ªª¤

ª¤¦ÌË Ë¼Äª©¤É¸ÄÄ¸Éª¼Ë

É¸ÄÄ¸É

図 5: Phoenix の主要クラス構成

3.2

主要クラス

本節では Phoenix を構成する主なクラスと，それらが受け持つ処理の概要について説明する．図 5 に
Phoenix の主要クラス構成図を示す．

3.2.1

対話コント ローラ部

対 話 コ ン ト ロ ー ラ 部 (InteractionControler) は
Phoenix の メインループ に相当する部分であり，全体の動作を規定する部分である．独立したスレッドとして動作し ，以下に述べる対話コンテキスト制御部，マルチモーダル制御部，出力キュー管理部を制御する．

3.2.2

タスク記述言語処理部

タスク記述言語処理部 (DocLoader) は，VoiceXMLなどのド キュメントファイルをロードし，対話コンテキスト制御部が管理する状態遷移モデルを用いた内部表現に変換するものである．この内部表現に含まれる

各状態には対話コントローラ部で実行されるべきコマンド 系列やイベントハンド ラが含まれる．
また，タスク記述言語処理部は入力用グラマーの解釈及び登録を行う他，コンテンツ開発者に対してタグの文法や用法の誤りなどを報告する機能も持つ．

3.2.3

対話コンテキスト 制御部

対話コンテキスト制御部 (InterpreterContextManager) は，タスク記述言語処理部から受け取った内部表現に対応する実行状態を保持し，対話コントローラ部へのコマンドの発行，イベントのハンド リングや変数の管理などを行う．また，新たなドキュメントへの移動に伴ってネットワークとの非同期通信処理やタスク記述言語処理部の呼び出しを行う．

3.2.4

マルチモーダル制御部

マルチモーダル制御部 (MultiModalManager) は，様々な入出力手段を管理するクラスである．マルチモーダル制御部の管理するクラスは，デバイス入出力を行うスレッドとして動作し，出力なら OutputDevice，入力なら InputDevice の各インタフェースを持つ．両方のインタフェースをもつものもある．入出力クラスの中には，エージェント管理部を通じて音声認識，音声合成，顔画像の各サブモジュールの制御を行うクラス(AMThread)，一定時間の休止を行う仮想的なデバイスを扱うクラス (BreakThread) ，キーボード 入力を扱うクラス (ConsoleThread) がある．各クラスは，入力結果や出力終了などのイベントを，対話コントローラ部に渡す．

3.2.5

出力キュー管理部

出力キュー管理部 (OutQueueManager) は対話コン
トローラ部からの要求によって新たな出力キュー項
目 (音声合成の出力，話者や表情の切換え，オーデ ィ
オファイルの出力，一定時間の休止など ) の追加を行い，その情報を管理する．マルチモーダル制御部からの出力完了イベントにより，対話コントローラ部がキューから新しい項目を取り出して出力を行う．なお，
VoiceXML コンテンツの実行に置いては出力の状態変化に応じて受理するグラマーが変化すると考えられるので，出力キューの各項目は対応するグラマーの状態を保持する設計になっている．

3.3

動作の流れ

Phoenix におけるメインループの処理は次の通りである．
1. ド キュメントの読み込み
Phoenix クラスが InteractionControler のインスタンスを生成し，InteractionControler は MultiModalManager ，InterpreterContextManager ，OutQueueManager のインスタンスを生成する．
同時に最初に開くドキュメントのファイル名をInterpreterContextManager に渡し，DocLoader
はファイルを読み込み，内部表現に変換する．
2. コマンド の読み込みと実行InteractionControler が InterpreterContextManager からコマンド 系列を受取り，実行する．一般のタスクでは出力キュー項目の追加コマンドが主であるので，ここで OutQueueManager に出力項目を渡す．
3. 出力開始
InteractionControler は OutQueueManager に出力キュー項目を 1 つ要求し ，それを MultiModalManager に渡す．その時点で MultiModalManager は出力を開始する．
4. 待ち状態
InteractionControler はここで イベント 待ち状態に入る．
5. 入力開始
MultiModalManager はあるデバイス制御スレッド から入力開始のイベントを受け取ると，出力中の出力キュー項目にグラマーがセットされてるかを確認し ，セットされていなければ イベントを無視する．グラマーがセットされていれば，InteractionControler に入力開始イベントを発行し ，InteractionControler は直ちに出力を停める命令を MultiModalManager に発行し ，前章で述べた方法でキューを破棄する．そし て，InteractionControler は入力終了待ち状態に入る．
6. 入力完了
MultiModalManager は入力中のデバ イスを制御するスレッド から入力終了イベントを受け取ると，InteractionControler に入力終了イベントを発行すると同時に，入力結果を渡す．InteractionControler は受け取った入力結果を InterpreterContextManager に渡し ，2 に戻る．

7. 出力完了
MultiModalManager は出力中のデバ イスを制御するスレッド から出力終了イベントを受け取ると，InteractionControler に出力終了イベントを発行する．InteractionControler はこれを受け取ると，次の出力キュー項目を OutQueueManager に要求する．キューに出力キュー項目がある場合は再びそれを MultiModalManager に渡す．キューに出力キュー項目がない場合は，InterpreterContextManager に noinput イベントを発行する．そして，2 に戻る．

4システムの実装

Phoenix は，情報処理振興事業協会 (IPA) の擬人化
音声対話エージェント基本ソフトウェア開発 [4] における統合部 [5] のうち，タスク記述部として開発している．
Phoenix は Linux 環境で動作し ，IPA 擬人化音声対話ツールキットのエージェントマネージャを子プロセスとして呼び出す (図 5 の点線部)．実装には Java
言語 (Java2 Standard Edition Version 1.4) を用いている．

5

考察

実際に VoiceXML ドキュメントを作成し，擬人化音声対話エージェントとの対話を行った．<emotion> 要素によって顔画像の表情を制御しながらリップシンクされた音声合成を行えること，未対応属性があっても正しくファイルを読み込めること，<prompt> 要素のtimeout 属性を解釈して再プロンプトを行えること，音声入力とコンソールからの入力に対応し，<choice>要素および <nomatch> 要素を正し く実行すること，バージインに対応した動作が正しく行えること，などを確認した．
現在対応しているド キュメント 形式は VoiceXMLのみであるが ，AbstractDoc インタフェースを持つ
VXMLDoc クラスが Phoenix 内部形式に変換することによって実装されているので，RDoc のような他のドキュメント形式に対応するためには AbstractDoc インタフェースを持つ内部形式への変換クラスを持てば良いことになる．このことから，Phoenix は新たな対話記述言語に柔軟に対応できると考えられる．

現在対応し ているモダ リティは音声合成，音声認
識，エージェントの表情変化，キーボード 入力のみであるが，OutputDevice もしくは InputDevice インタフェースを備えたデバイス制御スレッドを用意することによって新たなモダ リティも一元的に管理できる．
このことから，Phoenix はマルチモーダル対話処理系として当然備えるべき拡張性を持っていると考えられる．

6

まとめと課題擬人化音声対話エージェントのための VoiceXML 処
理系として Phoenix の設計及び実装を行った．Phoenix
はマルチモーダル拡張 VoiceXML をベースにした対話制御機能を持つが，マルチモーダル対話システムにさまざ まなニーズがあることを考えると，用途にあった新たな対話タスク記述言語を容易に実装できることも重要であるので，設計に際してはその点にも重点をおいた．
Phoenix の開発は引き続き行われており，オーディオ出力，フォーム処理アルゴ リズム (FIA)，条件分岐など VoiceXML の主要な機能を実装する予定である．
さらに，モダ リティの追加などの拡張や，新たなタスク記述言語への対応についても引き続き検討を行う予定である．
また，対話コンテンツの実行環境に加えて，音声入力を模擬する手段や，タグ 記述の意味的な誤りの検出，デバッグ機能といったコンテンツ開発環境としての機能についても検討していく予定である．

参考文献[1] 植田喜代志他: “VoiceXML のマルチモーダル化の検討”, 情報処理学会研究報告, 2001-SLP-38-7, pp.43-48(2001)[2] 筒井貴之他: “キャラクタエージェント制御機能を有するマルチモーダル・プレゼンテーション記述言語MPML”, 情報処理学会論文誌, Vol.41, No.4, pp.11241133 (2000.4)[3] 西本卓也他: “擬人化音声対話エージェントのためのタスク管理機能”, 日本音響学会講演論文集, (2002.3)[4] 嵯峨山茂樹他: “擬人化音声対話エージェント開発とその意義”, 情報処理学会研究報告, 2000-SLP-33-1, Oct.
(2000)[5] 新田恒雄他: “対話システムにおけるモジュール統合とプロトタイピング ”, 情報処理学会研究報告, 2000SLP-33-5, Oct. (2000)