hisaitamiのブログ

とあるプログラマーの日常

HoloLensアプリ開発(23日目)Speech-to-Textアセットを試した

前回までに調べたこと

  • HoloToolkit-TestのTextSpeechManagerを使うとTTS(Text To Speech)とキーワードベースのSTT(Speech To Text)が実現できる

  • Intel RealSense SDK for WindowsでSTTが実現できるがHoloLens(UWP)にビルドできなかった。

  • クラウドベースのWatson Speech to Textがよさそう。連続してマイク入力を受け付ける方法が知りたい。

ということで、次の記事を参考にSpeech-to-Textというアセットを試してみた。

magicbullet.hatenablog.jp

やってみたこと

Speech-to-Textアセットをプロジェクトに追加するとC#スクリプトエラーが発生する。参考記事に書かれているようにWatson Developer Cloud Unity SDKをインストールする必要がある。今回は最新版の0.13.0をインストールした。最新のSDKではSpeechResultList→SpeechRecognitionEventを使うように仕様が変更されてるので次の記事を参考に修正する。

developer.ibm.com

Speech-to-Textは複数の音声認識エンジンに対応している。UnityEngine.Windows.Speech、Google Cloud Speech API、Watson、Wit.aiの4つが使える。アカウントを作るのが面倒くさいので今回はWindows.SpeechとWatsonだけを試すことにした。参考記事ではGoogleやWit.aiのサービスをアクティベートする方法が詳しく解説してあるので時間があれば後で試してみたい。

Speech-toTextアセットに含まれるspeechTextComparison.unityというシーンを開くと、複数のエンジンで同時に音声認識を試すことができる。使わないエンジンのモジュールは Hierarchy > Canvas > SpeechToTextServiceWidget の下から削除した後、SpeechToTextComparisonWidgetを選択し Inspector > Speech To Text Comparison Widget (Script) > Speech To Text Service Widget から参照を削除する。

マイクに向かって「What time is it?」と発音したところこんな感じになって笑ってしまった。

f:id:hisaitami:20170705085340p:plain

Game画面の右側に認識結果が表示されている。上からWindows.Speech、Watson(Streaming)、Watson(Non Streaming)となっている。Windows.Speechは入力言語が日本語になっているようで日本語で話しかけるといい感じに認識してくれた。

まとめ

Speech-to-Textのサンプルシーンを使って、連続してマイクから入力された音声をテキストに変換できることが確かめられた。

しかし残念ながらHoloLens(UWP)としてビルドすることができなかった。WatsonのUnity SDKに頼らず自力でなんとかする必要がありそう。