Escakator

Escakator Studio

La cabina de curación del dataset gold de Escakator: escuchás, corregís y aprobás cada palabra transcripta antes de que entre al modelo.

Guía para quien coordina el equipo de curación
Contexto

¿Qué es Escakator?

Escakator es el pipeline de transcripción de audio educativo de Empujón: un modelo de alineación escucha grabaciones y produce, palabra por palabra, un texto con su tiempo exacto (startend) y un puntaje de confianza (score). Ese resultado crudo no es todavía el dataset de entrenamiento — primero pasa por curación humana.

1. Alineación

El modelo procesa el audio y genera un parquet mensual con cada palabra, su tiempo y su confianza.

2. Curación

Un curador escucha cada palabra en Escakator Studio y decide: ¿está bien? ¿hay que corregirla? ¿es ruido?

3. Dataset gold

Las decisiones curadas se consolidan en el dataset final que entrena/evalúa el modelo.

Studio reemplaza a la web de curación. Existe también un dashboard web (Next.js) donde se puede curar desde el navegador — sigue funcionando, pero Escakator Studio la superó en funciones y es hoy la herramienta principal para el equipo de curación.

Instalación

Descargar Escakator Studio

Si no tenés Linux, o simplemente querés probarlo ya, Studio Web no requiere instalar nada. Si preferís la app de escritorio (recomendada para uso diario intensivo), se instala una sola vez y cada nueva versión se ofrece sola desde ahí en adelante — no hay que volver a descargar nada a mano.

Navegador · Mac / Windows / Linux

Studio Web Sin instalar nada

La misma app, corriendo en el navegador — para curadores que no tienen Linux. Nada que instalar ni actualizar: cada visita ya sirve la última versión.

Abrir Studio Web →

Diferencia real con la app de escritorio: no hay copia local cifrada — cada sesión pide el audio en vivo al servidor (sin trabajo offline ni "no re-descargar lo ya escuchado"). Para eso, o si preferís la app nativa, usá Linux.

Linux · x86-64

v0.4.0

Paquete .tar.gz listo para extraer y correr. Requiere ffmpeg y pulseaudio-utils instalados (audio) — en Ubuntu/Debian: sudo apt install ffmpeg pulseaudio-utils.

El archivo escakator-studio-0.4.0-linux-x64.tar.gz se comparte por separado (adjunto) — este documento es la guía, no el hosting del binario.

sha256: 3606003e339ccf4c7a4757092b7d8f601a6d26a7dc71ab0b5cc8c3a3c228cbf5

Necesita una distro relativamente reciente (glib ≥2.79 — por ejemplo Ubuntu 24.04+). En distros más viejas puede fallar con undefined symbol: g_once_init_enter_pointer.

Windows

Próximamente Roadmap

Todavía no hay un instalador oficial de Windows (falta empaquetarlo e instalador). Si tenés una máquina Windows y querés probarlo igual, podés compilarlo vos mismo — ver abajo.

Compilar la versión de Windows vos mismo

No es un botón — hay que compilarlo en una máquina Windows real (no se puede hacer desde Linux ni Mac). Estos son los pasos:

  1. Instalar los prerrequisitos

    Windows 10/11 de 64 bits, Visual Studio 2022 (Community alcanza) con el workload "Desktop development with C++", Git, y el Flutter SDK. Correr flutter doctor y confirmar que el check de Visual Studio esté en verde.

  2. Clonar el repo y entrar a studio/

    git clone https://github.com/Empujon/escakator.git
    cd escakator/studio

  3. Agregar el soporte de Windows al proyecto

    El repo hoy solo trae el scaffold de Linux. Hay que generar el de Windows una vez: flutter config --enable-windows-desktop y después flutter create --platforms=windows . (crea la carpeta windows/ sin tocar el resto del código).

  4. Compilar

    flutter pub get
    flutter build windows --release

  5. Ejecutar

    El resultado queda en build\windows\x64\runner\Release\escakator_studio.exe junto con sus .dll y la carpeta data\. Hay que mover/copiar la carpeta entera junta, no solo el .exe suelto (todavía no hay instalador que resuelva esto por vos).

⚠️ El audio no va a andar todavía. Studio reproduce el audio invocando paplay (PipeWire/PulseAudio), que es específico de Linux — no existe en Windows y el código todavía no tiene una rama alternativa para ese sistema. Vas a poder compilar, loguearte y navegar la interfaz, pero escuchar palabras va a fallar hasta que alguien implemente un backend de audio para Windows (está en el roadmap del proyecto, junto con un instalador con Inno Setup).

Paso a paso

