Các chức năng khác nhau trong mô-đun aifc hỗ trợ đọc và ghi các tệp AIFF (Định dạng tệp trao đổi âm thanh) và AIFF-C. Định dạng AIFF dùng để lưu trữ các mẫu âm thanh kỹ thuật số trong một tệp. Phiên bản mới hơn AIFF-C của nó có khả năng nén dữ liệu âm thanh
Tệp âm thanh có số lượng tham số mô tả dữ liệu âm thanh.
-
Tốc độ lấy mẫu hoặc tốc độ khung hình:số lần âm thanh được lấy mẫu trên giây.
-
Số kênh:cho biết âm thanh là mono, stereo hay quadro.
-
khung:bao gồm một mẫu cho mỗi kênh.
-
Kích thước mẫu:kích thước tính bằng byte của mỗi mẫu.
Do đó, một khung bao gồm các kênh * byte lấy mẫu kích thước. Dữ liệu âm thanh trong 1 giây là các kênh * kích thước mẫu * byte tốc độ khung hình.
Các chức năng sau được định nghĩa trong mô-đun aifc:
aifc.open ()
Hàm này mở tệp AIFF hoặc AIFF-C và trả về một thể hiện đối tượng để đọc / ghi dữ liệu âm thanh tùy thuộc vào chế độ. Nó phải là 'r' hoặc 'rb' nếu tệp phải được mở để đọc. Nó phải là 'w' hoặc 'wb' khi tệp phải được mở để ghi.
Đối tượng có chế độ ghi sử dụng các chức năng sau
aiff () | Tạo tệp AIFF. |
aifc () | Tạo tệp AIFF-C. |
setnchannels () | Chỉ định số kênh trong tệp âm thanh. |
setampwidth () | Chỉ định kích thước tính bằng byte của mẫu âm thanh. |
setframerate () | Chỉ định tần số lấy mẫu theo khung hình trên giây. |
setnframes () | Chỉ định số lượng khung hình sẽ được ghi vào tệp âm thanh. |
setcomptype () | Chỉ định kiểu nén. không thể nén tệp AIFF. các kiểu nén được hỗ trợ - b'NONE ', b'ULAW', b'ALAW ', b'G722'. |
setparams () | Đặt tất cả các tham số trên cùng một lúc. Đối số là một bộ bao gồm các tham số khác nhau. |
writeframes () | Ghi dữ liệu vào tệp đầu ra. T |
writeframesraw () | Giống như writeframes (), ngoại trừ tiêu đề của tệp âm thanh không được cập nhật. |
Chương trình sau tạo tệp 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()
Đối tượng đọc aiff hoặc aiff-c sử dụng các chức năng sau
getnchannels () | Trả về số kênh âm thanh (1 cho đơn âm, 2 cho âm thanh nổi). |
getampwidth () | Trả về kích thước tính bằng byte của từng mẫu riêng lẻ. |
getframerate () | Trả về tốc độ lấy mẫu (số khung hình âm thanh mỗi giây). |
getnframes () | Trả về số lượng khung âm thanh trong tệp. |
getcomptype () | Trả về mảng byte có độ dài 4 mô tả kiểu nén được sử dụng trong tệp âm thanh. |
getparams () | Trả về một nametuple () (nchannels, sampwidth, framerate, nframes, comptype, compname |
readframes () | Đọc và trả lại các khung nframe tiếp theo từ tệp âm thanh. |
setpos (pos) | Tìm số khung đã chỉ định. |
Các hàm này có sẵn cho đối tượng aiff có thể đọc được cũng như có thể ghi:
rewind () | Tua lại con trỏ đã đọc. Các khung đọc tiếp theo () sẽ bắt đầu lại từ đầu. |
tell () | Trả về số khung hiện tại. |
close () | Đóng tệp AIFF. Sau khi gọi phương thức này, đối tượng không thể được sử dụng nữa. |
Ví dụ
Chương trình sau đọc các thuộc tính của tệp 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()
Đầu ra
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')