Модель синхронизации аналогового и цифрового звука на лету

И.Д. Сиганов

2017.04.24

Аннотация

В статье рассматривается задача синхронизации двух аудио сигналов: аналогового, снятого с магнитной ленты, и его цифровой копии. Критерием к алгоритму, решающему эту задачу были устойчивость к искажениям во временной области, амплитуде и аддитивным шумам. Предполагается, что алгоритм работает в реальном времени и не допускает рассинхронизации больше чем 200мс.

Ключевые слова: Синхронизация сигналов, обработка звука.


Предположим у нас есть кинолента с магнитной звуковой дорожкой, которая имеет много повреждений, и существует цифровая копия этой звуковой дорожки. Мы хотим воспроизводить киноленту через проектор, но слушать качественный цифровой звук. Тогда нам нужна система синхронизации аналогового и цифрового звука, чтобы не было ощутимой рассинхронизации между картинкой и звуком.

Заметим, что воспроизводимый звук с плёнки имеет нестабильную скорость, меняющуюся во времени. То есть в начале скорость будет меньше, чем в конце, из-за изменения угловой скорости вращения бобины. Эта разница скоростей может привести к изменению времени воспроизведения до 10 секунд, что было подтверждено практически. Поэтому при одновременном проигрывании цифровой дорожки с фиксированной скоростью рассинхронизация будет сильно ощутима.

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

Запишем исходную идею формально. Каждый N секунд система берёт прошлые M секунд аналогового звука и вычисляет некоторым образом задержку d между моментом времени T аналогового сигнал и соответствующим моментом времени T' цифрового. Далее следующие N секунд цифровой звук будет воспроизводиться так, чтобы скомпенсировать эту задержку d. Если рассматривать каждый раз достаточно маленькие отрезки времени M, то можно предположить, что искажения по времени будут незначительными, значит можно применять алгоритмы неустойчивые к ним. Тогда можно решать задачу поиска задержки между двумя небольшими отрезками сигналов.

Было проверено несколько методов вычисления задержек и выделено два наиболее успешных – вычисление автокорреляций и расстояний между контрольными точками в спектрограммах. Предполагается, что эти точки уникальны и по их положению можно определить дельту задержки двух звуков. Но оказалось, что это качественно работает только на весьма больших отрезках времени M, что в случае синхронизации на лету проблематично.

Алгоритм работает следующим образом: для окна аналогового звука размера W методом автокорреляции вычисляется несколько значений дельты смещения для небольшого набора окон цифрового сигнала разного размера. Далее оценивается достоверность вычисленной дельты, учитывая статистику прошлых вычислений и значения дельт для разных окон по цифровому сигналу. В конце применяется компенсация смещения. Результат работы алгоритма по 2 часам звука виден на графике значений дельт на рисунке 1.

Дальнейшее развитие алгоритма предполагает улучшение адаптации к выбросам, которые видны на рисунке 1 и добавление адаптации к пропускам в аналоговом звуке.

Рисукнок 1

Список литературы:

  1. Опенгейм А.В., Шафер Р.В. Цифровая обработка сигналов. Пер. с англ. Под ред. С.Я. Шаца – М.: Связь, 1979. – 416 с.
  2. Уидроу Б. Стирнз С. Адаптивная обработка сигналов. Пер. с англ. – М.: Радио и связь, 1989. – 440 с.
  3. How does Shazam work. URL: http://coding-geek.com/how-shazam-works/ (дата обращения: 9.10.2017)
  4. Как Яндекс распознаёт музыку с микрофона. URL: https://habrahabr.ru/company/yandex/blog/181219/ (дата обращения: 9.10.2017)

results matching ""

    No results matching ""