पायथन के मानक लाइब्रेरी में wave मॉड्यूल ऑडियो WAV प्रारूप के लिए एक आसान इंटरफ़ेस है। इस मॉड्यूल में फ़ंक्शन ऑडियो डेटा को रॉ प्रारूप में फ़ाइल-जैसे ऑब्जेक्ट में लिख सकते हैं और WAV फ़ाइल के गुणों को पढ़ सकते हैं।
फ़ाइल को बिल्ट-इन open() फ़ंक्शन की तरह 'write' या read मोड में खोला जाता है, लेकिन wave मॉड्यूल में open() फ़ंक्शन के साथ।
wave.open()
यह फ़ंक्शन ऑडियो डेटा पढ़ने/लिखने के लिए एक फ़ाइल खोलता है। फ़ंक्शन को दो पैरामीटर की आवश्यकता होती है - पहला फ़ाइल नाम और दूसरा मोड। मोड 'wb' ऑडियो डेटा लिखने के लिए या 'rb' पढ़ने के लिए हो सकता है।
obj = wave.open('sound.wav', 'wb')
'rb' मोड Wave_read ऑब्जेक्ट लौटाता है, जबकि 'wb' मोड Wave_write ऑब्जेक्ट लौटाता है।
Wave_write ऑब्जेक्ट में निम्नलिखित विधियाँ हैं:
| close() | यदि इसे wave द्वारा खोला गया था तो फ़ाइल बंद करें। |
| setnchannels() | चैनलों की संख्या सेट करें। 1 मोनो के लिए, 2 स्टीरियो चैनल के लिए। |
| setsampwidth() | नमूना चौड़ाई को n बाइट्स पर सेट करें। |
| setframerate() | फ़्रेम दर को n पर सेट करें। |
| setnframes() | फ़्रेम की संख्या को n पर सेट करें। |
| setcomptype() | संपीड़न प्रकार और विवरण सेट करें। फिलहाल, केवल संपीड़न प्रकार NONE समर्थित है, जिसका अर्थ है कोई संपीड़न नहीं। |
| setparams() | पैरामीटर टपल (nchannels, sampwidth, framerate, nframes, comptype, compname) स्वीकार करता है। |
| tell() | फ़ाइल में वर्तमान स्थिति प्राप्त करता है। |
| writeframesraw() | ऑडियो फ़्रेम लिखें, बिना सुधार के। |
| writeframes() | ऑडियो फ़्रेम लिखें और सुनिश्चित करें कि वे सही हैं। |
निम्नलिखित कोड 99999 सेकंड अवधि के यादृच्छिक शॉर्ट इंटीजर बाइट्स के साथ एक WAV फ़ाइल बनाता है।
import wave, struct, math, random
sampleRate = 44100.0 # हर्ट्ज
duration = 1.0 # सेकंड
frequency = 440.0 # हर्ट्ज
obj = wave.open('sound.wav', 'w')
obj.setnchannels(1) # मोनो
obj.setsampwidth(2)
obj.setframerate(sampleRate)
for i in range(99999):
value = random.randint(-32767, 32767)
data = struct.pack('
Wave_read ऑब्जेक्ट विधियाँ
close() यदि इसे wave मॉड्यूल द्वारा खोला गया था तो स्ट्रीम बंद करें।
getnchannels() ऑडियो चैनलों की संख्या लौटाता है (1 मोनो के लिए, 2 स्टीरियो के लिए)।
getsampwidth() बाइट्स में नमूना चौड़ाई लौटाता है।
getframerate() नमूना आवृत्ति लौटाता है।
getnframes() ऑडियो फ़्रेम की संख्या लौटाता है।
getcomptype() संपीड़न प्रकार लौटाता है ('NONE' एकमात्र समर्थित प्रकार है)।
getparams() एक namedtuple() लौटाता है (nchannels, sampwidth, framerate, nframes, comptype, compname), get*() विधियों के आउटपुट के बराबर।
readframes(n) अधिकतम n फ़्रेम ऑडियो पढ़ता है और लौटाता है, बाइट्स ऑब्जेक्ट के रूप में।
rewind() फ़ाइल पॉइंटर को ऑडियो स्ट्रीम की शुरुआत में वापस ले जाता है।
निम्नलिखित कोड 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')