Tengo un conjunto de canciones para las cuales extraje el espectrograma de magnitud usando una ventana de Hamming con una superposición del 50%. Después de extraer el espectrograma, hice una reducción de dimensionalidad usando el Análisis de Componentes Principales (PCA). Después de reducirlo a una dimensión menor, reconstruí los espectrogramas a partir de dimensiones inferiores. Entonces, ahora habría algún error entre el espectrograma original y el espectrograma reconstruido. Me gustaría convertir este espectrograma de nuevo a la señal de audio y reproducirlo, para poder saber, cuando se reconstruye desde dimensiones inferiores, cómo suena el audio.
¿Hay alguna función disponible en decir Matlab. convertir un espectrograma de magnitud a una señal de audio?
fuente
Respuestas:
Si el espectrograma se calculó como la magnitud del transformador de cuatro tiempos de corta duración a partir de ventanas superpuestas , entonces el espectrograma contiene implícitamente información de fase.
Las siguientes iteraciones hacen el trabajo:
es el espectrograma, stft es la transformada de Fourier de tiempo corto hacia adelante, isft es la transformada de Fourier de tiempo corto inverso.S stft isft
fuente
Me costó un poco entender la respuesta de @edouard, que está haciendo lo correcto. Compare con /signals//a/3410/9031 , que utilicé para implementar mi reconstrucción.
Tenga en cuenta que es el número imaginario, y x n es la señal reconstruida en el n º iteración. Comience con x 0 como un vector aleatorio de longitud de la señal de audio. Para mí, unas pocas iteraciones fueron suficientes para obtener un resultado que sonaba bien. Sin embargo, el error absoluto de la señal original fue bastante alto. Además, el espectrograma generado que generé a partir de la señal reconstruida, aunque mostraba las mismas estructuras en general, tenía magnitudes bastante diferentes.i xn nth x0
fuente
Puede usar el espectrograma reconstruido versus el espectrograma original para diseñar un filtro cuya respuesta de magnitud transforma un espectrograma en el otro. A continuación, puede aplicar este filtro a los datos del dominio de tiempo original o a las FFT originales para la superposición de agregar / guardar un filtrado de convolución rápido.
fuente
Utilice el algoritmo Griffin-Lim para invertir la señal de audio del espectrograma, si no le preocupa la complejidad del cálculo.
fuente