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