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