Skip to content

Instantly share code, notes, and snippets.

@hiroshi-nishiura
Last active November 18, 2022 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiroshi-nishiura/936b05d12233af2e017dd9b4d84d9172 to your computer and use it in GitHub Desktop.
Save hiroshi-nishiura/936b05d12233af2e017dd9b4d84d9172 to your computer and use it in GitHub Desktop.
Android SpeechTranslator Plugin for Unity

Android SpeechTranslator Plugin for Unity

Unityプラグインとして、AndroidネイティブのSpeechRecognizerとMLKitのTranslateを使ってリアルタイム音声翻訳を行います。同時に、UdpClientを通して結果をリモートに飛ばします。

Android Native Plugin

Plugins/Androidに一式入っています。javaコードもここに直接置いています。SpeechTranslator/Scenes/SpeechTranslatorシーンをAndroidプロジェクトでビルドすればプラグイン込みのapkが出来上がります。

Android SpeechRecognizer

本来、1度認識完了すると終了するワンショットAPIですが、終了後に再スタートして継続動作するようにしています。品質はOS12/ApiLevel31あたりではだいぶ実用的になりました。OSバージョンにだいぶ依存するようです。

MLKit Translator

これはライブラリ提供なので、mainTemplate.gradleに必要なライブラリを実装するよう記述しています。初回起動時にOnDevice翻訳モデルデータのダウンロードが実行されます。英語への翻訳のみなので、多言語モデル管理は行っていません。

UDP transfer

SpeechRecognizerとTranslatorの結果をUDP通信でリアルタイムにリモート側に転送するようになっています。最初はブロードキャストで流し、リモートからの反応があった時点でリモート限定でデータを飛ばすようにしています。 Lan/Wifiのローカルネットワークに限定しています。

Unity

UIやイベント処理などフロント処理はUnityで行っています。Scenes/SpeechTranslatorがAndroidサンプルで、Scenes/Receiverがリモート受信サンプルです。Scriptsにそれぞれのスクリプトが入っています。 Unityバージョンは 2021.3.13f1を使用してビルド&動作テストしました。2020.3.xでもビルドは可能ですが、最近のAndroidStudioとのToolChainバージョンの乖離が大きいので、出来るだけ新しいUnityバージョンを使うのが良いでしょう。

(C)2022 nishiura.hiroshi@gmail.com

@hiroshi-nishiura
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment