Speech

word timestamps

Временные метки для каждого слова в транскрипции — момент начала и окончания произнесения.

Что такое word timestamps

Word timestamps (временные метки слов) — информация о том, в какой момент аудиозаписи начинается и заканчивается каждое слово в транскрипции. Необходима для точной синхронизации субтитров, поиска по аудио и совмещения с диаризацией.

Получение word timestamps в Whisper

faster-whisper поддерживает word timestamps через параметр word_timestamps=True:

from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cuda", compute_type="int8_float16")

segments, info = model.transcribe(
    "audio.mp3",
    language="ru",
    word_timestamps=True
)

for segment in segments:
    for word in segment.words:
        print(f"  [{word.start:.2f}s → {word.end:.2f}s] {word.word} (prob={word.probability:.2f})")

Вывод:

  [0.00s → 0.32s] Добро (prob=0.98)
  [0.32s → 0.78s] пожаловать (prob=0.97)
  [0.82s → 0.98s] на (prob=0.99)
  [1.00s → 1.34s] наш (prob=0.96)
  [1.38s → 1.96s] подкаст (prob=0.94)

Применения word timestamps

Karaoke-стиль субтитры: подсвечивать слово по мере произнесения.

Синхронизация с диаризацией: назначить каждому слову спикера по перекрытию временных меток:

def assign_speaker(word_start, word_end, diarization):
    for turn, _, speaker in diarization.itertracks(yield_label=True):
        if turn.start <= word_start and word_end <= turn.end:
            return speaker
    return "UNKNOWN"

Контент-навигация: поиск по тексту с переходом к нужному моменту видео.

Выравнивание (alignment): исправление неточных меток через alignment.

Точность word timestamps

Whisper large-v3 даёт точность word timestamps ±100–200 мс. Для более точного выравнивания можно применить принудительное выравнивание через stable-ts или ctc-forced-aligner.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер