Методика тестирования lip-sync: хлопушки, time-of-flight, перцептивные проверки

Автор: Николай СапуновОбновлено: август 202614 мин чтения
Содержание статьи +

Коротко

Тестирование lip-sync означает измерение задержки между моментом, когда звук должен быть услышан, и моментом, когда появляется его визуальное представление, после чего эту задержку сравнивают с установленным допустимым окном. Для этого используются три основных подхода: хлопушка или вспышка с сигналом дают точное значение на простом оборудовании, инструментальный метод, например измеритель «свет + микрофон», обеспечивает точность до субмиллисекунд в масштабе, а автоматический детектор сопоставляет онсеты звука с движением губ или изменением пикселей, позволяя тестировать реальный контент без тестовых карт. Какой бы метод вы ни выбрали, необходимо учитывать время, за которое звук проходит по воздуху до микрофона – примерно 2,9 миллисекунды на каждый метр, – иначе ваши результаты окажутся ошибочными ещё до начала измерений. В статье объясняется, как работает каждый из этих методов, какие погрешности они вносят и как создать воспроизводимый тест lip-sync, способный выдержать проверку в QA.

Почему это важно

Если вы выпускаете видео – OTT-приложение, платформу вебинаров, библиотеку онлайн-обучения, телемедицину, конференц-инструмент, – жалоба «звук слегка не туда» может испортить даже качественный контент, и именно вокруг неё команда чаще всего спорит, потому что проблема никто не измерил. Продакт-менеджеру важно понять: действительно ли есть сбой синхронизации, или это лишь ощущение, насколько он велик в миллисекундах и попадает ли в диапазон, когда зрители перестают его замечать. Инженеру нужен тест, который даёт стабильный результат при повторении и указывает, на какой стадии возникла ошибка. Эта статья предлагает обеим сторонам чёткий метод измерения, а не догадки, чтобы баг синхронизации стал конкретным числом, которое можно отслеживать, исправлять и доказывать, что он устранён.

Рисунок 1. Любой тест lip-sync, каким бы сложным он ни был, заканчивается одним числом – сдвигом в миллисекундах, сопоставленным с окном допуска. Методы различаются по цене, точности и необходимости использования тест-карты.

Сначала – что именно вы измеряете

Ошибка lip-sync – это одно число: разница во времени между звуком и изображением, которое его сопровождает. По общепринятому соглашению положительное значение означает, что звук опережает изображение – аудио идёт раньше, голос появляется до движения губ. Отрицательное значение означает, что звук отстаёт – аудио запоздало, губы двигаются, а голос слышен с задержкой. Задача любого теста – надёжно определить это знаковое число.

Число имеет смысл только относительно окна допуска, и опорное окно опубликовано. Стандарт ITU-R BT.1359-1 задаёт пределы приемлемости: звук опережает картинку не более чем на +90 миллисекунд и отстаёт не более чем на −185 миллисекунд (ITU-R BT.1359-1, рекомендует §2, 1998). В этом диапазоне почти никто не жалуется. Тот же стандарт устанавливает более жёсткие пороги обнаружимости – примерно от +45 до −125 мс: это точка, где внимательный зритель начинает замечать рассинхрон, но ещё готов его терпеть. Вещатели, которым нужен запас, используют более строгую рекомендацию ATSC: звук не должен опережать изображение более чем на 15 мс и отставать – более чем на 45 мс (ATSC IS-191, 2003). Ваш тест не стремится к нулю; он должен попасть и остаться в пределах одного из этих окон.

Полезный ориентир из киноиндустрии: там стандартный допуск – «полкадра», что при 24 кадрах в секунду составляет около ±22 миллисекунд (ITU-R BR.265, цитируется в BT.1359-1, Приложение 1). Это примерно та точность, которой должно достигать хорошее измерение.

Метод 1 – Хлопушка и вспышка с сигналом

Самый старый метод – киношная хлопушка – до сих пор работает, потому что физика здесь проста: нужно сделать звук и картинку одновременно, а затем измерить, насколько далеко они разошлись по цепочке.

Современная лабораторная версия – вспышка с сигналом, иногда называемая sync clap. Вы проигрываете клип, в котором один яркий видеокадр – белая вспышка – совпадает по времени с коротким резким щелчком или тональным всплеском. Вы захватываете выход тестируемой системы, открываете его в любом редакторе и просматриваете покадрово. Находите кадр, где появляется вспышка, и аудиосэмпл, где начинается щелчок, и измеряете задержку между ними.

Разберём арифметику. Пусть вспышка приходится на кадр 300, а первый сэмпл щелчка – на 4 кадра позже, то есть на кадр 304, в клипе со скоростью 25 кадров в секунду:

длительность кадра = 1 секунда ÷ 25 кадров = 40 миллисекунд на кадр
сдвиг = 4 кадра позже × 40 мс = 160 мс отставания звука

160 мс отставания – за пределами окна ITU-R. Знак имеет значение: щелчок пришёл после вспышки, значит, звук отстаёт. Если бы щелчок пришёл до вспышки, звук опережал бы её, и число было бы положительным.

Сила хлопушки в том, что ей почти ничего не нужно – тест-клип и редактор, – и она даёт абсолютный сдвиг, а не просто констатирует его наличие. Слабость – в разрешении. Вы можете измерить с точностью до кадра, если не листаете ещё и аудиоволну на уровне сэмплов, и даже тогда выбор «правильного» кадра человеком вносит ошибку суждения. Хлопушка отвечает: «насколько не туда, примерно?» – но не «это 12 мс или 18 мс?».

«Подводный камень – вспышка при rolling shutter. Белая вспышка не так мгновенна, как кажется. Многие камеры и видеоконвейеры экспонируют кадр сверху вниз, а не целиком сразу, поэтому однокадровая вспышка может растянуться на два кадра и сдвинуть ваше чтение на один кадр. Используйте вспышку, заполняющую весь кадр и длящуюся ровно один кадр в источнике, и проверьте в исходном файле – не в захваченном выходе, – что это действительно один кадр. Непроверенная тест-карта – это непроверенная линейка.»

Метод 2 – Инструментальные щупы и ловушка времени пролёта

Когда нужны реальные числа – субмиллисекундные, воспроизводимые и масштабируемые, – вы переходите к инструментальному щупу. Типичная конструкция – ручной прибор со световым датчиком и микрофоном: вы наводите датчик на экран, размещаете микрофон у динамика, воспроизводите клип «вспышка с сигналом», и прибор фиксирует временной разрыв между импульсом света, который он регистрирует, и звуком, который улавливает. Специальные измерители обеспечивают точность около 0,1 мс на диапазоне в несколько сотен миллисекунд (спецификация Sync-One2, Harkwood Services, 2026). Это на два порядка точнее, чем покадровое листание.

Но щуп вносит ошибку, которой нет у хлопушки, и это самая частая ошибка при измерении lip-sync: звуку нужно пройти от динамика до микрофона, и этот путь занимает время. Свет доходит до датчика практически мгновенно. Звук – нет. При комнатной температуре звук распространяется со скоростью около 343 метров в секунду – это примерно 2,9 миллисекунды на каждый метр (скорость звука при 20 °C, 343 м/с). Покажем математику:

задержка по воздуху = расстояние ÷ скорость звука
1,5 м ÷ 343 м/с = 0,00437 с = 4,4 мс ложного «отставания звука»

Если ваш микрофон находится на расстоянии 1,5 метра от динамика, щуп будет показывать задержку на 4,4 мс больше, чем она есть на самом деле, каждый раз. В небольшой комнате для тестирования это раздражает. В лекционном зале или гостиной с дистанцией прослушивания 5 метров ошибка измерения составит 14,6 мс – треть всего допустимого времени задержки по стандарту ATSC, вызванная исключительно геометрией. Хорошие измерительные приборы имеют вход для коррекции расстояния, чтобы компенсировать эту задержку распространения сигнала; приложение BT.1359-1 к субъективному тестированию даже фиксирует геометрию на расстоянии 200 см от динамика до слушателя, чтобы результаты были сопоставимы (ITU-R BT.1359-1, Приложение 2, 1998). Либо измеряйте прямо у решётки динамика, либо измеряйте расстояние и вычитайте расстояние ÷ 343 из каждого показания.

Рисунок 2. Свет приходит мгновенно; звук – нет. Каждый метр между динамиком и микрофоном добавляет около 2,9 мс ложного отставания, которое нужно вычесть, прежде чем измеренное значение станет осмысленным.

