পাইথনের জন্য অডিও শ্রেণীবিভাগ নির্দেশিকা

MediaPipe অডিও ক্লাসিফায়ার টাস্ক আপনাকে অডিও ডেটাতে শ্রেণীবিভাগ করতে দেয়। আপনি প্রশিক্ষিত বিভাগের একটি সেট থেকে শব্দ ইভেন্ট সনাক্ত করতে এই কাজটি ব্যবহার করতে পারেন। এই নির্দেশাবলী আপনাকে দেখায় কিভাবে পাইথনের সাথে অডিও ক্লাসিফায়ার ব্যবহার করতে হয়।

এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।

কোড উদাহরণ

অডিও ক্লাসিফায়ারের উদাহরণ কোডটি আপনার রেফারেন্সের জন্য পাইথনে এই টাস্কটির সম্পূর্ণ বাস্তবায়ন প্রদান করে। এই কোডটি আপনাকে এই কাজটি পরীক্ষা করতে এবং আপনার নিজের অডিও ক্লাসিফায়ার তৈরি করা শুরু করতে সহায়তা করে। আপনি Google Colab-এর মাধ্যমে শুধুমাত্র আপনার ওয়েব ব্রাউজার ব্যবহার করে অডিও ক্লাসিফায়ার উদাহরণ কোড দেখতে, চালাতে এবং সম্পাদনা করতে পারেন। আপনি GitHub এ এই উদাহরণের জন্য সোর্স কোড দেখতে পারেন।

আপনি যদি রাস্পবেরি পাই-এর জন্য অডিও ক্লাসিফায়ার প্রয়োগ করছেন, রাস্পবেরি পাই উদাহরণ অ্যাপটি পড়ুন।

সেটআপ

এই বিভাগে আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট এবং কোড প্রোজেক্ট সেট আপ করার জন্য বিশেষভাবে অডিও ক্লাসিফায়ার ব্যবহার করার জন্য মূল ধাপগুলি বর্ণনা করে। প্ল্যাটফর্ম সংস্করণ প্রয়োজনীয়তা সহ MediaPipe কার্যগুলি ব্যবহার করার জন্য আপনার বিকাশের পরিবেশ সেট আপ করার বিষয়ে সাধারণ তথ্যের জন্য, পাইথনের জন্য সেটআপ নির্দেশিকা দেখুন।

প্যাকেজ

অডিও ক্লাসিফায়ার মিডিয়াপাইপ পাইপ প্যাকেজের কাজ করে। আপনি নিম্নলিখিতগুলির সাথে নির্ভরতা ইনস্টল করতে পারেন:

$ python -m pip install mediapipe

আমদানি

অডিও ক্লাসিফায়ার টাস্ক ফাংশন অ্যাক্সেস করতে নিম্নলিখিত ক্লাসগুলি আমদানি করুন:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import audio

মডেল

MediaPipe অডিও ক্লাসিফায়ার টাস্কের জন্য একটি প্রশিক্ষিত মডেল প্রয়োজন যা এই কাজের সাথে সামঞ্জস্যপূর্ণ। অডিও ক্লাসিফায়ারের জন্য উপলব্ধ প্রশিক্ষিত মডেল সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ মডেল বিভাগটি দেখুন।

একটি মডেল নির্বাচন করুন এবং ডাউনলোড করুন, এবং তারপর এটি একটি স্থানীয় ডিরেক্টরিতে সংরক্ষণ করুন। আপনি প্রস্তাবিত Yamnet মডেল ব্যবহার করতে পারেন.

model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'

মডেল নামের প্যারামিটারের মধ্যে মডেলের পথটি নির্দিষ্ট করুন, যেমনটি নীচে দেখানো হয়েছে:

base_options = BaseOptions(model_asset_path=model_path)

টাস্ক তৈরি করুন

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

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

অডিও ক্লিপ

AudioClassifier = mp.tasks.audio.AudioClassifier
AudioClassifierOptions = mp.tasks.audio.AudioClassifierOptions
AudioRunningMode = mp.tasks.audio.RunningMode
BaseOptions = mp.tasks.BaseOptions

options = AudioClassifierOptions(
    base_options=BaseOptions(model_asset_path='/path/to/model.tflite'),
    max_results=5,
    running_mode=AudioRunningMode.AUDIO_CLIPS)

with AudioClassifier.create_from_options(options) as classifier:
  # The classifier is initialized. Use it here.
  # ...
    

অডিও স্ট্রিম

