【解決:別記事参照】CortonaとUnityの連携方法

2016/7/2 追記

(1) の動作確認ができました。
本記事はメモとして残します。別の記事で動作確認する方法を記載しましたので、以下をご確認ください。

magicbullet.hatenablog.jp

2016/6/21 追記

(1-1)を更新しました。ただし、未解決は変わらず、です。

Cortonaを使うと、音声認識やキャラクターとの会話(電脳コイルっぽいこと)ができるのではと思い、Unityで使う方法を調べています。

しかし、色々と止まってしまい未だにサンプルの動作確認ができていません。

未解決ではありますが、現時点で調べた内容を整理してみました。

そもそもUWPとUnityを連携させる方法はあるのか?

あります。

下記のforumでUnity Technologiesの方から紹介されているように、XAMLUnityConnectionというサンプルを使うと、Unityで書いた処理をもとにUWPを作り込むことが可能になります。

http://forum.unity3d.com/threads/passing-arguments-to-windows-10-unity-app-by-activating-it-with-cortana.368153/forum.unity3d.com

XAMLUnityConnectionの置き場所は、下記のbitbucketです。

bitbucket.org

f:id:Takyu:20160618151741j:plain

www.gamasutra.com


ところで、XAML(ザムル)とは、Windows系の画面デザイン用の言語です。
(実際は他にも用途があるようですが、Windows 10 Mobileでは画面デザインはすべてXAMLで行っていました)

私が知る限り、XAMLは一つの画面を定義するときに使われ、その画面に紐付いたc#コードが対になっています。

XAML Unity Connectionは、実際にはXAMLと対になっているC#でUnity側の処理を受けていると思われます。

CortanaをUnityで使う方法は?

今の所、2種類の情報を見つけました。特に、前半はMicrosoftの方が書かれた記事で、説明が丁寧かつ情報も豊富です。

いずれも動作確認できていないため、内容は記事から推測しています。

(1) Unity側で定義した文章を元に、決まった形の対話を実現するサンプル

f:id:Takyu:20160618152804p:plain


Voice Activating your Windows 10 games using Speech Synthesis, Voice Recognition and Cortana | digitalerr0r


記事の中にサンプルプロジェクトをダウンロードできるリンクがあります。

(2) UnityのMecanimとCortanaを連携させ、ユーザの声でアバターが踊るサンプル

f:id:Takyu:20160618152814p:plain

www.gamasutra.com

どうやら、Unite2015でMicrosoftの方が紹介したもののようです。
記事の中にダウンロードリンクがありますが、リンク切れでした。しかし、下記に同一と思われるものがありましたのでリンクを貼っておきます。

github.com


2016/6/18時点の状況

(1)

(1-1) そのまま実行した場合

サンプルプロジェクトを開き、Visual Studioからそのまま実行すると、アプリケーションが立ち上がる。しかし、マイクで話しかけても何も応答しない。

サンプルプロジェクトの設定が、en-US(使用言語:英語、地域:米国)となのに、使用環境がja-JP(使用言語:日本語、地域:日本)のためと思われる。

しかし、使用環境をen-USに変更すると、Cortanaが使用できなくなった。そのため、サンプルプロジェクトそのままでは動作確認できず。

f:id:Takyu:20160618153620p:plain

    • -

2016/6/21 追記

Windows10 Mobileで、言語を英語、地域をUnited Statesに変更してから再起動すると、CortanaのUWPサンプルが使えました。

下記のUWPサンプルコードの中にある、Cortana VoiceCommandというソリューションを使いました。

github.com


(1)のUnityプロジェクトをWindows 10 Mobileにビルドして試したところ、3D空間の中でCortanaを起動させる場所まで移動する必要がありました。

しかし、キー入力による移動ができず、動作確認ができませんでした。

有線キーボード、キーパッド:Windows10 Mobileは、2016/6時点で有線の入力に対応していない

BluetoothゲームパッドBluetoothのペアリングはできたが、ゲームパッドの操作はできなかった

    • -
(1-2) Unityでビルドし、Visual Studio 2015 update2から編集した場合

サンプルプロジェクトはUnity5.2。

Unity5.2で開き、ビルドを実行すると、ビルドは終了するが、エラーメッセージが出て、UnityEngine.dllなど、dll系の生成に失敗する。

f:id:Takyu:20160618154338p:plain

そのため、Visual Studioで開いても、MainPage.xaml.csのusing UnityEngine.Windows;、およびこれに関係するメソッドの読み込みでエラーになる。


一方、Unity5.3.5で開き、ビルドを実行すると、ビルドエラーは起きないが、UnityEngine.dllなど、dll系の生成に失敗する。

(1)に関してその他はまったこと
Unity5.3.5を使っていた時、不定期にUnity5.3.5のWebPlayer以外のビルドができなくなる

普通、Build SettinsgでPlatformを選ぶ時、インストール時に選択しておいたプラットフォームを選択できます。

しかし、(1)を試している時、少なくとも2回、Windows Store、Android、WegGLなど、事前にインストールしたプラットフォームがすべてNo module foundになってしまいました。

PC再起動やプロジェクトフォルダの削除で直るかも、という情報をいただきましたが、試す前に再インストールしてしまったので、対処方法になるかは確認できていません。


(2)

これは初期からつまづいていて、Unityのサンプルプロジェクトを開いたら、Microsoft.UnityPluginsがないというエラーが多数出ている状況です。

f:id:Takyu:20160618155220j:plain

では、Microsoft.UnityPluginを入れればと思ったのですが、このように多数あり、どれを入れるべきかがわかりませんでした。

そもそも、Unityで読み込ませる方法が不明という問題もありますが、、

f:id:Takyu:20160618155415p:plain


終わりに

下記で@kaorun55さんもおっしゃっているように、HoloLensで対話的なAIアプリを作るには、HoloLensのサンプルにあるVoiceではなく、CortanaをUWPで活用することが必要と思います。

CGの表現はUnityが楽なので、連携方法を調べていたら(1)と(2)に丁寧なサンプルと解説があったので、まずは動作確認からと思っていたのですが、ちょっと見込みが甘かったようです。


とはいえ、今うまくいってないのは、私のWindows10側のアプリ開発知識が足りてない可能性も十分にあるので、並行して調べていた、UWP単体でCortanaを使う方法の理解を先に試してみようと思います。

この記事については、進捗あれば更新するか、別記事を作ってリンクを貼る形にする予定です。

広告を非表示にする