Skip to content

Grizaceo/Singevery

Repository files navigation

Singevery

Teleprompter transparente para cantar: reconoce la canción que suena y muestra la letra sincronizada con karaoke en tiempo real.

Repositorio: https://github.com/Grizaceo/Singevery

Widget de escritorio transparente para cantar con la letra sincronizada: reconoce la canción que suena, muestra la letra con karaoke (palabra a palabra) y ofrece ayudas de lectura por idioma (furigana, romaji, ruby, romanización) más traducción línea a línea opcional.

App activa: apps/desktop — Electron + React 19 + TypeScript.

Descargas

Latest release

Descarga el instalador de Windows desde GitHub Releases (Singevery-Setup-x.y.z.exe).

SmartScreen: el instalador no está firmado con certificado de código. Windows puede mostrar "Windows protegió tu PC". Pulsa Más información → Ejecutar de todos modos para continuar.

Demo

Demo de Singevery — reconocimiento, letra sincronizada y modos de lectura

▶ Ver video (MP4) · HD

En la grabación:

  1. Pill SING o atajo Ctrl+Alt+S con música sonando (Spotify / navegador).
  2. Letra sincronizada sobre el escritorio (overlay transparente + click-through).
  3. Modos de lectura (原 / ふ / か / A / T) y ajustes (⚙).

Qué hace

  • Reconoce música desde el audio del sistema o el micrófono (Shazam gratuito en modo auto, con fallback a AudD).
  • Sincroniza la letra en tiempo real con resaltado karaoke y corrección de deriva.
  • Overlay transparente sobre el escritorio: modo pill (SING), click-through mientras cantas, arrastrable.
  • Windows: integración con el reproductor del SO vía SMTC (Spotify, navegador, etc.) como reloj maestro cuando está disponible.

Ayudas de lectura (cantar en idiomas que no lees)

La app detecta el script del texto y genera lecturas sin destruir la letra original. El render <ruby> sirve igual para furigana japonés que para pinyin o romanización sobre cirílico.

Idioma / script Qué genera
Japonés Furigana (kana sobre kanji), romaji Hepburn, modo kana (todo en hiragana)
Coreano Romanización Revisada + ruby por palabra
Chino Pinyin por carácter + ruby (tonos opcionales en Ajustes)
Cirílico (ruso, etc.) Romanización latina por palabra + ruby (el “romaji” del cirílico)
Otros Transliteración latina + ruby por token cuando hay espacios

Modos en el widget

Control Función
原 / Orig Texto original
ふ / Ruby Lectura encima (furigana, pinyin, romanización…)
Solo hiragana (japonés; ideal si aún no lees kanji/katakana)
A Romanización latina
ふ+A / R+A Ruby + romanización debajo de la línea actual
T Traducción de la línea actual
? Ayuda con ejemplos por idioma (+ enlace a Tofugu Hiragana en japonés)

Las etiquetas se adaptan al idioma de la canción (p. ej. 原/ふ/A en japonés, Orig/Ruby/A en el resto).

Color de letra

En Ajustes (⚙) → Color de letra puedes personalizar cómo se ve el texto del teleprompter:

Opción Descripción
Presets Blanco, amarillo, cian, verde, rosa, negro
Color personalizado Selector libre (#hex)
Ajuste automático (experimental) Mide el brillo del fondo bajo el widget y elige texto claro u oscuro para mantener contraste

El color elegido se aplica a toda la jerarquía visual (línea actual, adyacentes, lejanas, karaoke cantado, romaji y traducción). En modo automático se conserva tu color preferido mientras contraste con el fondo; si no, cae a blanco u oscuro puro.

Experimental: el ajuste automático captura una miniatura de pantalla cada ~3 s (procesada en memoria, sin almacenar ni enviar). Puede producir un ligero parpadeo en Windows. Mientras está activo, el widget no aparece en grabaciones ni en compartir pantalla (setContentProtection).

Traducción

Traducción lazy por lote: al activar T, se traducen todas las líneas de la canción en una sola petición y el resultado se cachea en disco.

Configura en Ajustes (⚙) → Traducción:

Campo Descripción
Proveedor DeepL (default) o Google Translate v2
API key Tu clave del proveedor elegido
Idioma destino Código ISO (default es)

Sin API key, el toggle T avisa y enlaza a Ajustes. La traducción aparece bajo la línea actual (Traducción: …).

Estructura del repo

apps/desktop/     App Electron (main + renderer React)
native/smtc/      Sidecar C# (.NET 8) — metadata del reproductor Windows
native/wakeword/  Referencia para activación por voz (opt-in)
legacy/           Código archivado (Python/kiosk) — no se mantiene

Puesta en marcha

cd apps/desktop
npm install
npm run dev:electron      # Windows: GPU on · Linux: GPU off (auto)
npm run dev:electron:win  # Windows explícito
npm run dev:kill          # Si no abre tras Ctrl+C: mata Electron + puerto 5173

Windows (recomendado)

  1. Compila el sidecar SMTC (sincronización precisa con Spotify, etc.):

    .\native\smtc\build.ps1
  2. Opcional: crea apps/desktop/.env con tu token de AudD (fallback):

    AUDD_API_TOKEN=tu_token
  3. Opcional: en Ajustes → Traducción, configura DeepL o Google para ver traducciones al cantar.

  4. Atajo global Ctrl+Alt+S o clic en la pill SING para expandir e identificar.

Guía completa: apps/desktop/WINDOWS.md.

Reconocimiento de música

Modo Descripción
Auto (default) Shazam (gratis, sin API key) → AudD si hay token y Shazam no reconoce
Shazam Solo cliente no oficial
AudD Requiere AUDD_API_TOKEN en .env

Selector en Ajustes (⚙) del widget. También ahí: opacidad, color de letra, fuente, traducción (DeepL/Google) y pinyin con/sin tonos.

Scripts útiles

npm test              # Vitest (151 tests)
npm run build         # Build producción
npm run package       # Instalador Windows (electron-builder)

Licencia

MIT — Copyright © 2026 Gris.

About

Transparent Windows karaoke teleprompter: recognizes playing music and shows synced lyrics with word-by-word highlight, multi-language reading aids, and optional translation.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors