Así que he estado trabajando con FFT, y actualmente estoy tratando de obtener una forma de onda de sonido de un archivo con FFT, (modifíquela eventualmente), pero luego devuelva esa forma de onda modificada a un archivo. Obtuve la FFT de la onda de sonido y luego usé una función FFT inversa en ella, pero el archivo de salida no suena nada bien. No he hecho ningún filtrado en la forma de onda, estoy probando obteniendo los datos de frecuencia y luego volviéndolo a poner en un archivo, debería sonar igual, pero suena muy diferente. ¿Algunas ideas?Python NumPy - FFT y FFT inversa?
- EDITAR -
Desde entonces he estado trabajando en este proyecto un poco, pero todavía no he conseguido los resultados deseados. El archivo de sonido emitido es ruidoso (tanto más ruidoso, como ruido adicional que no estaba presente en el archivo original), y el sonido de un canal se filtró al otro canal (que anteriormente estaba en silencio). El archivo de sonido de entrada es un archivo estéreo de 2 canales cuyo sonido proviene solo de un canal. Aquí está mi código:
import scipy
import wave
import struct
import numpy
import pylab
from scipy.io import wavfile
rate, data = wavfile.read('./TriLeftChannel.wav')
filtereddata = numpy.fft.rfft(data, axis=0)
print (data)
filteredwrite = numpy.fft.irfft(filtereddata, axis=0)
print (filteredwrite)
wavfile.write('TestFiltered.wav', rate, filteredwrite)
No entiendo por qué esto no funciona ...?
EDITAR: He descomprimido el archivo .py problemático y el archivo de audio, si eso puede ayudar a resolver el problema here.
intento de añadir 'filteredwrite = numpy.round (filteredwrite) .astype ('Int16')' antes de guardar –
@Bago - Muchas gracias! Eso solucionó totalmente el problema. Me preguntaba, ¿forzar el ifft filtrado a 'int16' significa que será un archivo de sonido de profundidad de 16 bits? – SolarLune
No sé demasiado sobre los archivos wav, siempre asumí que eran datos sin procesar, sin comprimir, pero tendrá que leer las especificaciones del formato wav para estar seguro. –