GenAI Speech Recognition API

ML Kit'in üretken yapay zeka Konuşma Tanıma API'sinde ses içeriklerini metne dönüştürebilirsiniz. Bu API aşağıdaki modları destekler:

  • Basic: Speech Recognition API, SpeechRecognizer API'ye benzer şekilde geleneksel cihaz üzerinde konuşma tanıma modelini kullanır.
    • Genel olarak API düzeyi 31 ve üzeri olan çoğu Android cihazda kullanılabilir.
  • Gelişmiş: Konuşma Tanıma API'si, daha geniş dil kapsamı ve daha iyi genel kalite sağlayan üretken yapay zeka modelini kullanır.
    • Pixel 10 cihazlarda kullanılabilir. Daha fazla cihaz için geliştirme çalışmaları devam etmektedir.

Temel özellikler

  • Mikrofon veya ses dosyasından akış girişini yakalar
  • Metne dönüştürülen metin, başlangıçta kısmi olabilen (ve değişikliğe tabi olan) ancak daha sonra nihai içerik haline gelen sürekli bir akış olarak sağlanır.

Örnek sonuçlar

Ses Mod Yerel ayar Çeviri yazı
audio_1 Temel en-US "Bu kısa bir mesajdır"
audio_2 Gelişmiş es-ES "Este es un mensaje corto."

Platform Speech Recognition API ile karşılaştırma

Temel modda ML Kit Konuşma Tanıma API'si, platform Konuşma Tanıma API'sine benzer temel işlevler sunar. ML Kit'in temel avantajlarından biri, daha geniş bir Android platform sürümü aralığını desteklemesidir. ML Kit, bazı platform API'lerinden daha geniş bir aralık olan API düzeyi 31 veya daha yüksek bir sürümü gerektirir.

Ayrıca, ML Kit Konuşma Tanıma API'si, Gelişmiş modda cihaz üzerinde Gemini modelini kullanarak daha geniş bir dil kapsamı sunar.

Başlayın

build.gradle yapılandırmanıza bağımlılık olarak ML Kit Konuşma Tanıma API'sini ekleyin.

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

Konuşma Tanıma API'sini uygulamanıza entegre etmek için bir SpeechRecognizer istemcisi oluşturun. Gerekli cihaz üzerinde model özelliklerinin durumunu kontrol edin ve model cihazda yoksa indirin. Ses girişinizi SpeechRecognizerRequest biçiminde hazırladıktan sonra, Kotlin akışından akış çıkışı almak için istemciyi kullanarak çıkarım yapın. Son olarak, kaynakları serbest bırakmak için istemciyi kapatmayı unutmayın.

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

Desteklenen diller ve cihazlar

Mod Yerel Ayarlar
Temel 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)
Gelişmiş Genellikle yüksek doğruluğa sahip yerel ayarlar: 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)

Desteklenen cihazlar

Mod Desteklenen Cihazlar
Temel API düzeyi 31 ve sonraki sürümleri kullanan Android cihazlar.
Gelişmiş Pixel 10

Sık karşılaşılan kurulum sorunları

ML Kit üretken yapay zeka API'leri, Gemini Nano'ya erişmek için Android AICore uygulamasına bağlıdır. Bir cihaz yeni kurulduğunda (sıfırlama dahil) veya AICore uygulaması yeni sıfırlandığında (ör. veriler temizlendiğinde, uygulama kaldırılıp yeniden yüklendiğinde) AICore uygulaması başlatma işlemini (sunucudan en son yapılandırmaları indirme dahil) tamamlamak için yeterli zamana sahip olmayabilir. Bu nedenle, ML Kit GenAI API'leri beklendiği gibi çalışmayabilir. Karşılaşabileceğiniz yaygın kurulum hata mesajları ve bunları nasıl ele alacağınız aşağıda açıklanmıştır:

Örnek hata mesajı Ne yapmalı?
AICore, 4-CONNECTION_ERROR hata türü ve 601-BINDING_FAILURE hata koduyla başarısız oldu: AICore hizmeti bağlanamadı. Bu durum, cihaz kurulumundan hemen sonra ML Kit GenAI API'lerini kullanarak uygulamayı yüklediğinizde veya uygulamanız yüklendikten sonra AICore kaldırıldığında ortaya çıkabilir. AICore uygulamasını güncelleyip uygulamanızı yeniden yüklediğinizde sorun düzelir.
AICore, 3-PREPARATION_ERROR hata türü ve 606-FEATURE_NOT_FOUND hata koduyla başarısız oldu: Özellik ... kullanılamıyor. Bu durum, AICore en son yapılandırmaları indirmeyi tamamlamadığında meydana gelebilir. Cihaz internete bağlandığında güncelleme işlemi genellikle birkaç dakika ile birkaç saat arasında sürer. Cihazı yeniden başlatmak güncellemeyi hızlandırabilir.

Cihazın bootloader'ının kilidi açıksa bu hatayı da görürsünüz. Bu API, bootloader'ı açık olan cihazları desteklemez.
AICore, 1-DOWNLOAD_ERROR hata türü ve 0-UNKNOWN hata koduyla başarısız oldu: Feature ... failed with failure status 0 and error esz: UNAVAILABLE: Unable to resolve host ... Ağ bağlantısını koruyun, birkaç dakika bekleyin ve tekrar deneyin.

Örnek kod

  • ML Kit Konuşma Tanıma API'si kod örneğini GitHub'da inceleyin.