Se è per una cosa in locale puoi farlo col setInterval e con la canzone tutta stirata sulla timeline.
In remoto, nonostante tutti gli accorgimenti, anche se caricassi la canzone col loadSound, il sincronismo potrebbe fallire a seconda di chi ti vede/sente (tipo di connessione e velocità del PC).

Il concetto è quello di inserire le frasi in altrettanti keyframes sequenziali e calcolare col setInterval quando la testina deve spostarsi al keyframe successivo in base ai tempi che intercorrono fra musica e cantato (un lavoro lungo ma tuttavia semplice).

In alternativa puoi fare un'interpolazione di movimento (almeno 2000 frames per una canzone lenta e con un framerate di 12), che vede il testo scorrerre verticalmente sotto una maschera adatta alla dimensione, in fatto di altezza, del carattere che usi. Lo spazio tra musica e cantato, puoi gestirlo con interlinee misurate, sia in fatto di altezza che in numero stesso (ad es, 12 interlinee vuote nella parte solo strumentale).

Cmq tu lo faccia, occorre un forte senso del ritmo, il cosiddetto "orecchio musicale", altrimenti il lavoro può diventare lunghissimo perché sei costretto a fare decine di prove.

Vorrei incoraggiarti di più... ma i fatti sono questi.

Ciao,

NAP