Mô-đun sóng trong thư viện tiêu chuẩn của Python là một giao diện dễ dàng cho định dạng WAV âm thanh. Các chức năng trong mô-đun này có thể ghi dữ liệu âm thanh ở định dạng thô vào một tệp như đối tượng và đọc các thuộc tính của tệp WAV.
Tệp được mở ở chế độ 'ghi' hoặc đọc giống như với hàm open () được tích hợp sẵn, nhưng với hàm open () trong mô-đun wave
wave.open ()
Chức năng này mở một tệp để đọc / ghi dữ liệu âm thanh. Hàm cần hai tham số - đầu tiên là tên tệp và thứ hai là chế độ. Chế độ có thể là 'wb' để ghi dữ liệu âm thanh hoặc 'rb' để đọc.
obj = wave.open('sound.wav','wb') Chế độ 'rb' trả về đối tượng Wave_read, trong khi chế độ 'wb' trả về đối tượng Wave_write.
Đối tượng Wave_write có các phương thức sau
| close () | Đóng tệp nếu nó được mở bằng wave. |
| setnchannels () | Đặt số lượng kênh. 1 cho Mono 2 cho các kênh âm thanh nổi |
| setampwidth () | Đặt chiều rộng mẫu thành n byte. |
| setframerate () | Đặt tốc độ khung hình thành n. |
| setnframes () | Đặt số lượng khung hình thành n. |
| setcomptype () | Đặt kiểu nén và mô tả. Hiện tại, chỉ loại nén NONE được hỗ trợ, có nghĩa là không nén. |
| setparams () | chấp nhận tuple tham số (nchannels, sampwidth, framerate, nframes, comptype, compname) |
| tell () | Truy xuất vị trí hiện tại trong tệp |
| writeframesraw () | Viết khung âm thanh mà không cần chỉnh sửa. |
| writeframes () | Viết khung âm thanh và đảm bảo rằng chúng chính xác. |
Đoạn mã sau sẽ tạo một tệp WAV với các byte số nguyên ngắn ngẫu nhiên có thời lượng 99999 giây.
import wave, struct, math, random
sampleRate = 44100.0 # hertz
duration = 1.0 # seconds
frequency = 440.0 # hertz
obj = wave.open('sound.wav','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() Phương thức đối tượng Wave_read
| close () | Đóng luồng nếu luồng được mở bằng mô-đun wave. |
| getnchannels () | Trả về số kênh âm thanh (1 cho đơn âm, 2 cho âm thanh nổi). |
| getampwidth () | Trả về chiều rộng mẫu tính bằng byte. |
| getframerate () | Trả về tần số lấy mẫu. |
| getnframes () | Trả về số lượng khung âm thanh. |
| getcomptype () | Trả về kiểu nén ('NONE' là kiểu duy nhất được hỗ trợ). |
| getparams () | Trả về têntuple () (nchannels, sampwidth, framerate, nframes, comptype, compname), tương đương với đầu ra của các phương thức get * (). |
| readframes (n) | Đọc và trả về tối đa n khung hình âm thanh, dưới dạng đối tượng byte. |
| rewind () | Tua lại con trỏ tệp về đầu luồng âm thanh. |
Đoạn mã sau đọc một số tham số của tệp 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() Đầu ra
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')