ML Kit এবং CameraX: Android এর সাহায্যে ভাষা চিনুন, শনাক্ত করুন এবং পাঠ্য অনুবাদ করুন

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+)
  • একটি শারীরিক অ্যান্ড্রয়েড ডিভাইস
  • নমুনা কোড
  • কোটলিনে অ্যান্ড্রয়েড বিকাশের প্রাথমিক জ্ঞান

এই কোডল্যাবটি এমএল কিটের উপর দৃষ্টি নিবদ্ধ করে। অ-প্রাসঙ্গিক ধারণা এবং কোড ব্লক ইতিমধ্যেই আপনার জন্য প্রদান করা হয়েছে এবং প্রয়োগ করা হয়েছে।

কোডটি ডাউনলোড করুন

এই কোডল্যাবের সমস্ত কোড ডাউনলোড করতে নিম্নলিখিত লিঙ্কে ক্লিক করুন:

সোর্স কোড ডাউনলোড করুন

ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি আপনার প্রয়োজনীয় সমস্ত সংস্থান সহ একটি রুট ফোল্ডার ( mlkit-android ) আনপ্যাক করবে। এই কোডল্যাবের জন্য, আপনার শুধুমাত্র translate সাবডিরেক্টরিতে সম্পদের প্রয়োজন হবে।

mlkit-android সংগ্রহস্থলের translate সাবডিরেক্টরিতে নিম্নলিখিত ডিরেক্টরি রয়েছে:

  • android_studio_folder.png starter — এই কোডল্যাবে আপনি যে কোড তৈরি করেন তা শুরু করার কোড।

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'

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন এবং এমএল কিট নির্ভরতার জন্য পরীক্ষা করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত! অ্যান্ড্রয়েড স্টুডিও এমুলেটর শুরু করুন এবং রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার ডিভাইসে চালু হওয়া উচিত এবং আপনি একটি লাইভ ফিড দেখতে বিভিন্ন পাঠ্যের দিকে ক্যামেরা নির্দেশ করতে পারেন, কিন্তু পাঠ্য শনাক্তকরণ কার্যকারিতা এখনও প্রয়োগ করা হয়নি।

এই ধাপে, আমরা ভিডিও ক্যামেরা থেকে পাঠ্য শনাক্ত করতে আপনার অ্যাপে কার্যকারিতা যোগ করব।

এমএল কিট টেক্সট ডিটেক্টর ইনস্ট্যান্টিয়েট করুন

TextAnalyzer.kt এর শীর্ষে নিম্নলিখিত ক্ষেত্রটি যোগ করুন। এইভাবে আপনি পরবর্তী ধাপে ব্যবহার করার জন্য পাঠ্য শনাক্তকারীর কাছে একটি হ্যান্ডেল পাবেন।

TextAnalyzer.kt

private val detector = TextRecognition.getClient()

একটি ভিশন ইমেজে অন-ডিভাইস টেক্সট রিকগনিশন চালান (ক্যামেরা থেকে বাফার দিয়ে তৈরি)

CameraX লাইব্রেরি ক্যামেরা থেকে ইমেজ বিশ্লেষণের জন্য প্রস্তুত একটি স্ট্রিম প্রদান করে। প্রতিটি ইমেজ ফ্রেমে এমএল কিট টেক্সট রিকগনিশন ব্যবহার করার জন্য TextAnalyzer ক্লাসে recognizeTextOnDevice() পদ্ধতিটি প্রতিস্থাপন করুন।

TextAnalyzer.kt

