Unity
Watson
conversation
ibmcloud
SpeechToText
IBM CloudDay 25

UnityとWatsonをつないで、VR空間でAIと会話できるようにしてみた

!!!注意!!! この記事は書きかけです。投稿日に間に合わず、申し訳ありません。

本エントリーはIBM Cloud Advent Calendar 2017の25日目です。

対象者

  • Unityの基本操作がなんとなくわかる人
  • IBM Cloudの基本操作がなんとなくわかる人
    ※詳細な操作説明を割愛した箇所もございます。

実施環境

  • Window10 Home 64bit
  • Unity
    • Personal(無償版)
    • バージョン:2017.1.2f1
      ※Unityを導入した2017年10月時点では、推奨バージョンが2017.1.xだったため。現在(2017年12月時点)では2017.2.x推奨だそうです。

準備するもの

  • Unity
  • IBM Cloudライトアカウント 
    • 2017年11月よりライトが登場し、無料で使えるようになりました。それ以前にアカウント作成されていたものの持て余していた方は、新たなメールアドレスで再作成されるのがおすすめです。
  • ネット接続したマイク機能付きのPC
    ※ここではVR Ready(GTX1060以上)のノートPCを使用しましたが、VR用ヘッドセットにつなげずにPCのディスプレイ上で動きをみるだけであれば、通常のPCでも実施できると思われます。ただし、動きは悪い可能性大。

心の準備

  • IBM Cloudは、操作性においてもやっとするところがあります。私の経験上、真面目に構えすぎず、こんなもんだとゆるりと付き合うのがよいです。
    • 同じ画面でも、状況により表示が異なることがある。そのようなときは「戻る」ボタンで戻って再度その画面に入りなおす。(「価格プラン」が現れないなど)
    • 画面遷移が遅い。ときに、砂時計などの「待て」マークが現れたまま一向に進まないことがある。そのようなときは「戻る」ボタンで戻ってあきらめる。([管理]→[アカウント]→[リソースグループ]の部分など)
    • サービスの契約を結んだ後、その場ですぐに使用しておかないと、使用中サービス一覧が表示されるはずのダッシュボードに現れない。その場合、どこからサービスに入って使えばいいのか試行錯誤することも。。
  • Unity
    • 現在のVR ReadyのPCを購入してからは問題ありませんが、やや古いDynabookのWindows8で操作していたときは、立ち上げやスクリプト表示など全般的に激遅でした。

作業全体の流れ

1. Watson SDKをUnityに入れ、UnityがWatsonを使えるようにする @Unity
2. しゃべる人物や動物を仮想空間に置く @Unity
3. チャットボット(会話マシン)に必要なサービスを無料契約する @Watson
4. チャットボットを作る @Watson ←書きかけです。ごめんなさい。

1. Watson SDKをUnityに入れ、UnityがWatsonを使えるようにする @Unity

  1. watson-developer-cloudのunity-sdkをダウンロード。おそらく、その時々の最新版でいいと思います。https://github.com/watson-developer-cloud/unity-sdk/releases

=====編集中につきひとりごと=====
が、
現在(2017年12月)最新版であるv2.0.0で実施したところ、メニューバーに現れるはずのボタン(Configuration Editorなどの便利ボタン)が出ないという現象が起きました。
調べたところ、v1.0.0以降では出なくなってしまったようです。
v1.0.0未満のWatson SDKを使用した記事はいくつかあり、このとおりにやった方が楽そう。。
けど、HoloLensにも対応もしているv2.0.0を使いたい…というわけで、現在対処法を確認中です。
(それもあってこの記事は未完成です。申し訳ありません)
=====================

  1. ダウンロードしたフォルダを[すべて展開]で解凍。フォルダ構造は、[unity-sdk-x.x.x]の下に[unity-sdk-x.x.x]が入れ子になり、その中に[.github]や[Examples]フォルダなどの各部品が入るといった二重になる。入れ子になった[unity-sdk-x.x.x](直接部品が入っている方)を"Watson"にリネーム。
  2. Unityを立ち上げる。新規にプロジェクト作成するため、立ち上がった画面で[Project name]を任意名にし、[Create Project]をクリック。 image.png
  3. Unityが開いたら、"Watson"フォルダを、Unityの[Project]ペインの中にある[Assets]フォルダを目掛けてドラッグ&ドロップ。[Assets]フォルダの下に"Watson"フォルダができる。同時に、上のメニューバーに"Watson"ボタンができる。 image.png

2. しゃべる人物や動物を仮想空間に置く @Unity

しゃべらせたい人物や動物を、UnityのAsset Storeから落としておく。ここでは、フリーのUnity-chanを使用。

