পাইথনের স্ট্যান্ডার্ড লাইব্রেরির তরঙ্গ মডিউলটি অডিও WAV ফর্ম্যাটের একটি সহজ ইন্টারফেস। এই মডিউলের ফাংশনগুলি অবজেক্টের মতো ফাইলে কাঁচা ফর্ম্যাটে অডিও ডেটা লিখতে পারে এবং একটি WAV ফাইলের বৈশিষ্ট্যগুলি পড়তে পারে৷
ফাইলটি 'রাইট' বা রিড মোডে খোলা হয় ঠিক যেমন বিল্ট-ইন ওপেন() ফাংশন দিয়ে, কিন্তু ওয়েভ মডিউলে ওপেন() ফাংশন দিয়ে
wave.open()
এই ফাংশনটি অডিও ডেটা পড়তে/লিখতে একটি ফাইল খোলে। ফাংশনের দুটি প্যারামিটার প্রয়োজন - প্রথম ফাইলের নাম এবং দ্বিতীয়টি মোড। মোডটি অডিও ডেটা লেখার জন্য 'wb' বা পড়ার জন্য 'rb' হতে পারে।
obj = wave.open('sound.wav','wb')
'rb'-এর একটি মোড একটি Wave_read অবজেক্ট প্রদান করে, যখন 'wb'-এর একটি মোড একটি Wave_write অবজেক্ট প্রদান করে।
Wave_write অবজেক্টের নিম্নলিখিত পদ্ধতি রয়েছে
close() | ফাইলটি বন্ধ করুন যদি এটি ওয়েভ দ্বারা খোলা হয়। |
setchannels() | চ্যানেলের সংখ্যা সেট করুন। স্টেরিও চ্যানেলের জন্য Mono 2 এর জন্য 1 |
setsampwidth() | নমুনা প্রস্থ n বাইটে সেট করুন। |
setframerate() | ফ্রেম রেট n এ সেট করুন। |
setnframes() | ফ্রেমের সংখ্যা n এ সেট করুন। |
setcomptype() | সংকোচনের ধরন এবং বিবরণ সেট করুন। এই মুহুর্তে, শুধুমাত্র কম্প্রেশন টাইপ NONE সমর্থিত, মানে কোন কম্প্রেশন নেই। |
setparams() | প্যারামিটার টিপল (channels, sampwidth, framerate, nframes, comptype, compname) গ্রহণ করে |
বলুন() | ফাইলের বর্তমান অবস্থান পুনরুদ্ধার করে |
writeframesraw() | শুদ্ধ না করে অডিও ফ্রেম লিখুন। |
writeframes() | অডিও ফ্রেম লিখুন এবং নিশ্চিত করুন যে সেগুলি সঠিক। |
নিম্নলিখিত কোডটি 99999 সেকেন্ড সময়কালের এলোমেলো ছোট পূর্ণসংখ্যা বাইট সহ একটি WAV ফাইল তৈরি করে৷
import wave, struct, math, random sampleRate = 44100.0 # hertz duration = 1.0 # seconds frequency = 440.0 # hertz obj = wave.open('sound.wav','w') obj.setnchannels(1) # mono obj.setsampwidth(2) obj.setframerate(sampleRate) for i in range(99999): value = random.randint(-32767, 32767) data = struct.pack('<h', value) obj.writeframesraw( data ) obj.close()
ওয়েভ_রিড অবজেক্ট পদ্ধতি
close() | প্রবাহটি বন্ধ করুন যদি এটি ওয়েভ মডিউল দ্বারা খোলা হয়। |
getchannels() | অডিও চ্যানেলের সংখ্যা প্রদান করে (মোনোর জন্য 1টি, স্টেরিওর জন্য 2টি)। |
getsampwidth() | বাইটে নমুনা প্রস্থ ফেরত দেয়। |
getframerate() | স্যাম্পলিং ফ্রিকোয়েন্সি প্রদান করে। |
getnframes() | অডিও ফ্রেমের সংখ্যা প্রদান করে। |
getcomptype() | কম্প্রেশন টাইপ ফেরত দেয় ('NONE' একমাত্র সমর্থিত প্রকার)। |
getparams() | get*() পদ্ধতির আউটপুটের সমতুল্য একটি nametuple() (channels, sampwidth, framerate, nframes, comptype, compname) প্রদান করে। |
রিডফ্রেম(n) | বাইট অবজেক্ট হিসাবে অডিওর সর্বাধিক n ফ্রেম পড়ে এবং ফেরত দেয়। |
রিওয়াইন্ড() | অডিও স্ট্রিমের শুরুতে ফাইল পয়েন্টার রিওয়াইন্ড করুন। |
নিম্নলিখিত কোড WAV ফাইলের কিছু প্যারামিটার পড়ে।
import wave obj = wave.open('sound.wav','r') print( "Number of channels",obj.getnchannels()) print ( "Sample width",obj.getsampwidth()) print ( "Frame rate.",obj.getframerate()) print ("Number of frames",obj.getnframes()) print ( "parameters:",obj.getparams()) obj.close()
আউটপুট
Number of channels 1 Sample width 2 Frame rate. 44100 Number of frames 99999 parameters: _wave_params(nchannels=1, sampwidth=2, framerate=44100, nframes=99999, comptype='NONE', compname='not compressed')