Вывод звука через HDMI Яндекс Станция макс

Яндекс Станция является популярным устройством, которое предлагает ряд возможностей, включая воспроизведение звука через HDMI. В этой статье мы рассмотрим, как правильно настроить эту функцию, чтобы насладиться качественным звуком на вашем телевизоре или другом устройстве с HDMI.

  1. Шаг 1: Переключение на вывод звука через HDMI
  2. Шаг 2: Подключение Яндекс Станции через HDMI к телевизору
  3. Шаг 3: Дублирование звука на HDMI
  4. Шаг 4: Трансляция звука на Яндекс Станцию через Bluetooth
  5. Полезные советы и выводы

Шаг 1: Переключение на вывод звука через HDMI

Первым шагом в настройке вывода звука с Яндекс Станции через HDMI является активация соответствующей опции в приложении Дом с Алисой. Для этого выполните следующие действия:

  1. Откройте приложение Дом с Алисой на своем устройстве.
  2. Выберите Станцию из списка доступных устройств.
  3. В настройках устройства активируйте опцию «Передавать звук по HDMI».

Теперь звук будет передаваться на устройство с подключенным HDMI-кабелем.

Яндекс-станция Алиса. Как подать звук на телевизор по HDMI

Шаг 2: Подключение Яндекс Станции через HDMI к телевизору

Следующий шаг — это физическое подключение Яндекс Станции к вашему телевизору с помощью HDMI-кабеля. Процесс подключения прост и не требует особых навыков:

  1. Убедитесь, что ваша Яндекс Станция и ваш телевизор выключены.
  2. Подключите один конец HDMI-кабеля к порту HDMI на Яндекс Станции.
  3. Подключите другой конец HDMI-кабеля к порту HDMI на вашем телевизоре.
  4. Включите и Яндекс Станцию, и телевизор.

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

Шаг 3: Дублирование звука на HDMI

Если вы хотите дублировать звук с Яндекс Станции на другие устройства через HDMI, следуйте этим шагам:

  1. Убедитесь, что Яндекс Станция подключена к телевизору через HDMI.
  2. На начальном экране Windows выполните поиск звука.
  3. В открывшемся окне «Воспроизведение» убедитесь, что ваш телевизор указан как устройство воспроизведения.
  4. Выделите телевизор в списке устройств и выберите опцию «Устройство по умолчанию».
  5. Нажмите «ОК», а затем «Применить».

Теперь звук будет одновременно воспроизводиться на Яндекс Станции и выбранном вами устройстве через HDMI.

Шаг 4: Трансляция звука на Яндекс Станцию через Bluetooth

Если вы хотите транслировать музыку с другого устройства на Яндекс Станцию через Bluetooth, следуйте этим шагам:

  1. На вашем устройстве, с которого вы хотите передавать звук, включите Bluetooth и запустите поиск устройств Bluetooth.
  2. В списке доступных устройств выберите Yandex Station-XXXXXX (где XXXXXX — уникальный идентификатор вашей Яндекс Станции).
  3. Дождитесь, пока световое кольцо на Яндекс Станции перестанет мигать, сигнализируя об успешном подключении.
  4. Запустите музыку на своем устройстве, и она будет автоматически воспроизводиться на Яндекс Станции через Bluetooth.

Полезные советы и выводы

  • Перед подключением Яндекс Станции через HDMI, убедитесь, что оба устройства выключены.
  • При настройке дублирования звука через HDMI, выберите телевизор в качестве устройства воспроизведения для обеспечения правильной передачи звука.
  • Для трансляции звука на Яндекс Станцию через Bluetooth, активируйте Bluetooth на своем устройстве и выберите Яндекс Станцию в списке доступных устройств.
  • Всегда следуйте инструкциям и рекомендациям производителя, чтобы избежать возможных проблем с настройкой или работой устройств.

Выводы:

