ฟังก์ชันต่างๆ ในโมดูล 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')