実習:音声対話 担当:西本卓也(東京大学) 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
© Copyright 2025 ExpyDoc