1. ভূমিকা
ML Kit হল একটি মোবাইল SDK যা একটি শক্তিশালী কিন্তু সহজে ব্যবহারযোগ্য প্যাকেজে Android এবং Android অ্যাপগুলিতে Google-এর মেশিন লার্নিং দক্ষতা নিয়ে আসে৷ আপনি মেশিন লার্নিংয়ে নতুন বা অভিজ্ঞ হোন না কেন, আপনি কোডের কয়েকটি লাইনে আপনার প্রয়োজনীয় কার্যকারিতা সহজেই বাস্তবায়ন করতে পারেন। শুরু করার জন্য নিউরাল নেটওয়ার্ক বা মডেল অপ্টিমাইজেশান সম্পর্কে গভীর জ্ঞানের প্রয়োজন নেই।
এটা কিভাবে কাজ করে?
ML Kit Google-এর ML প্রযুক্তি, যেমন Mobile Vision , এবং TensorFlow Lite-কে একক SDK-তে একসাথে এনে আপনার অ্যাপগুলিতে ML কৌশলগুলি প্রয়োগ করা সহজ করে তোলে৷ আপনার মোবাইল ভিশন-এর অন-ডিভাইস মডেলগুলির রিয়েল-টাইম ক্ষমতার শক্তি বা কাস্টম টেনসরফ্লো লাইট মডেলগুলির নমনীয়তার প্রয়োজন হোক না কেন, ML কিট কোডের কয়েকটি লাইন দিয়ে এটি সম্ভব করে তোলে৷
এই কোডল্যাব আপনার বিদ্যমান অ্যান্ড্রয়েড অ্যাপে রিয়েল-টাইম ক্যামেরা ফিড থেকে টেক্সট রিকগনিশন, ভাষা শনাক্তকরণ এবং অনুবাদ যোগ করার জন্য আপনাকে সহজ পদক্ষেপের মধ্য দিয়ে নিয়ে যাবে। এই কোডল্যাবটি এমএল কিট এপিআই-এর সাথে ক্যামেরাএক্স ব্যবহারের সর্বোত্তম অনুশীলনগুলিও তুলে ধরবে।
যা আপনি নির্মাণ করবেন
এই কোডল্যাবে, আপনি এমএল কিট দিয়ে একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করতে যাচ্ছেন। রিয়েল-টাইম ক্যামেরা ফিড থেকে টেক্সট শনাক্ত করতে আপনার অ্যাপ ML কিট টেক্সট রিকগনিশন অন-ডিভাইস API ব্যবহার করবে। এটি স্বীকৃত পাঠ্যের ভাষা সনাক্ত করতে ML Kit Language Identification API ব্যবহার করবে। সবশেষে, আপনার অ্যাপটি ML Kit Translation API ব্যবহার করে 59টি বিকল্পের মধ্যে যেকোনো নির্বাচিত ভাষায় এই পাঠ্যটিকে অনুবাদ করবে।
শেষ পর্যন্ত, আপনি নীচের ছবির অনুরূপ কিছু দেখতে হবে.
আপনি কি শিখবেন
- যেকোন অ্যান্ড্রয়েড অ্যাপে সহজেই মেশিন লার্নিং ক্ষমতা যোগ করতে ML কিট SDK ব্যবহার করবেন।
- এমএল কিট টেক্সট রিকগনিশন, ল্যাঙ্গুয়েজ আইডেন্টিফিকেশন, ট্রান্সলেশন এপিআই এবং তাদের ক্ষমতা।
- এমএল কিট এপিআই সহ ক্যামেরাএক্স লাইব্রেরি কীভাবে ব্যবহার করবেন।
আপনি কি প্রয়োজন হবে
- অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v4.0+)
- একটি শারীরিক অ্যান্ড্রয়েড ডিভাইস
- নমুনা কোড
- কোটলিনে অ্যান্ড্রয়েড বিকাশের প্রাথমিক জ্ঞান
এই কোডল্যাবটি এমএল কিটের উপর দৃষ্টি নিবদ্ধ করে। অ-প্রাসঙ্গিক ধারণা এবং কোড ব্লক ইতিমধ্যেই আপনার জন্য প্রদান করা হয়েছে এবং প্রয়োগ করা হয়েছে।
2. সেট আপ করা হচ্ছে
কোডটি ডাউনলোড করুন
এই কোডল্যাবের সমস্ত কোড ডাউনলোড করতে নিম্নলিখিত লিঙ্কে ক্লিক করুন:
ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি আপনার প্রয়োজনীয় সমস্ত সংস্থান সহ একটি রুট ফোল্ডার ( mlkit-android
) আনপ্যাক করবে। এই কোডল্যাবের জন্য, আপনার শুধুমাত্র translate
সাবডিরেক্টরিতে সম্পদের প্রয়োজন হবে।
mlkit-android
সংগ্রহস্থলের translate
সাবডিরেক্টরিতে নিম্নলিখিত ডিরেক্টরি রয়েছে:
- starter — এই কোডল্যাবে আপনি যে কোড তৈরি করেন তা শুরু করার কোড।
3. প্রকল্প আমদানি করুন এবং এমএল কিট এবং ক্যামেরাএক্স নির্ভরতা যাচাই করুন
অ্যান্ড্রয়েড স্টুডিওতে স্টার্টার প্রকল্প আমদানি করুন। app/build.gradle
ফাইলে, প্রয়োজনীয় ML Kit এবং CameraX নির্ভরতা অন্তর্ভুক্ত আছে কিনা যাচাই করুন:
// CameraX dependencies
def camerax_version = "1.0.0-beta05"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
implementation "androidx.camera:camera-view:1.0.0-alpha12"
// ML Kit dependencies
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
implementation 'com.google.mlkit:language-id:16.0.0'
implementation 'com.google.mlkit:translate:16.0.0'
4. স্টার্টার অ্যাপ চালান
এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন এবং এমএল কিট নির্ভরতার জন্য পরীক্ষা করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত! রান ক্লিক করুন ( ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।
অ্যাপটি আপনার ডিভাইসে চালু হওয়া উচিত এবং আপনি একটি লাইভ ফিড দেখতে বিভিন্ন পাঠ্যের দিকে ক্যামেরা নির্দেশ করতে পারেন, কিন্তু পাঠ্য শনাক্তকরণ কার্যকারিতা এখনও প্রয়োগ করা হয়নি।
5. পাঠ্য স্বীকৃতি যোগ করুন
এই ধাপে, আমরা ভিডিও ক্যামেরা থেকে পাঠ্য শনাক্ত করতে আপনার অ্যাপে কার্যকারিতা যোগ করব।
এমএল কিট টেক্সট ডিটেক্টর ইনস্ট্যান্টিয়েট করুন
TextAnalyzer.kt
এর উপরে TODO
প্রতিস্থাপন করুন TextRecognition
ইনস্ট্যান্টিয়েট করতে। এইভাবে আপনি পরবর্তী ধাপে ব্যবহার করার জন্য পাঠ্য শনাক্তকারীর কাছে একটি হ্যান্ডেল পাবেন। আমাদের ডিটেক্টরটিকে লাইফসাইকেল পর্যবেক্ষক হিসাবে যুক্ত করতে হবে যাতে ডিটেক্টরটি আর প্রয়োজন না হলে সঠিকভাবে বন্ধ করতে।
TextAnalyzer.kt
private val detector = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
init {
lifecycle.addObserver(detector)
}
একটি ইনপুট চিত্রে পাঠ্য শনাক্তকরণ চালান (ক্যামেরা থেকে বাফার দিয়ে তৈরি)
CameraX লাইব্রেরি ক্যামেরা থেকে ইমেজ বিশ্লেষণের জন্য প্রস্তুত একটি স্ট্রিম প্রদান করে। প্রতিটি ইমেজ ফ্রেমে এমএল কিট টেক্সট রিকগনিশন ব্যবহার করতে TextAnalyzer ক্লাসে recognizeText()
পদ্ধতিটি প্রতিস্থাপন করুন।
TextAnalyzer.kt
private fun recognizeText(
image: InputImage
): Task<Text> {
// Pass image to an ML Kit Vision API
return detector.process(image)
.addOnSuccessListener { text ->
// Task completed successfully
result.value = text.text
}
.addOnFailureListener { exception ->
// Task failed with an exception
Log.e(TAG, "Text recognition error", exception)
val message = getErrorMessage(exception)
message?.let {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
}
}
নিচের লাইনটি দেখায় কিভাবে আমরা টেক্সট শনাক্তকরণ শুরু করার জন্য উপরের পদ্ধতিটিকে কল করি। analyze()
পদ্ধতির শেষে নিম্নলিখিত লাইন যোগ করুন। মনে রাখবেন যে চিত্রটির বিশ্লেষণ সম্পূর্ণ হয়ে গেলে আপনাকে imageProxy.close
কল করতে হবে, অন্যথায় লাইভ ক্যামেরা ফিড বিশ্লেষণের জন্য পরবর্তী চিত্রগুলি প্রক্রিয়া করতে সক্ষম হবে না।
TextAnalyzer.kt
recognizeText(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
imageProxy.close()
}
আপনার ডিভাইসে অ্যাপটি চালান
এখন রান ক্লিক করুন ( ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপ লোড হয়ে গেলে, এটি রিয়েল-টাইমে ক্যামেরা থেকে পাঠ্য শনাক্ত করা শুরু করবে। নিশ্চিত করতে আপনার ক্যামেরাকে যেকোনো পাঠ্যের দিকে নির্দেশ করুন। যদি আপনার অ্যাপ কোনো টেক্সট চিনতে না পারে, তাহলে ক্যামেরাটিকে টেক্সটের দিকে নির্দেশ করার আগে একটি ফাঁকা জায়গায় ক্যামেরা পয়েন্ট করে সনাক্তকরণটি 'রিসেট' করার চেষ্টা করুন।
6. ভাষা শনাক্তকরণ যোগ করুন
এমএল কিট ভাষা শনাক্তকারীকে ইনস্ট্যান্টিয়েট করুন
MainViewModel.kt
প্রধান ফোল্ডারে অবস্থিত। ফাইলটিতে নেভিগেট করুন এবং নিম্নলিখিত ক্ষেত্রটি MainViewModel.kt
এ যোগ করুন। এইভাবে আপনি নিম্নলিখিত ধাপে ব্যবহার করার জন্য ভাষা শনাক্তকারীর একটি হ্যান্ডেল পাবেন।
MainViewModel.kt
private val languageIdentifier = LanguageIdentification.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
উপরন্তু, আপনি নিশ্চিত হতে চান যে ক্লায়েন্টগুলি সঠিকভাবে বন্ধ হয়ে গেছে যখন এটির আর প্রয়োজন নেই। এটি করার জন্য, ViewModel
এর onCleared()
পদ্ধতিটি ওভাররাইড করুন।
MainViewModel.kt
override fun onCleared() {
languageIdentifier.close()
translators.evictAll()
}
শনাক্ত করা টেক্সটে অন-ডিভাইস ভাষা শনাক্তকরণ চালান
চিত্র থেকে সনাক্ত করা পাঠ্যের ভাষা পেতে ML কিট ভাষা সনাক্তকারী ব্যবহার করুন।
MainViewModel.kt
এর sourceLang
ক্ষেত্রের সংজ্ঞায় TODO
নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন। এই স্নিপেটটি ভাষা সনাক্তকরণ পদ্ধতিকে কল করে এবং ফলাফল নির্ধারণ করে যদি এটি অনির্ধারিত না হয় ("und")। একটি অনির্ধারিত ভাষা মানে যে API সমর্থিত ভাষার তালিকার উপর ভিত্তি করে ভাষা সনাক্ত করতে সক্ষম হয়নি।
MainViewModel.kt
val sourceLang = Transformations.switchMap(sourceText) { text ->
val result = MutableLiveData<Language>()
languageIdentifier.identifyLanguage(text)
.addOnSuccessListener { languageCode ->
if (languageCode != "und")
result.value = Language(languageCode)
}
result
}
আপনার ডিভাইসে অ্যাপটি চালান
এখন রান ক্লিক করুন ( ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপ লোড হয়ে গেলে, এটি ক্যামেরা থেকে পাঠ্য সনাক্ত করা এবং রিয়েল-টাইমে পাঠ্যের ভাষা সনাক্ত করা শুরু করা উচিত। নিশ্চিত করতে আপনার ক্যামেরাকে যেকোনো পাঠ্যের দিকে নির্দেশ করুন।
7. অনুবাদ যোগ করুন
নিম্নলিখিত কোড দিয়ে MainViewModel.kt
এ translate()
ফাংশন প্রতিস্থাপন করুন। এই ফাংশনটি উৎস ভাষার মান, লক্ষ্য ভাষার মান এবং উৎস পাঠ্য গ্রহণ করে এবং অনুবাদ সম্পাদন করে। লক্ষ্য করুন কিভাবে নির্বাচিত টার্গেট ল্যাঙ্গুয়েজ মডেলটি ডিভাইসে ডাউনলোড করা না থাকলে, আমরা তা করার জন্য downloadModelIfNeeded()
কে কল করি এবং তারপর অনুবাদের সাথে এগিয়ে যাই।
MainViewModel.kt
private fun translate(): Task<String> {
val text = sourceText.value
val source = sourceLang.value
val target = targetLang.value
if (modelDownloading.value != false || translating.value != false) {
return Tasks.forCanceled()
}
if (source == null || target == null || text == null || text.isEmpty()) {
return Tasks.forResult("")
}
val sourceLangCode = TranslateLanguage.fromLanguageTag(source.code)
val targetLangCode = TranslateLanguage.fromLanguageTag(target.code)
if (sourceLangCode == null || targetLangCode == null) {
return Tasks.forCanceled()
}
val options = TranslatorOptions.Builder()
.setSourceLanguage(sourceLangCode)
.setTargetLanguage(targetLangCode)
.build()
val translator = translators[options]
modelDownloading.setValue(true)
// Register watchdog to unblock long running downloads
Handler().postDelayed({ modelDownloading.setValue(false) }, 15000)
modelDownloadTask = translator.downloadModelIfNeeded().addOnCompleteListener {
modelDownloading.setValue(false)
}
translating.value = true
return modelDownloadTask.onSuccessTask {
translator.translate(text)
}.addOnCompleteListener {
translating.value = false
}
}
সিমুলেটরে অ্যাপটি চালান
এখন রান ক্লিক করুন ( ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপ লোড হয়ে গেলে, এটি এখন নীচের চলমান চিত্রের মতো হওয়া উচিত, পাঠ্য শনাক্তকরণ এবং চিহ্নিত ভাষার ফলাফল এবং নির্বাচিত ভাষায় অনুবাদ করা পাঠ্য দেখাচ্ছে। আপনি 59টি ভাষার যেকোনো একটি বেছে নিতে পারেন।
8. অভিনন্দন!
অভিনন্দন, আপনি এইমাত্র ML কিট ব্যবহার করে আপনার অ্যাপে অন-ডিভাইস পাঠ্য শনাক্তকরণ, ভাষা সনাক্তকরণ এবং অনুবাদ যোগ করেছেন! এখন আপনি লাইভ ক্যামেরা ফিড থেকে পাঠ্য এবং এর ভাষা চিনতে পারেন এবং এই পাঠ্যটিকে এমন একটি ভাষায় অনুবাদ করতে পারেন যা আপনি রিয়েল-টাইমে পছন্দ করেন।
আমরা কভার করেছি কি
- কিভাবে আপনার Android অ্যাপে ML Kit যোগ করবেন
- ছবিতে টেক্সট চিনতে এমএল কিটে অন-ডিভাইস টেক্সট রিকগনিশন কীভাবে ব্যবহার করবেন
- পাঠ্যের ভাষা সনাক্ত করতে এমএল কিটে ডিভাইসে ভাষা সনাক্তকরণ কীভাবে ব্যবহার করবেন
- কিভাবে ML Kit-এ অন-ডিভাইস অনুবাদ ব্যবহার করবেন 59টি ভাষায় পাঠ্যকে গতিশীলভাবে অনুবাদ করতে
- এমএল কিট এপিআই-এর সাথে ক্যামেরাএক্স কীভাবে ব্যবহার করবেন
পরবর্তী পদক্ষেপ
- আপনার নিজের Android অ্যাপে ML Kit এবং CameraX ব্যবহার করুন!