Comment puis-je créer un graphique d'ondes sonores à l'aide du générateur?
Voici comment vous pouvez le faire à l'aide de Python, en tirant parti des bibliothèques pour la génération de son et la création d'images:
1. Générer les données des ondes sonores:
Cette partie crée les données numériques représentant l'onde sonore. Nous utiliserons «Numpy» pour le calcul numérique et «Scipy» pour générer différentes formes d'onde.
`` Python
Importer Numpy comme NP
Importer Matplotlib.pyplot en tant que plt
importer scipy.io.wavfile comme wav
De Scipy.Signal Import Sawtooth, Square
Paramètres
fréquence =440 # Hz (note A4)
durée =2 # secondes
Sample_rate =44100 # HZ (taux audio standard)
amplitude =0,8 # Gardez-le en dessous de 1 pour éviter l'écrasement
vecteur de temps
t =np.linspace (0, durée, int (samptonnet_rate * durée), terminal =false)
Choisissez une forme d'onde (sinus, carré, dents de scie, etc.)
#WaveForm =np.sin (2 * np.pi * fréquence * t) * amplitude # onde sinusoïdale
#WaveForm =carré (2 * np.pi * fréquence * t) * amplitude # onde carrée
Formulaire d'onde =Sawtooth (2 * np.pi * Fréquence * T) * Amplitude # onde de dents de scie
#Optional:Ajoutez du bruit
bruit =np.random.normal (0, 0,1, len (forme d'onde))
forme d'onde + =bruit
normaliser pour éviter l'écrasement (important pour la sortie audio)
forme d'onde =forme d'onde / np.max (np.abs (forme d'onde)))
#Optional:Enregistrer en tant que fichier WAV
wav.write ("output.wav", samptample_rate, wave forme.astype (np.float32))
`` '
2. Créez le graphique:
Cette pièce prend les données d'ondes sonores générées et les trace en utilisant `Matplotlib».
`` Python
tracer la forme d'onde
Plt.Figure (FigSize =(10, 4))
plt.plot (T, forme d'onde)
plt.xLabel ("temps (s)")
plt.ylabel ("amplitude")
plt.title ("Forme d'onde sonore")
plt.grid (true)
plt.savefig ("son_wave.png") #save comme png
plt.show ()
`` '
Code complet:
`` Python
Importer Numpy comme NP
Importer Matplotlib.pyplot en tant que plt
importer scipy.io.wavfile comme wav
De Scipy.Signal Import Sawtooth, Square
Paramètres
fréquence =440 # Hz (note A4)
durée =2 # secondes
Sample_rate =44100 # HZ (taux audio standard)
amplitude =0,8 # Gardez-le en dessous de 1 pour éviter l'écrasement
vecteur de temps
t =np.linspace (0, durée, int (samptonnet_rate * durée), terminal =false)
Choisissez une forme d'onde
Formulaire d'onde =Sawtooth (2 * np.pi * fréquence * t) * amplitude
#Optional:Ajoutez du bruit
bruit =np.random.normal (0, 0,1, len (forme d'onde))
forme d'onde + =bruit
normaliser pour éviter l'écrasement
forme d'onde =forme d'onde / np.max (np.abs (forme d'onde)))
#Optional:Enregistrer en tant que fichier WAV
wav.write ("output.wav", samptample_rate, wave forme.astype (np.float32))
tracer la forme d'onde
Plt.Figure (FigSize =(10, 4))
plt.plot (T, forme d'onde)
plt.xLabel ("temps (s)")
plt.ylabel ("amplitude")
plt.title ("Forme d'onde sonore")
plt.grid (true)
plt.savefig ("son_wave.png")
plt.show ()
`` '
Ce code sera:
1. Générez une onde en dents de scie (vous pouvez facilement changer cela en des fonctions sinusoïdales, carrées ou d'autres ondes en utilisant des fonctions `scipy.signal`).
2. Ajouter éventuellement du bruit pour le rendre plus réaliste.
3. Normalisez la forme d'onde pour éviter l'écrasement.
4. Enregistrer éventuellement en tant que fichier WAV.
5. Créez et enregistrez une image PNG de l'amplitude de l'onde sonore au fil du temps.
N'oubliez pas d'installer les bibliothèques nécessaires:«Numpy», «Matplotlib» et «Scipy». Vous pouvez les installer à l'aide de PIP:`PIP Installer Numpy Matplotlib Scipy`
