import streamlit as st import soundfile as sf import numpy as np import matplotlib.pyplot as plt # Configuración de la página de Streamlit st.title("Análisis de Señal de Audio") # Carga del archivo de audio audio_file = st.file_uploader("Cargar archivo de audio", type=["wav", "flac", "ogg", "mp3"]) # Función para calcular la envolvente def calculate_envelope(audio): signal, sr = sf.read(audio) abs_signal = np.abs(signal) envelope = np.convolve(abs_signal, np.ones(100)/100, mode='same') # Suavizado con promedio móvil return envelope # Procesamiento y visualización del resultado if audio_file is not None: if st.button("Calcular envolvente"): envelope = calculate_envelope(audio_file) # Visualización de la envolvente plt.plot(envelope) plt.title("Envolvente de la señal de audio") plt.xlabel("Tiempo (muestras)") plt.ylabel("Amplitud") st.pyplot(plt)