จัดการอินพุตเสียงจากแว่นตาเสียงและแว่นตาแสดงผลโดยใช้การจดจำคำพูดอัตโนมัติ

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทต่างๆ
แว่นตาสำหรับฟังเสียงและ
แสดงผล

คุณสามารถใช้การรู้จำคำพูดอัตโนมัติ (ASR) เพื่อจดจำคำพูดที่เฉพาะเจาะจง จากผู้ใช้โดยใช้ SpeechRecognizer แล้วเปลี่ยนคำพูดเหล่านั้นให้เป็นข้อความ SpeechRecognizer มีให้ใช้งานใน Android อยู่แล้ว (ไม่ต้องใช้ไลบรารีเพิ่มเติม) และทำงานได้แม้ในขณะออฟไลน์

หากต้องการให้ SpeechRecognizer แปลงคำพูดของผู้ใช้เป็นข้อความ ผู้ใช้ต้อง ให้สิทธิ์ RECORD_AUDIO แก่แอปของคุณ ดูวิธีขอสิทธิ์นี้สำหรับแอปของคุณได้ที่ ขอสิทธิ์เข้าถึงฮาร์ดแวร์

สร้างอินสแตนซ์ของ SpeechRecognizer

สร้างอินสแตนซ์ของ SpeechRecognizer ในเมธอด กิจกรรมที่คาดการณ์ไว้ onCreate เพื่อให้ใช้งานได้ตลอดอายุการใช้งานของ กิจกรรม

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

เมธอด setRecognitionListener ช่วยให้คุณระบุออบเจ็กต์ที่จะใช้เรียกกลับที่สำคัญ เช่น ใน 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
            }
        }

    }
    ...
}

ประเด็นสำคัญเกี่ยวกับโค้ด

  • ระบบจะค้นหาอาร์เรย์ 2 รายการใน Bundle อาร์เรย์แรกมีรายการที่ตรงกันทั้งหมด และอาร์เรย์ที่ 2 คือความมั่นใจของเครื่องมือรู้จำคำพูดในสิ่งที่ได้ยิน ดัชนีของอาร์เรย์เหล่านี้สอดคล้องกัน ระบบจะใช้รายการที่ตรงกันซึ่งมีค่า Confidence สูงสุด (mostConfidentIndex)

  • ระบบจะทำการจับคู่สตริงแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เพื่อกำหนดการดำเนินการที่ผู้ใช้ต้องการ

แนวทางอื่นเมื่อจับคู่

ในตัวอย่างก่อนหน้า ระบบจะใช้รายการที่ตรงกันซึ่งมีค่า Confidence สูงสุด การเลือกนี้หมายความว่าระบบต้องมั่นใจในสิ่งที่เข้าใจจากผู้ใช้พอสมควร ไม่เช่นนั้นระบบจะไม่แจ้งรายการที่ตรงกัน เมื่อใช้แนวทางนี้ คุณอาจได้รับผลลบลวง

อีกแนวทางหนึ่งคือการดูรายการที่ตรงกันทั้งหมดโดยไม่คำนึงถึงความมั่นใจ แล้วค้นหารายการที่ตรงกับอินพุตที่คุณต้องการ ในทางกลับกัน แนวทางนี้อาจทำให้เกิดผลบวกลวงมากขึ้น แนวทางที่คุณควรใช้ขึ้นอยู่กับกรณีการใช้งานเป็นส่วนใหญ่

เริ่มฟัง

หากต้องการเริ่มฟังผู้ใช้ ให้ระบุ ACTION_RECOGNIZE_SPEECH Intent เมื่อเรียกใช้ 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)

}

ประเด็นสำคัญเกี่ยวกับโค้ด