কম্পিউটার

পাইথন (তরঙ্গ) ব্যবহার করে WAV ফাইলগুলি পড়ুন এবং লিখুন


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

  1. পাইথন ব্যবহার করে uuencode ফাইল এনকোড এবং ডিকোড করুন

  2. পাইথনে xlsxwriter মডিউল ব্যবহার করে এক্সেল ফাইল তৈরি করুন এবং লিখুন

  3. পাইথন ব্যবহার করে একাধিক ফাইলের নাম পরিবর্তন করুন

  4. পাইথন openpyxl মডিউল ব্যবহার করে একটি এক্সেল ফাইল পড়ুন এবং লিখুন