Вывод звука с Яндекс станции по hdmi на телевизор

  • Настройка вывода звука с Яндекс Станции через HDMI является простой процедурой, которая требует всего лишь нескольких шагов.
  • Дублирование звука на другие устройства через HDMI позволяет создать более мощную аудиосистему.
  • Использование Bluetooth для трансляции звука на Яндекс Станцию открывает возможности для беспроводного прослушивания музыки.

Теперь вы знаете, как настроить вывод звука с Яндекс Станции через HDMI и использовать различные функции для получения наилучшего звука и удобства использования.

Как вывести звук с ноутбука на Яндекс станцию

Чтобы вывести звук с ноутбука на Яндекс станцию Мини, вам потребуется использовать Bluetooth. Для начала вам нужно включить Bluetooth на Станции Мини. Вы можете сделать это, сказав: «Алиса, включи Bluetooth» или нажав кнопку отключения микрофонов и удерживая ее в течение пяти секунд, пока подсветка Станции Мини не начнет мигать.

После того как Bluetooth на Станции Мини будет включен, вы можете установить соединение между ноутбуком и станцией. На ноутбуке откройте настройки Bluetooth и найдите устройства в окружающей среде. Найдите Станцию Мини и нажмите кнопку «Соединить». После установления соединения вы сможете транслировать звук с ноутбука на Станцию Мини и наслаждаться музыкой через колонки станции.

Как транслировать звук с ПК на Яндекс станцию

После этого ПК и Яндекс Станция подключатся друг к другу. Теперь на компьютере можно включить любую музыку или аудиофайл и она будет проигрываться через Яндекс Станцию. Единственное, что нужно помнить, это то, что оба устройства должны быть в радиусе действия Bluetooth. Если вы уйдете слишком далеко от Яндекс Станции, связь может прерваться и музыка перестанет играть.

Если вы хотите остановить воспроизведение музыки с ПК, можно сказать: «Алиса, выключи Bluetooth». Таким образом, вы сможете удобно слушать свою любимую музыку или аудиокниги, используя Яндекс Станцию как беспроводные наушники или колонку. Это удобно, если вам нравится слушать музыку во время работы или отдыха за компьютером, но вы не хотите использовать наушники или обычные колонки.

Как подключить Алису через HDMI

Для того чтобы подключить Алису через HDMI, необходимо выполнить следующие шаги. В первую очередь, соедините колонку и телевизор при помощи кабеля HDMI, который находится в комплекте поставки. Затем, включите телевизор и выберите необходимый вход HDMI в качестве источника с помощью пульта от телевизора.

Обратите внимание, что часто кнопка, отвечающая за выбор источника, имеет надпись «source» или «input». После этого, Алиса возьмет на себя все остальные действия и будет готова к использованию. Необходимо отметить, что подключение Алисы через HDMI позволяет передавать звук и видео с максимальной четкостью и качеством.

Для того чтобы вывести звук с Яндекс станции через HDMI, необходимо выполнить несколько простых действий. Сначала откройте приложение «Дом с Алисой» на вашем устройстве. Затем выберите «Станцию» из списка устройств. Далее, вам необходимо включить опцию «Передавать звук по HDMI».

Еще по теме:  Как подключить спутниковый ресивер к ноутбуку через HDMI кабель

Через эту опцию, звук будет передаваться на другое устройство с помощью HDMI-кабеля. Подключите вашу Яндекс станцию к устройству, например, к телевизору, с помощью HDMI-кабеля и убедитесь, что оба устройства включены. Затем выберите на телевизоре соответствующий HDMI-вход, чтобы вывести звук с Яндекс станции на экран телевизора.

Теперь вы сможете наслаждаться звуком с Яндекс станции через HDMI на вашем телевизоре или другом устройстве, подключенном через HDMI.

  • Можно ли подключить Яндекс станцию через HDMI к ноутбуку
  • Как передать звук на Яндекс колонку
  • Как вывести звук на Яндекс станцию

