API de GenAI Speech Recognition

Dentro de la API de GenAI Speech Recognition de ML Kit, puedes transcribir contenido de audio a texto. Esta API admite los siguientes modos:

  • Básico: La API de Speech Recognition usa el modelo tradicional de reconocimiento de voz en el dispositivo, similar a la API de SpeechRecognizer.
    • Disponible de forma general en la mayoría de los dispositivos Android con el nivel de API 31 y versiones posteriores
  • Avanzado: La API de Speech Recognition usa el modelo de IA generativa, que produce una cobertura de lenguaje más amplia y una mejor calidad general.
    • Disponible en dispositivos Pixel 10, y se están desarrollando más dispositivos

Funciones clave

  • Captura la entrada de transmisión desde un micrófono o un archivo de audio
  • El texto transcrito se proporciona como un flujo continuo, que puede ser parcial (y estar sujeto a cambios) antes de convertirse en el contenido final.

Resultados de ejemplo

Audio Modo Configuración regional Transcripción
audio_1 Básico en-US "Este es un mensaje corto".
audio_2 Avanzado es-ES "Este es un mensaje corto".

Comparación con la API de Speech Recognition de la plataforma

Cuando se usa el modo básico, la API de Speech Recognition de ML Kit ofrece una funcionalidad principal similar a la API de Speech Recognition de la plataforma. Una ventaja clave de ML Kit es su compatibilidad con una mayor variedad de versiones de la plataforma de Android, que requieren el nivel de API 31 o superior, lo que es más amplio que algunas APIs de la plataforma.

Además, la API de Speech Recognition de ML Kit usa el modelo de Gemini integrado en el dispositivo en el modo avanzado, lo que proporciona una cobertura de idiomas más amplia.

Comenzar

Agrega la API de Speech Recognition de ML Kit como una dependencia en tu configuración de build.gradle

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

Para integrar la API de Speech Recognition en tu app, crea un cliente SpeechRecognizer. Verifica el estado de las funciones necesarias del modelo integrado en el dispositivo y descarga el modelo si aún no está en el dispositivo. Después de preparar la entrada de audio en un SpeechRecognizerRequest, ejecuta la inferencia con el cliente para recibir la salida de transmisión del flujo de Kotlin. Por último, recuerda cerrar el cliente para liberar recursos.

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

Idiomas y dispositivos compatibles

Modo Configuración regional
Básico 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)
Avanzado Configuraciones regionales que suelen tener una alta precisión: es-ES, fr-FR, de-DE, it-IT, ja-JP, ko-KR, pt-PT, ru-RU, th-TH, cmn-Hans-CN, cmn-Hant-TW, en-US, 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)

Dispositivos compatibles

Modo Dispositivos compatibles
Básico Dispositivos Android que usan el nivel de API 31 y versiones posteriores
Avanzado Pixel 10

Problemas comunes de configuración

Las APIs de IA generativa de ML Kit dependen de la app de AICore de Android para acceder a Gemini Nano. Cuando se configura un dispositivo (incluido el restablecimiento) o se restablece la app de AICore (p.ej., se borran los datos, se desinstala y se vuelve a instalar), es posible que la app de AICore no tenga tiempo suficiente para finalizar la inicialización (incluida la descarga de las configuraciones más recientes del servidor). Como resultado, es posible que las APIs de IA generativa de ML Kit no funcionen según lo esperado. A continuación, se muestran los mensajes de error de configuración comunes que podrías ver y cómo controlarlos:

Ejemplo de mensaje de error Cómo manejarla
AICore falló con el tipo de error 4-CONNECTION_ERROR y el código de error 601-BINDING_FAILURE: No se pudo vincular el servicio de AICore. Esto podría ocurrir cuando instalas la app con las APIs de IA generativa de ML Kit inmediatamente después de configurar el dispositivo o cuando se desinstala AICore después de instalar la app. Actualizar la app de AICore y, luego, reinstalar tu app debería solucionar el problema.
AICore falló con el tipo de error 3-PREPARATION_ERROR y el código de error 606-FEATURE_NOT_FOUND: La función … no está disponible. Esto podría suceder cuando AICore no haya terminado de descargar los parámetros de configuración más recientes. Cuando el dispositivo está conectado a Internet, la actualización suele tardar entre unos minutos y unas horas. Reiniciar el dispositivo puede acelerar la actualización.

Ten en cuenta que, si el bootloader del dispositivo está desbloqueado, también verás este error, ya que la API no admite dispositivos con bootloaders desbloqueados.
AICore falló con el tipo de error 1-DOWNLOAD_ERROR y el código de error 0-UNKNOWN: La función … falló con el estado de falla 0 y el error esz: UNAVAILABLE: No se pudo resolver el host … Mantén la conexión de red, espera unos minutos y vuelve a intentarlo.

Código de muestra

  • Explora la muestra de código de la API de Speech Recognition de ML Kit en GitHub.