Метод 3 – Автоматическое обнаружение на реальном контенте

И хлопушке, и щупу нужен тест-клип со встроенной вспышкой и сигналом. В лаборатории это нормально, но не поможет определить, уехала ли вчерашняя запись вебинара – ведь в той записи нет тест-карты. Для реального контента требуется автоматическое обнаружение, которое измеряет синхрон прямо из программного звука и картинки.

Есть два больших семейства методов. Первое – корреляция онсетов: детектор выявляет резкие звуковые события – например, взрывной согласный вроде «п» или «б», хлопок ладонью, удар двери – и ищет соответствующее резкое изменение в видео в тот же момент. Затем одна дорожка сдвигается относительно другой, пока совпадения не станут максимально точными. Сдвиг, обеспечивающий наилучшее выравнивание, и есть ошибка синхронизации губ (lip-sync). Это автоматический аналог хлопушки и работает на любом контенте, где есть чёткие события в звуке и движении.

Более мощное семейство – обученное аудиовизуальное сопоставление, подход, используемый в исследовательских системах вроде SyncNet («Out of Time: Automated Lip Sync in the Wild», Chung & Zisserman, ACCV 2016). Нейросеть обучается естественной связи между формой губ и звуками речи на больших объёмах неразмеченного видео, а затем для нового фрагмента перебирает окно возможных сдвигов – обычно около ±1 секунды – и определяет сдвиг, при котором звук и движение губ совпадают наиболее точно, вместе с оценкой уверенности. Поскольку она понимает связь между звуком и движением губ, она работает на обычном видео с говорящей головой вообще без тестового сигнала.

Автоматическое обнаружение – единственный практичный способ непрерывно отслеживать синхрон во всей библиотеке или в живом потоке. Его ограничения очевидны: корреляция онсетов требует контента с чёткими транзиентами и плохо работает на плавной музыке или фоновых сценах, а обученные сопоставители нуждаются в видимом, более-менее фронтальном лице и теряют точность, когда говорящий отворачивается или одновременно говорят несколько человек (TV Tech, «Maintaining Lip Sync», 2008, об ограничении говорящей головы). Интерпретируйте оценку уверенности как порог: сдвиг с низкой уверенностью означает «не удалось измерить», а не «идеально в синхроне».

Метод 4 – Перцептивная проверка (и почему она всё ещё нужна)

Какими бы точными ни были ваши приборы, окончательная оценка lip-sync остаётся за человеком, поскольку сами критерии допуска основаны на человеческом суждении. Числа из BT.1359-1 получаются в результате определённой субъективной процедуры: панель из не менее чем 15 оценщиков – как экспертов, так и неэкспертов – смотрит видео диктора-женщины с фиксированного расстояния 200 см и оценивает уровень помех по пятибалльной двухстимульной шкале. При этом продолжительность сессий не превышает 30 минут, чтобы избежать усталости (ITU-R BT.1359-1, Приложение 2, 1998). Этот метод считается золотым стандартом, по которому калибруются измерительные приборы.

Для рутинного QA панель из 15 человек не нужна, но дисциплинированная перцептивная проверка обязательна. Смотрите смычные звуки на замедленной скорости: когда говорящий произносит слово на «п» или «б», губы полностью смыкаются, и это смыкание должно совпасть с тишиной непосредственно перед взрывом звука. Анализируйте твёрдые согласные и ударные события на экране. Главное – определите параметры помещения: тип монитора, дистанцию просмотра, расположение динамиков и сам материал – всё это влияет на восприятие, поэтому перцептивная проверка, не стандартизированная и неповторяемая, теряет смысл. Прибор выдаёт число; перцептивная проверка отвечает на вопрос: совпадает ли это число с тем, что чувствует зритель.

Собираем вместе: сравнение

Методы – не соперники, а лестница. Выбираете ступень в зависимости от нужной точности и имеющихся данных.

