ফ্রি পাইথন লাইব্রেরি মাধ্যমে রিয়েল-টাইম অডিও এবং সঙ্গীত বিশ্লেষণ
Aubio হল একটি ওপেন সোর্স পাইথন অডিও প্রসেসিং লাইব্রেরি, যা সফটওয়্যার ডেভেলপাররা পিচ ডিটেকশন, বিট ট্র্যাকিং, MFCC এক্সট্র্যাকশন এবং রিয়েল-টাইম অডিও প্রসেসিংয়ের জন্য ব্যবহার করে।
Aubio কী?
আধুনিক অডিও অ্যাপ্লিকেশন—যেমন সঙ্গীত উৎপাদন টুল, অডিও বিশ্লেষণ প্ল্যাটফর্ম এবং রিয়েল-টাইম সাউন্ড প্রসেসিং সিস্টেম—শব্দ সংকেত বিশ্লেষণের জন্য কার্যকর পদ্ধতি প্রয়োজন। এই উদ্দেশ্যে একটি জনপ্রিয় ওপেন-সোর্স সমাধান হল Aubio, একটি হালকা কিন্তু শক্তিশালী লাইব্রেরি যা অডিও সংকেত থেকে অর্থবহ তথ্য বের করতে ডিজাইন করা হয়েছে। Aubio একটি ওপেন-সোর্স লাইব্রেরি যা অডিও সংকেত থেকে অ্যানোটেশন এবং সঙ্গীত বৈশিষ্ট্য বের করতে তৈরি করা হয়েছে। এটি অডিও স্ট্রিম বিশ্লেষণ করে এবং নোট অনসেট, পিচ, বিট এবং টেম্পো মতো ইভেন্ট সনাক্ত করে। এটি প্রধানত C-তে লেখা হয়েছে উচ্চ পারফরম্যান্সের জন্য এবং লিনাক্স, macOS এবং উইন্ডোজে কাজ করে।
লাইব্রেরিটি ব্যবহার করা খুবই সহজ এবং রিয়েল-টাইম অডিও প্রক্রিয়াকরণকে সমর্থন করে। লাইব্রেরিটি ড্রাম হিটের সময়, সঙ্গীত নোটের ফ্রিকোয়েন্সি এবং ট্র্যাকের টেম্পো বা রিদমের মতো সঙ্গীত ইভেন্ট সনাক্ত করতে পারে। এটি অফলাইন (অডিও ফাইল) এবং রিয়েল-টাইম অডিও স্ট্রিম উভয়ই চালাতে পারে, যা অডিও এডিটর, ডিজিটাল যন্ত্র এবং সাউন্ড বিশ্লেষণ টুলের জন্য উপযুক্ত করে তোলে। পিচ ডিটেকশন, বিট ট্র্যাকিং, অনসেট ডিটেকশন, এমএফসিসি এক্সট্র্যাকশন এবং রিয়েল-টাইম সিগন্যাল প্রোসেসিং সমর্থনসহ, এটি ডেভেলপারদের উন্নত অডিও অ্যাপ্লিকেশন তৈরি করার জন্য প্রয়োজনীয় টুল সরবরাহ করে।
Aubio দিয়ে শুরু করা
Aubio ইনস্টল করার সবচেয়ে সহজ উপায় হল পাইথন প্যাকেজ ইনডেক্স (PyPI) ব্যবহার করা। সম্পূর্ণ ইনস্টলেশনের জন্য দয়া করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
Aubio ব্যবহার করে ইনস্টল করুন
pip install aubio GitHub থেকে Aubio ইনস্টল করুন
go get -u github.com/aubio/aubio.git Python মাধ্যমে অনসেট ডিটেকশন
Aubio লাইব্রেরির অন্যতম সবচেয়ে উপযোগী ফিচার হল onset detection, যা সনাক্ত করে কখন একটি সঙ্গীত নোট বা শব্দ ইভেন্ট শুরু হয়। Onset detection নতুন শব্দ বা সঙ্গীত নোটের সঠিক মুহূর্তটি খুঁজে বের করে। সঙ্গীতে, "onset" হল একটি নোটের আক্রমণ — যখন ড্রাম বাজে, গিটার টানতে হয়, অথবা কণ্ঠস্বর একটি অক্ষর শুরু করে। Aubio বিভিন্ন ব্যবহারিক ক্ষেত্রে জন্য একাধিক onset detection অ্যালগরিদম অন্তর্ভুক্ত করে। নিম্নলিখিত উদাহরণটি দেখায় কীভাবে Python কোড ব্যবহার করে একটি অডিও ফাইলের মধ্যে Onsets সনাক্ত করা যায়।
Python লাইব্রেরি ব্যবহার করে অডিও ফাইলে অনসেট কীভাবে সনাক্ত করবেন?
import aubio
import numpy as np
# Configuration
filename = "audio_sample.wav"
win_s = 512 # FFT window size
hop_s = 256 # Hop size (frames between analysis windows)
# Open the audio source
src = aubio.source(filename, hop_size=hop_s)
samplerate = src.samplerate
# Create the onset detector (using 'complex' method)
onset = aubio.onset("complex", win_s, hop_s, samplerate)
# Set detection threshold (0.0 to 1.0 — lower = more sensitive)
onset.set_threshold(0.3)
onsets = []
# Process audio frame by frame
while True:
samples, read = src() # Read one hop of audio
if onset(samples): # Returns True when onset detected
print(f"Onset at: {onset.get_last_s():.3f} seconds")
onsets.append(onset.get_last_s())
if read < hop_s: # End of file
break
print(f"\nTotal onsets detected: {len(onsets)}")
পিচ ডিটেকশন সমর্থন
Pitch detection হল ওপেন সোর্স Aubio লাইব্রেরির আরেকটি গুরুত্বপূর্ণ সক্ষমতা। Pitch detection একটি শব্দের মৌলিক ফ্রিকোয়েন্সি (F0) সনাক্ত করে — মূলত, "এটি কোন সঙ্গীত নোট?" এটি যে কোনও টিউনার, মেলোডি এক্সট্র্যাক্টর, বা ভোকাল বিশ্লেষণ টুলের মূল। Aubio yin, yinfft, mcomb, fcomb ইত্যাদি মতো একাধিক pitch detection অ্যালগরিদম সমর্থন করে। এখানে একটি সহজ উদাহরণ রয়েছে যা দেখায় কীভাবে Python অ্যাপ্লিকেশনের মধ্যে রিয়েল-টাইম Pitch detection সম্পাদন করা যায়।
Python ব্যবহার করে রিয়েল-টাইম পিচ ডিটেকশন কীভাবে করবেন?
import aubio
import numpy as np
samplerate = 44100
win_s = 1024
hop_s = 512
pitch_o = aubio.pitch("yin", win_s, hop_s, samplerate)
pitch_o.set_unit("Hz")
pitch_o.set_silence(-40)
samples = np.random.rand(hop_s).astype(np.float32)
pitch = pitch_o(samples)
print("Detected pitch:", pitch)
Python মাধ্যমে টেম্পো ট্র্যাকিং এবং বিট ডিটেকশন
ওপেন সোর্স Aubio লাইব্রেরি পাইটন অ্যাপ্লিকেশনের মধ্যে সঙ্গীতে রিদমিক প্যাটার্ন বিশ্লেষণ করতে এবং বিট ও টেম্পো সনাক্ত করতে পারে। Aubio অডিও শোনে এবং সাথে সাথে ট্যাপ করে — BPM (প্রতি মিনিটে বিট) এ টেম্পো সনাক্ত করে এবং পৃথক বিটের টাইমস্ট্যাম্প নির্ধারণ করে। এটি DJ সফটওয়্যার থেকে সঙ্গীত সমন্বয় পর্যন্ত যেকোনো কিছুর জন্য অমূল্য। লাইব্রেরি স্পেকট্রাল পরিবর্তন এবং অডিও সিগনালের রিদমিক প্যাটার্ন বিশ্লেষণ করে বিটের অবস্থান নির্ধারণ করে।
Python মাধ্যমে সাউন্ড ফাইল পড়া এবং লেখা
পাইথন লাইব্রেরি Aubio তার সোর্স ও সিঙ্ক অবজেক্টের মাধ্যমে অডিও ফাইল I/O র্যাপ করে, একাধিক ফরম্যাট (WAV, FLAC, OGG, libav বা ffmpeg এর মাধ্যমে MP3) সমর্থন করে এবং স্বয়ংক্রিয়ভাবে স্যাম্পল রেট রূপান্তর পরিচালনা করে। এখানে একটি সহজ উদাহরণ দেওয়া হল যা দেখায় কীভাবে সফটওয়্যার ডেভেলপাররা পাইথন কমান্ড ব্যবহার করে অডিও ফাইল পড়া, প্রক্রিয়াকরণ এবং লেখার কাজ করতে পারেন।
Python ব্যবহার করে অডিও ফাইল কীভাবে পড়া, প্রক্রিয়া করা এবং লেখা যায়?
import aubio
import numpy as np
input_file = "input.wav"
output_file = "output.wav"
target_samplerate = 22050 # Downsample to 22.05 kHz
hop_s = 512
# Open source — resamples automatically to target samplerate
src = aubio.source(input_file, samplerate=target_samplerate, hop_size=hop_s)
actual_sr = src.samplerate
num_channels = src.channels
# Open sink for writing
sink = aubio.sink(output_file, actual_sr, channels=1)
while True:
samples, read = src()
# Write mono (sink expects 1D array for mono output)
if num_channels > 1:
mono = samples.reshape(num_channels, -1).mean(axis=0)
else:
mono = samples
sink(mono[:read], read)
if read < hop_s:
break
del sink # Flushes and closes file
print(f"Written {output_file} at {actual_sr} Hz")