GenAI Speech Recognition API

ML Kit の GenAI Speech Recognition API を使用すると、音声コンテンツをテキストに変換できます。この API は、次のモードをサポートしています。

  • Basic: Speech Recognition API は、SpeechRecognizer API と同様に、従来のオンデバイス音声認識モデルを使用します。
    • API レベル 31 以上を搭載したほとんどの Android デバイスで一般提供
  • 高度: Speech Recognition API は、より広範な言語をカバーし、全体的な品質を向上させる GenAI モデルを使用します。
    • Google Pixel 10 デバイスで利用可能。その他のデバイスも開発中

主な機能

  • マイクまたは音声ファイルからのストリーミング入力をキャプチャする
  • 文字起こしされたテキストは連続したストリームとして提供されます。最初は部分的なもので、最終的なコンテンツになる前に変更される可能性があります。

検索結果の例

音声 モード 言語/地域 音声文字変換
audio_1 基本 en-US 「これは短いメッセージです」
audio_2 高度 es-ES 「Este es un mensaje corto.」

プラットフォームの Speech Recognition API との比較

基本モードを使用する場合、ML Kit Speech Recognition API はプラットフォームの Speech Recognition API と同様のコア機能を提供します。ML Kit の大きなメリットは、幅広い Android プラットフォーム バージョンをサポートしていることです。API レベル 31 以上が必要で、一部のプラットフォーム API よりも広範囲です。

また、ML Kit Speech Recognition API は、高度なモードでデバイス上の Gemini モデルを使用し、より広範な言語をサポートします。

始める

build.gradle 構成に ML Kit Speech Recognition API を依存関係として追加する

implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")

Speech Recognition API をアプリに統合するには、SpeechRecognizer クライアントを作成します。必要なオンデバイス モデル機能のステータスを確認し、モデルがデバイスにまだ存在しない場合はダウンロードします。SpeechRecognizerRequest で音声入力を準備したら、クライアントを使用して推論を実行し、Kotlin Flow からストリーミング出力を受け取ります。最後に、リソースを解放するためにクライアントを閉じることを忘れないでください。

// 1. Create a SpeechRecognizer with desired options.
val options: SpeechRecognizerOptions =
    speechRecognizerOptions {
        locale = Locale.US
        preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
    }
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(options)

// 2. Check if the recognition model is available or needs downloading.
launch {
    val status: Int = speechRecognizer.checkStatus()
    if (status == FeatureStatus.DOWNLOADABLE) {
        // 3. If needed, download the model and monitor progress.
        speechRecognizer.download.collect { downloadStatus ->
            when (downloadStatus) {
                is DownloadStatus.DownloadCompleted -> {
                    // Model is ready, start recognition.
                    startMyRecognition(speechRecognizer)
                }
                is DownloadStatus.DownloadFailed -> {
                    // Handle download failure (e.g., inform the user).
                }
                is DownloadStatus.DownloadProgress -> {
                    // Handle download progress (e.g., update a progress bar).
                }
            }
        }
    } else if (status == FeatureStatus.AVAILABLE) {
        // Model is already ready, start recognition immediately.
        startMyRecognition(speechRecognizer)
    } else {
        // Handle other statuses (e.g., DOWNLOADING, UNAVAILABLE).
    }
}

// 4. Define your recognition logic using a suspend function.
suspend fun startMyRecognition(recognizer: SpeechRecognizer) {
    // Create a request (e.g., specifying audio source).
    val request: SpeechRecognizerRequest
        = speechRecognizerRequest { audioSource = AudioSource.fromMic() }
    // Start recognition and process the continuous stream of responses.
    recognizer.startRecognition(request).collect {
        // Process the SpeechRecognitionResponse data here.
    }
}

// 5. Stop recognition and clean up resources when the session is complete.
launch {
    recognizer.stopRecognition()
    recognizer.close()
}

サポートされている言語とデバイス

Mode 言語 / 地域
基本 en-US、fr-FR(ベータ版)、it-IT(ベータ版)、de-DE(ベータ版)、es-ES(ベータ版)、hi-IN(ベータ版)、ja-JP(ベータ版)、pt-BR(ベータ版)、tr-TR(ベータ版)、pl-PL(ベータ版)、cmn-Hans-CN(ベータ版)、ko-KR(ベータ版)、cmn-Hant-TW(ベータ版)、ru-RU(ベータ版)、vi-VN(ベータ版)
高度 一般的に精度が高いロケール: en-US、ko-KR、es-ES、fr-FR、de-DE、it-IT、pt-PT、cmn-Hans-CN、cmn-Hant-TW、ja-JP、th-TH、ru-RU、nl-NL(ベータ版)、da-DK(ベータ版)、sv-SE(ベータ版)、pl-PL(ベータ版)、hi-IN(ベータ版)、vi-VN(ベータ版)、id-ID(ベータ版)、ar-SA(ベータ版)、tr-TR(ベータ版)

サポートされているデバイス

Mode サポートされているデバイス
基本 API レベル 31 以上を使用する Android デバイス。
高度 Google Pixel 10

セットアップに関する一般的な問題

ML Kit GenAI API は、Android AICore アプリを使用して Gemini Nano にアクセスします。デバイスのセットアップ直後(リセット後を含む)や、AICore アプリのリセット直後(データの消去、アンインストール後の再インストールなど)は、AICore アプリが初期化(サーバーからの最新の構成のダウンロードなど)を完了するのに十分な時間がないことがあります。そのため、ML Kit GenAI API が想定どおりに機能しない可能性があります。表示される可能性のある一般的な設定エラー メッセージとその対処方法は次のとおりです。

エラー メッセージの例 対応方法
AICore がエラータイプ 4-CONNECTION_ERROR とエラーコード 601-BINDING_FAILURE で失敗しました。AICore サービスをバインドできませんでした。 この問題は、デバイスのセットアップ直後に ML Kit GenAI API を使用してアプリをインストールした場合や、アプリのインストール後に AICore がアンインストールされた場合に発生する可能性があります。AICore アプリを更新してからアプリを再インストールすると、問題が解決します。
AICore がエラータイプ 3-PREPARATION_ERROR とエラーコード 606-FEATURE_NOT_FOUND で失敗しました。機能 ... は利用できません。 この問題は、AICore が最新の構成のダウンロードを完了していない場合に発生することがあります。デバイスがインターネットに接続されている場合、通常は数分から数時間で更新が完了します。デバイスを再起動すると、アップデートを速めることができます。

デバイスのブートローダーがロック解除されている場合も、このエラーが表示されます。この API は、ブートローダーがロック解除されているデバイスをサポートしていません。
AICore がエラータイプ 1(DOWNLOAD_ERROR)とエラーコード 0(UNKNOWN)で失敗しました。機能 ... が失敗ステータス 0 とエラー esz(UNAVAILABLE: Unable to resolve host ...)で失敗しました。 ネットワーク接続を維持し、数分待ってから再試行します。

サンプルコード

  • GitHub で ML Kit Speech Recognition API のコードサンプルを調べます。