Проблемы Bluetooth: как отказ от 3.5 мм разъема привел к полной неразберихе с беспроводным звуком

Егор


В 2016 году Apple в очередной раз удивила мир, выпустив iPhone 7 без привычного нам 3.5 мм аудио разъема. Тогда компания объяснила свой ход тем, что он мешал созданию нормальной водозащиты. Так это или нет — спорить можно долго, но таким шагом Apple подтолкнула развитие беспроводных наушников, активно участвуя в этом сама, выпуская различные AirPods.

В итоге на данный момент отсутствие 3.5 мм джека в смартфоне уже не кажется чем-то необычным, как и засилье на рынке различных беспроводных наушников всех форм и размеров. Купить можно как модели за условную тысячу рублей, такие как Xiaomi AirDots, с минимумом возможностей и посредственным качеством исполнения, так и флагманские Sony WH-1000XM4 по цене некоторых топовых смартфонов, имеющие отличный шумодав и множество настроек.

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

SBC — неплохой стандартный кодек, который утопили драйвера

Разумеется, при создании какого-либо стандарта передачи данных, в нашем случае звука, нужно сделать его базовую и доступную для всех реализацию: так и появился Bluetooth-кодек SBC, или SubBand Codec. Он имеет минимальные требования к «железу», и работать с ним могут даже простые кнопочные телефоны. У него есть базовая психоакустическая модель и широкие возможности кастомизации. Он бесплатен и открыт, и доступен для всех больше 15 лет. Все это должно было сделать остальные кодеки просто ненужными, если бы не одно но.

В 99% девайсов этот кодек гвоздями прибит к битрейту в 328 кбит/c. Просто для сравнения: стандартное CD Audio с 16 бит и 44.1 кГц имеет битрейт в 4 раза выше, чуть больше 1.4 Мбит/c. Как итог, даже при прослушивании музыки из потоковых сервисов битрейта перестает хватать, и психоакустика может начать отключать верхние диапазоны частот, выше 16-18 кГц, дабы нижним, которые слышат все, доставалось больше места в «узком» битрейте. В результате, при прослушивания различных композицией с широкой сценой (например, с женским вокалом), качество звука может ощутимо упасть, поэтому кодек SBC традиционно считается неподходящим для передачи качественной музыки.

Подливает масло в огонь и то, что многие производители наушников просто не настраивают DSP (Digital Signal Processing) для этого кодека. В наушниках есть одноименный процессор, который отвечает за подготовку звука перед его непосредственным выводом, и его можно заставить делать много полезных вещей — например, именно DSP-процессор отвечает за шумоподавление. Также он может исправлять огрехи кодеков, работая эквалайзером. И если для различных AAC или AptX создатели наушников еще заморачиваются и «подкручивают» звук, то вот с SBC ничего не делает даже Sony в своих накладных аудиофильских решениях линейки WH-1000XM, чего уж говорить о более простых наушниках.


SBC может вносить в звук даже меньше искажений, чем AptX HD.

Как итог, SBC начинает звучать еще хуже на фоне более «продвинутых» кодеков. Однако есть любопытный момент — он может звучать даже лучше AptX HD с битрейтом в 576 кбит/c. Как так? Все просто: как я уже писал выше, этот кодек можно масштабировать в очень широких пределах, и его теоретический максимум — это чуть больше 1.5 Мбит/c, то есть он может пропускать даже CD Audio без сжатия! Разумеется, на деле в нашем зашумленном 2.4 ГГц диапазоне такая скорость возможна лишь в мечтах, да и не все наушники ее поддерживают. Однако подавляющее большинство решений на рынке способно работать с SBC при битрейте в 400-600 Кбит/c.

Как итог, этого полностью хватает, чтобы психоакустика переставала обрезать какие-либо частоты, и теоретически SBC начинает вносить даже меньше искажений в звук, чем более новые кодеки от Qualcomm (да-да, AptX принадлежит им). Но тут все подпортили драйвера: ни на Windows, ни на macOS, ни на iOS вы никак не можете изменить стандартный битрейт в 328 кбит/c в большую сторону. Так называемый SBC HD с большим битрейтом есть только под Android с кастомной прошивкой LineageOS. Поэтому, как я и сказал изначально, SBC «убила» не плохая реализация — его убили плохие драйвера, и сам по себе этот кодек очень даже неплох.

В 2020 году мы все еще не можем слушать стереозвук по Bluetooth при использовании микрофона наушников

Думаю, многие пользователи замечали, что при ответе на звонок с беспроводных наушников качество звука ощутимо падает. Все дело в том, что наушники переходят в режим гарнитуры (HFP, Hands-Free Profile). В таком режиме они могут передавать звук с микрофона наушников на смартфон, но и звук со смартфона выводится лишь в моно. Разумеется, для разговора этого хватает — для четкого понимания речи стерео не нужно. Но в 2020 году мы нередко привыкли разговарить и одновременно слушать музыку или играть, и в таком случае очевидно плоский монозвук с низким качеством портит всё.  

Поэтому, если вы хотите слушать музыку в стерео и одновременно общаться, вам придется использовать внешний микрофон (например, смартфона). В таком случае будет использоваться стандартный профиль A2DP (Advanced Audio Distribution Profile) как минимум с SBC (или другим «полноценным» кодеком). Но, разумеется, при этом у вас не будет свободы движения. Такое ограничение было логичным в начале нулевых, когда Bluetooth-звук только зарождался: гарнитуры тогда использовали только для общения, а слабеньких процессоров в наушниках просто не хватало для одновременной работы со стереозвуком и микрофоном.

Но в современном мире, где наушники поддерживают сложные математические кодеки, такие как AAC или LDAC, с шумоподавлением и прочими фишками, вполне можно было расширить профиль A2DP до возможности принимать и передавать звук в стерео. Но, увы, этого нет, поэтому при каждом звонке мы отправляемся по качеству звука даже не в начало нулевых, а в девяностые.

AptX — маркетинговый кодек, ставший популярным

Нередко на новом рынке становится лидером не тот, кто предложил лучшее решение, а тот, кто предложил свое решение первым. Таким стал кодек Apt-X, который был разработан профессором Стивеном Смитом из Королевского университета Великобритании еще в 1980-ых для быстрой передачи качественного звука на различную переносную аппаратуру и вообще для быстрой записи качественного аудио. В дальнейшем права на тогда еще Apt-X были куплены CSR, которая в 2009 году сделала кодек беспроводным и переименовала его в AptX. Ну а в 2015 году эту компанию покупает Qualcomm, которая сейчас владеет правами на AptX и охотно продает их всем желающим. 

Основная идея AptX — это передача CD Audio в почти оригинальном качестве. На деле мы видим сжатие 4:1, то есть битрейт составлял до 352 кбит/c при 16 бит и 44.1 кГц. Так что ни о каком «почти» речи тут не идет: максимальное сжатие без потерь не превышает 2:1, так что при передаче звука с помощью AptX данные таки теряются. Но насколько сильно? Об этом поговорим ниже.

Так как AptX — это чисто математический кодек, который всегда покрывает весь звуковой диапазон до 22 кГц — казалось бы, он должен быть лучше по сравнению с SBC, который нередко отключает высокие частоты. На деле это, увы, не так. Основной принцип этого кодека — квантование, то есть выделение определенного числа бит на каждый поддиапазон: так, на передачу звука от 0 до 5500 Гц идет 8 бит, от 5500 до 11000 Гц — 4 бит, от 11000 до 16500 Гц и от 16500 до 22000 Гц идет по 2 бита.


Да, на первый взгляд AptX выглядит лучше SBC, который обрезал частоты 18+ кГц, и mp3, который тоже попытался это сделать. Но, если приглядеться, то становится видно, что кодек Qualcomm внес больше ошибок — например, он вообще «не заметил» желтый пик слева.

И вот тут кроется основная проблема этого кодека: так, 16 бит дают нам более чем достаточный для наших ушей диапазон звука до 96 дБ. А вот 2 бита дают нам всего 12 дБ — это очень мало, и шумы на высоких частотах должны быть отчетливо слышны. Однако доктор Смит не был глухим и тем более глупым: зачем каждый раз отсчитывать абсолютный диапазон, как это делается при привычной нам PCM-модуляции. Он использовал ADPCM-модуляцию, которая считает лишь разницу между текущим и предыдущим сэмплом, и это позволяет даже в 2 бита «запихнуть» полноценные 96 дБ. Однако тут, как и везде в беспроводном звуке, есть очередное «но».

Получить все 96 дБ можно лишь в самом лучшем случае, в реальности динамический диапазон в высоких частотах может поджиматься до 40-50 дБ. Чтобы улучшить ситуацию, в AptX используются специальные таблицы коррекции для ADPCM, «обученные» на некотором наборе треков. Так что чем ближе ваша музыка к той, которую использовали инженеры CSR, тем лучше будет качество звука.

