目次

Galatea Dialog Studio による実習

「音声認識・音声対話技術講習会」配付バージョンはこちら

since 2009-08

<html> <div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/462784901X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51%2BSpx8VNIL._SL160_.jpg" alt="フリーソフトで学ぶセマンティックWebとインタラクション" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/462784901X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">フリーソフトで学ぶセマンティックWebとインタラクション</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/462784901X/r4wh-22/ref=nosim/" title="フリーソフトで学ぶセマンティックWebとインタラクション" target="_blank">amazlet</a> at 11.07.09</div></div><div class="amazlet-detail">荒木 雅弘 <br />森北出版 <br />売り上げランキング: 581513<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/462784901X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div> </html>

<html> <div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627847114/r4wh-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/519Jh4Vxl9L._SL160_.jpg" alt="フリーソフトでつくる音声認識システム - パターン認識・機械学習の初歩から対話システムまで" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627847114/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">フリーソフトでつくる音声認識システム - パターン認識・機械学習の初歩から対話システムまで</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4627847114/r4wh-22/ref=nosim/" title="フリーソフトでつくる音声認識システム - パターン認識・機械学習の初歩から対話システムまで" target="_blank">amazlet</a> at 11.07.09</div></div><div class="amazlet-detail">荒木 雅弘 <br />森北出版 <br />売り上げランキング: 11943<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627847114/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div> </html>

実習の記録

2009年版スライド(ppt) nishimoto2009istc08v1.ppt

2009年度の実習時に補足したこと、気づいたこと

2009年度の受講者に配付されたライブ環境に関するメモ

概要

用意するファイル

演習課題(抜粋)

  1. 駅名、枚数などを変更して動作を確認して下さい。どのような単語が入力可能なのかは、リスト1 のgrammar 要素を見て下さい。また、誤認識が起こったときに、(goto 要素などがないにも関わらず)なぜ対話の最初に戻るのか考えてみてください。
  2. リスト 1 のticket.vxml に、席種をたずねる対話を追加してください。席種はグリーン・指定席・自由席があるものとします。また、席種の確認も行うように確認の対話も変更してください。
  3. 出発駅と到着駅が同じであるかどうかをチェックし、同じであれば「不適切な入力です。」と応答して、対話を最初からやりなおすようにリスト1 のticket.vxml を変更してください。

リスト1

<?xml version="1.0" encoding="utf-8" ?>
<vxml version="2.0" xml:lang="ja">
<form id="form1">
<block>
<native>to @AM-MCL set AutoEmotionSpeak = 1</native>
<native>to @AM-MCL set AutoMove = 1</native>
<native>to @AM-MCL set AutoGaze = 1</native>
<native>to @FS-MCL set Background = woman01 bg1</native>
<native>to @AM-MCL set Mask = woman01 HAPPY 100 0 0 0</native>
</block>
<field name="source">
 <prompt>
 こちらは特急券販売システムです。出発駅をどうぞ。
 </prompt>
 <grammar root="#station1">
  <rule id="station1">
   <one-of>
    <item> <token sym="まいくてすと"> マイクテスト </token> </item>
    <item> <token sym="とうきょう" slot="source"> 東京 </token> </item>
    <item> <token sym="しながわ" slot="source"> 品川 </token> </item>
    <item> <token sym="なごや" slot="source"> 名古屋 </token> </item>
    <item> <token sym="きょうと" slot="source"> 京都 </token> </item>
    <item> <token sym="しんおおさか" slot="source"> 新大阪 </token> </item>
   </one-of>
  </rule>
 </grammar>
</field>
<field name="dest">
 <prompt>
 到着駅をどうぞ。
 </prompt>
 <grammar root="#station1">
  <rule id="station1">
   <one-of>
    <item> <token sym="まいくてすと"> マイクテスト </token> </item>
    <item> <token sym="とうきょう" slot="dest"> 東京 </token> </item>
    <item> <token sym="しながわ" slot="dest"> 品川 </token> </item>
    <item> <token sym="なごや" slot="dest"> 名古屋 </token> </item>
    <item> <token sym="きょうと" slot="dest"> 京都 </token> </item>
    <item> <token sym="しんおおさか" slot="dest"> 新大阪 </token> </item>
   </one-of>
  </rule>
 </grammar>
