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