Saya yakin modul WAVE tidak mendukung perekaman, hanya memproses file yang ada. Anda mungkin ingin melihat PyAudio untuk benar-benar merekam. WAV adalah tentang format file paling sederhana di dunia. Di paInt16 Anda baru saja mendapatkan integer bertanda tangan yang mewakili level, dan mendekati 0 lebih tenang. Saya tidak ingat apakah file WAV byte pertama atau byte rendah tinggi, tetapi sesuatu seperti ini seharusnya berfungsi (maaf, saya bukan benar-benar programmer 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
Kode PyAudio untuk merekam disimpan sebagai referensi:
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()