Il y a une scène à enregistrer dans le chapitre 2 du livre Sound Source Separation Learned with Python, mais je suis un peu coincé, donc je vais en prendre note.
sounddevice nécessite pip install sounddevice. «wave» est intégré et n'est pas nécessaire.
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' #Nom du fichier à enregistrer
wave_length = 2 #Durée d'enregistrement (secondes)
sample_rate = 16_000 #Fréquence d'échantillonnage
#Démarrer l'enregistrement (wave_longueur Enregistrez pendant secondes. Attendez la fin de l'enregistrement avec wait)
data = sd.rec(int(wave_length * sample_rate), sample_rate, channels=1)
sd.wait()
#Normaliser. Puisqu'il est enregistré avec 16 bits de bit de quantification, il est maximisé dans la plage de int16.
data = data / data.max() * np.iinfo(np.int16).max
# float -> int
data = data.astype(np.int16)
#Enregistrer le fichier
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()) #Convertir en chaîne d'octets
with iciwave.open s'ouvre avec wb, donc le contenu de writeframes doit également être une chaîne d'octetstobytes ()sd.rec renvoie float, vous devez donc convertir data en un type entier (np.int16 pour 16 bits)J'ai oublié de le convertir en type entier, et quoi que j'enregistre, ça sonnait comme du bruit blanc. Nous espérons pour votre référence.
wave https://docs.python.org/3.7/library/wave.htmlsounddevice https://python-sounddevice.readthedocs.io/en/0.4.1/usage.html#recordingRecommended Posts