WAVE modülünün kaydı desteklemediğine inanıyorum, sadece mevcut dosyaları işliyor. Aslında kayıt için PyAudio'ya bakmak isteyebilirsiniz . WAV, dünyanın en basit dosya formatı ile ilgilidir. PaInt16'da sadece bir seviyeyi temsil eden işaretli bir tam sayı elde edersiniz ve 0'a yaklaşıldığında daha sessizdir. WAV dosyalarının önce yüksek bayt mı yoksa düşük bayt mı olduğunu hatırlayamıyorum, ancak bunun gibi bir şey çalışmalı (üzgünüm, ben gerçekten bir python programcısı değilim:
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
Kayıt için PyAudio kodu referans için tutuldu:
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()