КритерийХлопушка / вспышка-сигналИнструментальный щупАвтоматическое обнаружениеПерцептивная проверка
Типичная точность~1 кадр (20–40 мс)~0,1 мсот нескольких мс до кадране число; pass/fail
Нужен тест-клип?ДаДаНетНет
Работает на реальном контенте?НетНетДаДа
Ошибка time-of-flight?Нет (захват цифровой)Да – надо корректироватьНет (работа по файлам)Да (живые комнаты)
Масштаб на библиотеку / live?НетЧастичноДаНет
СтоимостьПочти нольАппаратный измерительВычисления / ПОВремя людей
Лучше всего дляБыстрого абсолютного числаКалиброванных лабораторных чиселНепрерывного мониторингаФинального решения

Практический рабочий процесс, к которому приходят большинство команд, выглядит так: автоматическое обнаружение выявляет дрейф по каталогу и живым потокам, обнаруженные изменения подтверждают с помощью абсолютного прослушивания с вспышкой и сигналом, инструментальный измерительный прибор используют, когда нужны калиброванные значения для аппаратного тракта, а каждый релиз завершается перцептивной оценкой в определённой комнате. И в каждом методе, где задействованы реальный динамик и микрофон, сначала вычитают time-of-flight.

Есть и развёрнутый стандартный путь, о котором стоит знать: SMPTE ST 2064 определяет аудио- и видеоотпечатки, генерируемые непосредственно из программы и передаваемые вместе с ней, чтобы устройство на следующем этапе могло восстановить исходный тайминг и непрерывно измерять или корректировать дрейф (SMPTE ST 2064-1 и ST 2064-2, 2015). Это вещательная версия автоматического обнаружения – без тест-карт и без участия людей, поскольку опорные данные идут вместе с контентом.

Повторяемый тест от начала до конца

Тест lip-sync, который нельзя повторить, – это мнение. Сделайте его воспроизводимым, зафиксировав пять параметров и записав их вместе с каждым результатом: исходный клип и его проверенную раскладку кадров, точку захвата в конвейере, расстояние между микрофоном и динамиком, применённую коррекцию time-of-flight и окно допуска, по которому вы оцениваете соответствие. Прогоните один и тот же клип дважды через один и тот же тракт; если полученные значения отличаются больше, чем позволяет точность вашего метода, переменная – не система, а ваш стенд. Исправьте стенд, прежде чем доверять любому измерению.

Привязывайте результат к стадии, а не просто к вердикту. Если сдвиг – постоянное отставание, одинаковое при каждом воспроизведении, подозревайте постоянную задержку, например, из-за audio priming или тракта кодека. Если сдвиг медленно нарастает в длинном файле, подозревайте рассогласование тактовой частоты, требующее коррекции дрейфа ресемплингом или правкой кадров. Если он проявляется только в живом звонке, проверяйте метки времени RTP и отчёты отправителя RTCP, по которым приёмник выравнивает потоки. Измерение, указывающее на стадию, – это измерение, ведущее к исправлению.

Где здесь Фора Софт

Мы разрабатываем решения для видеоконференций, OTT-стриминга, онлайн-обучения, телемедицины и видеонаблюдения, где синхронизация аудио и видео – ключевая метрика качества, а не второстепенный аспект. В таких проектах проверка lip-sync входит в стандартный QA-процесс, а не ограничивается разовой проверкой перед релизом: автоматическое обнаружение отслеживает дрейф как в записанном, так и в прямом эфире, а инструментальные и субъективные тесты блокируют релизы на тех устройствах и плеерах, которые важны для клиента. Подход остаётся тем же, что описан в статье: измерить сдвиг, внести корректировку в реальном времени, оценить по установленным допускам и проследить до стадии, где он возник.

Главное

  • Ошибка синхронизации губ и звука – одно знаковое число: плюс означает, что звук опережает, минус – что отстаёт.
  • Оценивайте по стандарту ITU-R BT.1359-1: допустимо опережение до +90 мс, отставание – до −185 мс.
  • Всегда вычитайте время распространения сигнала (time-of-flight) – примерно 2,9 мс на каждый метр расстояния между динамиком и микрофоном.
  • Хлопушка даёт недорогой способ получить абсолютное значение; щуп обеспечивает точность до субмиллисекунд.
  • Автоматическое обнаружение (например, онсеты или SyncNet) – единственный способ отслеживать реальный контент в больших масштабах.
  • Завершайте каждый релиз перцептивной проверкой в одной и той же воспроизводимой комнате.

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.