https://www.dropbox.com/scl/fi/q4xuk6ys1jidw809uh07p/bb.wav?rlkey=96s0aah7o2n7gbcbcu8tdhtry&dl=0
import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile # Leer el archivo WAV sample_rate, data = wavfile.read('bb.wav') # Comprobar si el archivo es estereofónico o monofónico if len(data.shape) == 2: # Si es estereofónico, tomamos solo uno de los canales data = data[:, 0] # Crear un vector de tiempo time = np.linspace(0, len(data) / sample_rate, num=len(data)) # Graficar la señal plt.figure(figsize=(12, 6)) plt.plot(time, data) plt.title('Señal acústica') plt.xlabel('Tiempo (s)') plt.ylabel('Amplitud') plt.grid() plt.show()


import numpy as np import scipy.io.wavfile as wav import matplotlib.pyplot as plt def calcular_transformada_fourier(archivo_wav): # Leer el archivo WAV tasa_muestreo, datos = wav.read(archivo_wav) # Si el archivo es estéreo (más de un canal), tomamos solo el primer canal if len(datos.shape) > 1: datos = datos[:, 0] # Normalizar los datos para que estén entre -1 y 1 datos_normalizados = datos / np.max(np.abs(datos), axis=0) # Calcular la transformada de Fourier transformada = np.fft.fft(datos_normalizados) # Obtener las frecuencias correspondientes frecuencias = np.fft.fftfreq(len(transformada), 1/tasa_muestreo) # Tomamos solo la mitad positiva (frecuencias reales) transformada = transformada[:len(transformada)//2] frecuencias = frecuencias[:len(frecuencias)//2] # Calcular la magnitud (módulo) de la transformada de Fourier magnitudes = np.abs(transformada) # Graficar el espectro de frecuencias plt.figure(figsize=(10, 6)) plt.plot(frecuencias, magnitudes) plt.title('Transformada de Fourier del archivo WAV') plt.xlabel('Frecuencia (Hz)') plt.ylabel('Magnitud') plt.xlim([0,1000]) plt.grid(True) plt.show() # Nombre del archivo WAV archivo_wav = 'bb.wav' calcular_transformada_fourier(archivo_wav)