Instalar y abrir por primera vez

  1. Extraer el paquete

    tar -xzf escakator-studio-0.4.0-linux-x64.tar.gz -C ~/escakator-studio

  2. Instalar dependencias de audio (una sola vez)

    sudo apt install ffmpeg pulseaudio-utils — Studio decodifica el audio con ffmpeg y lo reproduce con paplay.

  3. Ejecutar

    Doble clic en el binario escakator_studio dentro de la carpeta extraída, o ./escakator_studio desde la terminal.

  4. Iniciar sesión

    Usuario y contraseña los da quien administra el sistema (no hay registro propio dentro de la app — ver la sección para responsables, más abajo).

Primer uso

Iniciar sesión

La pantalla de login es simple a propósito: usuario, contraseña, y un botón. Todo lo demás es opcional.

Pantalla de login de Escakator Studio
Pantalla de login real de Escakator Studio (app nativa de Linux).

🔑 Recordar credenciales

Si el sistema tiene un llavero (KWallet en Linux), Studio puede recordar tu usuario y contraseña ahí — nunca en un archivo de texto plano. La próxima vez el campo de contraseña aparece precargado y oculto.

🔒 Copia local cifrada

Todo lo que la app descarga (audio, selección, progreso) se guarda cifrado con AES-256 en el disco, y solo se abre con tu contraseña de login. Si cambiás la contraseña, esa copia vieja simplemente se descarta y se recrea — el servidor es la fuente de verdad, no se pierde nada.

🌐 Cambiar servidor

Un link "Cambiar servidor" (oculto por defecto) permite apuntar la app a otro backend — por ejemplo un entorno de pruebas. Por defecto apunta a producción.

El día a día

El flujo de curación

Todo pasa en una sola pantalla ("modo único"): la palabra, su forma de onda editable y todas las acciones posibles están siempre visibles — no hay que cambiar de modo para editar.

Pantalla de Curación de Escakator Studio, recién logueado
La pantalla de Curación real, recién logueado (panel lateral, sesión, navegador de palabras y marcas). Cuando elegís una fuente, el centro muestra la palabra actual con su forma de onda en vez de este mensaje.
  1. Elegir una fuente

    Cada parquet (normalmente un mes) es una "fuente". Se elige desde el selector de fuentes en el riel lateral.

  2. Filtrar por confianza

    Un slider de rango filtra qué palabras entran en la cola según el score del aligner. Bajar el máximo (ej. a 0.70) es la forma de "cazar" las palabras dudosas primero. El filtro queda guardado entre sesiones.

  3. Escuchar

    Espacio reproduce/pausa. La pausa conserva la posición exacta — seguís donde dejaste, no desde el principio. Un slider de velocidad (0.5×–1×, tecla S) permite escuchar más lento sin que cambie el tono, para captar errores sutiles.

  4. Corregir si hace falta

    El texto se edita directo. Los bordes de tiempo se arrastran sobre la forma de onda (o con los botones ±10ms). Arrastrar con el botón central del mouse mueve el tramo entero; la rueda del mouse hace zoom; el minimapa de abajo permite moverse por todo el audio. Ctrl+Z deshace el último cambio de tiempo.

  5. Decidir

    Con la palabra lista, se registra un veredicto (ver los seis botones de acción más abajo) y la app pasa sola a la siguiente.

Las seis acciones posibles

Enter / Ctrl+S

Aceptar

La palabra y su tiempo están bien. Si los editaste, se guarda automáticamente como "editada" — no hace falta marcarlo aparte.

D

Descartar

La transcripción es incorrecta y no vale la pena arreglarla.

R

Ruido

Ese tramo de audio no es una palabra (silencio, ruido, superposición de voces) — distinto de "descartar".

N

Palabra nueva

El modelo se salteó una palabra por completo: se marca un tramo nuevo a mano y se escribe qué dice.

M

Marcar para revisar

"No estoy seguro, que alguien más lo mire" — convive con cualquier otra acción y es visible para todo el equipo.

T

Nota en el audio

Deja un comentario de texto anclado a un punto exacto del audio, visible para todos los curadores (aparece como un pin en la forma de onda).

TeclaAcción
TabSiguiente sin guardar (descarta cambios, la palabra queda pendiente)
Alt + / Ir a la palabra anterior/siguiente sin guardar
UDeshacer el último veredicto (la palabra vuelve a pendiente)
EspacioReproducir / pausar
SCambiar velocidad de reproducción (1× / 0.75× / 0.5×)
Ctrl + ZDeshacer el último cambio de tiempo del tramo
Navegación

El panel lateral

Mientras curás, un panel fijo te da tres formas de moverte por el dataset sin perder tu lugar.

📖 Navegador de palabras

Todas las palabras del parquet (o solo las pendientes), con buscador. La palabra actual se resalta sola. Un clic salta ahí, incluso si está fuera del filtro de confianza activo.

🚩 Navegador de marcas

Dos pestañas: palabras marcadas "para revisar" y notas de audio sin resolver. Es el punto de partida natural para una pasada de control de calidad.

