Librosa একটি পাইথন প্যাকেজ যা অডিও এবং মিউজিক ফাইল বিশ্লেষণ করতে সাহায্য করে। এই প্যাকেজ মিউজিক রিট্রিভাল ইনফরমেশন সিস্টেম তৈরি করতে সাহায্য করে। এই আর্টিকেলে আমরা দেখব কিভাবে একটি Librosa স্পেক্ট্রোগ্রাম প্লট নির্দিষ্ট সাইজের ইমেজ হিসেবে সংরক্ষণ করা যায়।
ধাপসমূহ
ফিগার সাইজ সেট করুন এবং সাবপ্লটের মধ্যে ও চারপাশে প্যাডিং অ্যাডজাস্ট করুন।
একটি ফিগার এবং সাবপ্লটের সেট তৈরি করুন।
তিনটি ভিন্ন ভেরিয়েবল ইনিশিয়ালাইজ করুন: hl, hi, wi, স্পেক্ট্রোগ্রামে টাইম প্রতি স্যাম্পল, ইমেজের হাইট এবং উইডথ সংরক্ষণ করতে।
একটি ডেমো ট্র্যাক লোড করুন।
একটি window তৈরি করুন, অর্থাৎ অডিও টাইম সিরিজের একটি লিস্ট।
melspectrogram() ব্যবহার করে একটি মেল-স্কেলড স্পেক্ট্রোগ্রাম ক্যালকুলেট করুন window এবং ধাপ ৩ ডেটা দিয়ে।
পাওয়ার স্পেক্ট্রোগ্রাম (অ্যামপ্লিচিউড স্কোয়ার) কে ডেসিবেল (dB) ইউনিটে রূপান্তর করুন, power_to_db() মেথড ব্যবহার করে।
স্পেক্ট্রোগ্রাম img হিসেবে প্রদর্শন করুন (এখানে আমরা এটি সংরক্ষণ করতে পারি)।
savefig() ব্যবহার করে img সংরক্ষণ করুন।
plt.show() মেথড ব্যবহার করে ইমেজ প্রদর্শন করুন।
উদাহরণ
import numpy as np
import matplotlib.pyplot as plt
import librosa.display
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
hl = 512 # স্পেক্ট্রোগ্রামে টাইম-স্টেপ প্রতি স্যাম্পল সংখ্যা
hi = 128 # ইমেজের হাইট
wi = 384 # ইমেজের উইডথ
# ডেমো ট্র্যাক লোড করুন
y, sr = librosa.load(librosa.ex('trumpet'))
window = y[0:wi*hl]
S = librosa.feature.melspectrogram(y=window, sr=sr, n_mels=hi, fmax=8000, hop_length=hl)
S_dB = librosa.power_to_db(S, ref=np.max)
img = librosa.display.specshow(S_dB, x_axis='time', y_axis='mel', sr=sr, fmax=8000, ax=ax)
plt.savefig("out.png")
plt.show()
আউটপুট
