|
|
@@ -0,0 +1,98 @@
|
|
|
+# 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)
|