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
- Saat menggunakan
ACTION_RECOGNIZE_SPEECH, Anda juga harus menentukan ekstraEXTRA_LANGUAGE_MODEL. LANGUAGE_MODEL_FREE_FORMditujukan untuk percakapan lisan.