API GenAI Speech Recognition

All'interno dell'API GenAI Speech Recognition di ML Kit, puoi trascrivere i contenuti audio in testo. Questa API supporta le seguenti modalità:

  • Base: l'API Speech Recognition utilizza il tradizionale modello di riconoscimento vocale sul dispositivo, simile all'API SpeechRecognizer
    • Disponibile in genere sulla maggior parte dei dispositivi Android con livello API 31 e versioni successive
  • Avanzata: l'API Speech Recognition utilizza il modello di AI generativa, che produce una copertura linguistica più ampia e una qualità complessiva migliore
    • Disponibile sui dispositivi Pixel 10, 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 Di base en-US "Questo è un messaggio breve"
audio_2 Avanzate es-ES "Este es un mensaje corto."

Confronto con l'API Speech Recognition della piattaforma

Quando utilizzi la modalità di base, l'API ML Kit Speech Recognition offre funzionalità di base simili all'API Speech Recognition della piattaforma. Un vantaggio fondamentale di ML Kit è il supporto di una gamma più ampia di versioni della piattaforma Android, che richiedono il livello API 31 o versioni successive, più ampio rispetto ad alcune API della piattaforma.

Inoltre, l'API Speech Recognition di ML Kit utilizza il modello Gemini sul dispositivo 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 sul dispositivo 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 di streaming dal flusso Kotlin. Infine, ricorda 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()
}

Lingue e dispositivi supportati

Modalità Locales
Di 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)
Avanzate Località che in genere hanno un'elevata precisione: 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
Di base Dispositivi Android con livello API 31 e versioni successive.
Avanzate Pixel 10

Problemi di configurazione comuni

Le API ML Kit GenAI si basano sull'app Android AI Core per accedere a Gemini Nano. Quando un dispositivo viene appena configurato (incluso il ripristino) o l'app AICore viene appena 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 non è riuscito a eseguire l'operazione con il tipo di errore 4-CONNECTION_ERROR e il codice di errore 601-BINDING_FAILURE: il servizio AICore non è riuscito a eseguire il binding. Ciò può accadere quando installi l'app utilizzando le API ML Kit GenAI 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 non è riuscito a completare l'operazione con il tipo di errore 3 - PREPARATION_ERROR e il codice di errore 606 - FEATURE_NOT_FOUND: Feature ... is not available. Ciò può accadere quando AICore non ha terminato il download delle configurazioni più recenti. Quando il dispositivo è connesso a internet, l'aggiornamento richiede in genere da pochi minuti a qualche ora. Il riavvio del dispositivo può velocizzare l'aggiornamento.

Tieni presente che se il bootloader del dispositivo è sbloccato, verrà visualizzato anche questo errore. Questa API non supporta i dispositivi con bootloader sbloccati.
AICore non è riuscito a completare l'operazione con il tipo di errore 1-DOWNLOAD_ERROR e il codice di errore 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 di esempio

  • Esplora il codice di esempio dell'API Speech Recognition di ML Kit su GitHub