Закрашивание текста, это только начало. В реализации веб караоке наибольшую трудность представляют:
1) Синхронизация закрашивания текста и музыки
2) Реализация для мобильных устройств и планшетов
Не сочтите за грубость, но проблем остаётся еще очень много
то как только наступает время, соответствующее метке времени, весь предыдущий текст тут же закрашивается и начинается новая анимация. А анимация пока всегда идет с одинаковой скоростью (т.е. нет расчета скорости анимации в зависимости от разницы во времени между метками).
Здравое решение, мы как правило делили на какие-то логические единицы и загружали в фоне. Но это уже от потребностей.
Успехов, развивайте свой продукт.
Эм, уже поздно и фантазия неахти, но, на вскидку, пара варианртов: jsfiddle.net/vgo0bmdt/1/ — в теории, для всех браузеров. jsfiddle.net/8bL5g0cm/ — для браузеров из мира Chrome'ых и иже с ними (более красивое решение).
Еще можно попробвоать функцию element(), которую пока только Firefox освоил. Можно попробовать функцию clip(), которую пока только Chrome'ые освоили. А еще есть SVG…
Караоке на HTML5 canvas