FFT para los espectrogramas en Python
Pregunta
¿Cómo voy a ir sobre el uso de Python para leer los picos de frecuencia a partir de un archivo WAV PCM y luego ser capaz de generar una imagen de ella, para el análisis de espectrograma?
Estoy tratando de hacer un programa que le permite leer cualquier archivo de audio, la conversión a WAV PCM, y luego encontrar los picos y los puntos de corte de frecuencia.
Solución
biblioteca de onda de Python le permitirá importar el audio. Después de eso, puede usar numpy tomar una FFT de la de audio.
A continuación, matplotlib hace tablas y gráficos muy agradables -. Absolutamente comparables a MATLAB
Es viejo como suciedad, pero este artículo probablemente empezar en casi exactamente el problema que describes (artículo en Python, por supuesto).
Otros consejos
Carga de archivos WAV es fácil usando Audiolab :
from audiolab import wavread
signal, fs, enc = wavread('test.wav')
o para leer cualquier formato de audio general y convertir a WAV:
from audiolab import Sndfile
sound_file = Sndfile('test.w64', 'r')
signal = wave_file.read_frames(wave_file.nframes)
El espectrograma se construye en PyLab:
from pylab import *
specgram(signal)
Específicamente, es parte de matplotlib . Aquí hay un ejemplo mejor.
from pylab import *
specgram(signal)
es el más fácil. También es muy útil en este contexto:
subplot
Sin embargo, se advirtió: Matplotlib es muy lento pero crea hermosas imágenes. No se debe utilizar para exigir la animación, menos aún cuando se trata de 3D
Si necesita convertir de formato PCM a números enteros, tendrá que utilizar struct.unpack.