Ich glaube, das WAVE-Modul unterstützt keine Aufzeichnung, sondern nur die Verarbeitung vorhandener Dateien. Vielleicht sollten Sie sich Folgendes ansehen PyAudio für die eigentliche Aufnahme. WAV ist so ziemlich das einfachste Dateiformat der Welt. In paInt16 erhalten Sie nur eine vorzeichenbehaftete Ganzzahl, die einen Pegel darstellt, und näher an 0 ist leiser. Ich kann mich nicht erinnern, ob WAV-Dateien zuerst High-Byte oder Low-Byte sind, aber so etwas sollte funktionieren (sorry, ich bin nicht wirklich ein Python-Programmierer:
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-Code für die Aufnahme wird als Referenz aufbewahrt:
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()