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()