অডিও শ্রেণীবিভাগের জন্য একটি মৌলিক অ্যাপ তৈরি করুন

1. আপনি শুরু করার আগে

টেনসরফ্লো একটি বহুমুখী মেশিন লার্নিং ফ্রেমওয়ার্ক। এটি ক্লাউডের ক্লাস্টার জুড়ে বিশাল মডেলের প্রশিক্ষণের জন্য বা আপনার ফোনের মতো এমবেডেড সিস্টেমে স্থানীয়ভাবে মডেল চালানোর জন্য ব্যবহার করা যেতে পারে।

এই কোডল্যাবটি একটি Android ডিভাইসে একটি অডিও শ্রেণীবিভাগ মডেল চালানোর জন্য TensorFlow Lite ব্যবহার করে।

আপনি কি শিখবেন

  • ব্যবহার করার জন্য প্রস্তুত একটি প্রাক-প্রশিক্ষিত মেশিন লার্নিং মডেল কীভাবে খুঁজে পাবেন।
  • রিয়েল টাইমে ক্যাপচার করা অডিওতে অডিও শ্রেণীবিভাগ কিভাবে করবেন।
  • মডেল ইনপুট এবং পোস্টপ্রসেস মডেল আউটপুট প্রিপ্রসেস করতে টেনসরফ্লো লাইট সাপোর্ট লাইব্রেরি কীভাবে ব্যবহার করবেন।
  • অডিও সংক্রান্ত যাবতীয় কাজ করতে কিভাবে অডিও টাস্ক লাইব্রেরি ব্যবহার করবেন।

আপনি কি নির্মাণ করবেন

একটি সাধারণ অডিও শনাক্তকারী অ্যাপ যা রিয়েল টাইমে মাইক্রোফোন থেকে অডিও শনাক্ত করতে টেনসরফ্লো লাইট অডিও শনাক্তকরণ মডেল চালায়

33af0fdb0a027fa8.png

আপনি কি প্রয়োজন হবে

  • অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v4.1.2+)
  • API 23 (Android 6.0) এ Android সংস্করণ সহ শারীরিক Android ডিভাইস
  • নমুনা কোড
  • কোটলিনে অ্যান্ড্রয়েড বিকাশের প্রাথমিক জ্ঞান

2. নমুনা কোড পান

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

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

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

দ্রষ্টব্য: আপনি যদি চান আপনি সংগ্রহস্থল ক্লোন করতে পারেন:

git clone https://github.com/googlecodelabs/odml-pathways.git

audio_classification/codelab1/android সংগ্রহস্থলের android সাবডিরেক্টরিতে দুটি ডিরেক্টরি রয়েছে:

  • android_studio_folder.png starter — এই কোডল্যাবের জন্য আপনি যে স্টার্টিং কোড তৈরি করেন।
  • android_studio_folder.png চূড়ান্ত — সমাপ্ত নমুনা অ্যাপের জন্য সম্পূর্ণ কোড।

স্টার্টার অ্যাপ আমদানি করুন

স্টার্টার অ্যাপটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করে শুরু করা যাক।

  1. অ্যান্ড্রয়েড স্টুডিও খুলুন এবং আমদানি প্রকল্প নির্বাচন করুন (Gradle, Eclipse ADT, ইত্যাদি)
  2. আপনি আগে ডাউনলোড করা সোর্স কোড থেকে starter ফোল্ডার ( audio_classification/codelab1/android/starter ) খুলুন।

