Я считаю, что модуль WAVE не поддерживает запись, а просто обрабатывает существующие файлы. Возможно, вы захотите посмотреть на PyAudio для фактической записи. WAV - это самый простой в мире формат файлов. В paInt16 вы просто получаете целое число со знаком, представляющее уровень, и чем ближе к 0, тем тише. Я не могу вспомнить, являются ли файлы WAV первым или младшим байтом, но что-то вроде этого должно работать (извините, я на самом деле не программист на 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
Код PyAudio для записи сохранен для справки:
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()