GenAI Speech Recognition API

Mit der GenAI Speech Recognition API von ML Kit können Sie Audioinhalte in Text transkribieren. Diese API unterstützt die folgenden Modi:

  • Basic: Die Speech Recognition API verwendet das herkömmliche On-Device-Spracherkennungsmodell, ähnlich der SpeechRecognizer API.
    • Allgemein verfügbar auf den meisten Android-Geräten mit API-Level 31 und höher
  • Erweitert: Die Speech Recognition API verwendet das GenAI-Modell, das eine größere Sprachabdeckung und eine bessere Gesamtqualität bietet.
    • Verfügbar auf Pixel 10-Geräten. Weitere Geräte sind in der Entwicklung.

Hauptmerkmale

  • Streaming-Eingabe von Mikrofon oder Audiodatei aufnehmen
  • Transkribierter Text wird als kontinuierlicher Stream bereitgestellt, der anfangs möglicherweise nur teilweise vorhanden ist und sich ändern kann, bevor er zum endgültigen Inhalt wird.

Beispielergebnisse

Audio Modus Sprache Sprache-zu-Text
audio_1 Einfach en-US „Das ist eine kurze Nachricht“
audio_2 Erweitert es-ES „Este es un mensaje corto.“

Vergleich mit der Speech Recognition API der Plattform

Im Basic-Modus bietet die ML Kit Speech Recognition API ähnliche Kernfunktionen wie die Speech Recognition API der Plattform. Ein wichtiger Vorteil von ML Kit ist die Unterstützung einer größeren Bandbreite von Android-Plattformversionen. Hier ist API-Level 31 oder höher erforderlich, was mehr als bei einigen Plattform-APIs ist.

Außerdem wird in der ML Kit Speech Recognition API im erweiterten Modus das Gemini-Modell auf dem Gerät verwendet, wodurch eine größere Sprachabdeckung möglich ist.

Jetzt starten

Fügen Sie die ML Kit Speech Recognition API als Abhängigkeit in Ihrer build.gradle-Konfiguration hinzu.

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

Wenn Sie die Speech Recognition API in Ihre App einbinden möchten, erstellen Sie einen SpeechRecognizer-Client. Prüfen Sie den Status der erforderlichen On-Device-Modellfunktionen und laden Sie das Modell herunter, falls es noch nicht auf dem Gerät vorhanden ist. Nachdem Sie die Audioeingabe in einem SpeechRecognizerRequest vorbereitet haben, führen Sie die Inferenz mit dem Client aus, um Streamingausgabe aus dem Kotlin-Flow zu erhalten. Denken Sie daran, den Client zu schließen, um Ressourcen freizugeben.

// 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()
}

Unterstützte Sprachen und Geräte

Modus Sprachen
Einfach en-US, fr-FR (Beta), it-IT (Beta), de-DE (Beta), es-ES (Beta), hi-IN (Beta), ja-JP (Beta), pt-BR (Beta), tr-TR (Beta), pl-PL (Beta), cmn-Hans-CN (Beta), ko-KR (Beta), cmn-Hant-TW (Beta), ru-RU (Beta), vi-VN (Beta)
Erweitert Sprachen, die in der Regel eine hohe Genauigkeit aufweisen: 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 (Beta), da-DK (Beta), sv-SE (Beta), pl-PL (Beta), hi-IN (Beta), vi-VN (Beta), id-ID (Beta), ar-SA (Beta), tr-TR (Beta)

Unterstützte Geräte

Modus Unterstützte Geräte
Einfach Android-Geräte mit API-Level 31 und höher.
Erweitert Pixel 10

Häufig auftretende Probleme bei der Einrichtung

Für den Zugriff auf Gemini Nano sind die ML Kit GenAI-APIs auf die Android AICore App angewiesen. Wenn ein Gerät gerade eingerichtet (einschließlich Zurücksetzen) oder die AICore App gerade zurückgesetzt wurde (z.B. Daten löschen, deinstallieren und neu installieren), hat die AICore App möglicherweise nicht genügend Zeit, die Initialisierung abzuschließen (einschließlich des Herunterladens der neuesten Konfigurationen vom Server). Daher funktionieren die GenAI-APIs von ML Kit möglicherweise nicht wie erwartet. Hier finden Sie häufige Fehlermeldungen, die während der Einrichtung angezeigt werden, und Informationen dazu, wie Sie sie beheben können:

Beispiel für Fehlermeldung Vorgehensweise
AICore ist mit dem Fehlertyp 4-CONNECTION_ERROR und dem Fehlercode 601-BINDING_FAILURE fehlgeschlagen: Der AICore-Dienst konnte nicht gebunden werden. Das kann passieren, wenn Sie die App mit ML Kit GenAI-APIs unmittelbar nach der Einrichtung des Geräts installieren oder wenn AICore nach der Installation Ihrer App deinstalliert wird. Wenn Sie die AICore App aktualisieren und Ihre App dann neu installieren, sollte das Problem behoben sein.
AICore ist mit dem Fehlertyp 3-PREPARATION_ERROR und dem Fehlercode 606-FEATURE_NOT_FOUND fehlgeschlagen: Das Feature … ist nicht verfügbar. Das kann passieren, wenn AICore den Download der neuesten Konfigurationen noch nicht abgeschlossen hat. Wenn das Gerät mit dem Internet verbunden ist, dauert die Aktualisierung in der Regel einige Minuten bis einige Stunden. Ein Neustart des Geräts kann das Update beschleunigen.

Hinweis: Wenn der Bootloader des Geräts entsperrt ist, wird dieser Fehler ebenfalls angezeigt. Diese API unterstützt keine Geräte mit entsperrten Bootloadern.
AICore ist mit dem Fehlertyp 1-DOWNLOAD_ERROR und dem Fehlercode 0-UNKNOWN fehlgeschlagen: Die Funktion ... ist mit dem Fehlerstatus 0 und dem Fehler „esz: UNAVAILABLE: Unable to resolve host ...“ fehlgeschlagen. Lassen Sie die Netzwerkverbindung bestehen, warten Sie einige Minuten und versuchen Sie es dann noch einmal.

Beispielcode