デモシーン
以下のデモシーンは、Voice SDKの拡張シーンにコンポーザーを統合することにより、ゲームでのユーザーのインタラクションを強化する方法を示すものです。
これらのデモシーンを実行するには、コンポーザーグラフを以下のように設定する必要があります。
注: Unity Assetsフォルダの/Oculus/Voice/Features/Composer/Samples/フォルダ内にあるcomposer_colours_demo_export.zipファイルからデモアプリをインポートすることもできます。
コンポーザーグラフの作成
- チュートリアルに示されているように、新しいWitアプリを作成します。
Witで、左側の[Composer [BETA] (コンポーザー[ベータ])]を選択するか、またはコンポーザーアイコンをクリックして開きます。
- グラフを作成します。グラフの作成について詳しくは、Wit.aiコンポーザーの手順をご覧ください。グラフ自体は、コンテキストマップの既存の変更があるかどうかをチェックするところから始まります。変更があった場合は、updated_infoの値が出力されます。これがコンテキストマップのデモで使われます。変更がなかった場合は、set_colorインテントが含まれる音声インプットがないかチェックされます。
グラフの流れは以下のとおりです。
- Aインプットモジュール: インプット発話を集めて会話のフローに入り、ユーザーをB決定モジュールに移動します。
- B決定モジュール: updated_infoのコンテキストマップの値がないかチェックし、その値がある場合はCに、ない場合はDに進みます。
- C応答モジュール: コンテキストマップが「{updated_info}」になりました。というテキストを使用してupdated_infoの値を返します。このパスはここで終わりです。
- D決定モジュール: インプット発話のインテントをチェックします。信頼性が≥0.8の
color_setインテントがある場合はEに進みます。ない場合はHに進みます。
- Eコンテキストモジュール: エンティティ色をコンテキストマップに保存し、Fに進みます。
- F決定モジュール: 色エンティティがないかチェックします。ある場合はGに進みます。ない場合はHに進みます。
- G応答モジュール: ここで有効な色が示されます。このモジュールでは、色エンティティの最初の項目の値を使って、As you can see, I have turned {color[0].value} (表示を{color[0].value}に変えました)と言います。このパスはここで終わりです。
- H応答モジュール: 色が指定されていないか、検出されませんでした。Well you have to tell me a color to change to! (何色にするかを指定してください)と応答します。このパスはここで終わりです (ただし、最初に戻るようにグラフを変更することができます)。
これが完了したら、SingleCharacterDemo/SingleCharacterDemo - WitConfigurationアセット(/Assets/Oculus/Voice/Features/Composer/Samplesフォルダにある)を開いて、Wit.aiアプリのサーバーアクセストークンを設定ファイルにコピーします。
このデモでは、[Activate (アクティブ化)]ボタンを押して、「make yourself red (赤にする)」などのフレーズを話すことができます。コンポーザーにより、A > B > D > E > F > G > Hという流れで処理されます
フレーズが認識されなかった場合、代わりにGで終了します。
このシーンは、2つのコンポーザーサービスを使うデモです。左または右をアクティブ化して、それらの図形にフォーカスを当てます。その点を除けば、このデモはキャラクター1人のデモと同じような動きです。
このシーンは、コンポーザーを使う場合と、
非コンポーザー図形チュートリアルのように単純にインテントとエンティティを解析する場合の違いを、2つのオプションを切り替えることにより簡単に示します。コンポーザーを使う場合は、
テキスト/発話変換コンポーネントが自動的に起動します。それに対して、非コンポーザーの反復処理では単純にテキストが表示されます。
このシーンは、context_mapに変更を加えることにより、コンポーザーにデータを渡す処理を示します。
[Update Context Map (コンテキストマップを更新する)]を選択すると、context_mapが表示されます。現在のcontext_mapが画面右上に表示されます。[Activate (アクティブ化)]を選択して発話し、その発話内容(および更新後のcontext_map)をコンポーザーに送信します。これは、A > B > Cという流れになり、updated_infoがcontext_mapにない限り、あなたの発話は無視されます。