Unityプラグインとして、AndroidネイティブのSpeechRecognizerとMLKitのTranslateを使ってリアルタイム音声翻訳を行います。同時に、UdpClientを通して結果をリモートに飛ばします。
Plugins/Androidに一式入っています。javaコードもここに直接置いています。SpeechTranslator/Scenes/SpeechTranslatorシーンをAndroidプロジェクトでビルドすればプラグイン込みのapkが出来上がります。
本来、1度認識完了すると終了するワンショットAPIですが、終了後に再スタートして継続動作するようにしています。品質はOS12/ApiLevel31あたりではだいぶ実用的になりました。OSバージョンにだいぶ依存するようです。
これはライブラリ提供なので、mainTemplate.gradleに必要なライブラリを実装するよう記述しています。初回起動時にOnDevice翻訳モデルデータのダウンロードが実行されます。英語への翻訳のみなので、多言語モデル管理は行っていません。
SpeechRecognizerとTranslatorの結果をUDP通信でリアルタイムにリモート側に転送するようになっています。最初はブロードキャストで流し、リモートからの反応があった時点でリモート限定でデータを飛ばすようにしています。 Lan/Wifiのローカルネットワークに限定しています。
UIやイベント処理などフロント処理はUnityで行っています。Scenes/SpeechTranslatorがAndroidサンプルで、Scenes/Receiverがリモート受信サンプルです。Scriptsにそれぞれのスクリプトが入っています。 Unityバージョンは 2021.3.13f1を使用してビルド&動作テストしました。2020.3.xでもビルドは可能ですが、最近のAndroidStudioとのToolChainバージョンの乖離が大きいので、出来るだけ新しいUnityバージョンを使うのが良いでしょう。
(C)2022 nishiura.hiroshi@gmail.com
Describe more at Describe more at http://ossan-engineer.blogspot.com/2022/11/android-speech-translator-plugin-for.html