0.以降の説明でのUnityのレイアウト(見え方)は"Default"です。Unityに慣れていない方は、右上にあるボタンをクリックし、"Default"を選択しておいてください。
image.png

  1. アセットストアでUnity-chanをダウンロード
    上部にあるメニューバーから[Window]→[Asset Store]でアセットストアを開き、検索窓に"unity chan"を検索。その後、[FREE ONLY]ボタンをクリックしておくと、無料の素材しか現れないので安心。
    image.png

  2. 下にスクロールするといくつかUnity-chanが出てきているが、ここでは以下をクリック。ダウンロードページに遷移するので、[Import]をクリック。
    image.png

  3. しばらくすると以下の画面が出るので、デフォルトのまま[Import]をクリック。
    image.png

  4. [Assets]フォルダの下に、"Watson"フォルダと並んで"UnityChan"フォルダが入りました。
    image.png

  5. 仮想空間での見え方(メインカメラの位置・向き)を調整する。左側の[Hierarchy]ペインの[Untitled]の下にある[Main Camera]をクリックすると、右側にある[Inspector]ペインにカメラの設定情報が現れるので、その中の上の方にある[Transform]項目内の右上にある歯車マークをクリックし、[Reset]を選択。
    image.png

  6. [Project]ペインにて、[UnityChan]フォルダの中の[Models]フォルダを選択。右側に[Models]フォルダの中身が現れる。
    image.png

  7. フォルダの中身のうち"unitychan"という人型の絵を選択し、上にある[Scene]ペインにドラッグ&ドロップ。これで、仮想空間のシーンの中に会話をしてくれる人が登場するようになる。シーンに置かれたものは全て[Hierarchy]ペインに表示されるため、[Hierarchy]ペインにも"unitychan"が追加されている。
    image.png

  8. "unitychan"が選択されたままの状態で、[Inspector]ペインにて、"unitychan"がカメラにうまく映り込むよう位置を修正する。
    [Transform]項目

    • [Position]:Y=-1, Z=1に変更
    • [Rotation]:Y=180に変更
  9. [Game]ペインを開き、映り方を確認する。以下のようになっています。image.png

  10. これでUnityちゃんのいるシーンができたので、[ctrl]+[S]キーを押して任意の名前を付けてシーンを保存する。

3. チャットボット(会話マシン)に必要なサービスを作成(無料契約)する @Watson

0.IBM Cloudのライトアカウントを取得されていない場合は、アカウントを新規作成してください。
ライトアカウント作成のわかりやすい記事を見つけました↓
https://qiita.com/KenichiSekine/items/249d2ff691b6565fb127


1. IBM cloudにログイン
https://console.bluemix.net

  1. 初めてログインすると、以下の画面になります。(これからサービスを使用すると、この画面に作成済みのサービスが表示されるが、今は空っぽの状態。)右上の[カタログ]をクリック。
    image.png

  2. 左端のウィンドウを下にスクロールし、[Watson]をクリック。(左側のリスト周辺にマウスをもってくるとスクロールバーが現れるという、わかりづらい仕様。。)
    image.png

  3. IBMの提供する機械学習(Watson)の一覧が表示される。ここでは以下3つのサービスを使用する。
    ・ Conversation:会話マシン(チャットボット)
    ・ Speech to Text:PCにしゃべりかけた音声を、テキストデータに変換(マシンに理解できる形にする)
    ・ Text to Speech:テキストデータを音声マイクより発声(マシンが出した返答を音にする)
    image.png
    それぞれのサービスのアイコンをクリックし、入った画面でサービス作成(無料の利用契約)をする。いずれのサービス契約も同じ手順だが、以降ではConversationサービスに入った画面で説明。
    image.png

5.以下のような画面が開く。各項目の設定はデフォルトのままでOK。
※ライトプランでは[デプロイする地域/ロケーション]は米国南部のみとなるようなため、気にしなくて結構です。
image.png

6.下の方にスクロールすると「価格プラン」が現れる。タイミングにより「価格プラン」が現れないことがあるが、その場合は前の画面に戻りもう一度この画面に遷移すると、たいてい現れる様子。(ここがIBM Cloudのもやっとするところ。。)

「価格プラン」で"Lite"(無料)が選択されていることを確認し、[作成]ボタンをクリック。
image.png

7.以下のような画面が開けば、無事に作成完了。
- [Conversation]の場合
image.png

  • [Speect to Text]および[Text to Speech]の場合は以下のイメージ image.png

※[作成]ボタンを押すと以下のポップアップが現れる場合は、すでにサービス作成済のようです。
image.png

4. チャットボットを作る @Watson

ごめんなさい、まだ書けていません。

※すでにサービスを作成