আপনি SpeechRecognizer ব্যবহার করে আপনার ব্যবহারকারীর নির্দিষ্ট উচ্চারণ সনাক্ত করতে এবং সেগুলিকে টেক্সটে রূপান্তর করতে অটোমেটিক স্পিচ রিকগনিশন (ASR) ব্যবহার করতে পারেন। SpeechRecognizer অ্যান্ড্রয়েডে তৈরি (কোনও অতিরিক্ত লাইব্রেরির প্রয়োজন নেই) এবং অফলাইনেও কাজ করে।
SpeechRecognizer আপনার ব্যবহারকারীর বক্তব্যকে টেক্সটে রূপান্তর করার জন্য, ব্যবহারকারীকে আপনার অ্যাপটিকে RECORD_AUDIO অনুমতি দিতে হবে। আপনার অ্যাপের জন্য এই অনুমতি কীভাবে অনুরোধ করবেন তা জানতে, হার্ডওয়্যার অনুমতির অনুরোধ দেখুন।
স্পিচ রিকগনাইজার ইন্সট্যান্টিয়েট করুন
আপনার AI চশমা কার্যকলাপের onCreate() পদ্ধতিতে SpeechRecognizer চালু করুন যাতে এটি কার্যকলাপের জীবনকাল ধরে উপলব্ধ থাকে:
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
}
}
}
...
}
কোড সম্পর্কে গুরুত্বপূর্ণ বিষয়সমূহ
বান্ডেলটি দুটি অ্যারের জন্য জিজ্ঞাসা করা হয়। প্রথম অ্যারেতে সমস্ত মিল অন্তর্ভুক্ত থাকে এবং দ্বিতীয়টি হল স্পিচ শনাক্তকারীর শোনা জিনিসের উপর আস্থা। এই অ্যারের সূচকগুলি একে অপরের সাথে মিলে যায়। সর্বোচ্চ আত্মবিশ্বাসের মান (
mostConfidentIndex) সহ মিল ব্যবহার করা হয়।ব্যবহারকারী কোন পদক্ষেপ নিতে চান তা নির্ধারণ করার জন্য একটি কেস-অসংবেদনশীল স্ট্রিং ম্যাচ করা হয়।
মিলের সময় বিকল্প পদ্ধতি
পূর্ববর্তী উদাহরণে, সর্বোচ্চ আত্মবিশ্বাসের মান সহ মিল ব্যবহার করা হয়েছে। এই পছন্দের অর্থ হল সিস্টেমটিকে ব্যবহারকারীর কাছ থেকে যা বোঝা গেছে তাতে যথেষ্ট আত্মবিশ্বাসী হতে হবে, অন্যথায় এটি কোনও মিল চিহ্নিত করবে না। এই পদ্ধতিটি ব্যবহার করার সময়, আপনি মিথ্যা নেতিবাচক ফলাফল পেতে পারেন।
আরেকটি পদ্ধতি হতে পারে আত্মবিশ্বাস নির্বিশেষে সমস্ত মিলগুলি দেখে নেওয়া এবং আপনার পছন্দের ইনপুটের সাথে মানানসই যেকোনো মিল খুঁজে বের করা। বিপরীতে, এই ধরণের পদ্ধতি আরও বেশি মিথ্যা ইতিবাচক ফলাফলের দিকে নিয়ে যেতে পারে। আপনার কোন পদ্ধতিটি গ্রহণ করা উচিত তা মূলত আপনার ব্যবহারকারীর উপর নির্ভর করে।
শুনতে শুরু করুন
ব্যবহারকারীর কথা শোনা শুরু করতে, startListening() কল করার সময় ACTION_RECOGNIZE_SPEECH ইন্টেন্ট নির্দিষ্ট করুন।
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)
}
কোড সম্পর্কে গুরুত্বপূর্ণ বিষয়সমূহ
-
ACTION_RECOGNIZE_SPEECHব্যবহার করার সময়, আপনাকে অবশ্যইEXTRA_LANGUAGE_MODELঅতিরিক্তটিও নির্দিষ্ট করতে হবে। -
LANGUAGE_MODEL_FREE_FORMকথোপকথনের জন্য তৈরি।