В самом худшем случае, когда выводится лишь одна «нота» на определенной частоте, а на других частотах тишина, шум становится явно слышным. Если у вас есть наушники с AptX, то выкрутите громкость и послушайте ролик ниже на высоких частотах (выше 7 кГц) — скорее всего вы услышите в некоторых моментах вместе с писком еще и звук, схожий с сыплющимся песком. Да, это и есть те самые шумы квантования:



При этом с тем же SBC никаких шумов не будет — вот так древний и простой кодек обходит «маркетинговый» AptX. Разумеется, на большинстве реальных композиций таких шумов не будет — ADPCM там справляется терпимо. Но тут возникает схожая проблема с SBC: битрейта около ~300 кбит/c не хватает для полноценной передачи даже музыки с потоковых сервисов. А с учетом того, что AptX не может отключать малоиспользуемые диапазоны, в отличие от SBC, ему приходится вносить больше искажений в трек.

Однако, с другой стороны, нередко DSP-процессоры в наушниках имеют оптимизации под AptX, и такие «эквалайзерные» настройки действительно делают звук, переданный с помощью кодека Qualcomm, лучше, чем у «стандартного» SBC. Но, в общем и целом, SBC и AptX имеют сравнимое качество звучания, и никакой речи о «почти CD Audio» у последнего не идет и близко.

Большинство беспроводных кодеков имеют ощутимую задержку

Передача звука «по воздуху» — дело сложное: нужно считать трек из памяти, декодировать в нужный кодек, отправить по Bluetooth, принять, раскодировать обратно, обработать с помощью DSP-процессора и воспроизвести. К тому же при передаче данных их часть может потеряться, так что выводить только что полученный сэмпл сразу нельзя — он может быть неполным. В итоге это выливается в достаточно серьезную задержку, которая может достигать 300 мс для SBC, но в среднем колеблется около 150-250 мс.



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

Выход из данной ситуации есть — кодек AptX-LL (Low Latency). С ним сквозная задержка звука опускается всего до 40 мс при прочих характеристиках на уровне обычного AptX. И, как обычно, парочка «но»: во-первых, ни одна ОС не поддерживает этот кодек «из коробки», так что вам потребуется покупать сторонний адаптер Bluetooth. Во-вторых, наушников с поддержкой такого кодека — кот наплакал. 

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

Отсутствие доступных на ПК высококачественных кодеков

У Bluetooth-звука есть три столпа, на которых он стоит — это SBC, AAC и AptX. Эти кодеки в различных комбинациях поддерживают большинство ОС и наушников. И, с некоторыми оговорками, этих кодеков хватает для воспроизведения музыки с потоковых сервисов и просмотра фильмов. С учетом того, что это самые массовые использования беспроводных наушников, вполне очевидно, почему индустрия в этом плане слабо растет вверх.

Но все же хватает людей, которые слушают lossless или же получают сразу несколько потоков аудио (например, играют, общаются и фоном смотрят видео). В таких случаях кодеки выше временами ощутимо снижают качество звука в сравнении с проводом. Есть ли выход? Как вы уже догадались — да, но опять с оговорками.


В квадрате — кодеки, которые можно получить без танцев с бубном на современных десктопных ОС.

Например, есть кодек от Sony под названием LDAC. До 990 кбит/с при 24 битах и 96 кГц. Ощутимо лучше троицы выше с битрейтами ~300 кбит/c, в теории позволяет свободно пропускать CD Audio без потерь (на практике неизвестно, так как кодек закрыт). Но, увы, получить его можно лишь на Android 9.0 и выше, или же на Linux. На остальных ОС он не доступен даже со сторонними Bluetooth-адаптерами. 99% наушников с LDAC — достаточно дорогие решения от Sony.

Окей, идем дальше. Есть кодек UAT, разработанный малоизвестной в России компанией Hiby, которая производит различную аудиотехнику. Битрейт до 1.2 Мбит/c, частота дискретизации до 192 кГц. Опять же без проблем хватает для CD Audio, причем вообще почти без применения сжатия. Однако такой кодек, очевидно, поддерживают лишь пара плееров от Hiby и такое же количество их наушников не самого высокого качества. Bluetooth-адаптеров с ним нет.

LHDC или HWA. Аналог LDAC (до 900 кбит/c, 24 бит и 96 кГц), поддерживаемый в основном дорогими устройствами от Xiaomi и Huawei. Количество наушников с ним исчезаще мало. Bluetooth-адаптеров с ним нет.

Вот и получается, что самый максимум, который вы можете получить на macOS или Windows, купив адаптер — это AptX HD. Да и то в режиме 16 бит и 48 кГц, что близко по качеству к AptX. Так что даже сейчас в 2020 году единственный способ получить качественный звук на ПК — это провод.

