In Kapitel 2 des Buches Mit Python erlernte Trennung von Klangquellen ist eine Szene aufzunehmen, die ich jedoch notieren werde, da sie etwas verstopft ist.
sounddevice
erfordert pip install sounddevice
. "Welle" ist eingebaut und wird nicht benötigt.
macOS 10.15.6 Python 3.7.8 sounddevice 0.4.1
import numpy as np
import sounddevice as sd
import wave
FILE_NAME = './test.wav' #Dateiname zum Speichern
wave_length = 2 #Aufnahmelänge (Sekunden)
sample_rate = 16_000 #Abtastfrequenz
#Aufnahme starten (Welle_Länge Rekord für Sekunden. Warten Sie, bis die Aufnahme mit Warten beendet ist.
data = sd.rec(int(wave_length * sample_rate), sample_rate, channels=1)
sd.wait()
#Normalisieren. Da es mit 16 Bits Quantisierungsbit aufgezeichnet wird, wird es im Bereich von int16 maximiert.
data = data / data.max() * np.iinfo(np.int16).max
# float -> int
data = data.astype(np.int16)
#Datei speichern
with wave.open(FILE_NAME, mode='wb') as wb:
wb.setnchannels(1) #monaural
wb.setsampwidth(2) # 16bit=2byte
wb.setframerate(sample_rate)
wb.writeframes(data.tobytes()) #In Byte-String konvertieren
tobytes ()
* sd.rec
in einen Byte-String konvertiert. Gibt float
zurück, sodass data
in einen Integer-Typ konvertiert wird ( np.int16
für 16 Bit). Ich musste vergessen, es in einen Integer-Typ umzuwandeln, und es klang wie weißes Rauschen, egal was ich aufgenommen habe. Wir hoffen auf Ihre Referenz. Referenz * Wave
-Dokument https://docs.python.org/3.7/library/wave.htmlsounddevice
Dokumentation https://python-sounddevice.readthedocs.io/en/0.4.1/usage.html#recordingRecommended Posts