Измерение аудио-латентности микрофона и динамиков

Опубликовано 2026-04-13 8 мин чтения

Резюме (TL;DR)

На моём старом USB-интерфейсе запись акустической гитары с мониторингом в наушниках давала round-trip задержку около 35 мс. Когда я пересел на связку MOTU M2 + ASIO-драйвер, она упала в район 5 мс, и та же игра мгновенно превратилась из «играть невозможно» в «звучит естественно». То, что «сказал в микрофон — и в наушнике слышно чуть позже», это не баг, а физическое свидетельство того, что round-trip latency (RTT) существует. Задержка — это сумма пяти этапов: время, за которое микрофон наполняет входной буфер семплами; время обработки в DAW или мессенджере; время, за которое результат записывается в выходной буфер; время, за которое DAC переводит его в аналог; и физическое распространение от динамика до уха (около 1 мс на каждые 34 см). Большая часть подкрутки приходится на размер буфера и модель драйвера. У ASIO, WASAPI Exclusive, Core Audio и JACK типичные минимальные задержки и платформенные ограничения разные. В статье разобраны составляющие задержки, компромисс между частотой дискретизации и размером буфера, особенности драйверов и процедура измерения RTT с петлёй loopback, тестовым тоном и аудио-редактором.

Предыстория и концепции

Путь от микрофона до динамика внутри компьютера заметно длиннее, чем кажется. Сначала ADC (аналого-цифровой преобразователь) семплирует сигнал с некоторой частотой дискретизации (например, 48 кГц) и складывает семплы во входной буфер. Когда буфер заполняется очередной порцией (например, 128 семплов), драйвер передаёт её программе. Это уже задержка на входе. 128 семплов при 48 кГц — это примерно 2,67 мс, само по себе ощутимо.

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

Наконец, распространение по воздуху. Скорость звука при комнатной температуре — около 343 м/с, то есть 1 мс на каждые 34 см. У наушников этот участок практически обнуляется, а мониторные колонки в другом углу комнаты добавляют несколько миллисекунд. Если вы сидите перед парой мониторов на расстоянии 1,7 м, только этот путь добавляет около 5 мс.

Round-trip latency (RTT) = входной буфер + обработка + выходной буфер + DAC/распространение. При фиксированной частоте дискретизации уменьшение буфера снижает задержку, но поднимает нагрузку, потому что CPU чаще просыпается. Если буфер задан в семплах, то при росте частоты дискретизации «тот же» буфер становится короче по времени, но более высокая частота увеличивает объём обрабатываемых данных и по-другому нагружает драйвер и CPU.

Сравнение и данные

ПараметрASIOWASAPI ExclusiveCore AudioJACK
ПлатформаПреимущественно WindowsТолько WindowsТолько macOSLinux; есть кроссплатформенная поддержка
Типичная минимальная задержкаОчень низкая, обычно единицы миллисекундНизкая; при эксклюзивном контроле — единицы миллисекундНизкая, стабильные единицы миллисекундНастраивается до очень низкой, сложнее в настройке
Совместный доступПо драйверу, обычно эксклюзивShared/Exclusive; эксклюзив нижеShared по умолчанию, хорошо настроенМатрица маршрутизации, много клиентов

Точные миллисекунды сильно зависят от железа, драйвера и версии ОС, так что маркетинговые «1 мс» имеют мало общего с вашей реальностью — полезнее один раз измерить RTT в своей системе и взять его как точку отсчёта. Даже бюджетные интерфейсы вроде Focusrite Scarlett 2i2 3rd Gen или MOTU M2 в связке с ASIO или Core Audio вполне уходят в зону однозначных миллисекунд. А вот стандартный Shared-путь WASAPI на Windows или обходной ASIO4ALL даже на том же железе дают заметно хуже: «мой RTT» — это всегда результат тройки «железо + драйвер + буфер».

Практические сценарии

Сценарий 1 — живое выступление и in-ear мониторинг. Когда вокалист поёт, слыша собственный голос через in-ear, большой RTT возвращает голос с задержкой и ломает чувство темпа. Целевой диапазон здесь — меньше 10 мс RTT. Для этого опускают буфер, используют низколатентный драйвер (ASIO/Core Audio) и, по возможности, аппаратный direct-monitoring интерфейса, чтобы вообще обойти софтовый путь. Ручка мониторинга на передней панели MOTU M2 решает это мгновенно.

Сценарий 2 — запись подкаста. Если люди пишутся каждый в свой микрофон, а не в одной комнате, допустимо и 50–100 мс. На этапе записи низкая задержка не обязательна, а таймлайн склеивается уже в постпродакшене. Более крупный буфер, дающий стабильную загрузку CPU, часто лучше для качества записи.

Сценарий 3 — видеозвонок. Браузерные конференции на WebRTC обычно имеют 100–200 мс суммарной задержки: к аудио добавляется сетевая передача, кодирование и декодирование. Это уже граница «естественности разговора», а если ещё приплюсовать задержку Bluetooth-наушников, реплики начинают перекрываться.

Распространённые заблуждения

«Bluetooth всегда даёт большую задержку». Классический A2DP — да, действительно большую. Но у LE Audio (кодек LC3) и aptX Low Latency задержка гораздо меньше, и на практике ощущается иначе. Даже у двух «Bluetooth-наушников» цифры расходятся в разы в зависимости от кодека. Для мониторинга и записи проводное подключение всё же безопаснее.

«USB-аудио всегда лучше аналога». Если USB-интерфейс имеет хороший DAC, тихий предусилитель и аккуратный драйвер, он действительно чище. Но дешёвые USB-DAC страдают джиттером, шумом и проблемами драйверов, и итог нередко хуже аналога. Ключ — не «USB или нет», а качество компонентов.

«192 кГц — значит низкая задержка». Контринтуитивно, но при буфере, выраженном в миллисекундах, повышение частоты не сокращает физического времени. Время (в мс) уменьшается, только если буфер задан в семплах и остаётся фиксированным по числу семплов, — и тогда сверху растёт нагрузка на CPU и драйвер. Для низкой задержки важна не сама частота, а размер буфера и модель драйвера.

Чек-лист

  1. Определите целевой RTT. Живое исполнение — <10 мс, запись — 50–100 мс, видеоконференции — 100–200 мс; у каждого сценария свой порог.
  2. Выберите драйвер. Windows — ASIO или WASAPI Exclusive; macOS — Core Audio; Linux — JACK/PipeWire. Стандартные shared-пути (MME, WASAPI Shared) обычно имеют крупную задержку.
  3. Уменьшайте буфер по шагам. Снижайте размер, пока не появятся «трески» (dropouts); уровень прямо перед ними — практический минимум системы.
  4. Сделайте loopback-измерение. Соедините выход и вход интерфейса кабелем, пустите тестовый тон и сравните временной сдвиг принятого сигнала в аудио-редакторе.
  5. Частота дискретизации — под задачу. Для видео 48 кГц, для музыки 44,1/48 кГц. 96 кГц и выше — только при осмысленной причине.
  6. Проверьте маршрут мониторинга. Если вместо программного мониторинга в DAW использовать direct monitoring на интерфейсе, RTT уходит почти в ноль.

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

Инструмент измерения аудио-латентности Patrache Studio позволяет грубо оценить RTT входа и выхода прямо в браузере, без покупки отдельного железа — удобно, чтобы снять текущий статус системы. Если хотите посмотреть полный бюджет задержки ввода, полезно вместе читать Клавиатура: N-Key Rollover (NKRO) и задержка ввода в играх; если проверяете A/V-синк в видеоконференции, возьмите в пару Диагностику веб-камеры: как связаны частота кадров, разрешение и освещение и сведите задержки со стороны камеры.

Источники