Фон: у меня есть видеоклипы и аудиодорожки, которые я хочу синхронизировать с указанными видео.
Из видеоклипов я извлечу эталонную аудиодорожку . У меня также есть еще один трек, который я хочу синхронизировать с опорным треком. Рассинхронизация происходит из-за редактирования, которое изменяет интервалы для каждой кат-сцены.
Мне нужно изменить целевой трек, чтобы он выглядел (в данном случае звучал) как трек ref
. Это означает добавление или удаление тишины в правильных местах. Это можно сделать вручную, но это будет чрезвычайно утомительно. Поэтому я хочу иметь возможность определять эти местоположения программно.
Пример:
0 1 2
012345678901234567890123
ref: --part1------part2------
syn: -----part1----part2-----
# (let `-` denote silence)
Вывод:
[(2,6), (5,9) # part1
(13, 17), (14, 18)] # part2
Моя идея, начиная с самого начала:
Fingerprint 2 large chunks* of audio and see if they match:
If yes: move on to the next chunk
If not:
Go down both tracks looking for the first non-silent portion of each
Offset the target to match the original
Go back to the beginning of the loop
# * chunk size determined by heuristics and modifiable
Основная проблема здесь заключается в согласовании звука и снятии отпечатков пальцев - это нечеткие и относительно дорогие операции.
В идеале я хочу их как можно реже. Идеи?