import gradio as gr from transformers import pipeline import torch import librosa import os import logging import warnings # Suprimir advertencias innecesarias logging.getLogger("transformers").setLevel(logging.ERROR) warnings.filterwarnings("ignore", category=FutureWarning) # Imprimir la versión de Gradio para depuración print(f"Gradio version: {gr.__version__}") # Configurar el dispositivo: GPU si está disponible, sino CPU device = "cuda" if torch.cuda.is_available() else "cpu" # Inicializar el pipeline de transcripción transcriber = pipeline( "automatic-speech-recognition", model="openai/whisper-base", device=0 if device == "cuda" else -1 ) def transcribe_audio(audio): """ Transcribe el archivo de audio proporcionado a texto. Args: audio: Ruta al archivo de audio subido. Returns: Texto transcrito. """ if audio is None: return "No se ha subido ningún archivo de audio." try: # Cargar el archivo de audio usando librosa speech, sr = librosa.load(audio, sr=16000) # Whisper requiere 16kHz except Exception as e: return f"Error al cargar el audio: {e}" # Realizar la transcripción try: transcription = transcriber(speech, sampling_rate=sr) return transcription['text'] except Exception as e: return f"Error durante la transcripción: {e}" # Definir la interfaz de Gradio iface = gr.Interface( fn=transcribe_audio, inputs=gr.Audio(type="filepath", label="Subir Archivo de Audio (MP3/otros)"), outputs="text", title="Transcripción Multilingüe de Audio", description=( "Sube un archivo de audio en formato MP3 u otro compatible (inglés o español) y " "obtén el texto transcrito. Utiliza el modelo Whisper de OpenAI a través de Hugging Face." ), examples=[ ["examples/sample_english.mp3"], ["examples/sample_spanish.mp3"] ], allow_flagging="never", theme="default" ) # Lanzar la interfaz iface.launch(share=False, server_name="0.0.0.0", server_port=int(os.environ.get("PORT", 7860)))