private fun recognizeTextOnDevice(
   image: InputImage
): Task<Text> {
   // Pass image to an ML Kit Vision API
   return detector.process(image)
       .addOnSuccessListener { visionText ->
           // Task completed successfully
           result.value = visionText.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

recognizeTextOnDevice(InputImage.fromBitmap(croppedBitmap, 0)).addOnCompleteListener {
   imageProxy.close()
}

আপনার ডিভাইসে অ্যাপটি চালান

এখন রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপ লোড হয়ে গেলে, এটি রিয়েল-টাইমে ক্যামেরা থেকে পাঠ্য শনাক্ত করা শুরু করবে। নিশ্চিত করতে আপনার ক্যামেরাকে যেকোনো পাঠ্যের দিকে নির্দেশ করুন।

এমএল কিট ভাষা শনাক্তকারীকে ইনস্ট্যান্টিয়েট করুন

MainViewModel.kt এ নিম্নলিখিত ক্ষেত্রটি যোগ করুন। এইভাবে আপনি নিম্নলিখিত ধাপে ব্যবহার করার জন্য ভাষা শনাক্তকারীর একটি হ্যান্ডেল পাবেন।

MainViewModel.kt

private val languageIdentification = LanguageIdentification.getClient()

শনাক্ত করা টেক্সটে অন-ডিভাইস ভাষা শনাক্তকরণ চালান

চিত্র থেকে সনাক্ত করা পাঠ্যের ভাষা পেতে ML কিট ভাষা সনাক্তকারী ব্যবহার করুন।

MainViewModel.kt এর sourceLang ক্ষেত্রের সংজ্ঞায় TODO-কে নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন। এই স্নিপেটটি ভাষা সনাক্তকরণ পদ্ধতিকে কল করে এবং ফলাফল নির্ধারণ করে যদি এটি অনির্ধারিত না হয় ("und")।

MainViewModel.kt

languageIdentification.identifyLanguage(text)
   .addOnSuccessListener {
       if (it != "und")
           result.value = Language(it)
   }

আপনার ডিভাইসে অ্যাপটি চালান

এখন রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপ লোড হয়ে গেলে, এটি ক্যামেরা থেকে পাঠ্য সনাক্ত করা এবং রিয়েল-টাইমে পাঠ্যের ভাষা সনাক্ত করা শুরু করা উচিত। নিশ্চিত করতে আপনার ক্যামেরাকে যেকোনো পাঠ্যের দিকে নির্দেশ করুন।

নিম্নলিখিত কোড দিয়ে MainViewModel.kttranslate() ফাংশন প্রতিস্থাপন করুন। এই ফাংশনটি উৎস ভাষার মান, লক্ষ্য ভাষার মান এবং উৎস পাঠ্য গ্রহণ করে এবং অনুবাদ সম্পাদন করে। লক্ষ্য করুন কিভাবে নির্বাচিত টার্গেট ল্যাঙ্গুয়েজ মডেলটি ডিভাইসে ডাউনলোড করা না থাকলে, আমরা তা করার জন্য 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
   }
}

সিমুলেটরে অ্যাপটি চালান

এখন রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপ লোড হয়ে গেলে, এটি এখন নীচের চলমান চিত্রের মতো হওয়া উচিত, পাঠ্য শনাক্তকরণ এবং চিহ্নিত ভাষার ফলাফল এবং নির্বাচিত ভাষায় অনুবাদ করা পাঠ্য দেখাচ্ছে। আপনি 59টি ভাষার যেকোনো একটি বেছে নিতে পারেন।

অভিনন্দন, আপনি এইমাত্র ML কিট ব্যবহার করে আপনার অ্যাপে অন-ডিভাইস পাঠ্য শনাক্তকরণ, ভাষা সনাক্তকরণ এবং অনুবাদ যোগ করেছেন! এখন আপনি লাইভ ক্যামেরা ফিড থেকে পাঠ্য এবং এর ভাষা চিনতে পারেন এবং এই পাঠ্যটিকে এমন একটি ভাষায় অনুবাদ করতে পারেন যা আপনি রিয়েল-টাইমে পছন্দ করেন।

আমরা কভার করেছি কি

  • কিভাবে আপনার Android অ্যাপে ML Kit যোগ করবেন
  • ছবিতে টেক্সট চিনতে এমএল কিটে অন-ডিভাইস টেক্সট রিকগনিশন কীভাবে ব্যবহার করবেন
  • পাঠ্যের ভাষা সনাক্ত করতে এমএল কিটে ডিভাইসে ভাষা সনাক্তকরণ কীভাবে ব্যবহার করবেন
  • কিভাবে ML Kit-এ অন-ডিভাইস অনুবাদ ব্যবহার করবেন 59টি ভাষায় পাঠ্যকে গতিশীলভাবে অনুবাদ করতে
  • এমএল কিট এপিআই-এর সাথে ক্যামেরাএক্স কীভাবে ব্যবহার করবেন

পরবর্তী পদক্ষেপ

  • আপনার নিজের Android অ্যাপে ML Kit এবং CameraX ব্যবহার করুন!

আরও জানুন