Nell'API di riconoscimento vocale GenAI di ML Kit, puoi trascrivere i contenuti audio in testo. Questa API supporta le seguenti modalità:
- Base: l'API Speech Recognition utilizza il modello di riconoscimento vocale on-device tradizionale
simile all'API SpeechRecognizer
- Generalmente disponibile sulla maggior parte dei dispositivi Android con livello API 31 e versioni successive
- Avanzata: l'API Speech Recognition utilizza il modello GenAI, che offre
una copertura linguistica più ampia e una qualità complessiva migliore
- Disponibile su Pixel 10 e Pixel 11, con altri dispositivi in fase di sviluppo
Funzionalità chiave
- Acquisisce l'input in streaming dal microfono o dal file audio
- Il testo trascritto viene fornito come flusso continuo, che inizialmente potrebbe essere parziale (e soggetto a modifiche) prima di diventare il contenuto finale.
Risultati di esempio
| Audio | Modalità | Impostazioni internazionali | Trascrizione |
|---|---|---|---|
| audio_1 | Base | en-US | "This is a short message" |
| audio_2 | Avanzata | es-ES | "Este es un mensaje corto." |
Confronto con l'API Speech Recognition della piattaforma
Quando utilizzi la modalità Base, l'API Speech Recognition di ML Kit offre funzionalità di base simili all'API Speech Recognition della piattaforma. Un vantaggio fondamentale di ML Kit è il supporto per una gamma più ampia di versioni della piattaforma Android, che richiedono il livello API 31 o superiore, più ampio di alcune API della piattaforma.
Inoltre, l'API Speech Recognition di ML Kit utilizza il modello Gemini on-device in modalità Avanzata, fornendo una copertura linguistica più ampia.
Inizia
Aggiungi l'API Speech Recognition di ML Kit come dipendenza nella configurazione build.gradle.
implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")
Per integrare l'API Speech Recognition nella tua app, crea un client SpeechRecognizer. Controlla lo stato delle funzionalità del modello on-device necessarie e scarica il modello se non è già presente sul dispositivo. Dopo
aver preparato l'input audio in un SpeechRecognizerRequest, esegui l'inferenza utilizzando
il client per ricevere l'output in streaming dal flusso Kotlin. Infine, ricordati di chiudere il client per rilasciare le risorse.
// 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()
}
Requisiti per l'input audio
L'API Speech Recognition GenAI supporta l'input dal microfono o da un'origine personalizzata tramite un descrittore del file.
Se utilizzi AudioSource.fromPfd(parcelFileDescriptor), l'audio di input deve soddisfare i seguenti requisiti rigorosi:
- Formato: PCM a 16 bit non elaborato e senza intestazione.
- Canali: mono (canale singolo).
- Frequenza di campionamento: 16 kHz.
Per la maggior parte dei casi d'uso, è consigliabile utilizzare AudioSource.fromMic() perché gestisce automaticamente questi vincoli.
Lingue e dispositivi supportati
| Modalità | Impostazioni internazionali |
| Base | 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) |
| Avanzata | Impostazioni internazionali che in genere hanno un'elevata accuratezza: 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) |
Dispositivi supportati
| Modalità | Dispositivi supportati |
| Base | Dispositivi Android con livello API 31 e versioni successive. |
| Avanzata | Pixel 10, Pixel 11 |
Problemi di configurazione comuni
Le API GenAI di ML Kit si basano sull'app Android AICore per accedere a Gemini Nano. Quando un dispositivo viene configurato (incluso il ripristino) o l'app AICore viene ripristinata (ad es. cancellazione dei dati, disinstallazione e reinstallazione), l'app AICore potrebbe non avere tempo sufficiente per completare l'inizializzazione (incluso il download delle configurazioni più recenti dal server). Di conseguenza, le API GenAI di ML Kit potrebbero non funzionare come previsto. Di seguito sono riportati i messaggi di errore di configurazione comuni che potresti visualizzare e come gestirli:
| Esempio di messaggio di errore | Come gestirla |
| AICore failed with error type 4-CONNECTION_ERROR and error code 601-BINDING_FAILURE: AICore service failed to bind. | Questo potrebbe accadere quando installi l'app utilizzando le API GenAI di ML Kit immediatamente dopo la configurazione del dispositivo o quando AICore viene disinstallato dopo l'installazione dell'app. L'aggiornamento dell'app AICore e la reinstallazione dell'app dovrebbero risolvere il problema. |
| AICore failed with error type 3-PREPARATION_ERROR and error code 606-FEATURE_NOT_FOUND: Feature ... is not available. |
Questo potrebbe accadere quando AICore non ha completato il download delle configurazioni più recenti. Quando il dispositivo è connesso a internet, in genere l'aggiornamento richiede da pochi minuti a qualche ora. Il riavvio del dispositivo può velocizzare l'aggiornamento.
Tieni presente che se il bootloader del dispositivo è sbloccato, visualizzerai anche questo errore. Questa API non supporta i dispositivi con bootloader sbloccati. |
| AICore failed with error type 1-DOWNLOAD_ERROR and error code 0-UNKNOWN: Feature ... failed with failure status 0 and error esz: UNAVAILABLE: Unable to resolve host ... | Mantieni la connessione di rete, attendi qualche minuto e riprova. |
Codice campione
- Esplora il codice di esempio dell'API Speech Recognition di ML Kit su GitHub