piątek, 5 marca 2010

Python i analiza dźwięku

Skrypt analizujący głośność dźwięku zapisanego w pliku wav napisany w Pythonie. Obliczana jest wartość średnia w oknie o długości N. Kolejne okna to k:k+N-1, 2*k:2*k+N-1, ... , gdy k < N to okna się nakładają. Na końcu z pomocą biblioteki matplotlib rysowany jest wykres głośności.
__author__ = "daniel"
__date__ = "$2010-03-04 00:21:00$"

from scipy.io import wavfile
import matplotlib.pyplot as pyplot

if __name__ == "__main__":
# wczytanie pliku
fs, dane = wavfile.read("/home/daniel/Muzyka/labedzie.wav")
# laczenie dwoch kanalow w jeden
dane = dane[:, 0] / 2.0 + dane[:, 1] / 2.0
# normalizacja
dane = dane / max(dane)

# o tyle probek bedziemy skakac w czasie analizy
k = fs / 10
# dlugosc okna analizy
N = 2 ** 13
i = 0
# ilosc probek w pliku
length, = dane.shape
srednia = []

while i * k + N < length: srednia.append(abs(dane[i*k:i*k+N-1].mean())) i+=1 pyplot.plot(srednia) pyplot.title("Wykres glosnosci") pyplot.show()