Да, некоторые плееры с поддержкой кодеков выше можно подключить к компьютеру в режиме DAC (внешней аудиокарты), но в таком случае задержки вырастают до секунды, а возможность управлять воспроизведением с наушников пропадает. К тому же цены на такие плееры нередко от 5 тысяч рублей только начинаются, так что этот способ можно рассматривать лишь как костыль только для прослушивания музыки.

Не всегда есть свободный выбор кодеков

Обычная ситуация — ваши наушники поддерживают сразу множество кодеков, например SBC, AptX, AptX LL и AptX HD. И у вас есть Bluetooth-адаптер, умеющий работать со всеми этими кодеками. Какой из них будет использоваться при подключении? Скорее всего, самый качественный по звуку, то есть AptX HD. Но, допустим, вы хотите поиграть, для чего AptX LL с более низкой задержкой подходит лучше. Увы, переключиться на него вы не сможете никак. 

Исключением является разве что Android, где в настройках разработчика можно выбрать приоритетный кодек. Но ни Windows, ни macOS, ни iOS такой возможности вам не дадут. Так что в таком случае вам придется купить отдельный адаптер, который поддерживает AptX LL, но не поддерживает AptX HD, и подключаться к нему, чтобы поиграть без ощутимой задержки. Удобно? Да едва ли.

LC3 — лучик света в темном аду Bluetooth-звука

К счастью, группа Bluetooth SIG, которая занимается развитием «синезуба», видимо также в шоке от всего ужаса, который творится с беспроводным звуком, поэтому готовит стандарт Bluetooth Audio LE и кодек LC3, первые решения с которыми появятся скорее всего в следующем году. Что же нам это даст?

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



Кодек LC3 также выглядит интересным — он будет давать уже терпимое качество звука при битрейте всего 160 кбит/c. При ~345 кбит/c он будет обходить по качеству SBC. Увы, пока что точных принципов его кодирования мы не знаем, но по всей видимости будет использоваться мощная психоакустика и качественное сжатие, так что музыка с потоковых сервисов будет звучать отлично. Увы — для lossless скорее всего изменений будет мало.

Также, судя по маркетинговой информации на официальном сайте Bluetooth (где, к слову, уже можно проверить качество нового кодека), Bluetooth LE вместе с LC3 позволит передавать аудио в стерео при использовании микрофона, так что больше никакого монозвука. Правда, напрямую это не написано: всего лишь говорится, что гарнитуры и слуховые аппараты станут работать лучше. Раз монозвук улучшать дальше некуда — видимо, речь идет про стерео.

К тому же улучшится взаимодействие между наушниками и девайсами: BLE позволит подключать любые наушники с его поддержкой сразу к нескольким устройствам. Аналогично и наоборот — можно будет выводить звук с одного устройства сразу на несколько наушников или беспроводных колонок. Да, такие возможности реализуются производителями техники уже сейчас, но теперь это будет прописано в стандарте.

Итог — звук по Bluetooth имеет много «но», однако скоро все станет лучше

На данный момент беспроводной звук выглядит как USB-C: вроде крутой удобный порт, в теории поддерживает все, а на деле в половине ноутбуков USB-C работает как USB 2.0, а Thunderbolt есть только в топовых решениях. С Bluetooth аналогично: в теории в «шумном» 2.4 ГГц диапазоне можно передавать где-то до 1 Мбит/c данных без прерываний, чего с головой хватит для передачи музыки с потоковых сервисов без потерь по тому же SBC.

Но на деле мы видим маркетинговый AptX, урезанный SBC, используемый в основном только в iPhone кодек AAC и... все. По-настоящему крутые кодеки не доступны большинству пользователей чисто технически, и разработчики ОС не спешат внедрять их поддержку, как и производители наушников. Вся надежда остается только на Bluetooth LE и LC3 — но и тут стоит понимать, что это все-таки будущее, причем не самое ближайшее. А пока — добро пожаловать в ад беспроводного звука.
28
iGuides в Яндекс.Дзен —  zen.yandex.ru/iguides
iGuides в Telegram — t.me/iguides
iGuides в VK —  vk.com/iguides
iGuides в Ok.ru — ok.ru/iguides

Будь в курсе последних новостей из мира гаджетов и технологий

Мы в соцсетях

Комментарии

