# Transcriptor API API de transcripción de audio y video con identificación de hablantes (diarización). ## Descripción Transcriptor es un servicio que convierte archivos de audio y video a texto utilizando Whisper (a través de `faster-whisper`) e identifica quién habla en cada momento mediante PyAnnote para diarización de hablantes. ## Requisitos - Python 3.11+ - FFmpeg (para conversión de formatos) - GPU CUDA (recomendado para transcripción) ## Instalación ```bash pip install -r requirements.txt ``` ## Configuración Crear un archivo `.env` en la raíz del proyecto: ```env # Variables de entorno opcionales ``` ## Ejecución ```bash uvicorn main:app --host 0.0.0.0 --port 8010 --reload ``` Accede a la interfaz web en: `http://localhost:8010/` ## Endpoints principales ### Autenticación | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/auth/verify` | Verificar credenciales | | `POST` | `/auth/login` | Iniciar sesión | | `POST` | `/auth/logout` | Cerrar sesión | | `POST` | `/auth/change-password` | Cambiar contraseña | ### Transcripción | Método | Endpoint | Descripción | |--------|----------|-------------| | `POST` | `/transcribe` | Enviar archivo para transcripción | | `GET` | `/jobs/{job_id}` | Consultar estado de un trabajo | | `GET` | `/jobs` | Listar trabajos del usuario | | `GET` | `/jobs/{job_id}/download/{fmt}` | Descargar resultado | | `DELETE` | `/jobs/{job_id}` | Eliminar un trabajo | ### Admin | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/admin/users` | Listar usuarios | | `POST` | `/admin/users` | Crear usuario | | `DELETE` | `/admin/users/{user_id}` | Eliminar usuario | | `POST` | `/admin/users/{user_id}/api-key` | Generar clave API | | `GET` | `/admin/metrics` | Métricas del sistema | | `GET` | `/admin/jobs` | Ver todos los trabajos | ## Modelos disponibles | Modelo | Descripción | |--------|-------------| | `large-v3` | Mayor precisión (predeterminado) | | `large-v2` | Alta precisión | | `medium` | Balance precisión/velocidad | | `small` | Rápido | | `base` | Más rápido | ## Formatos de salida - `srt` — Subtítulos con marcas de tiempo y hablantes - `txt` — Texto plano con etiquetas de hablante - `srt_nh` — Subtítulos sin identificación de hablante - `txt_nh` — Texto plano sin hablantes Los formatos sin hablante (`_nh`) omiten el paso de diarización y son más rápidos. ## Idiomas soportados `es`, `en`, `pt`, `fr`, `de`, `it`, `ja`, `zh`, `auto` ## Arquitectura - **FastAPI** — Framework web - **faster-whisper** — Transcripción con Whisper - **PyAnnote** — Diarización de hablantes - **FFmpeg** — Conversión de audio/video a WAV 16kHz - **SQLite/JSON** — Almacenamiento de usuarios y trabajos (en archivo)