ฟังก์ชันต่างๆ ในโมดูล aifc ให้การสนับสนุนการอ่านและเขียน AIFF (Audio Interchange File Format) และ AIFF-C ไฟล์ รูปแบบ AIFF ใช้สำหรับจัดเก็บตัวอย่างเสียงดิจิทัลในไฟล์ รุ่นใหม่ AIFF-C มีความสามารถในการบีบอัดข้อมูลเสียง
ไฟล์เสียงมีพารามิเตอร์หลายตัวที่อธิบายข้อมูลเสียง:
- อัตราการสุ่มตัวอย่างหรืออัตราเฟรม: จำนวนครั้งต่อวินาทีที่เสียงถูกสุ่มตัวอย่าง
- จำนวนช่องสัญญาณ: ระบุว่าเสียงเป็น mono, stereo, หรือ quadro
- เฟรม: ประกอบด้วยตัวอย่างหนึ่งต่อช่องสัญญาณ
- ขนาดตัวอย่าง: ขนาดในไบต์ของแต่ละตัวอย่าง
ดังนั้น เฟรมประกอบด้วย channels * samplesize ไบต์ ข้อมูลเสียง 1 วินาที คือ 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 # hertz
duration = 1.0 # seconds
frequency = 440.0 # hertz
obj = aifc.open('sound.aiff', 'w')
obj.setnchannels(1) # mono
obj.setsampwidth(2)
obj.setframerate(sampleRate)
for i in range(99999):
value = random.randint(-32767, 32767)
data = struct.pack('
ออบเจกต์อ่าน aiff หรือ aiff-c ใช้ฟังก์ชันต่อไปนี้:
getnchannels() คืนค่าจำนวนช่องสัญญาณเสียง (1 สำหรับ mono, 2 สำหรับ stereo)
getsampwidth() คืนค่าขนาดในไบต์ของตัวอย่างแต่ละตัว
getframerate() คืนค่าอัตราการสุ่มตัวอย่าง (จำนวนเฟรมเสียงต่อวินาที)
getnframes() คืนค่าจำนวนเฟรมเสียงในไฟล์
getcomptype() คืนค่าอาเรย์ไบต์ความยาว 4 อธิบายประเภทการบีบอัดที่ใช้ในไฟล์เสียง
getparams() คืนค่า namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname)
readframes() อ่านและคืนค่า nframes เฟรมถัดไปจากไฟล์เสียง
setpos(pos) Seek ไปยังหมายเลขเฟรมที่ระบุ
ฟังก์ชันเหล่านี้พร้อมใช้งานสำหรับออบเจกต์ aiff ที่อ่านและเขียนได้:
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')