7c0f27882a2698ac.png

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করার জন্য, আমদানি প্রক্রিয়া শেষ হয়ে গেলে আপনার গ্রেডল ফাইলগুলির সাথে আপনার প্রকল্প সিঙ্ক করা উচিত।

  1. গ্রেডল ফাইলের সাথে সিঙ্ক প্রজেক্ট নির্বাচন করুন ( b451ab2d04d835f9.png অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে।

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

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত৷

আপনার কম্পিউটারে USB এর মাধ্যমে আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন এবং রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

5518972c21705945.png

3. একটি প্রাক-প্রশিক্ষিত মডেল খুঁজুন

অডিও ক্লাসিফিকেশন করতে, আপনাকে একটি মডেলের প্রয়োজন হবে। একটি প্রাক-প্রশিক্ষিত মডেল দিয়ে শুরু করুন যাতে আপনাকে নিজেকে প্রশিক্ষিত করতে না হয়।

প্রাক-প্রশিক্ষিত মডেলগুলি খুঁজতে আপনি TensorFlow Hub ( www.tfhub.dev ) ব্যবহার করবেন।

91e39900ff58818c.png

মডেল ডোমেন দ্বারা শ্রেণীবদ্ধ করা হয়. আপনার এখন যেটি প্রয়োজন তা হল অডিও সমস্যা ডোমেন থেকে।

9d44d38c297bf3dc.png

আপনার অ্যাপের জন্য, আপনি YAMNet মডেলের সাথে ইভেন্ট শ্রেণীবিভাগ করবেন।

YAMNet হল একটি অডিও ইভেন্ট ক্লাসিফায়ার যা অডিও ওয়েভফর্মকে ইনপুট হিসেবে নেয় এবং 521টি অডিও ইভেন্টের প্রতিটির জন্য স্বাধীন ভবিষ্যদ্বাণী করে।

মডেল yamnet/শ্রেণীবিভাগটি ইতিমধ্যেই TensorFlow Lite-এ রূপান্তরিত হয়েছে এবং এতে নির্দিষ্ট মেটাডেটা রয়েছে যা মোবাইল ডিভাইসে মডেলের ব্যবহার সহজতর করতে অডিওর জন্য TFLite টাস্ক লাইব্রেরি সক্ষম করে।

65dc0f610eb27762.png

ডান ট্যাবটি বেছে নিন: TFLite (yamnet/classification/tflite), এবং ডাউনলোড এ ক্লিক করুন। এছাড়াও আপনি নীচে মডেলের মেটাডেটা দেখতে পারেন।

cfb3cfeb310e1f51.png

এই মডেল ফাইলটি ( lite-model_yamnet_classification_tflite_1.tflite ) পরবর্তী ধাপে ব্যবহার করা হবে।

4. বেস অ্যাপে নতুন মডেল আমদানি করুন

প্রথম ধাপ হল ডাউনলোড করা মডেলটিকে আগের ধাপ থেকে আপনার অ্যাপের সম্পদ ফোল্ডারে নিয়ে যাওয়া।

অ্যান্ড্রয়েড স্টুডিওতে, প্রজেক্ট এক্সপ্লোরারে, সম্পদ ফোল্ডারে ডান-ক্লিক করুন।

7cca2c22ed8cf4c8.png

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

95e0eca881d35f6b.png

তারপর এটিতে ডাউনলোড করা মডেলটি কপি করুন।

একবার আপনি এটি সম্পন্ন করার পরে, অ্যান্ড্রয়েড স্টুডিওতে ফিরে যান এবং আপনার সম্পদ ফোল্ডারের মধ্যে আপনার ফাইলটি দেখতে হবে।

703b1842fb09e893.png

5. বেস অ্যাপে নতুন মডেল লোড করুন

এখন আপনি কিছু TODO অনুসরণ করবেন এবং আগের ধাপে আপনি এইমাত্র প্রকল্পে যোগ করেছেন এমন মডেলের সাথে অডিও শ্রেণীবিভাগ সক্ষম করবেন।

অ্যান্ড্রয়েড স্টুডিওতে TODOs খুঁজে পাওয়া সহজ করতে, মেনুতে যান: দেখুন > টুল Windows > TODO । এটি তালিকা সহ একটি উইন্ডো খুলবে এবং আপনি সরাসরি কোডে যেতে এটিতে ক্লিক করতে পারেন।

build.gradle ফাইলে (মডিউল সংস্করণ) আপনি প্রথম কাজটি পাবেন।

TODO 1 হল Android নির্ভরতা যোগ করা:

implementation 'org.tensorflow:tensorflow-lite-task-audio:0.2.0'

বাকি সব কোড পরিবর্তন MainActivity এ হতে চলেছে

TODO 2.1 পরবর্তী ধাপে লোড করার জন্য মডেলের নামের সাথে ভেরিয়েবল তৈরি করে।

var modelPath = "lite-model_yamnet_classification_tflite_1.tflite"

TODO 2.2 আপনি মডেল থেকে একটি ভবিষ্যদ্বাণী গ্রহণ করার জন্য একটি ন্যূনতম থ্রেশহোল্ড সংজ্ঞায়িত করবেন। এই ভেরিয়েবল পরে ব্যবহার করা হবে.

var probabilityThreshold: Float = 0.3f

TODO 2.3 হল যেখানে আপনি সম্পদ ফোল্ডার থেকে মডেলটি লোড করবেন৷ অডিও টাস্ক লাইব্রেরিতে সংজ্ঞায়িত অডিওক্ল্যাসিফায়ার ক্লাসটি মডেলটি লোড করার জন্য এবং অনুমান চালানোর জন্য এবং একটি অডিও রেকর্ডার তৈরিতে সহায়তা করার জন্য আপনাকে সমস্ত প্রয়োজনীয় পদ্ধতি দিতে প্রস্তুত করা হয়েছে।

val classifier = AudioClassifier.createFromFile(this, modelPath)

6. অডিও ক্যাপচার করুন

অডিও টাস্ক API-এর কিছু সহায়ক পদ্ধতি রয়েছে যা আপনাকে সঠিক কনফিগারেশনের সাথে একটি অডিও রেকর্ডার তৈরি করতে সাহায্য করে যা আপনার মডেল আশা করে (যেমন: নমুনা হার, বিটরেট, চ্যানেলের সংখ্যা)। এটির সাথে আপনাকে এটি হাতে খুঁজে বের করতে হবে না এবং কনফিগারেশন অবজেক্ট তৈরি করতে হবে।

TODO 3.1: টেনসর ভেরিয়েবল তৈরি করুন যা অনুমানের জন্য রেকর্ডিং সংরক্ষণ করবে এবং রেকর্ডারের জন্য বিন্যাস স্পেসিফিকেশন তৈরি করবে।

val tensor = classifier.createInputTensorAudio()

TODO 3.2: আগের ধাপে মডেলের মেটাডেটা দ্বারা সংজ্ঞায়িত করা অডিও রেকর্ডার চশমা দেখান।

val format = classifier.requiredTensorAudioFormat
val recorderSpecs = "Number Of Channels: ${format.channels}\n" +
       "Sample Rate: ${format.sampleRate}"
recorderSpecsTextView.text = recorderSpecs

92e81894674a5b0.png

TODO 3.3 : অডিও রেকর্ডার তৈরি করুন এবং রেকর্ডিং শুরু করুন।

val record = classifier.createAudioRecord()
record.startRecording()

এখন পর্যন্ত, আপনার অ্যাপ আপনার ফোনের মাইক্রোফোনে শুনছে, কিন্তু এটি এখনও কোনো অনুমান করছে না। আপনি পরবর্তী ধাপে এটি সম্বোধন করবেন।

7. আপনার মডেলে অনুমান যোগ করুন

এই ধাপে আপনি আপনার অ্যাপে ইনফারেন্স কোড যোগ করবেন এবং এটি স্ক্রিনে দেখাবেন। কোডটিতে ইতিমধ্যেই একটি টাইমার থ্রেড রয়েছে যা প্রতি অর্ধেক সেকেন্ডে কার্যকর করা হয় এবং সেখানেই অনুমান চালানো হবে।

প্রতি 500 মিলিসেকেন্ডের নীচের কোডে, পদ্ধতি scheduleAtFixedRate এর পরামিতিগুলি হল কার্য সম্পাদন শুরু করার জন্য কতক্ষণ অপেক্ষা করতে হবে এবং ধারাবাহিক কার্য সম্পাদনের মধ্যে সময়।

Timer().scheduleAtFixedRate(1, 500) {
...
}

TODO 4.1 মডেলটি ব্যবহার করতে কোড যোগ করুন। প্রথমে একটি অডিও টেনসরে রেকর্ডিংটি লোড করুন এবং এটিকে শ্রেণিবদ্ধকারীতে পাস করুন:

tensor.load(record)
val output = classifier.classify(tensor)

TODO 4.2 ভাল অনুমান ফলাফল পেতে, আপনি যে কোনো শ্রেণীবিভাগ ফিল্টার করবেন যার সম্ভাবনা খুব কম। এখানে আপনি পূর্ববর্তী ধাপে তৈরি ভেরিয়েবলটি ব্যবহার করবেন ( probabilityThreshold ):

val filteredModelOutput = output[0].categories.filter {
   it.score > probabilityThreshold
}

TODO 4.3: ফলাফল পড়া সহজ করতে, ফিল্টার করা ফলাফলের সাথে একটি স্ট্রিং তৈরি করা যাক:

val outputStr = filteredModelOutput.sortedBy { -it.score }
   .joinToString(separator = "\n") { "${it.label} -> ${it.score} " }

TODO 4.4 UI আপডেট করুন। এই খুব সাধারণ অ্যাপে, ফলাফলটি শুধুমাত্র একটি TextView-এ দেখানো হয়েছে। যেহেতু শ্রেণীবিভাগ প্রধান থ্রেডে নেই, তাই এই আপডেটটি করতে আপনাকে একটি হ্যান্ডলার ব্যবহার করতে হবে।

runOnUiThread {
   textView.text = outputStr
}

আপনি প্রয়োজনীয় সমস্ত কোড যোগ করেছেন:

  • সম্পদ ফোল্ডার থেকে মডেল লোড
  • সঠিক কনফিগারেশন সহ একটি অডিও রেকর্ডার তৈরি করুন
  • চলমান অনুমান
  • পর্দায় সেরা ফলাফল দেখান

এখন যা দরকার তা হল অ্যাপটি পরীক্ষা করা।

8. চূড়ান্ত অ্যাপটি চালান

আপনি অ্যাপে অডিও শ্রেণীবিভাগের মডেলকে একীভূত করেছেন, তাই আসুন এটি পরীক্ষা করি।

আপনার অ্যান্ড্রয়েড ডিভাইস সংযোগ করুন, এবং রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

প্রথম সম্পাদনে, আপনাকে অ্যাপটিকে অডিও রেকর্ডিংয়ের অনুমতি দিতে হবে।

অনুমতি দেওয়ার পরে, অ্যাপটি চালু করা ফোনের মাইক্রোফোন ব্যবহার করবে। পরীক্ষা করার জন্য, ফোনের কাছে কথা বলা শুরু করুন যেহেতু YAMNet শনাক্ত করে এমন একটি ক্লাস হল স্পিচ। পরীক্ষা করা সহজ আরেকটি ক্লাস হল আঙুল স্ন্যাপিং বা হাততালি দেওয়া।

আপনি একটি কুকুরের ছাল এবং অন্যান্য অনেক সম্ভাব্য ঘটনা সনাক্ত করার চেষ্টা করতে পারেন (521)। একটি সম্পূর্ণ তালিকার জন্য আপনি তাদের উত্স কোড পরীক্ষা করতে পারেন বা আপনি সরাসরি লেবেল ফাইল সহ মেটাডেটা পড়তে পারেন

33af0fdb0a027fa8.png

9. অভিনন্দন!

এই কোডল্যাবে, আপনি শিখেছেন কিভাবে অডিও শ্রেণীবিভাগের জন্য একটি প্রাক-প্রশিক্ষিত মডেল খুঁজে বের করতে হয় এবং TensorFlow Lite ব্যবহার করে আপনার মোবাইল অ্যাপে এটি স্থাপন করতে হয়। TFLite সম্পর্কে আরও জানতে, অন্যান্য TFLite নমুনাগুলি দেখুন।

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

  • একটি অ্যান্ড্রয়েড অ্যাপে কীভাবে একটি টেনসরফ্লো লাইট মডেল স্থাপন করবেন।
  • টেনসরফ্লো হাব থেকে মডেলগুলি কীভাবে সন্ধান করবেন এবং ব্যবহার করবেন।

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

  • আপনার নিজস্ব ডেটা দিয়ে মডেলটি কাস্টমাইজ করুন।

আরও জানুন

একটি প্রশ্ন আছে?

রিপোর্ট সমস্যা