ブログ一覧

コミュクラフトを使って会話シナリオ作成してみた  ~中・上級者編~

はじめに


前回の『コミュクラフトを使って会話シナリオ作成してみた~初級者編~』からの続きになります。

ここでは、中級者・上級者向けの会話シナリオの作り方を説明します。
既に、エディタがダウンロードされおり、エディタの準備が整っていることが前提です。
それ以前の方、もしくは、「簡単なことから挑戦したい!」という方は、『コミュクラフトを使って会話シナリオ作成してみた~初級者編~』をご覧ください。

 

動作環境


windows7(64bit)
インターネット環境(音声認識をさせるときに必要)

 

手順①


今回は、デフォルトで配布されている占いシナリオの作り方を解説していきます。
まずは、エディタを開き、占いシナリオのシナリオフローを確認して下さい。

シナリオフロー

各シーンの内容は、以下のようになっています。

 


1:自己紹介
2:占い(ヒアリング)
3:占い(鑑定結果1)
4:占い(鑑定結果2)
5:占い(鑑定結果3)
6:占い(鑑定結果4)
7:占い(終了)
8:〆の挨拶(ボタン判定1)
9:〆の挨拶(ボタン判定2)
10:終了
11:終了
12:〆の挨拶(ボタン判定3)
13:ボタン判定


一つずつ解説していきます。

 

1. 自己紹介シーン


自己紹介シーン

音声合成ブロックで、発話を複数に分けているのは、発話中に間を持たせるためです。
また、ひらがな/カタカナ/漢字/半角スペース/全角スペースによって、発話のイントネーションが変更します。
今回は、「鷺ノ宮 なかです。」という表記で使用しています。
なかなか、「な↑か↓です」というイントネーションになってくれず、とても苦労しました。普通に「なかです」と表記すると、「な→か→です」というイントネーションになってしまい、自然な発話に聞こえません。
より、自然な発話に聞こえるように皆さんも工夫してみてください。

次に、表情(目)の設定ですが、2回ブロックを使用しています。
これは、1回目の設定では、目を閉じる動作、2回目の設定では、目を開く動作を表しています。最初の段階で目を開けているのであれば、最初のブロックで90%目を閉じ、次のブロックで、0%目を閉じる(目を開ける)ことになっています。
動作ブロックは、現在の状態を把握しつつ使用する必要があります。

待機ブロックは、ブロックが実行されるまでに入れる間のことです。

並列処理ブロックは、複数のブロックを同時に実行させるときに使用します。
ここでは、喋りながら、ポーズをとらせるようにしているので、モーションと音声合成を並列処理で実行しました。

シーン2に遷移というブロックは、このシナリオを終えたらシーン2に移り変わることを表しています。

 

2. 占い(ヒアリング)シーン


占いヒアリング

並列処理させるブロックを、単体ではなく、連結させて使用したりとブロックの連結次第ではいくらでも応用が聞きます。
たとえば、表情(まゆ)の設定を開け閉めまで含めて一つの動作にしたり、並列処理の中に並列処理を使用したりしています。
入れ子式に増やしていくことも可能なので、複雑な動きを付けたい場合などはお勧めです。

最後についている音声認識を開始するブロックは、文字通り、音声認識モードに入ります。インターネットが使用できる環境でお手持ちのマイクに向かって話しかけると、音声認識処理が走ります。認識した発話を使って、会話の分岐を作ることができますので、次の章で説明します。

 

2.1音声認識を使用したときの会話シナリオ例


音声認識ヒアリング

音声認識を使用したときのシナリオは、シーン遷移管理画面の、ユーザ発話に対する処理の直下にある、音声認識に成功したときの処理、もしくは、音声認識に失敗したときの処理に書くことになります。
基本的に、この2つの画面にそれぞれの時の処理を書いておけば問題ないです。
最後にシーンの遷移を行いたい場合は、シーンNに遷移のブロックを使用すればOKです。

では、今回のシナリオを例にどのようにシナリオを記入しているかを確認します。

音声認識_1

上図は、音声認識に成功したときのシナリオになります。
なぜ、音声認識に成功した場合なのに、再度ユーザに聞きなおしているのだろう?と思われるかも知れません。

結論から言うと、発話パターンで分岐を作っているからです。

聞き取り成功

