Я вважаю, що модуль 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()