nishimoto2009istc08v1

実習:音声対話
担当:西本卓也(東京大学)
2009年8月
[email protected]
演習の流れ
• 音声入出力に関する準備
– ヘッドセットマイク
• 対話マネージャの基本操作
– サンプル対話の実行
• 対話シナリオの変更・拡張
– VXMLファイルのコピー・編集・実行
• 片付け(必須)
– 一時ファイルの消去
2
ヘッドセットの準備
• ヘッドセットマイクの接続
• 音量の設定
– [音量コントロール]
• 赤帽子 - [サウンドとビデオ] にある
• 音声の取り込みテスト
– $ wavesurfer
3
実習:手順1
• Galatea Dialog Studioの実行
– $ cd /n/media/sp/galatea/DM
– $ ./galatea tests/vxml/form.vxml
– 対話例は後述(マイクOFFのまま)
• 終了(メニューからは終了できない)
– ターミナルにフォーカス指定して Ctrl+C
4
Dialog Studioの操作(1)
• アドレスボックス / [Go]
– 実行中のファイル名または URL を表示
– ファイル名などを入力して [Go] を押すと、
指定された対話を開始
– 実行中の対話があれば終了して実行
• [Validate]
– ファイル内容の文法などをチェック
– ただし実行時エラーはチェックできない
– 実行中の対話に影響を与えない
5
Dialog Studioの操作(2)
• [Pause]
– 実行中の対話を一時中断・再開
– 発話中の場合は、現在出力中の音声などを
出力し終えてから待機
– 注意:すぐに止まらないことがある
• [Run]
– 中断中の対話の再開
6
Dialog Studioの操作(3)
• [File] - [Open Local File...]
– ダイアログからファイルを指定して実行
• [Face] - [AgentEnable]/[AgentDisable]
– エージェントを一時的に表示・非表示
• [Face] - [Texture]/[Wireframe]/...
– エージェントの表示方法を切替
• [Mask]
– 顔と声を同時に切替える
– 制約:組み合わせは固定
7
Dialog Studioの操作(4)
• [Auto] - [AutoMove ON/OFF]
– 顔の制御を実行・停止
• [Auto] - [AutoGaze ON/OFF]
– 視線の制御を実行・停止
• [Auto] - [EmotionSpeak ON/OFF]
– 感情切替による声の制御を有効化・無効化
• [Expression]
– 感情を切替(AutoMove ONにて有効)
8
Dialog Studioの操作(5)
• [Demo] - [Nod]/[Say Hello]
– うなずく動作や音声合成のデモ
• [Demo] - [Demo1]/[Demo2]
– 定義済み対話デモ
• 内容を閲覧するには
– 新しいターミナルを開いて...
– $ less tests/vxml/kani.vxml
– $ less tests/vxml/form.vxml
9
実習:手順2
• マイクをONにする
• アドレスボックスを確認
– /n/media/sp/galatea/DM/tests/vxml/form.vxml
• [Go]を押して対話
10
実習:手順3
• 対話例(form.vxml)
– ガラティアカフェにようこそ
– テイクアウトですか?
• 「はい」「いいえ」
– お飲み物は何になさいますか?
• 「コーヒー」「紅茶」
• 参考:「コーヒーのホット」なども受理可能
– ホットとアイスのどちらがいいですか?
• 「ホット」「アイス」
11
実習:手順4
• ファイルの実行(演習課題1)
– $ ./galatea tests/vxml/ticket.vxml
• 修正するための準備(演習課題2・3)
–
–
–
–
–
–
$
$
$
$
$
$
cd tests/vxml
mkdir ~/dm
cp ticket.vxml ~/dm/ticket2.vxml
chmod 755 ~/dm/ticket2.vxml
cp ticket.vxml ~/dm/ticket3.vxml
chmod 755 ~/dm/ticket3.vxml
12
実習:手順5
• 演習課題1=ticket.vxml(元ファイル)
– 動作確認(さまざまな駅名や枚数で)
– grammar要素の確認
• 演習課題2=ticket2.vxml(コピー)
– 席種を尋ねる対話とその確認対話を追加
• グリーン車、指定席、自由席
• 演習課題3=ticket3.vxml(コピー)
– 出発駅と到着駅が同じでないようにチェック
13
実習:手順6
• ticket2.vxmlの編集(3も同様)
– $ gedit
– geditの文字コード設定
• [編集] - [Preferences] → [保存]
• 可能な場合は元のファイルのエンコーディング(s)
• 可能な場合は現在のロケール(r)
• 修正したファイルの実行
– $ ./galatea ~/dm/ticket2.vxml
14
注意事項(1)
• 日本語入力
– [Shift]+[スペース]で切替
• XMLの規則(HTMLより厳しい)
–
–
–
–
タグの入れ子構造
大文字小文字、全角半角の区別
属性の値は""で囲む
[Validate]で確認できる
15
注意事項(2)
• XMLを読みやすくするために
– <!-- と --> ではさまれた部分はコメント
• ただし入れ子にはできない
– 改行や空行・字下げは自由に行ってよい
• Dialog Studioが不正終了したら
– 不要プロセスが残る場合がある
– 不要プロセスの消去: $ ./fin
16
ヒント
• field要素のname属性と一致させるもの
– token要素のslot属性(grammar)
– value要素のexpr属性(prompt)
• 出力の<prompt>要素を省略できない場合
– <field>の中で用いる場合
– 属性指定:<prompt bargein="false">など
– 読み上げ方を指定する要素を含む場合
• GalateaTalk(JEIDA)およびW3Cに準拠
17
演習課題2の回答例
<!-- 演習2:field "num" の後に追加 -->
<field name="type">
<prompt>席種をどうぞ</prompt>
<grammar version="1.0" root="#seat">
<rule id="seat">
<one-of>
<item> <token sym="ぐりーんしゃ" slot="type"> グリーン車 </token> </item>
<item> <token sym="していせき" slot="type"> 指定席 </token> </item>
<item> <token sym="じゆうせき" slot="type"> 自由席 </token> </item>
</one-of>
</rule>
<field name="confirm">
</grammar>
<prompt>
</field>
<value expr="source"/>駅から
<value expr="dest"/>駅まで
<value expr="type"/>を <!-- 演習2:この行を追加 -->
<value expr="num"/>枚ですね。
よろしいですか
</prompt>
18
演習課題3の回答例
<filled>
<!-- 演習3:filledに追加(ここから) -->
<if cond="source == dest">
不適切な入力です。
<clear namelist="source dest"/>
</if>
<!-- 追加(ここまで) -->
<if cond="confirm == 'y'">
御購入ありがとうございました。
<else/>
もうしわけありません。最初からやりなおして下さい。
<clear/>
</if>
</filled>
19
実習:手順7(最後)
• ログアウトする前に実行してください
• プロセスの終了
– $ ./fin
• 一時ファイルの消去
– $ ./deltmp
• シャットダウンしてください
• ヘッドセットを回収します
20