音声対話システムの構築に向けて,まずは音声認識は考えないことにして,対話処理部分の実装方針を考えよう.
演習資料の zip ファイルに同封されている sample_app-cui.py と sample_app.fst からスタートするとよい.
以下はすべてWindows用です.
Python 3.6 / Anaconda 5.x
環境変数の修正が発生するため,Windows での再ログオンか再起動が必要(2018.1.5 15:00追記)
ConEmu stable, installer, 161206
適当なエディタ(Atom など)かPythonのIDE (PyCharm Community edition など)
演習室で python を利用する場合は 2016年の資料 を参考にしてください.
以下は,講義室ノートPCに順次ソフトウェアをインストールすることを想定した説明をしています.
少なくとも「右手」「左手」「前」の3単語には反応できる処理にすること.
具体的な発話内容や応答内容は各チームで適宜検討すればよい.例えば,以下のような対話が考えられる.
> ユーザ:右手 を あげて .
> システム:右手をあげます.
> ユーザ:前 に 歩いて .
> システム:前に歩きます.
> ユーザ:とまれ .
> システム:とまります.
ヒント:初期状態だけを持ち,多くの自己遷移を持った状態遷移図を思い浮かべればよい.
発展課題の例1:
> ユーザ:とまれ .
> システム:もう止まってますよ.
ヒント:この応答をするためには,そもそも,システム自身が動いている(≒止まっていない)ということを理解している必要がある.
状態遷移機械における状態は何らかの記憶装置と考えれば,実装方針は比較的容易に定まるだろう.ただし,簡単に(美しく?)書けるかどうかは別問題である.
発展課題の例2:
例えば,「右」と言われたときにどのような応答(行動)をすべきだろうか.
右に回転?右に向かって前進?右手を何かする?
状態遷移中に何らかの分岐を持った対話処理ができるようにすること.
具体的な対話内容は各チームで適宜検討すればよい.例えば,以下はシステム主導/暗黙的確認の対話例である.
> システム:いらっしゃいませ.
> システム:欲しいものは何ですか?
> ユーザ:りんご を ください.
> システム:りんごですね.いくつ欲しいですか?
> ユーザ:5個 ください.
> システム:りんごを5個でよろしいですか? ※1
(1)※1で肯定する場合
> ユーザ:はい .
> システム:お買い上げありがとうございました.
> ※ここで,システムを終了する.
(2)※2で否定する場合
> ユーザ:いいえ .
> システム:失礼しました.
> ※ここで,元のサンプルの2行目に戻る.
最終的に作成した課題1と2に対応する状態遷移図をレポートとしてまとめておきましょう.
班ごとに実習レポートを作成して当日中に提出すること.
作成したスクリプト(app_remocon.pyなど)は提出不要だが,実習(4)で利用する.