Unity3d で IBM Watson をつかう

2016.09.16 | unity3d, watson

自然言語を理解・学習し人間の意思決定を支援するコグニティブ・コンピューティング・システムとして話題になっているIBM Watson。 難病症例患者の病名を見抜き医師に治療法を提示したりボブ・ディランとの会話のCMなどニュースでも取り上げられたりしている。
githubにUnity向けのWatson SDKが公開されているので、概要と使用について記載する。

Watsonについて

APIによっては日本語に未対応なものもあるが現時点で日本語対応済みで面白そうなものとしては、

  • 自然言語インターフェースで対話を行うことができる「Conversation
  • HTM、PDFやドキュメントをWatsonで使用できる形式に変換する「Document Conversion
  • 質問に対して適切な回答を選出する「Retrieve and Rank

もちろんTextToSpeech、SpeechToTextなどあり、APIの日本語対応状況など詳細はこのページに分かりやすく記載されている。

UnityへのWatson SDKのインストールとサービスの追加

以下、unity-sdkのreadmeに記載されているものと大まかには同じではあるが、使用までの流れを記載する。

  1. まずは、IBM Bluemixアカウントを作成する。 https://console.ng.bluemix.net……istration/
    (※IBM BluemixとはIBMが提供するクラウドをベースとしたアプリケーションを構築。実行するためのプラットホーム) +Unityのプロジェクトを作成し、最新のSDKをここから手に入れる。
  2. 手に入れた「unity-sdk」を「Watson」にリネームし、unityのプロジェクトのAssetsフォルダへ +sdkのインポートが完了すると、「Thanks for installing the Watson Unity SDK, would you like to configure your credentials?」とでるので、「Yes」を押して設定ウィンドウを開く
  3. 使用したいAPI名横の「Configure」ボタンを押すとサービスのページが表示される。
  4. 右側の「サービスの追加」から「作成」ボタンを押し、サービスを作成し表示されるサービス情報の中から「サービス資格情報」を選択し、表示されているjsonをUnityのConfigEditorのテキストエリアにコピー&ペースト。「Apply Credentials」を選択ししばらくするとサービスがグリーンになり有効になる。
  5. 他にサービスを追加したい場合は、同じようにサービスを追加していく。

参考: Configuring your service credentials

 

SDKを使用する際の注意事項として、WatsonSDKはreadmeにも記載されているがWebPlayerでは使用できない。ビルドターゲットがWebPlayerになっている場合は他のプラットフォームへの変更が必要。

また、それぞれのAPIはプランごとに金額が設定されている。
最初の100万文字は無料で、その後従量課金などあるがどれも個人で試用する分には十分な量になっている。サービスとして使用する場合は再度プランの変更と課金を考えることになるだろう。

WatsonSDKをプロジェクトにインポートした後は、メニューに「Watson」が表示されるようになり、そこから「Configuration Editor」の表示などの機能の表示・実行が可能。

Watson SDK サンプルシーンについて

「/Watson/Examples/ServiceExamples/ServiceExamples.unity」には一通りのAPIがそれぞれGameObjectとして配置されている。visibleで切り替えて実行。
それぞれのMonoBehaviourにサンプルと関数が記載されているので、それを見るとおよその機能や使い方が分かる。これらのサンプルはログ出力やサウンドによる結果の出力のみとなっている。

「/Watson/Scenes/UnitTests/Main.unity」はGUI付きのサンプルシーンの呼び出し。事前にunityのBuild Settings…でシーンを追加する必要がある。

「/Watson/Scripts/Widgets」にGameObjectにアタッチ可能なComponentが入っている。アプリケーションを作成するには、これを組み合わせて作るかサンプルを参考にしていくのが良いだろう。

雑感

ConversationやRetrieve and RankなどWatsonが得意とする自然言語による質問応答システム・意思決定支援は試すことができていないが、これらAPIを連携させることで、VRなどさまざまなインタラクションを作成していくことができそうだ。
また、SDKの「ThirdParty」に含まれサンプルプログラムでも使用されている「TouchScript」や「WebSocketSharp」も使い勝手が良さそうなので今後見ていくことにする。

参考資料

pagetop