FFT pour spectrogrammes en Python
Question
Comment pourrais-je aller sur l'utilisation de Python pour lire les pics de fréquence à partir d'un fichier PCM WAV et être en mesure de générer une image de celui-ci, pour l'analyse de spectogramme?
Je suis en train de faire un programme qui vous permet de lire tous les fichiers audio, convertir en PCM WAV, puis trouver les pics et les seuils de fréquence.
La solution
bibliothèque d'onde de Python vous permettra d'importer l'audio. Après cela, vous pouvez utiliser numpy prendre une FFT du audio.
Alors, matplotlib fait des graphiques très belles et graphiques -. Absolument comparables à Matlab
Il est vieux comme saleté, mais cet article probablement vous lancer sur le problème presque exactement que vous décrivez (article en Python bien sûr).
Autres conseils
Les fichiers WAV de chargement est facile en utilisant AudioLab :
from audiolab import wavread
signal, fs, enc = wavread('test.wav')
ou pour la lecture de tous les formats audio général et la conversion au format WAV:
from audiolab import Sndfile
sound_file = Sndfile('test.w64', 'r')
signal = wave_file.read_frames(wave_file.nframes)
Le spectrogramme est construit en PyLab:
from pylab import *
specgram(signal)
Plus précisément, il fait partie de matplotlib . Voici un meilleur exemple.
from pylab import *
specgram(signal)
est le plus facile. Aussi tout à fait à portée de main dans ce contexte:
subplot
Mais attention: Matplotlib est très lent, mais il crée de belles images. Vous ne devriez pas l'utiliser pour l'animation exigeant, encore moins quand vous traitez avec 3D
Si vous avez besoin de convertir un format PCM sur les entiers, vous aurez envie d'utiliser struct.unpack.