};対話サービスに発話内容を送信する。音声を文章に変換できたら対話サービスに送信します。APIでJSON形式のデータをやりとりできます。対話サービスの市場は変化が早いので、何を使うか迷ってしますね。対話のシナリオを作成するのはそれなりに労力がかかるので、気になるものを少し触ってみていけそうか判断するとよいと思います。対話サービスについては少し前の情報になりますが、下記の記事にまとめられているので、何を使うか決まっていない方は参照してみてください。http://qiita.com/shiraco/items/eca5d0a6fc7fe6fb0f37多くの対話サービスは機械学習による自然言語処理の成果を取り入れているので、対話サービスに登録した例文に対して入力された文章が少しブレていても意図を認識してくれます。これによって膨大な量のキーワードを入力することなく、少しの例文で自然な対話をすることができます。例としてapi.aiと通信する処理を先ほどの音声認識の後に追加すると以下のようになります。"\",\"lang\":\"en\",\"sessionId\":\"123456789\"}";//sessionIdは適当です。//通信するためのメソッドはCoroutineで呼び出します。Speech)対話システムから応答が戻ってきたら、返答の文章を音声合成してキャラクターに発話させます。音声合成はHolokit-UnityにTextToSpeechManagerがあるので簡単に利用することができます。今回は例としてユニティちゃんにしゃべってもらいます。※ビルド時にユニティちゃんに付属するスクリプトがエラーになりますが、使わないので削除しても大丈夫です。Componentします。Sourceを設定します。設定した結果は以下の通りです。あとは対話サービスから取得した返答内容を以下のようにして音声に出力します。//SpeakTextで発話。}追加はたったの2行!簡単ですね。これで対話自体は完成ですが、口が動かないので違和感がありますね。実在感を出すためにリップシンクを追加します。リップシンクの実装については凹みさんのブログで詳しく説明されているので、参照してください。http://tips.hecomi.com/entry/2016/02/16/202634ここがハマりどころなのですが、出来上がったプロジェクトをUWPとして出力してデプロイしてもリップシンクしてくれません。原因はOVRLipSync.dllがコピーされていないからなのですが、なぜかはわかりません。以下の手順で手動で追加し、解決します。Assets\Plugins\x86にあるOVRLipSync.dllをコピーする。UWPビルドのためのプロジェクトのソリューションファイル(.sln)を開き、プロジェクトにOVRLipSync.dllを追加(下図参照)最終的に以下のようになっていればOKです。無事に嫁と対話できるようになりましたが、音声認識を使う上でのユーザーのUX向上のために以下の点は盛り込んでおいたほうが良いです。音声認識の状態は表示する。(発話しているのに反応しないと非常に不快になる)認識された音声は表示する。(発話内容が正しく認識されているかわからないと非常に不安になる)私はこういうUIを作ってみました。対話とは本質的には関係ないですが、以下の改善を加えると会話が楽しくなります。会話している間はキャラクターの目線を合わせる。話している内容に応じてキャラクターの表情を変える。このあたりの実装は後日記事にしていこうと思います。以上の改善を取り入れたら以下のようになります。2017年5月6日おわりに今はまだアメリカンな嫁ですが、きっとすぐに日本語を理解してくれるようになるでしょう。実装は簡単なので音声対話を是非試してみてください。Ide@decchiなんだかんだで大規模開発ばかりやってきたが、縁あってVR/AR界に足を踏み入れる。Java,Oracle,Javascript,SVF,JP1とか触ってきました。このアカウントで発信する内容は個人検証に基づくものであり、現在所属する会社の公式見解を示すものではありません。創業40年超のSIerです。upLoginユーザーは見つかりませんでした。