পাইথনের স্ট্যান্ডার্ড লাইব্রেরির তরঙ্গ মডিউলটি অডিও 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')