🕘 Recientes

Los últimos ~12 veredictos de la sesión, con un botón para deshacer cada uno individualmente si te arrepentís.

🟢 Presencia de curadores

Cada dos minutos la app avisa en qué fuente estás trabajando. Si otro curador tiene la misma fuente abierta, aparece como un punto verde con su nombre. Es solo informativo — nunca bloquea a nadie de curar la misma palabra; si dos personas curan lo mismo, vale la última decisión.

Revisión y auditoría

"Palabras curadas" y la segunda pasada

Ocultar ya curadas

Un checkbox en la cola de curación. Desactivado, la cola también muestra palabras ya curadas (con una etiqueta de qué acción tuvieron) — así se puede volver atrás y revisar decisiones previas ("segunda pasada").

Vista "Palabras curadas"

Una pantalla completa con toda la tabla del dataset gold: filtros por acción y por "en revisión", búsqueda por palabra/curador/nota, reproducción inline, y la opción de quitar una fila del dataset (la palabra vuelve a quedar pendiente — no se pierde nada).

Pantalla de Palabras curadas de Escakator Studio
La pantalla "Palabras curadas" real, con sus filtros por acción y el toggle "Parquet activo / Todos" (sin datos cargados en esta captura).
Mantenimiento

Actualizaciones automáticas

Se instala Escakator Studio una sola vez. A partir de ahí:

  1. La app se fija sola

    Cada vez que iniciás sesión, Studio consulta si hay una versión más nueva publicada.

  2. Aviso, no interrupción

    Si hay una nueva versión aparece un banner arriba con las notas de la versión y dos botones: "Actualizar y reiniciar" o "Después". Si no hay conexión o no hay nada nuevo, no aparece nada — la app nunca molesta.

  3. Instalación verificada

    Al actualizar, la app descarga el paquete, verifica su huella criptográfica (sha256) contra la publicada por el servidor, y recién ahí la instala y se reinicia sola. Si algo no coincide, no instala nada.

Para quien coordina el equipo

Lo que le compete a la persona responsable

👤 Alta de curadores

No hay registro propio dentro de Studio. Cada curador necesita una cuenta creada de antemano desde el panel de administración de Django (/admin/) del backend. Sin cuenta previa, no se puede entrar a la app.

✅ Control de calidad

La palanca principal es el flag "marcar para revisar": cualquier curador puede marcar una palabra (propia o ajena) para que alguien más la mire. El panel de "Marcas" y el filtro "en revisión" de "Palabras curadas" arman una cola de QA lista para recorrer.

📦 Exportar el dataset

Las curaciones acumuladas no se convierten solas en el dataset final: hace falta disparar la exportación (POST /api/curation/export/ o manage.py export_curated) para consolidarlas en gold/curated/dataset.parquet. Hoy este paso vive fuera de la app — es una tarea de backend/operaciones.

📊 Estadísticas por curador

Studio solo muestra las estadísticas de tu propia sesión (racha, ritmo, total). Si necesitás un desglose de productividad por persona, el backend ya expone GET /api/curation/stats/ con el detalle por curador — hoy no tiene una pantalla propia dentro de la app.

Distribución simple: instalás el .deb (o extraés el .tar.gz) una vez por persona. De ahí en más, cada mejora llega sola por el banner de actualización — no hay que volver a mandar un instalador nunca más.

Dudas frecuentes

Preguntas frecuentes

¿Qué pasa si dos curadores curan la misma palabra a la vez?

No hay bloqueo. La presencia es solo informativa. Si ambos guardan un veredicto sobre la misma palabra, gana el último que se guardó — no hay conflicto ni error, simplemente prevalece la decisión más reciente.

¿Se puede borrar la copia local sin perder trabajo?

Sí. "Borrar copia local" en el riel lateral solo limpia la caché cifrada en el disco (audio ya descargado, básicamente). El servidor sigue teniendo todo; la próxima vez que haga falta, se vuelve a descargar solo.

¿Por qué no hay versión para Windows todavía?

Está en el roadmap del proyecto, pero falta trabajo real: un backend de reproducción de audio para Windows, compilar en un runner Windows de verdad (no se puede desde Linux/Mac) y un instalador. No es simplemente "apretar un botón" — por eso hoy solo se distribuye Linux.

¿"Descartar" y "Ruido" no son lo mismo?

No. "Descartar" es: esta es una palabra real, pero la transcripción está mal y no vale la pena corregirla. "Ruido" es: este tramo de audio directamente no es una palabra (silencio, superposición de voces, ruido de fondo).

¿Se puede usar desde el navegador en vez de instalar la app?

Existe una web de curación (Next.js) que todavía funciona y habla con el mismo backend, pero Escakator Studio la superó en funcionalidad y es la herramienta recomendada para el trabajo diario del equipo.