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)