上図をご覧ください。
発話パターン検出時の処理直下に、血液型聞き取りに成功という要素があります。ここでは何をしているかというと、ユーザの発話が(えー|びー|えーびー|おー|A|B|AB|O|)(がた|型)?の正規表現に一致する場合は、こちらの要素に書かれたシナリオが実行されるようになっています。

聞き取り成功_2

このように、ユーザの発話によって分岐をかけることでより複雑な会話も作ることが可能です。

聞き取り成功_3

ifelseブロックを入れ子式に活用しています。
場合分けも簡単に作ることが可能です。

ちなみに音声認識に失敗した場合のシナリオは、こちらです。

音声認識失敗

音声認識に成功したけどパターンに一致しない場合、失敗した場合、ともに認識に成功するまで音声認識処理を繰り返すようにしています。

 

3. 占い(鑑定結果1)シーン


先ほどの場合分けによって、回答結果も場合分けをしています。
ここでは、代表を取って、鑑定結果1を例にとって説明します。

占い鑑定結果1

占い鑑定結果2

最初の音声合成ブロックには、文字列の足し算ブロックを使用しています。
文字列の足し算の処理は、以下のような挙動を取ります。
"A" + "型の人の今日の運勢は" = "A型の人の今日の運勢は"

[数値を代入]ブロックは、シナリオ変数で指定した要素に値を代入します。
ユーザの発話によって値を代入できる変数を用意できる、これがシナリオ変数です。

シナリオ変数

最初の音声合成ブロックでも使用していますが、[文字列]シナリオ変数(血液型)というブロックでは、前シーンでユーザに発話してもらった血液型の内容を呼び出しています。これは、発話パターン検出時の処理を指定したときに、グループ名でシナリオ変数を指定することができました。そこで、指定したシナリオ変数に値が代入される仕組みになっています。

本題に戻ると、[数値を代入]ブロックでは、運勢というシナリオ変数に6という値を代入しています。
運勢の値を変えることで占い結果に場合わけを作り、バリエーションを増やしています。

あとは、前シーンの場合と同じように、ブロックを連結させていくだけです。

 

7. 占い(終了)シーン


占い終了シーン

ここでも特に目新しいブロックは使用していません。
基礎の反復が大事だということですねぇ…(^_^)

 

8. ボタン判定シーン


ボタン判定

キャラクター遷移画面に、ボタンなどのコンポーネントを設置することもできます。
今回は、ボタンを3個配置しました。ボタンを配置すると、シーン遷移管理画面に「ボタンが押されたときの処理」という項目が出てきます。この項目にシナリオを書くことでボタンが押されたときの対処を設定できます。
ここは、ボタンを押していただくだけのシーンとして定義していますので、このボタンが押されたらこのシナリオへという下図のようなシンプルな設計になっています。

ボタンが押されたときの設定

 

9. シーン〆の挨拶(ボタン判定1)シーン


終了シーン

ここでも目新しいブロックは使用していません。
特に説明することもないかなと思います。

 

10. 終了シーン・リピートシーン


説明すべき内容は、こちらのシナリオフローかなと思います。

〆の挨拶

今まで、上記で述べてきたことがこのフローで成り立っているわけですが、⑬でボタン操作がされて、⑧・⑨・⑫でそれぞれのボタンが押された場合のシナリオに遷移します。これら(⑧・⑨・⑫)のシーンが繋がっている先のシーンだけ異質だと思うので、説明しますね。

まず、⑧・⑨に繋がっている⑩・⑪シーンですが、これは、終了ブロックです。
これ以上先にシナリオを繋げることはできませんし、ここでシナリオが終了することを意味します。
必ずしも、必要なシーンではありませんが、ここで終了ということが、目で見て分かりやすいので使用することを推奨します。
次に、⑫に繋がっている②(オレンジ)ですが、これは、②のシーンへ戻りなさいという意味を持っています。
何回も反復させたいシーンがあるときなどは、このシーンを使用すると良いかもしれません。
また、同じように③・⑤・⑥のシーンにも⑦(オレンジ)のシーンに繋がっています。これは、⑦のシーンへ遷移しなさいという意味です。
②のシーンから条件分岐していますが、どのシーンも最終的には⑦のシーンに帰着するということですね。

 

終わりに


以上、占いシナリオの説明でした。
まだまだ、説明不足で分からない機能がたくさんあると思います。
その際は、Facebookまたは、この記事に返信いただけると、お調べして回答させていただきます。
皆様の対話シナリオライフが幸せになりますように(๑•̀ㅂ•́)و✧

コメントを残す