CrossRoadスマートフォン用の表示で見るCrossRoadAR、MR、VR、Babylon.jsを中心とした技術ブログ。本日気づいたのですが、このアセットがdeprecatedになっていました。そのため、もうダウンロードできないのですが、この記事には音声認識サービスについていくつかメモしてあるので、参考までに残しておきたいと思います。Storeを見ると、私が書いたときよりバージョンが上がっており、Readmeに以下はアセット「UniWeb」が必要になったことが追加されていました。理由不明ですが、UniWebがないと動かないように変わったようです。ちなみに、UniWebとは、Web関係の処理を便利にするアセットです。SDKに加えてUniWebも必要になりました。StreamingやWit.aiを使わず、エラー箇所を自力でコメントアウトすることが必要になります。バージョン1は、私がブログに残したスクショから2016/8/12と判明しました。バージョン2は2016/8/16ですので、わずか4日で変更されたことになります。何かライセンスなどで問題があったのかもしれません。以降は、当時書いた内容と同一です。試せてませんが、UniWebをインポートすれば後はバージョン1と同じ手順で動作確認が可能と思います。Text」が発表されました。Textについても調べてみました。サイトにアクセスし、「コンソールへ移動」をクリックします。Googleアカウントでログインすると、ポータル画面が表示されます。Managerを選択します。検索フォームで「Speech」と入力します。APIが検索候補に出てくるので選択します。画面中心の上付近で「有効にする」を選択します。続けて、認証情報の登録を行います。「認証情報に進む」を選択し、指示に従って登録していきます。終わりになお、動作確認は以下の環境で行いました。Technologies社が2016/8/12(現地時間)に公開したアセットです。何ができるの?「SpeechをTextに」という言葉通り、喋った音声をテキストにすることができます。既存の音声認識エンジンをUnityで使えるようにしたアセットです。サンプルシーンでは、4種類の音声認識エンジンを使って、同時に認識結果を表示できます。1.2「既存の音声認識エンジン」はどんなもの?以下の4種類です。UnityEngine.Windows.SpeecUnity5.4から標準搭載されたエンジンです。情報がないのでCortanaとの違いがわかりませんが、WindowsOS用の認識エンジンと思われます。ネットワークの接続を切ると、下記のようなエラーが出て実行できないため、ネットワーク接続は必須です。Keyなどの指定が不要です。感覚的には認識精度はあまり高くないと感じました。Platform(GCP)」の一つです。マイクから取得した音声を音声データに変換し、それをPOSTすることで、認識結果の文字列をjson形式で受け取ります。eXchange)というOSSを使います。見ていると、Pythonでの使い方紹介が多い印象です。APIは60日までは無償利用可、以後は利用体系に応じて料金がかかります。TextIBMが提供する様々なサービスの総称「Bluemix」の一つです。[補足]BluemixとWatsonの関係について明確に書いてある記述がありませんでした。AlchemyAPI」があり、下記のような記載があったので、Bluemixの一部と解釈しました。アプリ内で自然言語処理とコンピューター・ビジョンを利用して、世界の会話、文書、写真を深く理解できるようにします。Textの使用にはBluemixアカウントが必要なので、解釈はずれてないと思いますが、違っていたらご指摘いただけると助かります。Wit.aibotとの会話ができるサービスです。Wit.aiについては、下記がわかりやすかったです。Ledge.ai上記を参考に解説すると、Wit.aiは、自分で定義した会話文に基づいてシナリオを進行できるサービスです。記事の中にもある通り、最初に自分でシナリオを定義していく必要があります。引用元:思ったよりカンタン。Ledge.aiWit.aiのHPおよび使い方の解説記事を見ていくと、botとの会話はテキストベースであり、ユーザ側の会話のきっかけにはテキスト入力or音声が選べます。Intelligence)的な要素はどこだろうと疑問に思ったのですが、上記ブログの最後で定義した言葉と多少ずれても会話ができる、という記載がありました。下記のブログによると、シナリオ作成時に、会話に使えそうな候補を次々出してくれるそうです。Unityのバージョンが5.4以上である必要があります。Unityでプロジェクトを作り、アセットストアからSpeech-to-Textを入手してインポートします。多数のエラーが出ます。SDKが入っていないためで、ReadmeにもWatsonサイトから入手してください、という記載があります。SDKインポートSDKはここから入手できます。services.2016/8/15時点では、unity-sdk-0.3.0.zipが最新版でした。これを解凍するとunity-sdkというフォルダが生成されるので、Watsonというフォルダ名に変更します。このWatsonフォルダをAssets直下にコピーします。ここまで進めると、先ほどのエラーが消えます。SDKをインポートすると、さらに新しいエラーがでます。これは、TouchScriptというアセットがないので削除します、というエラーです。TouchScriptがなくてもシーン実行ができるし、TouchScriptは今回のアセットの機能とは関係ないため、このまま続けて大丈夫です。ちなみに、WatsonSDKは、Speech-to-Textアセットのスクリプトの中で呼ばれています。SDKをインポートする関連部分を全部コメントアウトするのどちらかが必要です。eXchangeという音声ファイル変換ツール(コマンド)です。Linux系の中で有名なコマンドですが、Windows系でも使えるようになっています。今回はここから14.4.2を入手しました。SourceForge.net入手したsox-14.4.2-win32.zipを解凍し、Assets/StreamingAssetsフォルダの中に、新しくThirdParty/SoX/Windowsというフォルダを作ります。ここにsox-14.4.2-win32フォルダの中身をそのまま入れます。これで、インポート作業は完了です。使いたいサービスに登録します。ここは先ほどのインポート時とは異なり、使わないサービスは登録しなくても大丈夫です。Watsonの検証は実施しませんでした。APIと同様の手順により、APIusername/passwordを取得すれば動作すると思います。サイトにアクセスし、「コンソールへ移動」をクリックします。Googleアカウントでログインすると、ポータル画面が表示されます。Managerを選択します。検索フォームで「Speech」と入力します。APIが検索候補に出てくるので選択します。画面中心の上付近で「有効にする」を選択します。続けて、認証情報の登録を行います。「認証情報に進む」を選択し、指示に従って登録していきます。APIを呼び出す場所、については、色々な種類がありましたが、今回は「その他のUI」を選択しました。APIキーを生成します。今回は名称をTestとしました。IPアドレスについては、とりあえず空欄でも大丈夫です。APIキーが生成されたら、Unityに戻ります。Keyをコピペします。APIをNonStreamingで使用する準備が完了です。Keyを登録すると、ポータル画面に「認証情報」という項目が追加されます。これをクリックすると、このように認証情報を作成する画面が出てくるので、「サービスアカウントキー」を選択します。accountという二種類の形式を選択する画面になります。Engineを選択して動作しました。キーファイルはjsonとP12と二種類の形式が選択できますが、今回はJSON形式を選択します。処理を進めていくと、json形式の証明書ファイルを入手できます。このファイルの名称をcredentials.jsonと変更し、Unity側のAssets/StreamingAssets/GoogleStreamingSpeechToTextProgramのフォルダにインポートします。APIをStreamingで使用する準備が完了です。Wit.aiWit.aiのサイトにアクセスします。Appし、作成したApp画面の右上付近にあるSettingsを選択します。Tokenという項目があります。ここで表示されている文字列をコピーします。Tokenを指定すれば完了です。Recording」というボタンを押してから好きな言葉をしゃべってみると、このように、複数のエンジンを同時に使って結果を比較できます。Unity公式Asset「SpeechToText」を動かしてみました。サンプルシーンは最大4種類のエンジンで同時に音声認識を試せます。GoogleCloudSpeechAPIについては日本語対応方法を調べてみます。APIが日本語対応できてないのと、Watsonの検証をしていないですが、Wit.aiの精度が一番高いように見えます。OS環境で動く、と書かれています。APIを使用するために、それぞれ認識対象の音声ファイルをSoXで作成しています。これはOS依存なので、このままではiOSやAndroidでは動かず、基本的にWindows限定と考えるのがよさそうです。APIの処理と同じ処理で音声ファイルを取得しているので、SoX依存の可能性があります。そのため、基本的にはWindows(Mac)用であり、モバイル対応はないと考えた方がよさそうです。Streamingの違いは?一般的かはわかりませんが、ここでは下記の意味で使われていました。Streamingを使うと、Recordingが終わるまでは画面が変化せず、終了後数秒経ってから初めて画面に認識結果が表示されます。オブジェクトのコンポーネントから調整できます。Widgetの配列Sizeを6から4に変更し、Watsonオブジェクトを外しました。Viewが出たままになりますが、Watsonのサービスを使わなくてもエラーなく実行可能です。APIを日本語化する方法は?現時点で不明です。Unity側のソースコードではロケール指定がなさそうでした。APIのポータルでも、言語設定に関する設定項目を見つけることができませんでした。Pythonベースで試された方は、日本語のテキストを表示できていたので、本来は日本語対応していると思われます。私もまだコードや設定項目を詳しく見たわけではないので、見つけられたらここに追記したいと思います。終わりにこのアセットは、あくまで音声をテキストに変える、という機能をUnityで使うためのWrapperです。各サービスはそれ以外の機能もたくさんありますが、このアセットの目的と異なるので、当然それらをUnityで使うことはできません。個人的には、音声認識のためだけに各サービスを新規契約するのは、オーバースペックな印象を持ちました。今回のアセットを調べた動機の一つに、別途Android向け音声認識をUnityで使う方法を調べていたというのがあります。今回のアセット「Speech-to-Text」は、モバイル用途ではなさそうなので、自分が調べていた方法は引き続き活用できそうです。Android系の音声認識をUnityで使う方法については、まとめたら別途ブログにしたいと思います。API(Android用...前回の続きです。»ProfileAR、MR、VR、Babylon.jsを中心とした技術ブログです。広く色々な技術を勉強するのが好きで、あれこれ書いています。詳細なプロフィールはこちらをご確認ください。2020)■プライバシーポリシー■こちらに記載しておりますのでご確認ください。■お問い合わせ■こちらよりお願いいたします。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。