2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Firebase ML Kitでオンデバイス翻訳を使ってみる

Last updated at Posted at 2019-12-17

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 翻訳アプリのオフライン モードで使用されているモデルが搭載されています。

早速日本語→英語へ翻訳した動作結果です。
長文を翻訳した感を出したかったので、雑に青空文庫から著作権フリーの作品を引っ張ってきました。

原文
Screenshot_20191018-022119_MLKitTranslation.jpg

翻訳後
Screenshot_20191018-022138_MLKitTranslation.jpg

文章が長いと翻訳に多少時間がかかりますが、それっぽく翻訳されました。
Anguってなんだろう?

手順

Firebaseのアプリ登録

google-services.jsonをプロジェクトに追加します。

ライブラリ追加

build.gradleにライブラリを追加します。

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オブジェクトを作成します。

Xxx.kt
// 日本語→英語への翻訳
val options = FirebaseTranslatorOptions.Builder()
        .setSourceLanguage(FirebaseTranslateLanguage.JA) // 翻訳元言語
        .setTargetLanguage(FirebaseTranslateLanguage.EN) // 翻訳先言語
        .build()
val japaneseEnglishTranslator = FirebaseNaturalLanguage.getInstance().getTranslator(options)

必要な翻訳モデルがデバイスにダウンロードされているか確認する必要があります。
モデルが利用可能になるまでtranslate()を呼び出してはいけません。
モデルは約30MBです。

Xxx.kt
japaneseEnglishTranslator.downloadModelIfNeeded()
        .addOnSuccessListener {
            // 翻訳モデルのダウンロード成功。翻訳準備OK
        }
        .addOnFailureListener { exception ->
            // 翻訳モデルのダウンロード失敗
        }

モデルがダウンロードされたことを確認したら、翻訳したい文字列をtranslate()に渡します。

Xxx.kt
japaneseEnglishTranslator.translate(text)
        .addOnSuccessListener { translatedText ->
            // 翻訳成功。翻訳されたテキストがリスナで渡される。
        }
        .addOnFailureListener { exception ->
             // 翻訳失敗
        }

制限事項

デバイスでの翻訳は、カジュアルな翻訳や単純な翻訳を対象としています。翻訳の品質は、翻訳元の言語と翻訳先の言語によって異なります。このことを前提として、ご自身が使用する際の翻訳の品質を評価してください。より厳密な翻訳が必要な場合は、Cloud Translation API をお試しください。

ML Kit の翻訳モデルは、英語と他の言語間の翻訳をトレーニングしています。英語以外の言語間で翻訳する場合は、英語が中間言語として使用されるため、品質に影響を与える可能性があります。

このような制限事項の記載がありました。
見ての通り長文翻訳はかなり怪しいので、単純な文章や単語の翻訳くらいに留める必要がありそうです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?