ฟังก์ชันต่างๆ ในโมดูล aifc รองรับการอ่านและเขียนไฟล์ AIFF (รูปแบบไฟล์ Audio Interchange File) และไฟล์ AIFF-C รูปแบบ AIFF ใช้สำหรับจัดเก็บตัวอย่างเสียงดิจิทัลในไฟล์ AIFF-C เวอร์ชันใหม่กว่ามีความสามารถในการบีบอัดข้อมูลเสียง
ไฟล์เสียงมีจำนวนพารามิเตอร์ที่อธิบายข้อมูลเสียง
-
อัตราการสุ่มตัวอย่างหรืออัตราเฟรม:จำนวนครั้งต่อวินาทีที่สุ่มตัวอย่างเสียง
-
จำนวนช่องสัญญาณ:ระบุว่าเสียงเป็นแบบโมโน สเตอริโอ หรือควอโดร
-
เฟรม :ประกอบด้วยหนึ่งตัวอย่างต่อช่องสัญญาณ
-
ขนาดตัวอย่าง:ขนาดเป็นไบต์ของแต่ละตัวอย่าง
ดังนั้นเฟรมประกอบด้วยแชนเนล * สุ่มตัวอย่างไบต์ ข้อมูลเสียง 1 วินาทีคือช่อง * ตัวอย่าง * ไบต์อัตราเฟรม
ฟังก์ชันต่อไปนี้ถูกกำหนดในโมดูล aifc:
aifc.open()
ฟังก์ชันนี้เปิดไฟล์ AIFF หรือ AIFF-C และส่งคืนอินสแตนซ์ของออบเจ็กต์สำหรับการอ่าน/เขียนข้อมูลเสียงขึ้นอยู่กับโหมด จะต้องเป็น 'r' หรือ 'rb' หากต้องเปิดไฟล์เพื่อการอ่าน ควรเป็น 'w' หรือ 'wb' เมื่อต้องเปิดไฟล์เพื่อเขียน
วัตถุที่มีโหมดเขียนใช้ฟังก์ชันต่อไปนี้
| aiff() | สร้างไฟล์ AIFF |
| aifc() | สร้างไฟล์ AIFF-C |
| setnchannels() | ระบุจำนวนช่องในไฟล์เสียง |
| setsampwidth() | ระบุขนาดเป็นไบต์ของตัวอย่างเสียง |
| เซ็ตเฟรมเรท() | ระบุความถี่ในการสุ่มตัวอย่างเป็นเฟรมต่อวินาที |
| setnframes() | ระบุจำนวนเฟรมที่จะเขียนลงในไฟล์เสียง |
| setcomptype() | ระบุประเภทการบีบอัด ไม่สามารถบีบอัดไฟล์ AIFF รองรับประเภทการบีบอัด - b'NONE', b'ULAW', b'ALAW', b'G722' |
| setparams() | ตั้งค่าพารามิเตอร์ด้านบนทั้งหมดพร้อมกัน อาร์กิวเมนต์เป็นทูเพิลที่ประกอบด้วยพารามิเตอร์ต่างๆ |
| writeframes() | เขียนข้อมูลลงในไฟล์ที่ส่งออก ตู่ |
| writeframesraw() | ชอบ writeframes() ยกเว้นว่าส่วนหัวของไฟล์เสียงไม่ได้รับการอัพเดต |
โปรแกรมที่ตามมาจะสร้างไฟล์ AIFF
import aifc, struct
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('<h', value)
obj.writeframesraw( data )
obj.close() อ็อบเจ็กต์ที่อ่าน aiff หรือ aiff-c ใช้ฟังก์ชันต่อไปนี้
| getnchannels() | คืนค่าจำนวนช่องสัญญาณเสียง (1 สำหรับโมโน 2 สำหรับสเตอริโอ) |
| getsampwidth() | คืนค่าขนาดเป็นไบต์ของตัวอย่างแต่ละรายการ |
| getframerate() | ส่งคืนอัตราการสุ่มตัวอย่าง (จำนวนเฟรมเสียงต่อวินาที) |
| getnframes() | คืนค่าจำนวนเฟรมเสียงในไฟล์ |
| getcomptype() | ส่งคืนอาร์เรย์ไบต์ที่มีความยาว 4 ซึ่งอธิบายประเภทของการบีบอัดที่ใช้ในไฟล์เสียง |
| getparams() | ส่งกลับ namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname |
| อ่านเฟรม() | อ่านและส่งคืนเฟรม nframes ถัดไปจากไฟล์เสียง |
| setpos(ตำแหน่ง) | ค้นหาหมายเลขเฟรมที่ระบุ |
ฟังก์ชันเหล่านี้มีให้สำหรับอ็อบเจ็กต์ aiff ที่อ่านได้และเขียนได้:
| ย้อนกลับ() | กรอกลับตัวชี้การอ่าน readframes() ถัดไปจะเริ่มต้นจากจุดเริ่มต้น |
| บอก() | ส่งคืนหมายเลขเฟรมปัจจุบัน |
| ปิด() | ปิดไฟล์ 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')