Otomatik Konuşma Tanıma'yı kullanarak yapay zeka gözlüklerinden gelen ses girişini işleme

Geçerli XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
AI Glasses

SpeechRecognizer kullanarak kullanıcınızın belirli ifadelerini tanımak ve bunları metne dönüştürmek için Otomatik Konuşma Tanıma'yı (ASR) kullanabilirsiniz. SpeechRecognizer, Android'e yerleştirilmiştir (ek kitaplık gerektirmez) ve internet bağlantısı olmasa bile çalışır.

SpeechRecognizer'nın kullanıcınızın konuşmasını metne dönüştürmesi için kullanıcının uygulamanıza RECORD_AUDIO izni vermesi gerekir. Uygulamanız için bu izni nasıl isteyeceğinizi öğrenmek istiyorsanız Donanım izinleri isteme başlıklı makaleyi inceleyin.

SpeechRecognizer'ı başlatma

SpeechRecognizer öğesini yapay zeka gözlüğü etkinliğinizin onCreate() yönteminde, etkinliğin yaşam süresi boyunca kullanılabilir olacak şekilde oluşturun:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    //The RECORD_AUDIO permission must be granted to your app before instantiation

    speechRecognizer = SpeechRecognizer.createOnDeviceSpeechRecognizer(this)
    speechRecognizer?.setRecognitionListener(recognitionListener)
    ...
}

RecognitionListener'ınızı yapılandırma

setRecognitionListener() yöntemi, önemli geri çağırmaların yapıldığı nesneyi belirtmenize olanak tanır. Örneğin, sistemin konuşma dilini tanıdıktan sonra çağırdığı RecognitionListener.onResults().

val recognitionListener = object : RecognitionListener {

    override fun onResults(results: Bundle?) {

        val matches = results?.getStringArrayList(RESULTS_RECOGNITION)
        val confidences = results?.getFloatArray(CONFIDENCE_SCORES)

        val mostConfidentIndex = confidences!!.indices.maxByOrNull { confidences[it] }

        if (mostConfidentIndex != null){
            val spokenText = matches[mostConfidentIndex]

            if (spokenText.equals("Start my Run", ignoreCase = true)){
                // User indicated they want to start a run
            }
        }

    }
    ...
}

Kodla ilgili önemli noktalar

  • Paket, iki dizi için sorgulanır. İlk dizi tüm eşleşmeleri, ikinci dizi ise konuşma tanıma sisteminin duyulanlara olan güvenini içerir. Bu dizilerin indeksleri birbirine karşılık gelir. En yüksek güven değerine (mostConfidentIndex) sahip eşleşme kullanılır.

  • Kullanıcının hangi işlemi yapmak istediğini belirlemek için büyük/küçük harfe duyarlı olmayan bir dize eşleşmesi gerçekleştirilir.

Eşleştirme sırasında alternatif yaklaşımlar

Önceki örnekte, en yüksek güven değerine sahip eşleşme kullanılır. Bu seçim, sistemin kullanıcıdan anladığı konuda oldukça emin olması gerektiği veya eşleşmeyi işaretlemeyeceği anlamına gelir. Bu yaklaşımı kullanırken yanlış negatif sonuçlar alabilirsiniz.

Diğer bir yaklaşım ise güven düzeyinden bağımsız olarak tüm eşleşmelere göz atmak ve aradığınız girişe uygun eşleşmeleri bulmaktır. Bunun aksine, bu tür bir yaklaşım daha fazla yanlış pozitif sonuç verebilir. Benimsenecek yaklaşım büyük ölçüde kullanım alanınıza bağlıdır.

Dinlemeye başla

Kullanıcıyı dinlemeye başlamak için startListening()'ı çağırırken ACTION_RECOGNIZE_SPEECH amacını belirtin.

override fun onStart() {
    super.onStart()

    val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
        putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
    }

    speechRecognizer?.startListening(intent)

}

Kodla ilgili önemli noktalar