Es gibt eine Bibliothek PyAudio
genannt. Sie können damit in Echtzeit aufnehmen. Mit Hilfe von numpy.fromstring()
und können Sie die gewünschte Ausgabe erhalten. Bitte beachten Sie, dass das folgende Snippet für MONO-CHANNEL
ist.
import pyaudio
import numpy
RATE=16000
RECORD_SECONDS = 2.5
CHUNKSIZE = 1024
# initialize portaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, frames_per_buffer=CHUNKSIZE)
frames = [] # A python-list of chunks(numpy.ndarray)
for _ in range(0, int(RATE/CHUNKSIZE * RECORD_SECONDS)):
data = stream.read(CHUNKSIZE)
frames.append(numpy.fromstring(data, dtype=numpy.int16))
#Convert the list of numpy-arrays into a 1D array (column-wise)
numpydata = numpy.hstack(frames)
# close stream
stream.stop_stream()
stream.close()
p.terminate()
Dies ist ein getesteter Code. Es sollte als Charme funktionieren. Um zu überprüfen, ob Ihre aufgezeichneten Daten in numpydata
korrekt verfügbar sind, können Sie dieses folgende Snippet nach dem vorherigen Code hinzufügen.
import scipy.io.wavefile as wav
wav.write('out.wav',RATE,numpydata)
Diese Linien werden Ihre numpydata
in "out.wav" schreiben. Spielen Sie die Datei ab, um die Daten zu überprüfen.
PS: Dies ist meine erste Antwort in StackOverflow. Ich hoffe es hilft.
Danke. Ich habe 'alsaaudio' anstelle von' pyaudio' in meiner Lösung verwendet. Gibt es einen Unterschied zwischen den beiden? –
Ich denke 'alsaaudio' ist nur Linux, während' PyAudio' [PortAudio'] (http://www.portaudio.com/) -Bindungen bietet und auf mehreren Plattformen funktioniert. –