Transcripcion con Whisper
Sube un audio o video y obten la transcripcion via RunPod
Arrastra un archivo aqui o haz clic para seleccionar
MP3, WAV, M4A, OGG, FLAC, MP4, MKV, AVI, MOV, WEBM (max 500MB)
Enviando archivo...
Archivos grandes se comprimen automaticamente
YouTube / Facebook
Pega una URL de YouTube o Facebook para transcribir el audio
Descargando video...
yt-dlp descarga el audio, luego Whisper transcribe
Historial reciente
| Fecha | Tipo | Titulo | Cache |
|---|---|---|---|
| Cargando... | |||
Procesamiento Avanzado de Video
Sube un video para obtener transcripcion, temas, cortes sugeridos y resumen
Arrastra un video o haz clic para seleccionar
MP4, MOV, AVI, MKV, WEBM, TS (max 500MB)
Iniciando...
El procesamiento completo puede tardar varios minutos
--
Temas detectados
Sugerencias de corte
Transcripcion completa
Usage
Requests por dia
Duracion procesada (s)
Por endpoint
Por modelo
Por API Key
| Fecha | Usuario | Endpoint | Modelo | Estado | Tiempo | Error |
|---|---|---|---|---|---|---|
| Cargando... | ||||||
API Keys
Crea API keys para consumir Whisper desde cualquier sistema
Uso de la API
Compatible con OpenAI SDK - solo cambia la base URL y usa tu API Key. Todos los endpoints requieren autenticacion con Authorization: Bearer sk-TU_API_KEY
Como empezar
Paso 2: Copia la key generada (empieza con
sk-). Guardala bien, no se muestra de nuevo.Paso 3: Usa la key en tus llamadas HTTP o con el SDK de OpenAI como se muestra abajo.
Paso 4: Envia un archivo de audio/video y recibe la transcripcion en texto.
Base URL:
https://whisper-api-production.up.railway.app/v1Formatos soportados: mp3, wav, m4a, ogg, flac, webm, mp4, avi, mkv, mov (max 500MB)
Rate limit: 60 peticiones por hora por API Key
Modelos disponibles
base — Rapido, ideal para audios cortos (<10MB). Buena calidad general.
small — Mejor precision para audios medianos (10-50MB).
medium — Alta precision para audios largos (50-200MB).
large-v3 — Maxima precision para archivos grandes (>200MB). Mas lento pero mejor calidad.
/v1/audio/transcriptions
Parametros:
•
file (requerido) — El archivo de audio o video a transcribir•
model (opcional) — Modelo a usar: base, small, medium, large-v3. Si no lo envias, se elige automaticamente•
language (opcional) — Codigo de idioma, ej: "es", "en". Por defecto detecta automaticamente•
response_format (opcional) — Formato de respuesta: json (default), verbose_json, text, srt, vtt
# pip install openai
from openai import OpenAI
client = OpenAI(
base_url="https://whisper-api-production.up.railway.app/v1",
api_key="sk-TU_API_KEY" # Reemplaza con tu API Key
)
# Transcribir un archivo de audio
audio_file = open("audio.mp3", "rb")
transcript = client.audio.transcriptions.create(
model="base", # o "small", "medium", "large-v3"
file=audio_file
)
print(transcript.text) # Texto transcrito
/v1/audio/transcriptions
# Transcripcion basica
curl -X POST https://whisper-api-production.up.railway.app/v1/audio/transcriptions \
-H "Authorization: Bearer sk-TU_API_KEY" \
-F "file=@mi-audio.mp3" \
-F "model=base"
# Con subtitulos SRT
curl -X POST https://whisper-api-production.up.railway.app/v1/audio/transcriptions \
-H "Authorization: Bearer sk-TU_API_KEY" \
-F "file=@mi-audio.mp3" \
-F "model=small" \
-F "response_format=srt"
# Respuesta detallada con timestamps y segmentos
curl -X POST https://whisper-api-production.up.railway.app/v1/audio/transcriptions \
-H "Authorization: Bearer sk-TU_API_KEY" \
-F "file=@mi-audio.mp3" \
-F "response_format=verbose_json"
/v1/audio/transcriptions-url
Es asincrono: devuelve un
job_id que debes consultar con /v1/job/{job_id} hasta que termine.Parametros (JSON body):
•
url (requerido) — URL publica del archivo de audio/video•
model (opcional) — Modelo a usar•
language (opcional) — Codigo de idioma, default: "es"
import requests, time
API_KEY = "sk-TU_API_KEY"
BASE = "https://whisper-api-production.up.railway.app/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1. Enviar URL para transcribir
resp = requests.post(f"{BASE}/audio/transcriptions-url",
json={"url": "https://ejemplo.com/audio.mp3", "model": "base"},
headers=HEADERS
)
job_id = resp.json()["job_id"]
print(f"Job creado: {job_id}")
# 2. Consultar estado hasta que termine
while True:
status = requests.get(f"{BASE}/job/{job_id}", headers=HEADERS).json()
print(f"Estado: {status['status']} - {status.get('progress', '')}")
if status["status"] == "completed":
print("Transcripcion:", status["result"]["transcription"])
break
elif status["status"] == "failed":
print("Error:", status["error"])
break
time.sleep(3) # Esperar 3 segundos entre consultas
/v1/job/{job_id}
/v1/audio/transcriptions-url.Respuesta:
•
status — "queued", "processing", "completed" o "failed"•
progress — Mensaje de progreso actual•
result — Resultado con la transcripcion (solo cuando status = completed)•
error — Mensaje de error (solo cuando status = failed)
/v1/warmup
Llamalo ~60 segundos antes de enviar transcripciones si sospechas que el servicio esta frio.
curl -X POST https://whisper-api-production.up.railway.app/v1/warmup \
-H "Authorization: Bearer sk-TU_API_KEY"
/v1/health
Respuesta:
•
"warm" — Listo para transcribir al instante•
"cold" — Sin workers activos, la primera peticion tardara mas•
"throttled" — Workers intentando iniciar, espera unos segundos
curl https://whisper-api-production.up.railway.app/v1/health \
-H "Authorization: Bearer sk-TU_API_KEY"
# Respuesta: {"status": "warm", "workers": {"ready": 1, ...}}
/v1/models
Modelos: base, small, medium, large-v3
curl https://whisper-api-production.up.railway.app/v1/models \
-H "Authorization: Bearer sk-TU_API_KEY"
Formatos de respuesta
response_format en /v1/audio/transcriptions:json (default) —
{"text": "Hola mundo..."}verbose_json — Incluye idioma detectado, duracion y segmentos con timestamps
text — Solo texto plano, sin JSON
srt — Subtitulos en formato SRT (para editores de video)
vtt — Subtitulos en formato WebVTT (para reproductores web)
Codigos de error comunes
Authorization: Bearer sk-...400 — Falta el archivo o formato no soportado
429 — Limite de peticiones excedido (max 60/hora). Espera unos minutos
500 — Error interno del servidor. Reintenta o contacta al admin
502 — El servicio GPU no esta disponible. Usa
/v1/warmup y reintenta
Gestion de Usuarios
Crea y administra usuarios de la plataforma