Firebase ML Kit
https://firebase.google.com/docs/ml-kit/?hl=ja
Googleの機械学習機能をAndroid、iOSアプリとして提供するモバイルSDK。
数ある機能の内の1つである翻訳機能
を試してみます。
デバイス / クラウドの両方に対応
オンデバイスAPIは実行速度が速く、オフライン環境で機能します。
クラウドAPIは、Google Cloud Platformの機械学習を利用して精度の高い処理が可能です。ただし有料。
翻訳機能
ML Kitのオンデバイス翻訳APIを使用すると、59の言語間でテキストを動的翻訳することができるらしいです。
Google 翻訳アプリのオフライン モードで使用されているモデルが搭載されています。
早速日本語→英語へ翻訳した動作結果です。
長文を翻訳した感を出したかったので、雑に青空文庫から著作権フリーの作品を引っ張ってきました。
文章が長いと翻訳に多少時間がかかりますが、それっぽく翻訳されました。
…Angu
ってなんだろう?
手順
Firebaseのアプリ登録
google-services.jsonをプロジェクトに追加します。
ライブラリ追加
build.gradleにライブラリを追加します。
dependencies {
// ...
implementation 'com.google.firebase:firebase-ml-natural-language:21.0.1'
implementation 'com.google.firebase:firebase-ml-natural-language-translate-model:20.0.4'
}
翻訳処理
FirebaseTranslatorオブジェクトを作成します。
// 日本語→英語への翻訳
val options = FirebaseTranslatorOptions.Builder()
.setSourceLanguage(FirebaseTranslateLanguage.JA) // 翻訳元言語
.setTargetLanguage(FirebaseTranslateLanguage.EN) // 翻訳先言語
.build()
val japaneseEnglishTranslator = FirebaseNaturalLanguage.getInstance().getTranslator(options)
必要な翻訳モデルがデバイスにダウンロードされているか確認する必要があります。
モデルが利用可能になるまでtranslate()を呼び出してはいけません。
モデルは約30MBです。
japaneseEnglishTranslator.downloadModelIfNeeded()
.addOnSuccessListener {
// 翻訳モデルのダウンロード成功。翻訳準備OK
}
.addOnFailureListener { exception ->
// 翻訳モデルのダウンロード失敗
}
モデルがダウンロードされたことを確認したら、翻訳したい文字列をtranslate()に渡します。
japaneseEnglishTranslator.translate(text)
.addOnSuccessListener { translatedText ->
// 翻訳成功。翻訳されたテキストがリスナで渡される。
}
.addOnFailureListener { exception ->
// 翻訳失敗
}
制限事項
デバイスでの翻訳は、カジュアルな翻訳や単純な翻訳を対象としています。翻訳の品質は、翻訳元の言語と翻訳先の言語によって異なります。このことを前提として、ご自身が使用する際の翻訳の品質を評価してください。より厳密な翻訳が必要な場合は、Cloud Translation API をお試しください。
ML Kit の翻訳モデルは、英語と他の言語間の翻訳をトレーニングしています。英語以外の言語間で翻訳する場合は、英語が中間言語として使用されるため、品質に影響を与える可能性があります。
このような制限事項の記載がありました。
見ての通り長文翻訳はかなり怪しいので、単純な文章や単語の翻訳くらいに留める必要がありそうです。