import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile # Especificar el archivo WAV que deseas graficar archivo_wav = 'escalon01.wav' # Cambia esto por el nombre de tu archivo WAV sample_rate, data = wavfile.read(archivo_wav) # Comprobar si los datos son estéreo o mono if len(data.shape) == 2:data = data[:, 0] tiempo = np.linspace(0, len(data) / sample_rate, num=len(data)) # Graficar la señal plt.figure(figsize=(12, 6)) plt.plot(tiempo, data) plt.title('Señal Acústica') plt.xlabel('Tiempo (s)') plt.ylabel('Amplitud') plt.grid() plt.xlim(0, len(data) / sample_rate) # Limitar el eje x al tiempo total plt.show()

import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile from scipy.io.wavfile import write import math from scipy.signal import stft from scipy.fft import fft, fftfreq ## PARAMETROS DE LA SENIAL fs = 44100 # Frecuencia de muestreo en Hz (común para audio de alta calidad) # Especificar el archivo WAV que deseas graficar archivo_wav = 'escalon02.wav' # Cambia esto por el nombre de tu archivo WAV sample_rate, data = wavfile.read(archivo_wav) if len(data.shape) == 2:data = data[:, 0] tiempo = np.linspace(0, len(data) / sample_rate, num=len(data)) st = data t = tiempo #n_padded = 200096 # Número de puntos para la DFT (aumenta la resolución) #signal_padded = np.pad(st, (0, n_padded - len(st)), 'constant') # Calcular la DFT fft_values = fft(st) fft_freqs = fftfreq(len(fft_values), 1/fs) frequencies, times, Zxx = stft(st, fs=fs, nperseg=10256) plt.figure(figsize=(12, 6)) plt.subplot(2, 2, 2) plt.plot(t,st) #plt.xlabel('Tiempo (s)') plt.subplot(2, 2, 3) plt.plot( np.abs(fft_values)[:len(fft_values)//2], fft_freqs[:len(fft_values)//2],'r') #plt.title("Transformada Discreta de Fourier (DFT)") plt.ylabel("Frecuencia (Hz)") plt.xlabel("Magnitud") plt.ylim([200,500]) plt.grid() plt.subplot(2,2,4) plt.pcolormesh(times, frequencies, np.abs(Zxx), shading='gouraud') #plt.colorbar(label='Magnitud') #plt.title('STFT de la Señal Sinusoidal de 330 Hz') #plt.ylabel('Frecuencia (Hz)') plt.xlabel('Tiempo (s)') plt.ylim(200, 500) # Limitar el rango de frecuencias plt.grid() plt.pcolormesh(times, frequencies, np.abs(Zxx), shading='gouraud')
