Menangani input audio dari kacamata AI menggunakan Pengenalan Ucapan Otomatis

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Kacamata AI

Anda dapat menggunakan Pengenalan Ucapan Otomatis (ASR) untuk mengenali ucapan tertentu dari pengguna Anda menggunakan SpeechRecognizer dan mengubahnya menjadi teks. SpeechRecognizer sudah ada di Android (tidak memerlukan library tambahan) dan berfungsi bahkan saat offline.

Agar SpeechRecognizer dapat mengonversi ucapan pengguna menjadi teks, pengguna harus memberikan izin RECORD_AUDIO kepada aplikasi Anda. Untuk mempelajari cara meminta izin ini untuk aplikasi Anda, lihat Meminta izin hardware.

Buat instance SpeechRecognizer

Buat instance SpeechRecognizer dalam metode onCreate() aktivitas kacamata AI Anda sehingga tersedia selama masa aktif aktivitas:

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)
    ...
}

Mengonfigurasi RecognitionListener Anda

Metode setRecognitionListener() memungkinkan Anda menentukan objek tempat callback penting dilakukan, seperti di RecognitionListener.onResults(), yang dipanggil sistem setelah mengenali bahasa lisan.

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
            }
        }

    }
    ...
}

Poin penting tentang kode

  • Paket dikueri untuk dua array. Array pertama mencakup semua kecocokan dan yang kedua adalah keyakinan speech recognizer terhadap apa yang didengar. Indeks array ini saling bersesuaian. Pencocokan dengan nilai keyakinan tertinggi (mostConfidentIndex) akan digunakan.

  • Pencocokan string yang tidak peka huruf besar/kecil dilakukan untuk menentukan tindakan yang ingin dilakukan pengguna.

Pendekatan alternatif saat mencocokkan

Pada contoh sebelumnya, kecocokan dengan nilai keyakinan tertinggi akan digunakan. Pilihan ini berarti sistem harus cukup yakin dengan apa yang dipahaminya dari pengguna atau tidak akan menandai kecocokan. Saat menggunakan pendekatan ini, Anda mungkin mendapatkan negatif palsu.

Pendekatan lain adalah melihat semua kecocokan terlepas dari tingkat keyakinan dan menemukan kecocokan yang sesuai dengan input yang Anda cari. Sebaliknya, pendekatan semacam ini dapat menyebabkan lebih banyak positif palsu. Pendekatan yang harus Anda lakukan sangat bergantung pada kasus penggunaan Anda.

Mulai mendengarkan

Untuk mulai mendengarkan pengguna, tentukan intent ACTION_RECOGNIZE_SPEECH saat memanggil startListening().

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)

}

Poin penting tentang kode