AudioClassifier = mp.tasks.audio.AudioClassifier
AudioClassifierOptions = mp.tasks.audio.AudioClassifierOptions
AudioClassifierResult = mp.tasks.audio.AudioClassifierResult
AudioRunningMode = mp.tasks.audio.RunningMode
BaseOptions = mp.tasks.BaseOptions

def print_result(result: AudioClassifierResult, timestamp_ms: int):
    print(AudioClassifierResult result: {}.format(result))

options = AudioClassifierOptions(
    base_options=BaseOptions(model_asset_path='/path/to/model.tflite'),
    running_mode=AudioRunningMode.AUDIO_STREAM,
    max_results=5,
    result_callback=print_result)

with AudioClassifier.create_from_options(options) as classifier:
  # The classifier is initialized. Use it here.
  # ...
  

অডিওর সাথে ব্যবহারের জন্য একটি অডিও ক্লাসিফায়ার তৈরি করার সম্পূর্ণ উদাহরণের জন্য, কোড উদাহরণটি দেখুন।

কনফিগারেশন বিকল্প

এই টাস্কে পাইথন অ্যাপ্লিকেশনের জন্য নিম্নলিখিত কনফিগারেশন বিকল্প রয়েছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
running_mode টাস্কের জন্য চলমান মোড সেট করে। অডিও ক্লাসিফায়ার দুটি মোড আছে:

AUDIO_CLIPS: স্বাধীন অডিও ক্লিপগুলিতে অডিও টাস্ক চালানোর জন্য মোড।

AUDIO_STREAM: একটি অডিও স্ট্রীমে অডিও টাস্ক চালানোর মোড, যেমন মাইক্রোফোন থেকে। এই মোডে, রেজাল্টলিসনারকে অবশ্যই অ্যাসিঙ্ক্রোনাসভাবে শ্রেণীবিভাগের ফলাফল পাওয়ার জন্য একজন শ্রোতা সেট আপ করতে কল করতে হবে।
{ AUDIO_CLIPS, AUDIO_STREAM } AUDIO_CLIPS
display_names_locale টাস্কের মডেলের মেটাডেটাতে প্রদত্ত প্রদর্শন নামের জন্য ব্যবহার করার জন্য লেবেলের ভাষা সেট করে, যদি উপলব্ধ থাকে। ইংরেজির জন্য ডিফল্ট হল en । আপনি TensorFlow Lite Metadata Writer API ব্যবহার করে একটি কাস্টম মডেলের মেটাডেটাতে স্থানীয় লেবেল যোগ করতে পারেন স্থানীয় কোড en
max_results ফিরতে সর্বোচ্চ স্কোর করা শ্রেণীবিভাগ ফলাফলের ঐচ্ছিক সর্বোচ্চ সংখ্যা সেট করে। <0 হলে, সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে। যেকোনো ইতিবাচক সংখ্যা -1
score_threshold ভবিষ্যদ্বাণী স্কোর থ্রেশহোল্ড সেট করে যা মডেল মেটাডেটাতে প্রদত্ত একটিকে ওভাররাইড করে (যদি থাকে)। এই মানের নিচের ফলাফল প্রত্যাখ্যান করা হয়। [০.০, ১.০] সেট করা হয়নি
category_allowlist অনুমোদিত বিভাগের নামের ঐচ্ছিক তালিকা সেট করে। যদি খালি না থাকে, শ্রেণীবিভাগের ফলাফল যাদের বিভাগের নাম এই সেটে নেই সেগুলি ফিল্টার আউট করা হবে৷ সদৃশ বা অজানা বিভাগের নাম উপেক্ষা করা হয়। এই বিকল্পটি category_denylist সাথে পারস্পরিক একচেটিয়া এবং একটি ত্রুটিতে উভয় ফলাফল ব্যবহার করে। কোনো স্ট্রিং সেট করা হয়নি
category_denylist অনুমোদিত নয় এমন বিভাগের নামের ঐচ্ছিক তালিকা সেট করে। যদি খালি না থাকে, শ্রেণীবিভাগের ফলাফল যার বিভাগের নাম এই সেটে আছে তা ফিল্টার আউট করা হবে। সদৃশ বা অজানা বিভাগের নাম উপেক্ষা করা হয়। এই বিকল্পটি category_allowlist সাথে পারস্পরিকভাবে একচেটিয়া এবং একটি ত্রুটিতে উভয় ফলাফল ব্যবহার করে। কোনো স্ট্রিং সেট করা হয়নি
result_callback অডিও ক্লাসিফায়ার যখন অডিও স্ট্রিম মোডে থাকে তখন অসিঙ্ক্রোনাসভাবে শ্রেণিবিন্যাসের ফলাফল পেতে ফলাফল শ্রোতাকে সেট করে। চলমান মোডটি AUDIO_STREAM এ সেট করা থাকলেই কেবল ব্যবহার করা যেতে পারে৷ N/A সেট করা হয়নি