</field>
<field name="num">
 <prompt>
 枚数をどうぞ
 </prompt>
 <grammar version="1.0" root="#maisuu">
  <rule id="maisuu">
    <ruleref uri="#digit"/>
    <ruleref uri="#mai"/>
  </rule>
  <rule id="digit">
   <one-of>
    <item> <token sym="いち" slot="num"></token> </item>
    <item> <token sym="に" slot="num"></token> </item>
    <item> <token sym="さん" slot="num"></token> </item>
   </one-of>
  </rule>
  <rule id="mai">
    <item> <token sym="まい"></token> </item>
  </rule>
 </grammar>
</field>
<field name="confirm">
 <prompt>
  <value expr="source"/>駅から
  <value expr="dest"/>駅まで
  <value expr="num"/>枚ですね。
  よろしいですか
 </prompt>
 <grammar root="#yes_no">
  <rule id="yes_no">
   <one-of>
    <item> <token sym="はい" slot="confirm" value="y"> はい </token> </item>
    <item> <token sym="よろしいです" slot="confirm" value="y"> よろしいです </token> </item>
    <item> <token sym="いいえ" slot="confirm" value="n"> いいえ </token> </item> 
   </one-of>
  </rule>
 </grammar>
 <filled>
   <if cond="confirm == 'y'">
     御購入ありがとうございました。
     <goto next="#form1"/>
   <else/>
     もうしわけありません。最初からやりなおして下さい。
     <clear/>
   </if>
 </filled>
</field>
</form>
</vxml>

演習の流れ

Ubuntu 9.04 + Intel Video Driver では顔画像表示モジュール(FSM)は3Dデスクトップ効果と互換性がありません(画面が乱れます). あらかじめ以下を設定してください.

システム → 設定 → 外観の設定 → 視覚効果 → 効果なし(N) を選択

* 片付け(必須) * 一時ファイルの消去

ヘッドセットの準備

$ wavesurfer

実習:手順1

$ cp /usr/local/galatea-dialog/files/tests/vxml/form.vxml .
$ galatea-runner form.vxml

* FIXME: 上記の form.vxml は EUC-JP

Dialog Studioの操作

実習:手順2

実習:手順3

実習:手順4

$ galatea-runner ticket.vxml
$ cp ticket.vxml ticket2.vxml
$ cp ticket.vxml ticket3.vxml

実習:手順5

実習:手順6

[アプリケーション] - [アクセサリ] - [テキスト・エディタ]
あるいは
$ gedit

修正したファイルの実行

$ galatea-runner ticket2.vxml

注意事項

ヒント

演習課題2の回答例

席種を「セキシュ」と強制的に読ませるためにPRONを使ってみる:

<!-- 演習2:field "num" の後に追加 -->
<field name="type">
 <prompt><PRON SYM="セキシュ">席種</PRON>をどうぞ</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の回答例

<!-- 演習3:field confirm の後の filled を修正 -->
<filled>
   <if cond="source == dest">
     不適切な入力です。
     <goto next="#form1"/>
   <elseif cond="confirm == 'y'"/>
     御購入ありがとうございました。
     <goto next="#form1"/>
   <else/>
     もうしわけありません。最初からやりなおして下さい。
     <clear/>
   </if>
</filled>

この例は枚数を確認して「よろしいですか」の確認の後でチェックをするので、 不親切である。

すべての field は filled を持ちうるので、field dest の grammar の後に下記のように記述することもできる。

 <filled>
   <if cond="source == dest">
     不適切な入力です。
     <clear namelist="source dest"/>
   </if>
 </filled>

実習:手順7(最後)

$ galatea-killall

一時ファイルの消去 $ ./deltmp