Источник: umnyekolonki.ru

Как мы делали AEC для воспроизведения звука через HDMI на Станции Макс

В недавнем апдейте прошивки для Яндекс Станции Макс мы добавили поддержку вывода звука по кабелю HDMI при просмотре фильмов. Если у вашего телевизора хорошая акустика (или к нему подключена качественная аудиосистема), теперь можно слушать аудиодорожку через неё. Это обновление мы выпустили только сейчас, потому что оно потребовало нетривиальных технических решений. Например, нужно было сделать эхоподавление для HDMI. Вот об этом и поговорим — сначала обсудим историю технологий и проблемы с подавлением собственного звука устройства, а затем перейдём к нашему решению.

Как мы боролись с эхом на первой Станции

С появлением умных колонок мы стали развивать комплекс технологий для улучшения качества и чёткости речи. В него входят разные решения. Например, Acoustic Noise Reduction (снижение уровня фонового шума вроде звуков пылесоса или кофеварки), Beamforming (усиление или ослабление определенных направлений — по сути, определение множества источников звука), Dereverberation (удаление эффекта эхо от стен, мебели и тому подобного).

Ключевые направление исследований для темы этого поста — эхоподавление, или Acoustic Echo Cancellation (AEC), то есть удаление из сигнала с микрофона звука, проигрываемого динамиками самого устройства. Суть в том, чтобы колонка не оглушала саму себя и могла услышать команды от пользователя.

Эта задача существует давно: даже на старых телефонах Nokia был Acoustic Echo Cancellation. Эту же задачу решают производители оборудования для конференц-связи и ноутбуков, чтобы пользователи могли общаться в Zoom без наушников. Можно сказать, что всегда, когда есть динамик и микрофон, нужно уметь вычитать звук первого из второго. Разумеется, такая задача встала и перед нами, когда мы стали делать свои умные устройства.

Если вы хотите реализовать у себя в продукте AEC, есть два варианта, как и с любым технологическим решением — либо купить готовое и мучиться с поддержкой, либо сделать самим и собрать все шишки лично.

Почему мы решили делать собственное решение? Во-первых, алгоритмы можно улучшать и тонко настраивать под конкретные устройства. Во-вторых, это позволяет обеспечить более гибкую интеграцию с другими частями Алисы, например с активацией голосом (споттером) или автоматическим распознаванием речи (ASR). В-третьих, собственные решения в перспективе обходятся дешевле, потому что сторонние проприетарные библиотеки, как правило, платные.

Как работает AEC

В упрощённом виде задача выглядит так: умная колонка играет композицию из Яндекс Музыки, звук отражается от стен и возвращается в микрофон, который должен также воспринимать команды пользователя. У нас есть Echo Canceller — своего рода «чёрный ящик», который принимает сигналы из Яндекс Музыки и с микрофона Станции, вычитает одно из другого и получает только звуковую команду человека без фоновой мелодии.

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

Вот как можно алгоритмически описать Acoustic Echo Cancellation:

Есть сигнал микрофона M — бесконечная последовательность вещественных чисел. Есть сигнал колонки S — тоже последовательность чисел. M — это комбинация музыки и речи, то есть:

M = Music + Speech

Нужно оценить Music, зная S.

Решение:

Запишем формулу:

Music = S[0]*a[0] + S[-1]*a[-1] +… + S[-L]*a[-L], где

L — достаточно большая константа, приблизительно от 200 миллисекунд до 1 секунды, одинаковая для всех помещений (по сути это время «долёта» звуковой волны).

a — вещественные коэффициенты, которые нужно на лету подстраивать. Они зависят от конфигурации помещения — размеров, мебели, ковров и даже перемещений человека.

И теперь будем искать коэффициенты a градиентным спуском по оптимизационной задаче:

(M — Music)^2 → min

Это решение — бейзлайн, все с него начинают. Оно называется Least Mean Squares filter (LMS) и справляется с задачей, но качество можно улучшать.

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

