見出し画像

【Unity】Androidで音声認識を試してみた

こんにちは! エンジニアの宮Pです。
今回はAndroidスマートフォンを使って音声認識をおこなうプロジェクトを試してみます🙂

音声認識をおこなうには、いくつかの方法が考えられます。
・外部のライブラリを組み込む
・オンラインの音声認識サービスを使う
・OS内蔵の音声認識エンジンを利用する
このあたりが一般的でしょうか。
今回は、一番下のOS内蔵の音声認識エンジンを使ってみます。


音声認識プロジェクトのリポジトリ

GitHubに『Speech And Text in Unity iOS and Unity Android』というリポジトリがあり、音声認識エンジン機能がプラグイン化され、公開されています。
このありがたいプロジェクトを使わせて頂いて、音声認識の様子を確認します😉

『Speech And Text in Unity iOS and Unity Android』のリポジトリから、Unity用のプロジェクトをダウンロードします。

Codeボタンからzipをダウンロード

ZIPファイルを展開して中身を確認すると、次のファイルが入っています。
・AndroidStudioフォルダ
・UnityProjectフォルダ
・LICENCE
・README
このUnityProjectフォルダを任意の場所にコピーしてください。
分かりやすいように「VoiceTest」というフォルダ名に変更しました。

起動時のエラーへの対応

Unity Hubから、このVoiceTestプロジェクトを開くと、いきなりエラーメッセージが表示されてしまいました😣

このエラーメッセージの原因は、いくつかのケースが考えられますが、今回に関して言えば「スクリプトに誤りがあるため」です。
警告に従って「Enter Safe Mode」でUnityを起動して、この誤りを修正しましょう。

エラーが発生しているファイル

警告文によれば、Assets / SpeechAndText / BuildProcessor.csの中に誤りがあるようです。

static void AddFrameworks(PBXProject project, string targetGUID)

この部分でエラーが発生していました。
何故かと言えば、私の開発環境はandroid向けのものであり、iOS向けのXcodeがインストールされていないためです(そもそもWindowsにXcodeはインストールできませんし…)。

ちょっと乱暴ではありますが、エラーの原因であるBuildProcessor.csそのものを削除してしまいましょう(iPhoneユーザーの方、スイマセン。mac環境が用意できたら対応策を調べます)。
ファイルを削除すると、コンソールのエラーメッセージが消えるはずです😉

ビルド設定

このプロジェクトは、ビルドをするだけで音声認識機能を試すことができる優れものです。ビルドを通すための設定を進めましょう。
まずはBuild Setting画面で、プラットフォームをAndroidに変更してください。

次にProject Settings画面を開いて、以下の項目を設定します。
・IdetificationのMinimum API LevelをAndroid 7.1 ‘Nougat’ (API lever 25)にする
※テストに使うスマホのOSバージョンがもっと高いものであれば、それに合わせてください。

この他は、特に設定を変えなくてもビルドは可能と思います。
追加する機能に応じて、対応するオプションを設定してください。

認識の具合をチェック

ビルドが完了したら、apkをAndroid端末にインストールしてください。
起動すると、こんな画面が表示されます。

「Show Speech Popup Android」にチェックを入れて、赤いマイク印のボタンをタップしてください。録音が開始されます。
こんなセリフを試してみました。
"I enjoy spending my weekends hiking in the beautiful mountains near my home, where I can appreciate the stunning scenery and breathe in the fresh, crisp air."

音声が無いですが、喋った英語が認識さています

認識の精度は「高い」という印象で、ほぼ間違いなく音声が認識されています😄
1ヶ所だけ、"stunning"が"standing"と捉えられましたが、これは私の発音に問題があったのかも知れません。
「スタァァンニング」のような言い方にすると、正確に認識されました。

言語の切替

画面上部には、色々な言語に対応するボタンが実装されています。
肝心の日本語は無いのでしょうか?
いえいえ、ちゃんと日本語モードに切り替えることができます😉
「Locale」と書かれたテキストボックスに「ja-JP」と入力して、Applyボタンをタップしてください。
入力エリア下のLocaleが「 ja-JP」に変わったら言語切替の成功です。

日本語で喋っても、この通り、ちゃんと認識されます。
(音声が入っていないので分かりづらいですが…)

認識の精度は高く、誤りはありませんでした

こんな文章を喋っています。
"私は週末に、自宅近くの美しい山でハイキングを楽しむことが好きです。そこで素晴らしい景色を楽しむことができ、新鮮なクリアな空気を吸うことができます。"

韓国語は少ししか分からないので長文は喋れませが、短い文章では100%の認識率でした🙂

「私は大学でハングルを勉強しました」と言ってます

音声合成もできます

ずっと音声認識の話をしていますが、このプロジェクトには音声合成機能も備わっています😊
青いスピーカーマークのアイコンをタップすると、Enter textエリアに登録されたテキストを読み上げます。
右側の赤い斜線が入ったアイコンは、音声の再生を途中で止めるボタンです。

実際に読み上げている様子です。

テキストエリアをタップすると、認識されたテキスト全体が表示されます。カンマやピリオドを入れて任意の場所にウェイトを設けたり、誤って認識された箇所を修正したりできます。

直接ここにテキストを入れてもOK

まとめ

今回はAndroidで音声認識、音声合成の機能を試してみました。
やや手抜きっぽい検証ではありましたが(😅)このプラグインを使うことで「音声によるプレイヤー操作」「音声入力でクイズに挑戦」など色々な発展が考えられました。
認識と合成の両方があるので、AIを組み込んで対話ソフトを作るのも面白そうですね!😊

私たちは、お客様のご要望にあわせて様々なアプリ、コンテンツを制作しております。
ご質問やご要望は、<お問い合わせページ>よりお送りください。



この記事が気に入ったらサポートをしてみませんか?