Na API Speech Recognition do Kit de ML GenAI, é possível transcrever conteúdo de áudio para texto. Essa API oferece suporte aos seguintes modos:
- Básico: a API Speech Recognition usa o modelo tradicional de reconhecimento de fala no dispositivo
semelhante à API SpeechRecognizer
- Geralmente disponível na maioria dos dispositivos Android com o nível da API 31 e mais recentes
- Avançado: a API Speech Recognition usa o modelo GenAI, que produz
uma cobertura de linguagem mais ampla e uma qualidade geral melhor
- Disponível em dispositivos Pixel 10, com mais dispositivos em desenvolvimento
Principais recursos
- Captura a entrada de streaming do microfone ou do 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 | "This is a short message" |
| 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 Kit de ML oferece uma funcionalidade principal semelhante à API Speech Recognition da plataforma. Uma das principais vantagens do Kit de ML é o suporte a uma variedade maior de versões da plataforma Android, exigindo a API de nível 31 ou mais recente, que é mais ampla do que algumas APIs da plataforma.
Além disso, a API Speech Recognition do Kit de ML usa o modelo do Gemini no dispositivo no modo avançado, oferecendo uma cobertura de linguagem mais ampla.
Primeiros passos
Adicione a API Speech Recognition do Kit de ML como uma dependência na 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 do modelo se ele 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, lembre-se 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()
}
Requisitos de entrada de áudio
A API Speech Recognition do GenAI oferece suporte à entrada do microfone ou de uma fonte personalizada por meio de um descritor de arquivo.
Se você usar AudioSource.fromPfd(parcelFileDescriptor), o áudio de entrada precisará atender aos seguintes requisitos rigorosos:
- Formato: PCM bruto de 16 bits sem cabeçalho.
- Canais: mono (canal único).
- Taxa de amostragem: 16 kHz.
Para a maioria dos casos de uso, recomendamos AudioSource.fromMic(), porque ele processa essas restrições automaticamente.
Linguagens e dispositivos compatíveis
| Modo | 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 | Localidades que normalmente 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
| Modo | Dispositivos compatíveis |
| Básico | Dispositivos Android que usam a API de nível 31 e mais recentes. |
| Avançado | Pixel 10 |
Problemas comuns de configuração
As APIs GenAI do Kit de ML dependem do app AICore do Android para acessar o Gemini Nano. Quando um dispositivo é configurado (incluindo a redefinição) ou o app AICore é redefinido (por exemplo, dados limpos, desinstalados e reinstalados), o app AICore 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 GenAI do Kit de ML podem não funcionar como esperado. Confira as mensagens de erro de configuração comuns que podem aparecer e como lidar com elas:
| Exemplo de mensagem de erro | Como lidar |
| O AICore falhou com o tipo de erro 4-CONNECTION_ERROR e o código de erro 601-BINDING_FAILURE: falha na vinculação do serviço AICore. | Isso pode acontecer quando você instala o app usando as APIs GenAI do Kit de ML imediatamente após a configuração do dispositivo ou quando o AICore é desinstalado após a instalação do app. Atualizar o app AICore e reinstalar o app deve 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 terminou de fazer o download das configurações mais recentes. Quando o dispositivo está conectado à Internet, geralmente leva alguns minutos a algumas horas para atualizar. Reiniciar o dispositivo pode acelerar a atualização.
Observação: se o carregador de inicialização do dispositivo estiver desbloqueado, você também vai receber esse erro. Essa API não oferece suporte a 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 novamente. |
Exemplo de código
- Confira o exemplo de código da API Speech Recognition do Kit de ML no GitHub