Creo que el módulo WAVE no admite la grabación, solo procesa archivos existentes. Es posible que desee mirar PyAudio para grabar realmente. WAV es el formato de archivo más simple del mundo. En paInt16 solo obtienes un entero con signo que representa un nivel, y más cerca de 0 es más silencioso. No recuerdo si los archivos WAV tienen un byte alto primero o un byte bajo, pero algo como esto debería funcionar (lo siento, no soy realmente un programador de 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
El código PyAudio para la grabación se mantiene como referencia:
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()