RSS

une biere, une malboro et de l'electro

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Analyse audio avec python

Ce qui est cool aussi avec python, c'est qu'on peut faire une analyse spectrale :

import pyaudio
from numpy import fromstring
#fenetre

from Tkinter import *
fen = Tk()
close = Button(fen,text="fermer",command=fen.quit)
can = Canvas(fen, width=400,height=200,bg="grey")
can.pack(side=TOP,padx=5,pady=5)
close.pack(side=BOTTOM,pady=12)

#fonctions
num=0
def affiche():
time=[]
time = getAudioData()
global can, lines
n,m,o=0,0,0
if len(lines)==0 :
for a in time:
val = (a*200)+100
lines.append(can.create_line(o,m,n,val,fill="blue"))
m=val
o=n
n+=1
else :
for a in time:
val = (a*200)+100
can.coords(lines[n],o,m,n,val)
m=val
o=n
n+=1
fen.after(1,affiche)

def getAudioData():
rate=1024
p = pyaudio.PyAudio()
inStream = p.open(format=pyaudio.paInt16, channels=1, rate=44100,
input=True, frames_per_buffer=rate)
audio_data = fromstring(inStream.read(rate), dtype=short)
normalized_data = audio_data / 32768.0
return normalized_data




print "enregistrement"
lines = []
affiche()
fen.mainloop()




l'idée c'est bel et bien récuperrer un buffer de la bande audio
puis d'en faire une mini analyse, histoire de se faire plaisir ; tout simplement !!

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

scanner tout les liens en Python

simpa cette petite librairie urllib !!!

def getLink(url):
import urllib
str=[]
htmlSource = urllib.urlopen(url).read(200000)
for chunk in htmlSource.lower().split('href=')[1:]:
indexes = [i for i in [chunk.find('"',1),chunk.find('>'),chunk.find(' ')] if i>-1]
str.append(chunk[:min(indexes)])
return str


ce code retourne un tableau avec tout les liens du site ;
Problème : il retourne aussi les liens avec les images ; le mieux serait ainsi :


def getLink2(url):
import urllib
str=[]
ext = ['.gif','.png','.jpg','.bmp','.css']
htmlSource = urllib.urlopen(url).read()
for chunk in htmlSource.lower().split('href=')[1:]:
indexes = [i for i in [chunk.find('"',1),chunk.find('>'),chunk.find(' ')] if i>-1]
link = chunk[:min(indexes)]
link = link.replace("'","")
if link[0]=='"':link=link[1:]
if link[-1]=='"':link=link[:1]
if url[-1]!="/":url+="/"
if link[0]=="/":
link = url+link[1:]
if link != "#":
if not link[-4:] in ext :
str.append(link)
return str


on évitera aussi les ancres, les liens nuls, etc ..

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
une biere, une malboro et de l'electro Analyse audio avec python scanner tout les liens en Python