–41
«Он использовал ADPCM-модуляцию, которая считает лишь разницу между текущим и предыдущим сэмплом, и это позволяет даже в 2 бита «запихнуть» полноценные 96 дБ». Можно поподробнее. Про разницу между сэмплами. Ведь разница между 2 бит и 2 бит это ноль на высоких частотах. Непонятно.
5 ноября 2020 в 17:14
#
Егор Морозов
+1764
Ведь разница между 2 бит и 2 бит это ноль на высоких частотах.
PCM считает значение для каждого сэмпла, ADPCM — дельту между текущим и предыдущим. Считать разницу математически труднее, зато меньше бит требуется, что для узкого канала и нужно.
5 ноября 2020 в 21:03
#
tellurian
+1300
Хорошая статья. Теперь бы по намёткам такое же руководство. Что и какие наушники умеют по факту, а не на бумаге.
Что покупать?
5 ноября 2020 в 19:18
#
Егор Морозов
+1764
Опишите подробнее, что вы хотите узнать. Просто наушников на рынке много, так что описать возможности всех не получится в принципе.
5 ноября 2020 в 21:07
#
0
если брать beats solo3 wireless, на каком кодеке работают они ?
9 ноября 2020 в 14:41
#
Pavel Nikiforov
+694
AptX в 1988 году был придуман — чисто технически он древнее SBC.
Это для широкой публики его выкатили сравнительно недавно.
5 ноября 2020 в 19:39
#
Егор Морозов
+1764
Чисто технически aptX как беспроводной кодек появился в 2010 году, так что он свежее. В 1988 зарегистрирован apt-x как звуковой кодек.
5 ноября 2020 в 21:05
#
+36
Как-то очень мало внимание было уделено кодеку AAC, но всё равно спасибо за статью
5 ноября 2020 в 22:51
#
Егор Морозов
+1764
А про закрытый кодек много рассказать сложно. Что точно известно — имеет крутую психоакустическую модель, из-за чего при битрейте около 250 кбит/c (на iOS) субъективно выдает качество на уровне AptX или даже чуть лучше. Задержка опять же с iOS на уровне 170-190 мс. Поддержка кодека есть на macOS, iOS и Android, на Windows — через внешние ресиверы. Собственно, большую часть из этого в статье я написал, разбросав по разным пунктам.
6 ноября 2020 в 10:31
#
+2
В статье написано, что AAC популярен (и это так и есть). Но почему не написано про него?
6 ноября 2020 в 00:15
#
Евгений Дерябин
+6
Пользователи бт ушей глухие от природы и не смогут отличить даже 1411 от 320. Им вообще не важно, что вы тут пишете про какие-то биты килобиты. Эмпетришечка с контактека — это их предел знаний о звуке.
6 ноября 2020 в 08:32
#
Волошин Валерий
0
Заметят. Особенно заметят в машине. низкие битрейты в первую очередь обрезают объем и сцену. И если музыка чуть лучше чем "покинула чат" то это сразу будет заметно.
28 декабря 2020 в 13:57
#
+464
В итоге приходим, что для для домашнего дивана или игр провод вне конкуренции, ну а в метро можно и на компромисы пойти ради воздушной связи.
7 ноября 2020 в 23:32
#
Волошин Валерий
0
Для домашнего использования есть беспроводные наушники не bluetooth они передают весь поток как есть без сжатия, и задержки там в принципе отсутствуют.
Секрет таких наушников в мощных станциях которые питаются от сети (USB) и могут себе позволить мощность которая не доступна устройствам с батареями.
28 декабря 2020 в 13:59
#
Волошин Валерий
0
Для домашнего использования есть беспроводные наушники не bluetooth они передают весь поток как есть без сжатия, и задержки там в принципе отсутствуют.
Секрет таких наушников в мощных станциях которые питаются от сети (USB) и могут себе позволить мощность которая не доступна устройствам с батареями.
28 декабря 2020 в 13:59
#
Волошин Валерий
0
Хорошая статья, всё по делу описано.

На HABR была так же статья и на 4PDA была ветка, где автор делал патчи для телефонов на Android в результате поднимал bitpool (битрейт) для SBC кодека.

С битрейтом в 700 качество звука в автомобильной магнитоле нельзя было отличить от провода. На стандартном битрейте звук был зажат, о сцене и объеме даже речи не было.

Автор там даже нашёл комментарий в git андроида, в котором описано что ограничение по bitpool было заложено из за того что какая то магнитола BMW не могла воспроизводить с bitpool больше 53.
28 декабря 2020 в 13:54
#
Волошин Валерий
0
Единственное не плохо было бы раскрыть вопрос задержек для LC3.
Потому что даже 40 мс это большая задержка, например с такой задержкой на электрогитаре уже играть не получится, нужно хотя бы 10.

Так как она же не сама по себе в вакуме, есть задержки еще и самой системы ит.п. в итоге там задержка не 40 а +40
28 декабря 2020 в 13:56
#