Чтобы решить эту проблему, можно предположить, что каждая частота не зависит от остальных, то есть звук не меняет частоту по мере прохождения по комнате. Поэтому можно обрабатывать частоты независимо.

Сигналы с микрофона и динамика колонки проходят через оконные преобразования Фурье и делятся на отдельные частоты, которые затем пропускаются через LMS-фильтры. В результате получается вектор эха по частотам. Очистка исходного звука заключается в том, чтобы из микрофона вычесть эхо и сделать обратное преобразование Фурье. Это работает быстро и без потерь качества.

Можно дополнительно улучшить качество AEC, использовав фильтр Калмана, — именно такой вариант работает у нас в продакшене. Это линейный адаптивный фильтр, который позволяет вычитать сигнал независимо в каждой частоте и учитывает существование голоса и посторонних звуков.

Стерео-AEC для Станции Макс

Описанный выше подход подойдёт, если у нас монодинамик — как на обычной Станции или Станции Мини. В случае со стереовоспроизведением, как на Станции Макс, начнут возникать проблемы, потому что у каждого из каналов будет своя передаточная функция, которую нужно вычислять независимо.

В терминах нашего алгоритма задача выглядит так:

Есть микрофон M. Есть два динамика S1 и S2. Чтобы оценить значение Music, нужно сложить сигналы с обоих динамиков:

Music = S1[0]*a[0] + S1[-1]*a[-1] +… + S1[-L]*a[-L] +
S2[0]*b[0] + S2[-1]*b[-1] +… + S2[-L]*b[-L]

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

HDMI

Многие пользователи ждали, что мы реализуем вывод звука по HDMI. Но без AEC это означало бы, что колонка потеряет возможность слышать человека при проигрывании музыки или других звуков. Она бы просто не умела вычитать звук, воспроизводимый через HDMI в телевизоре.

Еще по теме:  Hp не работает HDMI

Дело в том, что в классическом исполнении AEC мы используем фидбеки в виде напряжения, которое подается на динамики и считывается с помощью аналого-цифрового преобразователя. При переходе на HDMI-воспоизведение напряжение на динамики не подается, а звук проигрывается с динамиков телевизора или саундбара. Таким образом, для HDMI-AEC нужны альтернативные референсные каналы.

Аудиодорожка HDMI-канала, как и Станция Макс, — двухканальная, поэтому придется использоавть стерео-АЕС, но это не единственное усложнение.

Основная проблема с AEC для HDMI — синхронизация микрофона Станции и динамиков телевизора. Звуковые дорожки на устройстве обычно синхронизированны отдельными часами, что гарантирует минимальную и стабильную задержку между каналами микрофона и динамика. В случае с HDMI это не так — каналы рассинхронизированы на сотни милисекунд. При этом такая задержка меняется от запуска к запуску звука через HDMI.

Для качественного вычитания музыки и другого аудиоконтента нужно их синхронизировать: если этого не делать, то качество деградирует прямо на глазах.

Если звук микрофона отстаёт от динамика…

…то всё просто — нужно всего лишь подождать микрофон. Но бывает и наоборот — сигнал динамика может отставать от микрофона:

Это контринтуитивно, но в реальности случается довольно часто из-за особенностей системной реализации. Дело в том, что микрофон и динамик — это разные устройства, чтение из которых никак не синхронизировано. Это неизбежно приводит к сдвигу одного сигнала относительно другого — так и возникает отставание.

Подробности

Микрофоны и аналого-цифровой преобразователь — это физически разные устройства, подключённые к разным шинам. В системе они представлены отдельными устройствами.

При вызове функций snd_pcm_start/snd_pcm_prepare на разных девайсах может возникать сдвиг, обусловленный многозадачностью. Для решения проблемы можно связать два устройства вызовом snd_pcm_link. Тогда вызов snd_pcm_start/snd_pcm_prepare на одном из девайсов приведёт к срабатыванию соответствующих триггеров в драйверах всех связанных устройств.

Но это не решает всех проблем. Триггеры всё равно вызываются последовательно, и между вызовом триггера в драйвере ALSA девайса и реальным захватом звука в разных устройствах может пройти разное время. Девайсы обслуживаются разными драйверами и могут иметь разные источники тактирования, тактироваться с разной частотой и не обязаны быть синхронизированными. Также могут возникать задержки, связанные с реализацией аппаратуры и драйверов. Кроме того, этот способ накладывает дополнительные ограничения: нужно аккуратно работать с параметрами устройств (buffer size, period size, start threshold и так далее).

В этом случае придётся «подождать» динамик, а значит — задержать ответ пользователю. Это решение сделает менее удобным использование колонки, поэтому мы пошли искать другие способы.

В Станции Макс, в отличие от первой Станции, есть аппаратный синхронизатор: он принимает на вход любые два источника, один из которых — микрофоны, а другой — фидбек от динамика или HDMI. Ограничение в том, что синхронизатор может работать только с одним источником — либо с колонкой, либо с телевизором (HDMI). К счастью, одновременно колонка с телевизором не работают, поэтому нам нужно было просто научиться понимать, какое устройство играет в конкретный момент, и синхронизировать соответствующий источник с микрофонами.

После того как мы научились синхронизировать каналы, осталось соединить все детали между собой: настроить алгоритм под разные режимы, динамически переключать синхронизатор и режим работы алгоритма, а также следить, чтобы система оставалась стабильной.

Послесловие

Как показала практика, мы правильно сделали ставку на собственные решения VQE . За короткое время нам удалось создать эффективный алгоритм, который мы тщательно подогнали под устройства. Оказалось, что кастомизация под железо, быстрая коммуникация со смежниками и возможность быстро вносить изменения обеспечивает заметный выигрыш в качестве над проприетарными решениями.

Как мы делали AEC для воспроизведения звука через HDMI на Станции Макс

Компьюлента Orion - Hi-Tech новости со всего света

В недавнем апдейте прошивки для Яндекс Станции Макс мы добавили поддержку вывода звука по кабелю HDMI при просмотре фильмов. Если у вашего телевизора хорошая акустика (или к нему подключена качественная аудиосистема), теперь можно слушать аудиодорожку через неё. Это обновление мы выпустили только сейчас, потому что оно потребовало нетривиальных технических решений. Например, нужно было сделать эхоподавление для HDMI. Вот об этом и поговорим — сначала обсудим историю технологий и проблемы с подавлением собственного звука устройства, а затем перейдём к нашему решению.

Как мы боролись с эхом на первой Станции

С появлением умных колонок мы стали развивать комплекс технологий для улучшения качества и чёткости речи. В него входят разные решения. Например, Acoustic Noise Reduction (снижение уровня фонового шума вроде звуков пылесоса или кофеварки), Beamforming (усиление или ослабление определенных направлений — по сути, определение множества источников звука), Dereverberation (удаление эффекта эхо от стен, мебели и тому подобного).

Ключевые направление исследований для темы этого поста — эхоподавление, или Acoustic Echo Cancellation (AEC), то есть удаление из сигнала с микрофона звука, проигрываемого динамиками самого устройства. Суть в том, чтобы колонка не оглушала саму себя и могла услышать команды от пользователя.

Эта задача существует давно: даже на старых телефонах Nokia был Acoustic Echo Cancellation. Эту же задачу решают производители оборудования для конференц-связи и ноутбуков, чтобы пользователи могли общаться в Zoom без наушников. Можно сказать, что всегда, когда есть динамик и микрофон, нужно уметь вычитать звук первого из второго. Разумеется, такая задача встала и перед нами, когда мы стали делать свои умные устройства.

Если вы хотите реализовать у себя в продукте AEC, есть два варианта, как и с любым технологическим решением — либо купить готовое и мучиться с поддержкой, либо сделать самим и собрать все шишки лично.

Почему мы решили делать собственное решение? Во-первых, алгоритмы можно улучшать и тонко настраивать под конкретные устройства. Во-вторых, это позволяет обеспечить более гибкую интеграцию с другими частями Алисы, например с активацией голосом (споттером) или автоматическим распознаванием речи (ASR). В-третьих, собственные решения в перспективе обходятся дешевле, потому что сторонние проприетарные библиотеки, как правило, платные.

Как работает AEC

В упрощённом виде задача выглядит так: умная колонка играет композицию из Яндекс Музыки, звук отражается от стен и возвращается в микрофон, который должен также воспринимать команды пользователя. У нас есть Echo Canceller — своего рода «чёрный ящик», который принимает сигналы из Яндекс Музыки и с микрофона Станции, вычитает одно из другого и получает только звуковую команду человека без фоновой мелодии.

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

Еще по теме:  Finepower HDMI что это

Вот как можно алгоритмически описать Acoustic Echo Cancellation:

Есть сигнал микрофона M — бесконечная последовательность вещественных чисел. Есть сигнал колонки S — тоже последовательность чисел. M — это комбинация музыки и речи, то есть:

M = Music + Speech

Нужно оценить Music, зная S.

Решение:

Запишем формулу:

Music = S[0]*a[0] + S[-1]*a[-1] +… + S[-L]*a[-L], где

L — достаточно большая константа, приблизительно от 200 миллисекунд до 1 секунды, одинаковая для всех помещений (по сути это время «долёта» звуковой волны).

a — вещественные коэффициенты, которые нужно на лету подстраивать. Они зависят от конфигурации помещения — размеров, мебели, ковров и даже перемещений человека.

И теперь будем искать коэффициенты a градиентным спуском по оптимизационной задаче:

(M — Music)^2 → min

Это решение — бейзлайн, все с него начинают. Оно называется Least Mean Squares filter (LMS) и справляется с задачей, но качество можно улучшать.

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

Чтобы решить эту проблему, можно предположить, что каждая частота не зависит от остальных, то есть звук не меняет частоту по мере прохождения по комнате. Поэтому можно обрабатывать частоты независимо.

Сигналы с микрофона и динамика колонки проходят через оконные преобразования Фурье и делятся на отдельные частоты, которые затем пропускаются через LMS-фильтры. В результате получается вектор эха по частотам. Очистка исходного звука заключается в том, чтобы из микрофона вычесть эхо и сделать обратное преобразование Фурье. Это работает быстро и без потерь качества.

Можно дополнительно улучшить качество AEC, использовав фильтр Калмана, — именно такой вариант работает у нас в продакшене. Это линейный адаптивный фильтр, который позволяет вычитать сигнал независимо в каждой частоте и учитывает существование голоса и посторонних звуков.

Стерео-AEC для Станции Макс

Описанный выше подход подойдёт, если у нас монодинамик — как на обычной Станции или Станции Мини. В случае со стереовоспроизведением, как на Станции Макс, начнут возникать проблемы, потому что у каждого из каналов будет своя передаточная функция, которую нужно вычислять независимо.

В терминах нашего алгоритма задача выглядит так:

Есть микрофон M. Есть два динамика S1 и S2. Чтобы оценить значение Music, нужно сложить сигналы с обоих динамиков:

Music = S1[0]*a[0] + S1[-1]*a[-1] +… + S1[-L]*a[-L] +
S2[0]*b[0] + S2[-1]*b[-1] +… + S2[-L]*b[-L]

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

HDMI

Многие пользователи ждали, что мы реализуем вывод звука по HDMI. Но без AEC это означало бы, что колонка потеряет возможность слышать человека при проигрывании музыки или других звуков. Она бы просто не умела вычитать звук, воспроизводимый через HDMI в телевизоре.

