Tôi tin rằng mô-đun WAVE không hỗ trợ ghi, chỉ xử lý các tệp hiện có. Bạn có thể muốn xem PyAudio để thực sự ghi âm. WAV là định dạng tệp đơn giản nhất thế giới. Trong paInt16, bạn chỉ nhận được một số nguyên có dấu đại diện cho một cấp và càng gần 0 thì càng yên tĩnh. Tôi không thể nhớ liệu các tệp WAV là byte đầu tiên hay byte thấp, nhưng một cái gì đó như thế này sẽ hoạt động (xin lỗi, tôi thực sự không phải là một lập trình viên python:
from array import array
# you'll probably want to experiment on threshold
# depends how noisy the signal
threshold = 10
max_value = 0
as_ints = array('h', data)
max_value = max(as_ints)
if max_value > threshold:
# not silence
Mã PyAudio để ghi âm được lưu giữ để tham khảo:
import pyaudio
import sys
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=chunk)
print "* recording"
for i in range(0, 44100 / chunk * RECORD_SECONDS):
data = stream.read(chunk)
# check for silence here by comparing the level with 0 (or some threshold) for
# the contents of data.
# then write data or not to a file
print "* done"
stream.stop_stream()
stream.close()
p.terminate()