Communitygithub.com

Pavan-makwana/My-Agentic-Skills

Motor de detección precisa de inicio vocal de audio y sincronización tipográfica progresiva palabra por palabra. Divide formas de onda de audio, mide envolventes de energía RMS y mapea cadencias vocales rápidas hasta marcas de tiempo de milisegundos para Reels virales.

¿Qué es My-Agentic-Skills?

Este skill proporciona un motor robusto para sincronizar letras de canciones con audio hablado o cantado a nivel de palabra individual. Resuelve el problema común en videos líricos donde las líneas completas se muestran lentas o se retrasan respecto a la interpretación del cantante, especialmente en frases rápidas o estacato. El skill analiza envolventes acústicas (RMS) del archivo de audio (MP3/WAV), extrae puntos de control vocales mediante reconocimiento de voz o ponderación silábica, y genera marcas de tiempo sub-segundo para cada palabra en formato JSON. Luego, mediante CSS progresivo y transiciones suaves, las palabras se revelan una por una en la pantalla: las palabras futuras aparecen tenues (opacidad 0.12) y la palabra actual se ilumina en rojo sólido (opacidad 1). Compatible con flujos de trabajo de creación de contenido para Reels, TikTok o cualquier plataforma de video corto. El script de Python proporcionado calcula la duración relativa de cada palabra distribuyendo el tiempo activo del habla según la longitud de las palabras (como proxy del peso silábico), y el CSS incluido maneja la animación progresiva en pantalla.

Compatible con~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/Pavan-makwana/My-Agentic-Skills/tree/HEAD/skills/lyric-word-sync-engine

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Motor de Sincronización de Palabras de Letras

Resuelve el problema común en videos líricos donde la visualización de líneas completas se siente lenta o se retrasa respecto a la interpretación del cantante, sincronizando cada palabra individual con su inicio acústico.

flowchart TD
    A[Archivo de Audio MP3/WAV] --> B[Análisis de Envolvente Acústica RMS]
    B --> C[Reconocimiento de Voz / Puntos de Control Vocales]
    C --> D[Ponderación de Sílabas por Palabra]
    D --> E[Marcas de Tiempo Sub-segundo por Palabra JSON]
    E --> F[Revelado Progresivo de Palabras HTML/CSS]

Problema y Solución

  • El Problema: Cuando un cantante acelera (por ejemplo, charanams rápidos o líneas en staccato), una revelación estática de línea completa permanece en pantalla demasiado tiempo o aparece después de que el cantante ya ha terminado.
  • La Solución:
    1. Cada línea se tokeniza en palabras individuales: ["Kanmani", "anbodu", "kaadhalan"].
    2. La duración vocal activa se distribuye según pesos silábicos y aumentos localizados de energía RMS.
    3. Todas las palabras de la línea se renderizan simultáneamente en el diseño para que el tamaño de fuente y el ajuste de línea nunca salten.
    4. Las palabras próximas se renderizan en tinta fantasma tenue (opacity: 0.12).
    5. A medida que el cantante pronuncia cada palabra, esa palabra específica transiciona a un rojo carmesí sólido (opacity: 1, color: #8c1226).

Script de Extracción de Marcas de Tiempo

import wave, numpy as np

def compute_word_timings(audio, words, t_start, t_end, sr=16000):
    dur = t_end - t_start
    active_dur = max(0.4, dur * 0.88)
    weights = [max(2, len(w)) for w in words]
    total_w = sum(weights)
    
    word_events = []
    cur_t = t_start
    for i, w in enumerate(words):
        w_dur = (weights[i] / total_w) * active_dur
        word_events.append({
            'word': w,
            't_rel': round(cur_t, 3)
        })
        cur_t += w_dur
    return word_events

Resaltado Progresivo de Palabras con CSS

.native .word {
  display: inline-block;
  opacity: 0.12;
  transition: opacity .12s ease-out;
  padding: 0 .25cqw;
}
.native .word.revealed {
  opacity: 1;
}

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills relacionados