Merlintxu's picture
modified: app.py
e3bba22
raw
history blame
2.12 kB
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)))