Le kit GUI par défaut fourni avec Python, Dessinons la forme d'onde wav par la force en utilisant le canevas de tkInter.
Aucun plug-in supplémentaire n'est requis. Tout ce que vous avez à faire est de préparer Python et la source sonore que vous souhaitez lire.
python
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter
import wave
import numpy as np
window_width = 600
window_height = 500
root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry(str(window_width) + "x" + str(window_height))
#Lire les données wav
wav = wave.open("./test.wav")
#Aller au début de la partie audio
wav.rewind()
#Lecture binaire
wavdata = wav.readframes(wav.getnframes())
#Convertir en int
wavdata = np.frombuffer(wavdata,'int16')
#
#Zone de toile
#
canvas = Tkinter.Canvas(root, width = window_width, height = window_height)
#Nombre d'étapes sur l'axe X
step = float(window_width)/float(wav.getnframes())
x = 0 #Axe X
b_i = 0 #Valeur précédente
for c,i in enumerate(wavdata):
#Conservez les coordonnées précédentes
if (c%2 == 0):
b_i = i
x = x + step
continue
#Créer un graphique de forme d'onde en utilisant les coordonnées précédentes et les coordonnées actuelles
canvas.create_line(int(x), (b_i/window_height)+(window_height/2), int(x+step), (i/window_height)+(window_height/2), fill = "blue")
#Avancez la coordonnée X pas à pas
x = x + step
print "(x,y) = ("+ str(x) +","+ str(i) +")"
#Voie centrale
canvas.create_line(0, window_height/2, window_width, window_height/2, fill = "black")
#
#Reliure en toile
#
canvas.place(x=0,y=0)
#
#fermer wav
#
wav.close()
root.mainloop()
Bien que ce soit approximatif, c'est comme ça.
Recommended Posts