Spaces:
Sleeping
Sleeping
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_english1.mp3"], | |
["examples/sample_spanish1.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))) | |