কম্পিউটার টিউটোরিয়াল

পাইথনে AIFF এবং AIFC ফাইল পড়া ও লিখা (aifc মডিউল)


aifc মডিউলের বিভিন্ন ফাংশন AIFF (Audio Interchange File Format) এবং AIFF-C ফাইল পড়া ও লিখার জন্য সাপোর্ট প্রদান করে। AIFF ফরম্যাটটি একটি ফাইলে ডিজিটাল অডিও স্যাম্পল সংরক্ষণের জন্য। এর nieuwere ভার্সন AIFF-C-তে অডিও ডেটা কমপ্রেস করার ক্ষমতা রয়েছে।

অডিও ফাইলের অডিও ডেটা বর্ণনা করার কিছু প্যারামিটার রয়েছে:

  • স্যাম্পলিং রেট বা ফ্রেম রেট: প্রতি সেকেন্ডে শব্দ কতবার স্যাম্পল করা হয়।

  • চ্যানেলের সংখ্যা: অডিও মোনো, স্টেরিও, বা কোড্রো কিনা তা নির্দেশ করে।

  • ফ্রেম (frame): প্রতিটি চ্যানেলের জন্য এক স্যাম্পল দিয়ে গঠিত।

  • স্যাম্পল সাইজ: প্রতিটি স্যাম্পলের সাইজ বাইটে।

সুতরাং একটি ফ্রেম состоит হয় channels * samplesize বাইটে। ১ সেকেন্ডের অডিও ডেটা হলো channels * samplesize * framerate বাইট।

aifc মডিউলে নিচের ফাংশনগুলো সংজ্ঞায়িত:

aifc.open()

এই ফাংশনটি একটি AIFF বা AIFF-C ফাইল খুলে এবং মোডের উপর নির্ভর করে অডিও ডেটা পড়া/লিখার জন্য একটি অবজেক্ট ইন্সট্যান্স রিটার্ন করে। পড়ার জন্য মোড হতে হবে 'r' বা 'rb'। লিখতে হলে 'w' বা 'wb'।

লিখার মোডवाले অবজেক্ট নিচের ফাংশনগুলো ব্যবহার করে:

aiff()একটি AIFF ফাইল তৈরি করে।
aifc()একটি AIFF-C ফাইল তৈরি করে।
setnchannels()অডিও ফাইলে চ্যানেলের সংখ্যা নির্দিষ্ট করে।
setsampwidth()অডিও স্যাম্পলের সাইজ বাইটে নির্দিষ্ট করে।
setframerate()প্রতি সেকেন্ডে ফ্রেমের সংখ্যায় স্যাম্পলিং ফ্রিকোয়েন্সি নির্দিষ্ট করে।
setnframes()অডিও ফাইলে লেখা ফ্রেমের সংখ্যা নির্দিষ্ট করে।
setcomptype()কম্প্রেশন টাইপ নির্দিষ্ট করে। AIFF ফাইলে কমপ্রেশন সম্ভব নয়। সমর্থিত কমপ্রেশন টাইপ: b'NONE', b'ULAW', b'ALAW', b'G722'।
setparams()উপরোক্ত সব প্যারামিটার একসাথে সেট করে। আর্গুমেন্টটি একটি টাপল যেতে সব প্যারামিটার থাকে।
writeframes()আউটপুট ফাইলে ডেটা লিখে।
writeframesraw()writeframes()-এর মতো, কিন্তু অডিও ফাইলের হেডার আপডেট হয় না।

নিচের প্রোগ্রামটি একটি AIFF ফাইল তৈরি করে:

import aifc, struct, random
sampleRate = 44100.0  # হার্টজ
duration = 1.0  # সেকেন্ড
frequency = 440.0  # হার্টজ
obj = aifc.open('sound.aiff', 'w')
obj.setnchannels(1)  # মোনো
obj.setsampwidth(2)
obj.setframerate(sampleRate)
for i in range(99999):
    value = random.randint(-32767, 32767)
    data = struct.pack('

AIFF বা AIFF-C পড়ার অবজেক্ট নিচের ফাংশনগুলো ব্যবহার করে:

getnchannels()অডিও চ্যানেলের সংখ্যা রিটার্ন করে (১ মোনোর জন্য, ২ স্টেরিওর জন্য)।
getsampwidth()বাইটে প্রতিটি স্যাম্পলের সাইজ রিটার্ন করে।
getframerate()স্যাম্পলিং রেট (প্রতি সেকেন্ড অডিও ফ্রেম) রিটার্ন করে।
getnframes()ফাইলে অডিও ফ্রেমের সংখ্যা রিটার্ন করে।
getcomptype()অডিও ফাইলে ব্যবহৃত কমপ্রেশন টাইপ বর্ণনাকারী ৪ দৈর্ঘ্যের বাইটস অ্যারে রিটার্ন করে।
getparams()একটি namedtuple() রিটার্ন করে (nchannels, sampwidth, framerate, nframes, comptype, compname)
readframes()অডিও ফাইল থেকে পরবর্তী nframes ফ্রেম পড়ে রিটার্ন করে।
setpos(pos)নির্দিষ্ট ফ্রেম নম্বরে সিক (seek) করে।

এই ফাংশনগুলো পড়ার এবং লিখার দুটো টাইপের aifc অবজেক্টের জন্য উপলব্ধ:

rewind()রিড পয়েন্টার রিভাইন্ড করে। পরবর্তী readframes() শুরু থেকে শুরু হবে।
tell()বর্তমান ফ্রেম নম্বর রিটার্ন করে।
close()AIFF ফাইল বন্ধ করে। এই মেথড কল করার পর অবজেক্ট আর ব্যবহার করা যায় না।

উদাহরণ

নিচের প্রোগ্রামটি একটি aiff ফাইলের অ্যাট্রিবিউট পড়ে:

import aifc
obj = aifc.open('sound.aiff', '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: _aifc_params(nchannels=1, sampwidth=2, framerate=44100, nframes=99999, comptype=b'NONE', compname=b'not compressed')
  1. পাইথনে xlsxwriter মডিউল ব্যবহার করে এক্সেল ফাইল তৈরি ও লেখা

  2. পাইথনে openpyxl ব্যবহার করে এক্সেল ফাইল পড়া ও লিখা

  3. পাইথনে ফাইল রিড ও রাইট মোডে ওপেন করা

  4. পাইথনে CSV ফাইল পড়া এবং লেখা: csv এবং Pandas দিয়ে ধাপে ধাপে গাইড