Spaces:
Sleeping
Sleeping
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() | |