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

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

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

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

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

สร้างอินสแตนซ์ SpeechRecognizer ในเมธอด onCreate() ของกิจกรรมแว่นตา AI เพื่อให้พร้อมใช้งานตลอดอายุการใช้งานของกิจกรรม

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 รายการในชุด อาร์เรย์แรกประกอบด้วยการจับคู่ทั้งหมด และอาร์เรย์ที่ 2 คือความเชื่อมั่นของโปรแกรมจดจำเสียงพูดในสิ่งที่ได้ยิน ดัชนีของอาร์เรย์เหล่านี้สอดคล้องกัน ระบบจะใช้การจับคู่ที่มีค่าความเชื่อมั่นสูงสุด (mostConfidentIndex)

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

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

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

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

เริ่มฟัง

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

}

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