API GenAI Speech Recognition

Com a API GenAI Speech Recognition do Kit de ML, é possível transcrever conteúdo de áudio em texto. Essa API é compatível com os seguintes modos:

  • Básico: a API Speech Recognition usa o modelo tradicional de reconhecimento de fala no dispositivo, semelhante à API SpeechRecognizer.
    • Disponível para a maioria dos dispositivos Android com nível 31 da API e versões mais recentes
  • Avançado: a API Speech-to-Text usa o modelo de IA generativa, que produz uma cobertura de linguagem mais ampla e uma qualidade geral melhor.
    • Disponível em dispositivos Pixel 10 e em mais dispositivos em desenvolvimento

Principais recursos

  • Captura a entrada de streaming de um microfone ou arquivo de áudio
  • O texto transcrito é fornecido como um fluxo contínuo, que pode ser parcial (e sujeito a mudanças) antes de se tornar o conteúdo final.

Resultados de exemplo

Áudio Modo Localidade Transcrição
audio_1 Básico en-US "Esta é uma mensagem curta"
audio_2 Avançado es-ES "Este es un mensaje corto."

Comparação com a API Speech Recognition da plataforma

Ao usar o modo básico, a API Speech Recognition do ML Kit oferece funcionalidades principais semelhantes à API Speech Recognition da plataforma. Uma das principais vantagens do ML Kit é a compatibilidade com uma variedade maior de versões da plataforma Android, exigindo o nível 31 da API ou mais recente, o que é mais amplo do que algumas APIs da plataforma.

Além disso, a API Speech Recognition do Kit de ML usa o modelo Gemini no dispositivo no modo avançado, oferecendo uma cobertura de idiomas mais ampla.

Primeiros passos

Adicione a API Speech Recognition do ML Kit como uma dependência na sua configuração build.gradle.

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

Para integrar a API Speech Recognition ao seu app, crie um cliente SpeechRecognizer. Verifique o status dos recursos necessários do modelo no dispositivo e faça o download dele se ainda não estiver no dispositivo. Depois de preparar a entrada de áudio em um SpeechRecognizerRequest, execute a inferência usando o cliente para receber a saída de streaming do fluxo Kotlin. Por fim, não se esqueça de fechar o 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 e dispositivos compatíveis

Moda Localidades
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)
Avançado Locais que geralmente têm alta precisão: 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)

Dispositivos compatíveis

Moda Dispositivos compatíveis
Básico Dispositivos Android com nível 31 da API e versões mais recentes.
Avançado Pixel 10

Problemas comuns de configuração

As APIs GenAI do Kit de ML dependem do app Android AICore para acessar o Gemini Nano. Quando um dispositivo é configurado (incluindo redefinição) ou o app AICore é redefinido (por exemplo, limpar dados, desinstalar e reinstalar), ele pode não ter tempo suficiente para concluir a inicialização (incluindo o download das configurações mais recentes do servidor). Como resultado, as APIs de IA generativa do ML Kit podem não funcionar como esperado. Confira as mensagens de erro de configuração comuns que você pode encontrar e como lidar com elas:

Exemplo de mensagem de erro Como proceder
O AICore falhou com o tipo de erro 4-CONNECTION_ERROR e o código de erro 601-BINDING_FAILURE: falha ao vincular o serviço do AICore. Isso pode acontecer quando você instala o app usando as APIs de IA generativa do ML Kit imediatamente após a configuração do dispositivo ou quando o AICore é desinstalado depois que o app é instalado. Atualize e reinstale o app AICore para corrigir o problema.
O AICore falhou com o tipo de erro 3-PREPARATION_ERROR e o código de erro 606-FEATURE_NOT_FOUND: o recurso ... não está disponível. Isso pode acontecer quando o AICore não termina de baixar as configurações mais recentes. Quando o dispositivo está conectado à Internet, geralmente leva de alguns minutos a algumas horas para atualizar. Reiniciar o dispositivo pode acelerar a atualização.

Se o carregador de inicialização do dispositivo estiver desbloqueado, esse erro também vai aparecer. A API não é compatível com dispositivos com carregadores de inicialização desbloqueados.
O AICore falhou com o tipo de erro 1-DOWNLOAD_ERROR e o código de erro 0-UNKNOWN: o recurso ... falhou com o status de falha 0 e o erro esz: UNAVAILABLE: não foi possível resolver o host ... Mantenha a conexão de rede, aguarde alguns minutos e tente de novo.

Código de amostra

  • Confira o exemplo de código da API Speech Recognition do ML Kit no GitHub.