Дело в том, что в классическом исполнении AEC мы используем фидбеки в виде напряжения, которое подается на динамики и считывается с помощью аналого-цифрового преобразователя. При переходе на HDMI-воспоизведение напряжение на динамики не подается, а звук проигрывается с динамиков телевизора или саундбара. Таким образом, для HDMI-AEC нужны альтернативные референсные каналы.

Аудиодорожка HDMI-канала, как и Станция Макс, — двухканальная, поэтому придется использоавть стерео-АЕС, но это не единственное усложнение.

Основная проблема с AEC для HDMI — синхронизация микрофона Станции и динамиков телевизора. Звуковые дорожки на устройстве обычно синхронизированны отдельными часами, что гарантирует минимальную и стабильную задержку между каналами микрофона и динамика. В случае с HDMI это не так — каналы рассинхронизированы на сотни милисекунд. При этом такая задержка меняется от запуска к запуску звука через HDMI.

Для качественного вычитания музыки и другого аудиоконтента нужно их синхронизировать: если этого не делать, то качество деградирует прямо на глазах.

Если звук микрофона отстаёт от динамика…

…то всё просто — нужно всего лишь подождать микрофон. Но бывает и наоборот — сигнал динамика может отставать от микрофона:

Это контринтуитивно, но в реальности случается довольно часто из-за особенностей системной реализации. Дело в том, что микрофон и динамик — это разные устройства, чтение из которых никак не синхронизировано. Это неизбежно приводит к сдвигу одного сигнала относительно другого — так и возникает отставание.

Подробности

Микрофоны и аналого-цифровой преобразователь — это физически разные устройства, подключённые к разным шинам. В системе они представлены отдельными устройствами.

При вызове функций snd_pcm_start/snd_pcm_prepare на разных девайсах может возникать сдвиг, обусловленный многозадачностью. Для решения проблемы можно связать два устройства вызовом snd_pcm_link. Тогда вызов snd_pcm_start/snd_pcm_prepare на одном из девайсов приведёт к срабатыванию соответствующих триггеров в драйверах всех связанных устройств.

Но это не решает всех проблем. Триггеры всё равно вызываются последовательно, и между вызовом триггера в драйвере ALSA девайса и реальным захватом звука в разных устройствах может пройти разное время. Девайсы обслуживаются разными драйверами и могут иметь разные источники тактирования, тактироваться с разной частотой и не обязаны быть синхронизированными. Также могут возникать задержки, связанные с реализацией аппаратуры и драйверов. Кроме того, этот способ накладывает дополнительные ограничения: нужно аккуратно работать с параметрами устройств (buffer size, period size, start threshold и так далее).

В этом случае придётся «подождать» динамик, а значит — задержать ответ пользователю. Это решение сделает менее удобным использование колонки, поэтому мы пошли искать другие способы.

В Станции Макс, в отличие от первой Станции, есть аппаратный синхронизатор: он принимает на вход любые два источника, один из которых — микрофоны, а другой — фидбек от динамика или HDMI. Ограничение в том, что синхронизатор может работать только с одним источником — либо с колонкой, либо с телевизором (HDMI). К счастью, одновременно колонка с телевизором не работают, поэтому нам нужно было просто научиться понимать, какое устройство играет в конкретный момент, и синхронизировать соответствующий источник с микрофонами.

После того как мы научились синхронизировать каналы, осталось соединить все детали между собой: настроить алгоритм под разные режимы, динамически переключать синхронизатор и режим работы алгоритма, а также следить, чтобы система оставалась стабильной.

Послесловие

Как показала практика, мы правильно сделали ставку на собственные решения VQE. За короткое время нам удалось создать эффективный алгоритм, который мы тщательно подогнали под устройства. Оказалось, что кастомизация под железо, быстрая коммуникация со смежниками и возможность быстро вносить изменения обеспечивает заметный выигрыш в качестве над проприетарными решениями.

Оцените статью
Добавить комментарий