Spaces:
Running
Running
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() | |