API de reconnaissance vocale GenAI

L'API de reconnaissance vocale GenAI de ML Kit vous permet de transcrire du contenu audio en texte. Cette API est compatible avec les modes suivants :

  • De base : l'API Speech Recognition utilise le modèle traditionnel de reconnaissance vocale sur l'appareil, semblable à l'API SpeechRecognizer.
    • Généralement disponible sur la plupart des appareils Android avec le niveau d'API 31 et supérieur
  • Avancé : l'API Speech Recognition utilise le modèle d'IA générative, qui offre une couverture linguistique plus large et une meilleure qualité globale.
    • Disponible sur les appareils Pixel 10, et d'autres appareils sont en cours de développement

Capacités clés

  • Capture les entrées de flux continu à partir d'un micro ou d'un fichier audio
  • Le texte transcrit est fourni sous forme de flux continu, qui peut initialement être partiel (et sujet à modification) avant de devenir le contenu final.

Exemples de résultats

Audio Mode Paramètres régionaux Transcription
audio_1 De base en-US "Ceci est un message court"
audio_2 Avancé es-ES "Este es un mensaje corto."

Comparaison avec l'API Speech Recognition de la plate-forme

En mode de base, l'API ML Kit Speech Recognition offre des fonctionnalités de base similaires à celles de l'API Speech Recognition de la plate-forme. L'un des principaux avantages de ML Kit est sa compatibilité avec un plus grand nombre de versions de la plate-forme Android, qui nécessitent le niveau d'API 31 ou supérieur, ce qui est plus large que certaines API de plate-forme.

De plus, l'API ML Kit Speech Recognition utilise le modèle Gemini sur l'appareil en mode avancé, ce qui permet une couverture linguistique plus large.

Premiers pas

Ajoutez l'API Speech Recognition de ML Kit en tant que dépendance dans votre configuration build.gradle.

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

Pour intégrer l'API Speech Recognition à votre application, créez un client SpeechRecognizer. Vérifiez l'état des fonctionnalités de modèle sur l'appareil nécessaires et téléchargez le modèle s'il n'est pas déjà sur l'appareil. Après avoir préparé votre entrée audio dans un SpeechRecognizerRequest, exécutez l'inférence à l'aide du client pour recevoir le flux de sortie du flux Kotlin. Enfin, n'oubliez pas de fermer le client pour libérer les ressources.

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

Langues et appareils compatibles

Mode Paramètres régionaux
De base en-US, fr-FR (bêta), it-IT (bêta), de-DE (bêta), es-ES (bêta), hi-IN (bêta), ja-JP (bêta), pt-BR (bêta), tr-TR (bêta), pl-PL (bêta), cmn-Hans-CN (bêta), ko-KR (bêta), cmn-Hant-TW (bêta), ru-RU (bêta), vi-VN (bêta)
Avancé Paramètres régionaux généralement très précis : 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 (bêta), da-DK (bêta), sv-SE (bêta), pl-PL (bêta), hi-IN (bêta), vi-VN (bêta), id-ID (bêta), ar-SA (bêta), tr-TR (bêta)

Appareils compatibles

Mode Appareils compatibles
De base Appareils Android utilisant le niveau d'API 31 ou supérieur.
Avancé Pixel 10

Problèmes de configuration courants

Les API d'IA générative de ML Kit s'appuient sur l'application Android AICore pour accéder à Gemini Nano. Lorsqu'un appareil vient d'être configuré (y compris réinitialisé) ou que l'application AICore vient d'être réinitialisée (par exemple, en effaçant les données, puis en la désinstallant et en la réinstallant), il se peut que l'application AICore n'ait pas eu suffisamment de temps pour terminer l'initialisation (y compris le téléchargement des dernières configurations depuis le serveur). Par conséquent, il est possible que les API ML Kit GenAI ne fonctionnent pas comme prévu. Voici les messages d'erreur de configuration courants que vous pouvez rencontrer et comment les résoudre :

Exemple de message d'erreur Comment répondre
AICore a échoué avec le type d'erreur 4-CONNECTION_ERROR et le code d'erreur 601-BINDING_FAILURE : échec de l'association du service AICore. Cela peut se produire lorsque vous installez l'application à l'aide des API ML Kit GenAI immédiatement après la configuration de l'appareil ou lorsque AICore est désinstallé après l'installation de votre application. Mettre à jour l'application AICore, puis réinstaller votre application devrait résoudre le problème.
AICore a échoué avec le type d'erreur 3-PREPARATION_ERROR et le code d'erreur 606-FEATURE_NOT_FOUND : la fonctionnalité ... n'est pas disponible. Cela peut se produire lorsque AICore n'a pas terminé de télécharger les dernières configurations. Lorsque l'appareil est connecté à Internet, la mise à jour prend généralement de quelques minutes à quelques heures. Redémarrer l'appareil peut accélérer la mise à jour.

Notez que si le bootloader de l'appareil est déverrouillé, cette erreur s'affichera également. Cette API n'est pas compatible avec les appareils dont le bootloader est déverrouillé.
AICore a échoué avec le type d'erreur 1-DOWNLOAD_ERROR et le code d'erreur 0-UNKNOWN : la fonctionnalité ... a échoué avec l'état d'échec 0 et l'erreur esz : UNAVAILABLE : Impossible de résoudre l'hôte ... Maintenez la connexion réseau, patientez quelques minutes, puis réessayez.

Exemple de code

  • Explorez l'exemple de code de l'API ML Kit Speech Recognition sur GitHub.