go-subgen
go-subgen es una herramienta en Go para generar subtítulos automáticamente a archivos multimedia usando whisper.cpp, activada vía webhooks de Radarr, Sonarr y Tautulli.
Ficha actualizada 18 sept 2026, 21:04 · upstream 26 may 2026, 1:16 · release v0.2.0
Qué es go-subgen
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
go-subgen es una aplicación escrita en Go diseñada para generar subtítulos automáticamente a archivos multimedia almacenados localmente. Utiliza whisper.cpp como motor principal de reconocimiento de voz (ASR), lo que permite un rendimiento eficiente tanto en CPU como con aceleración GPU mediante CLBLAST/CUBLAS cuando está disponible. La herramienta se integra principalmente con ecosistemas de gestión de medios autoalojados como Radarr y Sonarr a través de webhooks, permitiendo la generación de subtítulos justo después de la descarga de episodios o películas.
La arquitectura del software almacena el audio extraído en memoria RAM en lugar de escribirlo temporalmente en el sistema de archivos, lo que reduce la I/O pero incrementa significativamente los requisitos de memoria. Esto es especialmente relevante cuando se utilizan modelos grandes como large_v3 o cuando se procesan archivos multimedia con una duración considerable. El servicio expone un servidor web en el puerto 8095 que acepta peticiones POST para iniciar procesos de transcripción, ya sea a través de integraciones específicas o mediante endpoints genéricos.
El proyecto está actualmente en proceso de reescritura mayor, con ramas v1-dev y v1-dev-web que ofrecen funcionalidades mejoradas pero que aún no son la versión estable principal. La herramienta soporta plantillas Go para personalizar los nombres de los archivos de subtítulos generados, permitiendo incluir metadatos como el nombre del archivo, idioma detectado, tipo de archivo y hash del archivo (basado en imohash). Además, incluye opciones para verificar hashes de modelos descargados, controlar la concurrencia de procesos y ajustar parámetros avanzados de whisper.cpp como velocidad de inferencia y umbrales de tokens.
- Generación automática de subtítulos para series gestionadas por Sonarr tras su descarga
- Creación de subtítulos para películas gestionadas por Radarr sin intervención manual
- Integración con Tautulli para generar subtítulos en películas consumidas por Plex u otros reproductores
- Transcripción manual de archivos multimedia mediante endpoints REST genéricos
- Soporte nativo para integraciones con Radarr y Sonarr mediante webhooks configurables
- Uso de whisper.cpp permite modelos desde tiny hasta large_v3 con soporte de GPU vía CLBLAST/CUBLAS
- Almacenamiento de audio en memoria reduce operaciones de I/O del sistema de archivos
- Plantillas Go personalizables para nombres de archivo de subtítulos con múltiples metadatos
- Requiere soporte AVX2, AVX y SSE3 en el hardware del procesador para ejecutar la imagen precompilada
- Almacena audio en memoria, por lo que archivos grandes o modelos pesados pueden agotar la RAM disponible (8GB mínimo recomendado)
- No incluye interfaz web gráfica para gestionar colas de transcripción ni ver estado de tareas en tiempo real
- La versión estable actual está siendo reescrita; las ramas v1-dev son funcionales pero no oficialmente estables
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Recomendado usar Docker con imagen ghcr.io/khakers/go-subgen:latest o construir localmente para optimizaciones de hardware específicas. Asegurar que el volumen /models tenga espacio suficiente y permisos correctos. Configurar MODEL_TYPE según capacidad RAM (tiny para <4GB, medium/large para >8GB). Verificar soporte AVX2/AVX/SSE3 en CPU antes de usar imagen precompilada. Para producción, considerar MAX_CONCURRENCY=1 si la RAM es limitada o aumentar si hay suficiente memoria disponible.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.