File size: 1,684 Bytes
3c1ea6f
 
209a96c
3c1ea6f
 
92f6629
 
209a96c
 
 
 
 
 
 
 
 
 
 
 
 
3c1ea6f
209a96c
 
 
 
 
 
 
 
 
 
3c1ea6f
 
209a96c
3c1ea6f
209a96c
3c1ea6f
 
209a96c
92f6629
209a96c
 
3c1ea6f
92f6629
209a96c
3c1ea6f
 
209a96c
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
import gradio as gr
from transformers import pipeline
import requests
import os

# Cambiar el modelo a uno específico para transcripción multilingüe
asr_pipeline = pipeline("automatic-speech-recognition", model="openai/whisper-large")

# Función para descargar el archivo si se provee una URL
def download_from_url(url):
    local_filename = url.split('/')[-1]
    with requests.get(url, stream=True) as r:
        r.raise_for_status()
        with open(local_filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                f.write(chunk)
    return local_filename

# Función para procesar el archivo o la URL
def transcribe_audio(file_or_url):
    try:
        # Si el input es una URL, descargamos el archivo
        if isinstance(file_or_url, str) and file_or_url.startswith("http"):
            file_path = download_from_url(file_or_url)
        else:
            file_path = file_or_url

        # Realiza la transcripción
        result = asr_pipeline(file_path)
        transcription = result['text']
        return transcription

    except Exception as e:
        return f"Error durante la transcripción: {str(e)}"

# Interfaz de Gradio
iface = gr.Interface(
    fn=transcribe_audio,
    inputs=[
        gr.Audio(type="filepath", label="Sube un archivo de audio o vídeo (mp3, mp4, wav, etc.)"),
        gr.Textbox(lines=1, placeholder="O pega un enlace de audio/vídeo aquí", label="URL de audio o vídeo (opcional)")
    ],
    outputs="text",
    title="Transcriptor de Audio y Vídeo",
    description="Sube un archivo de audio o vídeo o proporciona un enlace. Los archivos pueden estar en español o inglés."
)

iface.launch()