ডেটা প্রস্তুত করুন

অডিও ক্লাসিফায়ার অডিও ক্লিপ এবং অডিও স্ট্রিমগুলির সাথে কাজ করে। টাস্কটি রিস্যাম্পলিং, বাফারিং এবং ফ্রেমিং সহ ডেটা ইনপুট প্রিপ্রসেসিং পরিচালনা করে।

একটি অডিও ফাইল বা একটি নম্পি অ্যারে হিসাবে আপনার ইনপুট প্রস্তুত করুন, তারপর এটিকে একটি MediaPipe AudioData অবজেক্টে রূপান্তর করুন৷ আপনি আপনার ইনপুট অডিওগুলিকে নম্পি অ্যারে হিসাবে লোড করতে SciPy- এর মতো একটি বাহ্যিক লাইব্রেরি ব্যবহার করতে পারেন৷

নিম্নলিখিত উদাহরণগুলি ব্যাখ্যা করে এবং দেখায় কিভাবে প্রতিটি উপলব্ধ ডেটা প্রকারের জন্য প্রক্রিয়াকরণের জন্য ডেটা প্রস্তুত করতে হয়:

অডিও ক্লিপ

import numpy as np
from scipy.io import wavfile

AudioData = mp.tasks.components.containers.AudioData

sample_rate, buffer = wavfile.read('/path/to/audio.wav')
audio_data = AudioData.create_from_array(
    buffer.astype(float) / np.iinfo(np.int16).max, sample_rate)
    

অডিও স্ট্রিম

import numpy as np

AudioData = mp.tasks.components.containers.AudioData

# Read microphone data as np arrays, then call

audio_data = AudioData.create_from_array(
    buffer.astype(float) / np.iinfo(np.int16).max, sample_rate)
    

টাস্ক চালান

অনুমানগুলি ট্রিগার করার জন্য আপনি আপনার চলমান মোডের সাথে সম্পর্কিত শ্রেণীবদ্ধ ফাংশনটিকে কল করেন। অডিও ক্লাসিফায়ার API ইনপুট অডিও বাফারের মধ্যে অডিও ইভেন্টগুলির জন্য সম্ভাব্য বিভাগগুলি প্রদান করে।

অডিও ক্লিপ

# Perform audio classification on the provided audio clip.
audio_classifier_result_list = classifier.classify(audio_data)
    

অডিও স্ট্রিম

# Send live audio data to perform audio classification.
# Results are sent to the `result_callback` provided in the `AudioClassifierOptions`
classifier.classify_async(audio_data, timestamp_ms)
    

নিম্নলিখিত নোট করুন:

  • অডিও স্ট্রীম মোডে চলাকালীন, আপনাকে অবশ্যই অডিও ক্লাসিফায়ার টাস্কটি ইনপুট অডিও ডেটার টাইমস্ট্যাম্প প্রদান করতে হবে৷
  • অডিও ক্লিপ মডেলে চলাকালীন, অডিও ক্লাসিফায়ার টাস্ক বর্তমান থ্রেডটিকে অবরুদ্ধ করবে যতক্ষণ না এটি ইনপুট অডিও প্রক্রিয়াকরণ শেষ করে।

অডিও ক্লিপগুলির সাথে অডিও ক্লাসিফায়ার চালানোর আরও সম্পূর্ণ উদাহরণের জন্য, কোড উদাহরণটি দেখুন।

হ্যান্ডেল এবং প্রদর্শন ফলাফল

অনুমান চালানোর পরে, অডিও ক্লাসিফায়ার টাস্ক একটি AudioClassifierResult অবজেক্ট প্রদান করে যা ইনপুট অডিওর মধ্যে অডিও ইভেন্টগুলির জন্য সম্ভাব্য বিভাগগুলির তালিকা ধারণ করে।

নিম্নলিখিত এই টাস্ক থেকে আউটপুট ডেটার একটি উদাহরণ দেখায়:

AudioClassifierResult:
  Timestamp in microseconds: 100
  ClassificationResult #0:
    Timestamp in microseconds: 100  
    Classifications #0 (single classification head):
      head index: 0
      category #0:
        category name: "Speech"
        score: 0.6
        index: 0
      category #1:
        category name: "Music"
        score: 0.2
        index: 1

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