leonett's picture
Update app.py
a04eed2 verified
import os
import librosa
import matplotlib.pyplot as plt
import gradio as gr
# Encabezado personalizado para Gradio
encabezado = """
¿Cómo se almacena digitalmente una onda de voz humana?
Desde la óptica del cómputo forense, el análisis de señales de audio como la voz humana es importante para la identificación de individuos, la verificación de autenticidad y la detección de manipulaciones en archivos de audio. Este ejemplo fue desarrollado por José R. Leonett para la comunidad de peritos forenses digitales de Guatemala www.forensedigital.gt.
"""
def analizar_audio(archivo_audio):
# Cargar el archivo de audio
y, sr = librosa.load(archivo_audio, sr=None) # y: señal de audio, sr: tasa de muestreo
# Calcular la duración del audio
duracion = len(y) / sr
# Generar la forma de onda
plt.figure(figsize=(10, 4))
librosa.display.waveshow(y, sr=sr)
plt.title(f'Forma de Onda del Audio: {os.path.basename(archivo_audio)}')
plt.xlabel('Tiempo (s)')
plt.ylabel('Amplitud')
plt.tight_layout()
# Guardar la figura como una imagen
ruta_imagen = "forma_onda.png"
plt.savefig(ruta_imagen)
plt.close()
# Obtener las primeras 40 muestras de la señal de audio
muestras = y[:40]
muestras_str = "Secuencia numérica de la señal de audio (primeras 40 muestras):\n"
muestras_str += "\n".join([f"{i+1}: {muestra:.6f}" for i, muestra in enumerate(muestras)])
# Devolver la imagen y los resultados de texto
return ruta_imagen, f"Duración del audio: {duracion:.2f} segundos\n\n{muestras_str}"
# Crear la interfaz de Gradio
iface = gr.Interface(
fn=analizar_audio,
inputs=gr.Audio(type="filepath", label="Sube tu archivo de audio (.wav, .mp3, etc.)"),
outputs=[
gr.Image(label="Forma de Onda del Audio"),
gr.Textbox(label="Resultados del Análisis")
],
title=" 📻 Análisis de Señales de Audio",
description="Este programa diseñado por José R. Leonett para comprender que cuando grabamos nuestra voz, la onda de sonido (que es una señal analógica) se convierte en una señal digital mediante un proceso llamado digitalización. Creado pare el grupo de Peritos Forenses Digitales de Guatemala [www.forensedigital.gt](https://www.forensedigital.gt).",
allow_flagging="never",
theme="huggingface" # Tema moderno
)
# Lanzar la interfaz de Gradio
iface.launch()