File size: 2,115 Bytes
3c1ea6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f784f8f
 
3c1ea6f
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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)))