API de reconnaissance vocale GenAI

Dans l'API GenAI Speech Recognition de ML Kit, vous pouvez transcrire du contenu audio en texte. Cette API est compatible avec les modes suivants :

  • De base : l'API Speech Recognition utilise le modèle de reconnaissance vocale traditionnel sur l'appareil, semblable à l'API SpeechRecognizer
      .
    • Généralement disponible sur la plupart des appareils Android avec le niveau d'API 31 ou supérieur
  • Avancé : l'API Speech Recognition utilise le modèle GenAI, 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 l'entrée en streaming à partir d'un microphone 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 "This is a short message"
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 semblables à celles de l'API Speech Recognition de la plate-forme. L'un des principaux avantages de ML Kit est sa compatibilité avec un plus large éventail de versions de la plate-forme Android, nécessitant 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 offre une couverture linguistique plus large.

Premiers pas

Ajoutez l'API ML Kit Speech Recognition 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 la sortie en streaming 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()
}

Exigences concernant l'entrée audio

L'API GenAI Speech Recognition accepte les entrées provenant du microphone ou d'une source personnalisée via un descripteur de fichier.

Si vous utilisez AudioSource.fromPfd(parcelFileDescriptor), l'entrée audio doit répondre aux exigences strictes suivantes :

  • Format : PCM 16 bits brut sans en-tête.
  • Canaux : mono (canal unique).
  • Taux d'échantillonnage : 16 kHz.

Dans la plupart des cas d'utilisation, AudioSource.fromMic() est recommandé, car il gère automatiquement ces contraintes.

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 qui ont généralement une précision élevée : 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 ML Kit GenAI s'appuient sur l'application Android AICore pour accéder à Gemini Nano. Lorsqu'un appareil est configuré (y compris réinitialisé) ou que l'application AICore est réinitialisée (par exemple, effacement des données, désinstallation puis réinstallation), l'application AICore peut ne pas avoir suffisamment de temps pour terminer l'initialisation (y compris le téléchargement des dernières configurations à partir du serveur). Par conséquent, les API ML Kit GenAI peuvent ne pas fonctionner comme prévu. Voici les messages d'erreur de configuration courants que vous pouvez voir et comment les gérer :

Exemple de message d'erreur Comment répondre à une telle objection
Échec d'AICore avec le type d'erreur 4-CONNECTION_ERROR et le code d'erreur 601-BINDING_FAILURE : échec de la liaison 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. La mise à jour de l'application AICore, puis la réinstallation de votre application devraient résoudre le problème.
Échec d'AICore 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. Le redémarrage de l'appareil peut accélérer la mise à jour.

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

Exemple de code

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