Bluetooth кодеки: SBC, ААС, LDAC, LC3, кодек Samsung и Qualcomm
Потребительский мир постепенно переходит к беспроводной аудиоэкосистеме с беспроводными наушниками или наушниками, которые становятся предпочтительным выбором для людей. Все основные флагманские смартфоны также избавились от разъема для наушников. Поскольку Bluetooth поддерживает беспроводную связь, здесь мы говорим о кодеках Bluetooth.
Кодек Bluetooth определяет, как данные передаются с ваших устройств, таких как мобильный телефон или ноутбук, на наушники или наушники через Bluetooth. Прочтите эту статью, чтобы узнать о кодеках Bluetooth.
Прежде чем перейти к кодекам Bluetooth, давайте сначала разберемся с четырьмя основными аудио терминами.
Частота дискретизации
- Частота дискретизации — это количество точек данных, присутствующих в файле в каждую секунду. Это скорость, с которой частота аудиосигнала захватывается или сохраняется.
- Единицей частоты дискретизации является Герц.
- Минимальная используемая частота дискретизации составляет 44,1 кГц, а для звука высокого разрешения используется частота 96 кГц или более.
- Чем больше частота дискретизации, тем больше размер файла.
Битовая глубина
- Битовая глубина определяет количество битов, присутствующих в каждом звуковом образце. Он говорит нам о разрешении файла.
- Есть двухбитная глубина — 16 бит и 24 бит, а для звука высокого разрешения используется 24-битная глубина.
- Чем больше разрядность, тем больше размер файла.
Битрейт
- Количество битов, обрабатываемых или передаваемых в секунду, известно как скорость передачи данных. Измеряется в кбит/с или Мбит/с.
- Вы можете рассчитать битрейт, умножив частоту дискретизации и битовую глубину.
Диапазон подключения
- Диапазон подключения — это диапазон, в котором ваш сигнал Bluetooth прерывается из-за присутствия других сигналов, таких как радиосигналы, сигналы Wi-Fi или объекты, такие как стены или люди.
Зачем нужен кодек Bluetooth?
Каждый раз, когда вы слушаете аудио с помощью беспроводных наушников, звук передается с вашего устройства на наушники через Bluetooth. Звук на вашем устройстве находится в цифровом формате, и чтобы поделиться им с вашими гарнитурами, цифровая форма звука преобразуется в аналоговый формат, а затем передается в ваши наушники. Таким образом, музыка, которую вы слышите через наушники, имеет аналоговый формат.
Преобразование вашего аудио из цифрового в аналоговое происходит с помощью цифро-аналогового преобразователя, присутствующего в ваших устройствах.
Преобразование влияет на качество вашего звука, поэтому для поддержания качества требуются кодеки Bluetooth. Кодеки Bluetooth — это алгоритмы аудиокодеков, которые поддерживают качество звука при его преобразовании из цифровой формы в аналоговую.
6 основных групп кодеков Bluetooth
Собственные кодеки Qualcomm
Qualcomm является разработчиком многих беспроводных кодов, которые в основном используются в устройствах Android и улучшают качество музыки через Bluetooth. Смартфоны таких брендов, как Microsoft, LG используют кодеки Qualcomm. Устройства iOS не поддерживают кодеки Qualcomm.
Вот некоторые из ключевых кодеков Qualcomm.
- aptX — aptX — это алгоритм сжатия с потерями, который лучше, чем SBC. Android 4.4 или выше поддерживает кодек aptX. Он поддерживает 16-битные аудиофайлы и битрейт до 384 кбит/с.
- aptX HD — aptX HD — улучшенная версия кодека aptX. Он поддерживает 24-битные аудиофайлы с битрейтом до 576 кбит/с. aptX HD поддерживается Android 8 или выше.
- aptX LL — aptX LL — это кодек aptX с малой задержкой, обеспечивающий синхронизацию звука с видео или игрой. Он поддерживает 16-битный аудиофайл со скоростью передачи данных 350 кбит/с. Рабочий стол Windows поддерживает aptX LL. В настоящее время нет смартфонов, поддерживающих aptX LL.
LC3 означает коммуникационный кодек низкой сложности. Он также известен как кодек Low Energy Audio. LC3 был представлен на выставке CES 2020 и считается новым кодеком Bluetooth по умолчанию. Он обеспечивает многопотоковое аудио, то есть вы можете слушать разное аудио на левом и правом наушниках. Значительные улучшения были замечены в качестве звука, энергопотреблении и уровне задержки в кодеке LC3.
Масштабируемый кодек Samsung
Компания Samsung разработала масштабируемый кодек Samsung для наушников Samsung Galaxy Buds.
Этот кодек поддерживает широкий диапазон битрейтов. Лучшей особенностью этого кодека является то, что битрейт регулируется в соответствии с соединением Bluetooth для поддержания стабильности. Эта настройка может привести к ухудшению качества звука, однако соединение сохраняется.
Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах
Из-за массового выпуска смартфонов без аудиоразъема 3.5 мм беспроводные Bluetooth-наушники для многих стали основным способом прослушивания музыки и общения в режиме гарнитуры.
Производители беспроводных устройств не всегда пишут подробные характеристики товара, а статьи о Bluetooth-аудио в интернете противоречивы, местами некорректны, не рассказывают о всех особенностях, и часто копируют одну и ту же не соответствующую действительности информацию.
Попробуем разобраться с протоколом, возможностями Bluetooth-стеков ОС, наушников и колонок, Bluetooth-кодеков для музыки и речи, выясним, что влияет на качество передаваемого звука и задержку, научимся собирать и декодировать информацию о поддерживаемых кодеках и других возможностях устройств.
- SBC — нормальный кодек
- У наушников есть свой эквалайзер и пост-процессинг на каждый кодек отдельно
- aptX не настолько хорош, как о нём говорят рекламные анонсы
- LDAC — маркетинговое фуфло
- Качество звука в режиме разговора всё ещё низкое
- В браузер можно встроить аудиоэнкодеры на C, скомпилировав в WebAssembly через emscripten, и они не будут особо тормозить.
Музыка через Bluetooth
Функциональная составляющая Bluetooth задается профилями — спецификациями конкретных функций. Передача музыки в Bluetooth осуществляется с использованием профиля передачи высококачественного однонаправленного аудио A2DP. Стандарт A2DP был принят в 2003 году, и с тех пор кардинально не менялся.
В рамках профиля стандартизирован 1 обязательный кодек низкой вычислительной сложности SBC, созданный специально для Bluetooth, и 3 дополнительных. Также допускается использование недокументированных кодеков собственной реализации.
По состоянию на июнь 2019 года мы находимся в комиксе xkcd с 14 A2DP-кодеками:
- SBC ← стандартизирован в A2DP, поддерживается всеми устройствами
- MPEG-1/2 Layer 1/2/3 ← стандартизированы в A2DP: всем известный MP3, используемый в цифровом ТВ MP2, и неизвестный MP1
- MPEG-2/4 AAC ← стандартизирован в A2DP
- ATRAC ← старый кодек от Sony, стандартизирован в A2DP
- LDAC ← новый кодек от Sony
- aptX ← кодек из 1988 года
- aptX HD ← то же самое, что aptX, только с другими параметрами кодирования
- aptX Low Latency ←
совсем другой кодек, нет софтовой реализацииaptX с уменьшенным буфером - aptX Adaptive ← еще один кодек от Qualcomm
- FastStream ← псевдокодек, двунаправленная модификация SBC
- HWA LHDC ← новый кодек от Huawei
- Samsung HD ← поддерживается 2 устройствами
- Samsung Scalable ← поддерживается 2 устройствами
- Samsung UHQ-BT ← поддерживается 3 устройствами
Передача данных через Bluetooth
В Bluetooth существует два типа передачи данных: Asynchronous Connection Less (ACL) для асинхронной передачи без установки соединения, и Synchronous Connection Oriented (SCO), для синхронной передачи с предварительным согласованием соединения.
Передача осуществляется с использованием схемы разделения времени и выбора канала передачи на каждый пакет отдельно (Frequency-Hop/Time-Division-Duplex, FH/TDD), для чего время делится на 625-микросекундные интервалы, называемые слотами (slot). Одно из устройств ведет передачу в чётных номерах слотов, другое — в нечётных. Передаваемый пакет может занимать 1, 3 или 5 слотов, в зависимости от размера данных и установленного типа передачи, в этом случае передача одним устройством ведётся в чётных и нечетных слотах до конца передачи. Всего в секунду можно принять и отправить до 1600 пакетов, если каждый из них занимает 1 слот, и оба устройства без остановки что-то передают и принимают.
2 и 3 мбит/с для EDR, которые можно встретить в анонсах и на сайте Bluetooth, являются максимальной канальной скоростью передачи всех данных суммарно (включая технические заголовки всех протоколов, в которые нужно инкапсулировать данные), в двух направлениях одновременно. Фактическая скорость передачи данных будет сильно отличаться.
Для передачи музыки используется асинхронный способ, почти всегда с помощью пакетов типа 2-DH5 и 3-DH5, которые несут максимальное количество данных в режиме EDR 2 мбит/с и 3 мбит/с соответственно, и занимают 5 слотов временного разделения эфира.
Схематичное представление передачи с использованием 5 слотов одним устройством и 1 слота другим (DH5/DH1):
Из-за принципа разделения эфира по времени мы вынуждены ждать 625-микросекундный тайм-слот после передачи пакета, если второе устройство нам ничего не будет передавать или передает маленький пакет, и большее количество времени, если второе устройство ведёт передачу большими пакетами. Если к телефону подключено больше одного устройства (например, наушники, часы и фитнес-браслет), то время передачи разделяется между ними всеми.
Необходимость инкапсуляции аудио в специальные транспортные протоколы L2CAP и AVDTP забирает 16 байт от возможного максимального количества передаваемой полезной аудионагрузки.
Тип пакета | Кол-во слотов | Макс. кол-во байт в пакете | Макс. кол-во байт полезной нагрузки A2DP | Макс. битрейт полезной нагрузки A2DP |
---|---|---|---|---|
2-DH3 | 3 | 367 | 351 | 936 кбит/с |
3-DH3 | 3 | 552 | 536 | 1429 кбит/с |
2-DH5 | 5 | 679 | 663 | 1414 кбит/с |
3-DH5 | 5 | 1021 | 1005 | 2143 кбит/с |
1414 и 1429 кбит/с точно недостаточно для передачи несжатого звука в реальных условиях, с зашумленным диапазоном 2.4 ГГц и необходимостью передачи служебных данных. EDR 3 мбит/с требователен к мощности передачи и шумам в эфире, поэтому, даже в режиме 3-DH5, комфортная передача PCM невозможна, постоянно будут кратковременные прерывания, и всё будет работать только на расстоянии в пару метров.
На практике, даже 990 кбит/с-аудиопоток (LDAC 990 kbit/s) передаётся с трудом.
Вернёмся к кодекам.
Кодек, обязательный для всех устройств, поддерживающих стандарт A2DP. Лучший и худший кодек одновременно.
Частота дискретизации | Разрядность | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|---|
16, 32, 44.1, 48 кГц | 16 бит | 10-1500 кбит/с | Всеми устройствами | Всеми устройствами |
SBC — простой и вычислительно быстрый кодек, с примитивной психоакустической моделью (применяется только маскировка тихих звуков), использующий адаптивную импульсно-кодовую модуляцию (APCM).
Спецификация A2DP рекомендует к использованию два профиля: Middle Quality и High Quality.
Производители большинства наушников устанавливают максимальное значение параметра Bitpool в 53, что ограничивает битрейт 328 килобитами в секунду при использовании рекомендованного профиля.
Даже если производитель наушников установил максимальное значение Bitpool выше 53 (такие модели встречаются, например: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, также бывает на некоторых ресиверах и автомобильных головных устройствах), то большинство ОС не позволят использовать повышенные битрейты из-за установленного внутреннего ограничения значения в Bluetooth-стеках.
Кроме того, некоторые производители задают низкое максимальное значение Bitpool для некоторых устройств. Например, у Bluedio T оно равно 39, у Samsung Gear IconX — 37, что даёт плохое качество звука.
Искусственные ограничения со стороны разработчиков Bluetooth-стеков, вероятнее всего, возникли вследствие несовместимости некоторых устройств с большими значениями Bitpool или нетипичными профилями, даже если они сообщали об их поддержке, и недостаточном количестве тестов при сертификации. Авторам Bluetooth-стеков проще было ограничиться согласованием рекомендованного профиля, а не создавать базы некорректных устройств (хотя сейчас они это делают для других некорректно работающих функций).
SBC динамически выделяет биты квантования для частотных полос, действуя по принципу от нижних к верхним, с разными весовыми коэффициентами. Если весь битрейт использовался на нижние и средние частоты, верхние частоты «обрежутся» (вместо них будет тишина).
Пример SBC 328 кбит/с. Вверху — оригинал, внизу — SBC, периодически происходит переключение между дорожками. Для аудио в видеофайле используется кодек сжатия без потерь FLAC. Использование FLAC в контейнере mp4 официально не стандартизировано, поэтому не факт, что ваш браузер воспроизведет его, но должно работать в последних версиях десктопных Chrome и Firefox. Если у вас нет звука, можете скачать файл и открыть в полноценном видеоплеере.
ZZ Top — Sharp Dressed Man
На спектрограмме виден момент переключения: SBC периодически режет тихие звуки выше 17.5 кГц, и совсем не выделяет битов для полосы выше 20 кГц. Полная спектрограмма доступна по клику (1.7 МБ).
Я не слышу разницы между оригиналом и SBC на этом треке.
Возьмём что-нибудь новее, и смоделируем аудио, которое бы получилось при использовании наушников Samsung Gear IconX с Bitpool 37 (вверху — исходный сигнал, внизу — SBC 239 кбит/с, звук во FLAC).
Mindless Self Indulgence — Witness
Я слышу треск, меньший стереоэффект и неприятное «цоканье» вокала в высоких частотах.
Хоть SBC и очень гибкий кодек, может быть настроен под низкие задержки, даёт отличное качество аудио на высоких битрейтах (452+ кбит/с) и вполне хорошее для большинства людей на стандартном High Quality (328 кбит/с), из-за того, что стандарт A2DP не задает фиксированных профилей (а даёт только рекомендации), разработчики стеков установили искусственные ограничения на Bitpool, параметры передаваемого аудио не отображаются в пользовательском интерфейсе, а производители наушников вольны выставлять свои настройки и никогда не указывают значение Bitpool в технических характеристиках товара, кодек прославился низким качеством звука, хоть это и не проблема кодека как такового.
Параметр Bitpool прямо влияет на битрейт только в рамках одного профиля. Одно и то же значение Bitpool 53 может давать как битрейт 328 кбит/с при рекомендованном профиле High Quality, так и 1212 кбит/с с Dual Channel и 4 частотными полосами, из-за чего авторы ОС, помимо ограничений на Bitpool, устанавливают ограничение еще и на Bitrate. Как мне видится, такая ситуация возникла из-за недоработки стандарта A2DP: нужно было согласовывать битрейт, а не Bitpool.
Таблица поддержки возможностей SBC в разных ОС:
ОС | Поддерживаемые частоты дискретизации | Ограничение макс. Bitpool | Ограничение макс. Bitrate | Типичный Bitrate | Динамическая подстройка Bitpool |
---|---|---|---|---|---|
Windows 10 | 44.1 кГц | 53 | 512 кбит/с | 328 кбит/с | ✓* |
Linux (BlueZ + PulseAudio) | 16, 32, 44.1, 48 кГц | 64 (при входящем подключении), 53 (при исходящем) | Нет ограничения | 328 кбит/с | ✓* |
macOS High Sierra | 44.1 кГц | 64, по умолчанию 53*** | Неизвестно | 328 кбит/с | ✗ |
Android 4.4-9 | 44.1/48 кГц** | 53 | 328 кбит/с | 328 кбит/с | ✗ |
Android 4.1-4.3.1 | 44.1, 48 кГц** | 53 | 229 кбит/с | 229 кбит/с | ✗ |
Blackberry OS 10 | 48 кГц | 53 | Нет ограничения | 328 кбит/с | ✗ |
* Bitpool только уменьшается, но не увеличивается автоматически, в случае улучшения условий передачи. Для восстановления Bitpool нужно остановить воспроизведение, подождать пару секунд и заново запустить аудио.
** Значение по умолчанию зависит от настроек стека, указанных при компиляции прошивки. В Android 8/8.1 частота только либо 44.1 кГц, либо 48 кГц, в зависимости от настроек при компиляции, в остальных версиях поддерживаются 44.1 кГц и 48 кГц одновременно.
*** Значение Bitpool можно поднять в программе Bluetooth Explorer.
aptX и aptX HD
aptX — простой и вычислительно быстрый кодек, без психоакустики, использующий адаптивную дифференциальную импульсно-кодовую модуляцию (ADPCM). Появился примерно в 1988 году (дата подачи патента датирована февралём 1988 г.), до Bluetooth использовался преимущественно в профессиональной беспроводной аудиоаппаратуре, ISDN , кинотеатрах. На данный момент принадлежит компании Qualcomm, требует лицензирования и лицензионных отчислений. По состоянию на 2014 год: $6000 единовременно и ≈$1 за каждое устройство, для партий до 10000 устройств (источник, стр. 16).
aptX и aptX HD — один и тот же кодек, с разными профилями кодирования.
У кодека есть только один параметр — выбор частоты дискретизации. Ещё есть, правда, выбор количества/режима каналов, но во всех известных мне устройствах (70+ штук) поддерживается исключительно Stereo.
Кодек | Частота дискретизации | Разрядность | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|---|---|
aptX | 16, 32, 44.1, 48 кГц | 16 бит | 128 / 256 / 352 / 384 кбит/с (в зависимости от частоты дискретизации) | Windows 10 (десктопная и мобильная), macOS, Android 4.4+/7*, Blackberry OS 10 | Широким числом аудиоустройств (аппаратно) |
* Версии до 7 требуют модификации Bluetooth-стека. Кодек поддерживается, только если производитель Android-устройства лицензировал использование кодека у Qualcomm (если в ОС есть библиотеки кодирования).
aptX разделяет аудио на 4 частотных полосы и квантует их одним и тем же количеством бит постоянно: 8 бит для 0-5.5 кГц, 4 бита для 5.5-11 кГц, 2 бита для 11-16.5 кГц, 2 бита для 16.5-22 кГц (цифры для частоты дискретизации 44.1 кГц).
Пример aptX-аудио (вверху — исходный сигнал, внизу — aptX, спектрограммы только левых каналов, звук во FLAC):
Верхние частоты стали немного краснее, но разницы не слышно.
Из-за фиксированного распределения битов квантования, кодек не может «перенести биты» на те частоты, которые больше всего в них нуждаются. В отличие от SBC, aptX не будет «обрезать» частоты, а будет добавлять в них шумы квантования, уменьшая динамический диапазон аудио.
Не следует считать, что использование, например, 2 бит для полосы уменьшает динамический диапазон до 12 дБ: ADPCM позволяет использовать до 96 дБ динамического диапазона даже при использовании 2 бит квантования, но только при определенном сигнале.
ADPCM хранит разницу числового представления между текущим и следующим отсчетом, вместо записи абсолютного значения, как в PCM. Это позволяет уменьшить требования к количеству бит, необходимых для хранения такой же (без потерь) или практически такой же (с относительно небольшой ошибкой округления) информации. Для уменьшения ошибок округления применяются таблицы коэффициентов.
При создании кодека, авторы рассчитывали коэффициенты ADPCM на наборе музыкальных аудиофайлов. Чем ближе аудиосигнал к тому набору музыки, на которых строились таблицы, тем меньше ошибок квантования (шумов) создает aptX.
Из-за этого синтетические тесты всегда будут давать результат хуже, чем музыка. Я сделал специальный синтетический пример, на котором aptX показывает плохие результаты — синусоида частотой 12.4 кГц (вверху — исходный сигнал, внизу — aptX. Звук во FLAC. Уменьшите громкость!):
График спектра:
Отчетливо слышны шумы.
Однако, если сгенерировать синусоиду с меньшей амплитудой, чтобы она была тише, шумы также станут тише, что говорит о широком динамическом диапазоне:
Чтобы услышать разницу между оригинальным музыкальным треком и сжатым, можно инвертировать один из сигналов и сложить треки поканально. Такой подход, в общем случае, некорректен, и не давал бы вменяемого результата с более сложными кодеками, но конкретно для ADPCM вполне подходит.
Разница между оригиналом и aptX
Среднее квадратическое разницы сигналов находится на уровне -37.4 дБ, что не много для такой компрессированной музыки.
aptX HD
aptX HD не является самостоятельным кодеком — это улучшенный профиль кодирования кодека aptX. Изменения коснулись количества бит, отведённых для кодирования частотных диапазонов: 10 бит для 0-5.5 кГц, 6 бит для 5.5-11 кГц, 4 бита для 11-16.5 кГц, 4 бита для 16.5-22 кГц (цифры для 44.1 кГц).
Кодек | Частота дискретизации | Разрядность | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|---|---|
aptX HD | 16, 32, 44.1, 48 кГц | 24 бита | 192 / 384 / 529 / 576 кбит/с (в зависимости от частоты дискретизации) | Android 8+* | Некоторыми аудиоустройствами (аппаратно) |
* Версии до 7 требуют модификации Bluetooth-стека. Кодек поддерживается, только если производитель Android-устройства лицензировал использование кодека у Qualcomm (если в ОС есть библиотеки кодирования).
Менее распространён, чем aptX: по всей видимости, требует отдельного лицензирования у Qualcomm, и отдельных лицензионных отчислений.
Повторим пример с синусоидой на 12.4 кГц:
Гораздо лучше, чем с aptX, но всё равно шумновато.
aptX Low Latency
Low Latency-версия aptX не является самостоятельным кодеком, а отличается только настройками задержки и буферов, которые применяются на стороне аудиоустройства. В остальном это обычный aptX.
Кодек предназначен для интерактивной передачи аудио с низкой задержкой (фильмы, игры), там, где задержка звука не может подстраиваться программно. Софтовая реализация доступна в виде драйвера Dell для Bluetooth-чипов Intel. Также поддерживается трансмиттерами, ресиверами, наушниками и колонками, но не смартфонами.
Частота дискретизации | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|
44.1 кГц | 352 кбит/с | Windows 10 с драйвером Dell и некоторыми трансмиттерами (аппаратно) | Некоторыми аудиоустройствами (аппаратно) |
AAC, или Advanced Audio Coding — вычислительно сложный кодек, с серьезной психоакустической моделью. Получил широкое распространение для аудио в интернете, второе по популярности после MP3. Требует лицензирования и лицензионных отчислений: $15000 единовременно (или $1000 для компаний с менее 15 работниками) + $0.98 за первые 500000 устройств (источник).
Кодек стандартизирован в рамках спецификаций MPEG-2 и MPEG-4, и вопреки частому заблуждению, не принадлежит Apple.
Частота дискретизации | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|
8 — 96 кГц | 8 — 576 кбит/с (для стерео), 256 — 320 кбит/с (типичный для Bluetooth) | macOS, Android 7+*, iOS | Широким числом аудиоустройств (аппаратно) |
* только на устройствах, производители которых заплатили лицензионные отчисления
В iOS и macOS используется лучший на сегодняшний день кодировщик Apple AAC, обеспечивающий максимально возможное качество аудио. В Android используется второй по качеству кодировщик Fraunhofer FDK AAC, но могут использоваться различные аппаратные, встроенные в платформу (SoC), с неизвестным качеством кодирования. По недавним тестам сайта SoundGuys, качество кодирования AAC разными Android-телефонами сильно отличается:
У большинства беспроводных аудиоустройств для AAC установлен максимальный битрейт 320 кбит/с, некоторые поддерживают только 256 кбит\с. Остальные битрейты встречаются крайне редко.
AAC обеспечивает отличное качество на битрейтах 320 и 256 кбит/с, но подвержен потерям последовательного кодирования уже сжатого контента, однако, услышать какие-либо различия с оригиналом на iOS при битрейте 256 кбит/с сложно даже при при нескольких последовательных кодированиях, при одиночном кодировании, например, MP3 320 кбит/с в AAC 256 кбит/с потерями можно пренебречь.
Как и в случае с другими Bluetooth-кодеками, любая музыка сначала декодируется, затем кодируется кодеком. При прослушивании музыки в формате AAC она сначала декодируется средствами ОС, затем кодируется в AAC еще раз, для передачи по Bluetooth. Это необходимо для микширования нескольких аудиопотоков, например, музыки и уведомления о новом сообщении. iOS — не исключение. В интернете можно найти множество утверждений о том, что на iOS музыка в формате AAC не транскодируется при передаче через Bluetooth, что неверно.
В стандарте AAC есть множество расширений стандартного метода кодирования. Одно из них — Scalable To Lossless (SLS) — стандартизировано для Bluetooth и позволяет передавать аудио без потерь (lossless). Увы, на реальных устройствах поддержка расширения не встречается. Расширение для уменьшение задержки передачи AAC-LD (Low Delay) не стандартизировано для Bluetooth.
MP1/2/3
Кодеки семейства MPEG-1/2 Part 3 состоят из известного и широкоиспользуемого MP3, менее распространённого MP2 (применяется преимущественно в цифровом ТВ и радио), и совсем неизвестного MP1.
Старые кодеки MP1 и MP2 не поддерживаются совсем: мне не удалось найти ни одни наушники и ни один Bluetooth-стек, который бы кодировал или декодировал их.
Декодирование MP3 поддерживается некоторыми наушниками, но кодирование не поддерживается ни в одном стеке современных операционных систем. Вроде бы, сторонний стек BlueSoleil для Windows может кодировать в MP3, если вручную изменить файл конфигурации, но у меня его установка приводит к BSoD на Windows 10. Вывод — кодеком фактически нельзя пользоваться для Bluetooth-аудио.
Раньше, в 2006-2008 годах, до распространения стандарта A2DP в устройствах, люди слушали MP3-музыку на гарнитуре Nokia BH-501 через программу MSI BluePlayer, которая была доступна на Symbian и Windows Mobile. В то время архитектура ОС смартфонов позволяла получать доступ ко многим низкоуровневым функциям, а на Windows Mobile и вовсе можно было устанавливать сторонние Bluetooth-стеки.
Последний патент кодека MP3 истёк, использование кодека не требует лицензионных отчислений с 23 апреля 2017 года.
Частота дискретизации | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|
16 — 48 кГц | 8 — 320 кбит/с | Нигде не поддерживается | Некоторыми аудиоустройствами (аппаратно) |
Новый и активно продвигаемый «Hi-Res»-кодек от Sony, поддерживающий частоты дискретизации до 96 кГц и 24-битовую разрядность, с битрейтом до 990 кбит/с. Рекламируется в качестве аудиофильского кодека, как замена существующим Bluetooth-кодекам. Имеет функцию адаптивной подстройки битрейта, в зависимости от условий радиоэфира.
Энкодер LDAC (libldac) входит в стандартную поставку Android, поэтому кодирование поддерживается на любом Android-смартфоне, начиная с 8 версии ОС. Программные декодеры в свободном доступе отсутствуют, спецификация кодека недоступна широкой публике, однако, по первому взгляду на энкодер, внутреннее устройство схоже с ATRAC9 — кодеком от Sony, используемом в PlayStation 4 и Vita: оба работают в частотном диапазоне, используют модифицированное дискретное косинус-преобразование (MDCT) и сжатие с применением алгоритма Хаффмана.
LDAC использует разделение на 12 или 16 частотных полос: 12 используется для 44.1 и 48 кГц, 16 — для 88.2 и 96 кГц.
Поддержка LDAC представлена практически только наушниками от Sony. Возможность декодирования LDAC иногда встречается на наушниках и ЦАП других производителей, но очень редко.
Частота дискретизации | Битрейт | Поддержка кодирования | Поддержка декодирования |
---|---|---|---|
44.1 — 96 кГц | 303/606/909 кбит/с (для 44.1 и 88.2 кГц), 330/660/990 кбит/с (для 48 и 96 кГц) | Android 8+ | Некоторыми наушниками Sony и единичными устройствами других производителей (аппаратно) |
Маркетинг LDAC в качестве Hi-Res-кодека вредит его технической составляющей: глупо расходовать битрейт на передачу не слышимых человеческим ухом частот и повышенную разрядность, покуда его не хватает для передачи CD-качества (44.1/16) без потерь. К счастью, у кодека есть два режима работы: передача CD-аудио и передача Hi-Res-аудио. В первом случае по воздуху передаётся только 44.1 кГц/16 бит.
Так как программного декодера LDAC нет в свободном доступе, протестировать кодек без дополнительных устройств, раскодирующих LDAC, невозможно. По результатам теста LDAC на ЦАП с его поддержкой, который подключили инженеры сайта SoundGuys.com через цифровой выход и записали выдаваемый звук на тестовых сигналах, LDAC 660 и 990 кбит/с в режиме CD-качества обеспечивает соотношение сигнал/шум немногим лучше такового у aptX HD. Это хороший результат.
Источник: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026
LDAC также поддерживает динамический битрейт вне установленных профилей — от 138 кбит/с до 990 кбит/с, но, насколько могу судить, в Android используются только стандартизированные профили 303/606/909 и 330/660/990 кбит/с.
Прочие кодеки
Другие A2DP-кодеки не получили широкого распространения. Их поддержка либо практически полностью отсутствует, либо имеется только на определенных моделях наушников и смартфонов.
Стандартизированный в A2DP кодек ATRAC ни разу не использовался в качестве Bluetooth-кодека даже самими Sony, кодеки Samsung HD, Samsung Scalable и Samsung UHQ-BT имеют очень ограниченную поддержку со стороны передающих и получающих устройств, а HWA LHDC — слишком новый, и поддерживается всего тремя(?) устройствами.
Поддержка кодеков аудиоустройствами
Не все производители публикуют точную информацию о кодеках, которые поддерживают те или иные беспроводные наушники, колонки, ресиверы или трансмиттеры. Иногда бывает так, что поддержка определённого кодека есть только на передачу, но не на приём (актуально для комбинированных трансмиттеров-ресиверов), хотя производитель заявляет просто о «поддержке», без примечаний (предполагаю, в этом виновато раздельное лицензирование энкодеров и декодеров некоторых кодеков). В самых дешевых устройствах можно вовсе не обнаружить заявленную поддержку aptX.
К сожалению, в интерфейсах большинства ОС нигде не отображается используемый кодек. Информация об этом есть только в Android, начиная с 8 версии, и macOS. Однако, даже в этих ОС будут отображаться только те кодеки, которые поддерживает как телефон/компьютер, так и наушники.
Как же узнать, какие кодеки поддерживает устройство? Самый надежный вариант — записать и проанализировать дамп трафика с параметрами согласования A2DP!
Сделать это можно в Linux, macOS и Android. В Linux можно воспользоваться Wireshark или hcidump, в macOS — Bluetooth Explorer, а в Android — штатной функцией сохранения Bluetooth HCI-дампа, которая доступна в инструментах разработчика. Вы получите дамп в формате btsnoop, который можно загрузить в анализатор Wireshark.
Обратите внимание: корректный дамп можно получить только подключившись с телефона/компьютера к наушникам/колонке (как бы курьёзно это ни звучало)! Наушники могут самостоятельно устанавливать соединение с телефоном, и в этом случае они будут запрашивать список кодеков у телефона, а не наоборот. Чтобы гарантированно записать корректный дамп, сначала разорвите сопряжение с устройством, а затем, во время записи дампа, сопрягите телефон с наушниками.
Используйте следующий фильтр отображения, чтобы отсеять нерелевантный трафик:
В результате вы должны увидеть что-то похожее:
На каждом пункте команды GetCapabilities можно нажать, и посмотреть подробные характеристики кодека.
Wireshark знает не все идентификаторы кодеков, поэтому часть кодеков придётся расшифровывать вручную, смотря в таблицу идентификаторов ниже:
Узнать, поддерживает ли ваше устройство скорости передачи EDR 3 мбит/с, можно фильтром:
Чтобы не анализировать дампы вручную, я сделал сервис, который проанализирует всё автоматически: btcodecs.valdikss.org.ru
Для Windows есть простая но полезная утилита Bluetooth Tweaker, которая, в числе прочего, показывает текущий и поддерживаемые кодеки.
В Linux также можно воспользоваться программой avinfo, входящей в состав BlueZ.
Сравнение кодеков. Какой кодек лучше?
У каждого кодека есть свои преимущества и недостатки.
aptX и aptX HD используют жестко заданные профили, которые нельзя изменить без модификации энкодера и декодера. Ни производитель телефона, ни производитель наушников не в силах изменить битрейт или коэффициенты кодирования aptX. Владелец кодека, Qualcomm, выдаёт референсный энкодер в виде библиотеки. Эти факты — сильная сторона aptX — вы наперед знаете, какого качества звук вы получите, без каких-либо «но».
SBC, напротив, имеет множество настраиваемых параметров, динамический битрейт (энкодер может уменьшать параметр bitpool, если радиоэфир загружен), и не имеет жестко заданных профилей, а только рекомендуемые «среднее качество» и «высокое качество», которые добавили в спецификацию A2DP в 2003 году. «Высокое качество» уже не такое высокое по современным меркам, а большинство Bluetooth-стеков не позволяют использовать параметры лучше, чем в профиле «высокое качество», хоть технические ограничения для этого отсутствуют.
Bluetooth SIG не имеет референсного энкодера SBC в виде библиотеки, и производители реализуют его самостоятельно.
Это — слабые стороны SBC — никогда наперед не ясно, какого качества звука ожидать от конкретного устройства. SBC может выдавать как низкое, так и очень высокое качество звука, но последнее недостижимо без отключения или обхода искуственных ограничений Bluetooth-стеков.
Ситуация с AAC неоднозначная: с одной стороны, теоретически кодек должен выдавать качество, неотличимое от оригинала, но практикой, судя по тестам лаборатории SoundGuys на разных Android-устройствах, это не подтверждается. Вероятнее всего, вина на низкокачественных аппаратных аудиоэнкодерах, встроенных в различные чипсеты телефонов. Имеет смысл использовать AAC только на устройствах Apple, а на Android ограничиться aptX и LDAC.
Аппаратура, поддерживающая альтернативные кодеки, как правило, более высокого качества, просто потому, что для совсем дешевых низкокачественных устройств не имеет смысла платить лицензионные отчисления для использования этих кодеков. По моим тестам, SBC звучит очень хорошо на качественной аппаратуре.
Я сделал веб-сервис, кодирующий аудио в SBC, aptX и aptX HD в реальном времени, прямо в браузере. С помощью него вы сможете тестировать эти аудиокодеки без фактической передачи аудио по Bluetooth, на любых проводных наушниках, колонках, и вашей любимой музыке, а также изменять параметры кодирования прямо во время воспроизведения аудио:
btcodecs.valdikss.org.ru/sbc-encoder
Сервис использует библиотеки кодирования SBC из проекта BlueZ и libopenaptx из ffmpeg, которые скомпилированы в WebAssembly и JavaScript из C, через emscripten, для выполнения в браузере. Кто мог мечтать о таком будущем!
Вот как это выглядит:
Обратите внимание, как меняется уровень шума после 20 кГц у разных кодеков. В оригинальном MP3-файле частоты выше 20 кГц отсутствуют.
Попробуйте попереключать кодеки и оценить, слышите ли вы разницу между оригиналом, SBC 53 Joint Stereo (стандартный и наиболее распространенный профиль), и aptX/aptX HD.
Я слышу разницу между кодеками в наушниках!
Люди, которые не слышат разницы между кодеками во время тестирования через веб-сервис, уверяют, что слышат её при прослушивании музыки в беспроводных наушниках. Увы, это не прикол и не эффект плацебо: разница действительно слышна, однако вызвана она не отличиями кодеков.
Конвеер обработки звука DSP Kalimba в чипах производства CSR/Qualcomm
Активация различных функций DSP для каждого кодека и выхода отдельно
Некоторые устройства премиального сегмента комплектуются программой, позволяющей настраивать параметры DSP, но большинство более дешевых наушников не имеют такой возможности, и пользователи не могут отключить пост-процессинг звука штатными средствами.
Функциональные особенности устройств
Современная версия стандарта A2DP имеет функцию «абсолютной регулировки громкости» — управление громкостью устройства специальными командами протокола AVRCP, которое регулирует усиление выходного каскада, вместо программного уменьшения громкости аудиопотока. Если при изменении громкости на наушниках, изменение не синхронизируется с громкостью на телефоне, то это означает, что ваши наушники или телефон не поддерживают эту функцию. В таком случае, имеет смысл слушать музыку всегда с максимальной громкостью на телефоне, регулируя фактическую громкость кнопками наушников — в этом случае соотношение сигнал/шум будет лучше, и качество аудио должно быть выше.
В реальности же бывают печальные ситуации. На моих наушниках RealForce OverDrive D1 для SBC включен сильный компандер, и увеличение громкости приводит к повышению уровня тихих звуков, а громкость громких звуков при этом не меняется (происходит компрессия сигнала). Из-за этого приходится устанавливать громкость на компьютере примерно в половину, в этом случае эффекта компрессии практически нет.
По моим наблюдениям, все наушники с дополнительными кодеками поддерживают функцию абсолютной регулировки громкости, видимо, это одно из требований для сертификации кодеков.
Некоторые наушники поддерживают подключение двух устройств одновременно. Это позволяет, например, слушать музыку с компьютера и принимать звонки с телефона. Однако следует знать, что в этом режиме отключаются альтернативные кодеки, и используется только SBC.
Функция AVDTP 1.3 Delay Reporting позволяет наушникам сообщать задержку передающему устройству, с которой фактически воспроизводится звук. Это позволяет подстраивать синхронизацию аудио с видео в время просмотра видеофайлов: при проблемах с передачей по радиоэфиру, аудио не будет отставать от видео, а наоборот, видео будет тормозиться видеоплеером, пока аудио и видео снова не синхронизируются.
Функция поддерживается многими наушниками, Android 9+ и Linux с PulseAudio 12.0+. О поддержке функции на других платформах мне неизвестно.
Двунаправленная связь через Bluetooth. Передача голоса.
Для передачи голоса в Bluetooth используется Synchronous Connection Oriented (SCO) и его улучшенная версия Enhanced Synchronous Connection Oriented (eSCO) — синхронная передача с предварительным согласованием соединения. Режим позволяет передавать звук и голос строго по порядку, с симметричной скоростью отправки и приёма, без ожидания подтверждения передачи и переотправки пакетов. Это понижает общую задержку передачи аудио через радиоканал, но накладывает серьёзные ограничения на количество передаваемых данных за единицу времени и отрицательно сказывается на качестве аудио.
Когда используется этот режим, и голос с микрофона, и аудио в наушники передаются с одинаковым качеством.
Передача самих данных стандаризирована профилем HSP, также описывающим дополнительные функции, вроде работы кнопок регулировки громкости, поднятия трубки и отбоя.
К сожалению, по состоянию на 2019 год, качество передачи речи через Bluetooth всё ещё низкое, и непонятно, почему Bluetooth SIG с этим ничего не делает.
Дополнительный кодек mSBC был стандартизирован в 2009 году, а в 2010 уже появились чипы, использующие его для передачи голоса. mSBC широко поддерживается различными устройствами.
Это не самостоятельный кодек, а обычный SBC из стандарта A2DP, с фиксированным профилем кодирования: 16 кГц, моно, bitpool 26.
Не блеск, но гораздо лучше, чем CVSD, однако всё ещё неприятно использовать его для общения через интернет, особенно, когда вы используете наушники для общении в игре — звук игры тоже будет передаваться с частотой дискретизации в 16 кГц.
FastStream
Компания CSR решила развить идею переиспользования SBC. Чтобы обойти ограничения протокола SCO и использовать более высокие битрейты, CSR пошли другим путём — внедрили поддержку двустороннего SBC-аудио в стандарт передачи одностороннего аудио A2DP, стандартизировали профили кодирования, и назвали это «FastStream».
FastStream передает в динамики стереозвук 44.1 или 48 кГц с битрейтом в 212 кбит/с, а для передачи аудио с микрофона используется моно, 16 кГц, с битрейтом 72 кбит/с (чуть лучше, чем у mSBC). Такие параметры гораздо лучше подходят для общения в онлайн-играх — звук игры и собеседников будет качественный.
Компания придумала интересный костыль, но из-за того, что он противоречит стандарту A2DP, его поддержка есть только в некоторых трансмиттерах компании (которые работают как USB-аудиокарта, а не Bluetooth-устройство), но поддержки в Bluetooth-стеках он не получил, хотя количество наушников с поддержкой FastStream не такое уж и малое.
На данный момент поддержка FastStream в ОС есть только в виде патча для Linux’ового PulseAudio от разработчика Pali Rohár, который не включён в основную ветку программы.
aptX Low Latency
К большому удивлению, aptX Low Latency тоже поддерживает двунаправленное аудио, реализуя такой же принцип, как у FastStream.
Использовать эту особенность кодека не получится нигде — поддержки декодирования Low Latency нет ни в одной ОС и ни в одном известном мне Bluetooth-стеке.
Bluetooth 5, Classic и Low Energy
Вокруг спецификаций и версий Bluetooth возникла большая путаница из-за наличия двух несовместимых стандартов под одним брендом, оба из которых широко применяются для разных целей.
Существует два разных, не совместимых между собой протокола Bluetooth: Bluetooth Classic и Bluetooth Low Energy (LE, он же Bluetooth Smart). Ещё есть третий протокол, Bluetooth High Speed, но он не распространён, и не используется в бытовых устройствах.
Начиная с Bluetooth 4.0, изменения в спецификации касались преимущественно Bluetooth Low Energy, а Classic-версия получала только незначительные улучшения.
Список изменений между Bluetooth 4.2 и Bluetooth 5:
9.1 NEW FEATURES
Several new features are introduced in the Bluetooth Core Specification 5.0 Release. The major areas of improvement are:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY for LE
• LE Long Range
• High Duty Cycle Non-Connectable Advertising
• LE Advertising Extensions
• LE Channel Selection Algorithm #2
9.1.1 Features Added in CSA5 — Integrated in v5.0
• Higher Output Power
Только одно изменение коснулось Classic-версии в рамках спецификации Bluetooth 5: добавили поддержку технологии Slot Availability Mask (SAM), призванную улучшить разделение радиоэфира. Все остальные изменения затрагивают только Bluetooth LE (и Higher Output Power тоже).
Все аудиоустройства используют только Bluetooth Classic. Наушники и колонки подключить через Bluetooth Low Energy невозможно: не существует стандарта передачи аудио с использованием LE. Стандарт A2DP, применяемый для передачи высококачественного аудио, работает только через Bluetooth Classic, и аналога в LE ему не существует.
Вывод — приобретать аудиоустройства с Bluetooth 5 только из-за новой версии протокола бессмысленно. Bluetooth 4.0/4.1/4.2 в контексте передачи аудио будет работать точно так же.
Если анонс новых наушников упоминает удвоенный радиус работы и уменьшенное энергопотребление благодаря Bluetooth 5, то знайте — они либо сами не разбираются, либо вводят вас в заблуждение. Немудрено, ведь даже производители Bluetooth-чипов в своих анонсах путаются в отличиях новой версии стандарта, а некоторые Bluetooth 5-чипы поддерживают пятую версию только для LE, а для Classic используют 4.2.
Задержка передачи аудио
Величина задержки (запаздывания) аудио зависит от многих факторов: размера буфера в аудиостеке, в Bluetooth-стеке и в самом воспроизводящем беспроводном устройстве, алгоритмической задержки кодека.
Задержка простых кодеков, вроде SBC, aptX и aptX HD, совсем небольшая, и составляет 3-6 мс, чем можно пренебречь, но комплексные кодеки, вроде AAC и LDAC, могут давать ощутимое запаздывание. Алгоритмическая задержка AAC для 44.1 кГц составляет 60 мс. LDAC — около 30 мс (по грубому анализу исходного кода. Могу ошибаться, но не сильно.)
Итоговая задержка сильно зависит от воспроизводящего устройства, его чипсета и буфера. Во время тестов я получил разброс от 150 до 250 мс на разных устройствах (с кодеком SBC). Если предположить, что устройства с поддержкой дополнительных кодеков aptX, AAC и LDAC используют качественные компоненты и маленький размер буфера, то получим следующие типичные задержки:
SBC: 150-250 мс
aptX: 130-180 мс
AAC: 190-240 мс
LDAC: 160-210 мс
Напоминаю: aptX Low Latency не поддерживается в операционных системах, из-за чего меньшую задержку можно получить только связкой трансмиттер+ресивер или трансмиттер+наушники/колонка, причём все устройства должны поддерживать этот кодек.
Проблемы устройств, сертификации и логотипов Bluetooth
Как отличить качественное аудиоустройство от дешёвой поделки? По внешнему виду, прежде всего!
- Отсутствует слово «Bluetooth» на коробке и устройстве, чаще всего используется «Wireless» и «BT»
- Отсутствует логотип Bluetooth на коробке или устройстве
- Нет синего мигающего светодиода
Рассмотрим несколько устройств и коробок от них:
Это всё — несертифицированные устройства. В инструкции может быть логотип и название технологии Bluetooth, но самое главное — чтобы они были на коробке и/или самом устройстве.
Если ваши наушники или колонка говорят «Ze bluetooth dewise is connecteda successfulle», это тоже не говорит об их качестве:
Заключение
Способен ли Bluetooth полностью заменить проводные наушники и гарнитуры? Способен, но ценой низкого качества в режиме разговора, увеличенной задержкой передачи звука, которая может раздражать в играх, и множества проприетарных кодеков, требующих лицензионных отчислений и увеличивающих конечную стоимость как смартфонов, так и наушников.
Маркетинг альтернативных кодеков очень сильный: aptX и LDAC представляют в виде долгожданной замены «устаревшего и плохого» SBC, который далеко не так плох, как о нём принято думать.
Как выяснилось, искусственные ограничения Bluetooth-стеков на битрейт SBC можно обойти, так, что SBC не будет уступать aptX HD. Я взял инициативу в свои руки и сделал патч для прошивки LineageOS: Модифицируем Bluetooth-стек для улучшения звука на наушниках без кодеков AAC, aptX и LDAC
Больше информации можно найти на сайтах SoundGuys и SoundExpert.
Бонус: референсный энкодер SBC, информация о битстриме A2DP и тестовые файлы. Этот файл раньше был выложен на сайте Bluetooth публично, но теперь он доступен только для вступивших в Bluetooth SIG.
Дополнительная статья: Bluetooth LC-SBC and SBC-HBR Explained от Ken Laberteaux.
Bluetooth-кодеки и беспроводной звук на смартфоне для «чайников»
TWS-наушники захватывают рынок, словно эпидемия, и с переходом на беспроводной звук у людей появляется масса вопросов, ответы на которые приходится выискивать по всему интернету. Но интернет, к сожалению, бывает разным и нередко сайты перепечатывают одну и ту же недостоверную информацию, которая лишь сбивает с толку.
Кто-то называет кодек SBC мусором, не пригодным даже для прослушивания музыки в шумном метро, другие считают «айфоновский» кодек AAC лучшим изобретением человечества, а популярный кодек LDAC от Sony — маркетинговой ерундой, не заслуживающей никакого внимания.
В этой статье я постараюсь максимально просто и в то же время подробно ответить на все популярные вопросы касательно Bluetooth-кодеков и беспроводного звука.
Надеюсь, будет интересно и познавательно!
Что вообще такое Bluetooth-кодеки и какое отношение они имеют к звуку?
Само слово кодек — это акроним, образованный от двух слов: кодировщик и декодировщик. Собственно, Bluetooth-кодек — это программа (алгоритм), которая может закодировать информацию, уменьшив ее размер, а затем раскодировать для воспроизведения.
Существует множество различных Bluetooth-кодеков. Одни позволяют передавать больше данных в секунду (имеют более высокий битрейт), другие не требуют серьезных вычислений при кодировании/декодировании файла, что хорошо влияет на время автономной работы устройств. Отличается и сам алгоритм сжатия аудиофайлов. На сегодняшний день самыми популярными Bluetooth-кодеками являются:
- SBC
- AAC
- aptX (LL, Adaptive, HD)
- LDAC
- HWA
- Samsung Scalable
Работают кодеки следующим образом. Вы запускаете на своем смартфоне музыку в любом формате (mp3/aac/flac) или потоковый сервис (например, YouTube Music). Смартфон раскодирует эти данные, а затем снова кодирует их при помощи Bluetooth-кодека и отправляет закодированный сигнал на наушники.
Наушники декодируют (расшифровывают) тем же кодеком полученные данные, обрабатывают их и преобразовывают в аналоговый сигнал, заставляя динамики наушников вибрировать, создавая тем самым звуки.
Чтобы все это работало, наушники должны поддерживать тот же кодек, что и смартфон, иначе они не смогут раскодировать полученные данные.
Не важно, в каком формате хранится ваша музыка (mp3, flac, wav), смартфон в любом случае ее предварительно раскодирует, а затем снова закодирует перед отправкой по Bluetooth.
Например, если вы слушаете .aac файл на iPhone в наушниках AirPods (эти устройства превосходно работают с кодеком AAC), смартфон все равно вначале декодирует оригинальный AAC-файл, а затем повторно закодирует его в AAC кодек. При этом, качество звука может незначительно снизиться.
Это хорошо заметно на тестовом графике от SoundGuys, в котором они сравнили эталонный AAC-файл с тем, что смартфоны отправили на наушники, используя свои AAC-кодеки:
Для тех, кто не понимает, что здесь изображено, просто скажу, что iPhone удалил в оригинальном AAC-файле часть информации о звуке (начиная с 19000 Гц). На других смартфонах ситуация гораздо хуже, но об этом поговорим позже.
А можно я просто куплю наушники, не загружая себе всем этим голову?
Проблема в том, что на рынке нет ни одной модели Bluetooth-наушников и ни одного смартфона, которые бы поддерживали сразу все кодеки. Например:
- Любой iPhone официально поддерживает только два кодека: AAC и SBC
- Кодек Samsung Scalable работает только на устройствах от Samsung
- Современные смартфоны от Huawei не работают с кодеками aptX и aptX HD
Более того, очень многие устройства поддерживают минимум два кодека и если вы будете понимать, что они из себя представляют, то сможете выбрать наиболее подходящий.
И есть еще одна причина, по которой было бы, все же, неплохо разобраться в этом вопросе. Начитавшись «желтой прессы» (техноблогеров), многие увидели в кодеке aptX спасение и считают его залогом божественного звука. Этим, естественно, сразу же воспользовались производители, наводнив рынок копеечными наушниками с отвратительным звуком, но зато с поддержкой заветного aptX.
Поэтому предлагаю продолжить наш разговор, чтобы не попадаться на все эти уловки.
Влияет ли Bluetooth-кодек на качество звука? Или несколько слов о том, как кодируется звук и что именно теряется при сжатии
С одной стороны, кодек действительно влияет на звучание. Более того, чем вы моложе — тем сильнее это влияние. И дело здесь не в юношеском максимализме или самовнушении (хотя, последний фактор может играть значительную роль), а в том, что закодированный файл теряет часть информации о звуке.
Все перечисленные выше кодеки сжимают звук с потерями. Однако не следует бояться слова потеря, так как потерять можно не только полезную, но и совершенно бесполезную информацию.
Так, что же удаляют кодеки с оригинальной записи? Гитарную партию или, может, бэк-вокал?
Думаю, многие знают о том, что человек способен слышать звуки в диапазоне от 20 Гц до 20 кГц. Причем верхняя граница очень сильно зависит от возраста. Для среднестатистического человека следующая таблица показывает приблизительный предел слышимости:
Соответственно, все, что находится под линией порога слышимости, можно смело удалять из файла.
Но и это еще не все! Оказывается, одни звуки могут легко скрывать другие. Например, если вы будете говорить спокойным голосом возле проезжающего поезда, ваш собеседник будет слышать только звук поезда. В этом случае, поезд скрывает (маскирует) голос.
Получается, громкий звук на определенной частоте оказывает маскирующий эффект на ближайшие частоты. Например, громкий звук на частоте 250 Гц будет оказывать определенное влияние на все остальные звуки в диапазоне от 60 до 1000 Гц. И если другой звук в этом диапазоне будет не достаточно громким (ниже границы маскировки), вы его никак не услышите:
Значит, при кодировании удаляем и все эти звуки! То есть, кодек удаляет даже то, что мы могли прекрасно услышать, если бы «по соседству» не оказался громкий маскирующий звук.
Более того, когда этот громкий звук исчезает, мы не мгновенно начинаем различать то, что было «скрыто». В зависимости от частоты и громкости, время маскировки может длиться еще 100 мс. Разумеется, кодек подчистит и всю информацию в этом промежутке времени.
Получается, мы удалили столько данных, а разницу практически никто не услышит! Все это называется психоакустическим сжатием.
Но это еще не конец истории. Дело в том, что при записи (скажем, на студии), мы преобразовываем звук в электрическое напряжение. Чем громче звук — тем выше напряжение. Чтобы оцифровать это напряжение (аналоговый сигнал), нам просто нужно непрерывно (очень часто) записывать значение напряжения и сохранять его в виде чисел.
Например, если громкость звука определенной частоты нарастает, мы можем оцифровать его, условно записав такие значения: 765, 767, 770, 800 и так далее.
Но когда Bluetooth-кодек кодирует и сжимает звук, вместо больших чисел он может просто сохранять разницу между значениями. Незачем хранить числа 765, 767, 770 и 800, если можно просто сохранить начальное значение (765) и дальше записать разницу между последующими числами: 2 (767-765), 3 (770-767) и 30 (800-770).
Для CD-качества мы делаем такие замеры и записи более 44 тысяч раз в секунду. Но не забывайте, что звук-то у нас стерео, а значит, нужно отдельно записывать все значения с такой частотой для правого и левого наушника. Используя описанный алгоритм и сохраняя лишь разницу, мы можем немного сжать файл (называется такой метод дифференциальной импульсно-кодовой модуляцией).
Но даже это еще не полная картина. Так как все значения записываются в виде нулей и единичек, можно присвоить длинным последовательностям бит — короткие коды. Например, заменять 00000000 на 00, а 00000001 на 01. Чем чаще какая-то последовательность встречается, тем более короткий код для нее выбираем. Такой метод называется кодом Хаффмана.
И на этом я, пожалуй, остановлюсь, сделав следующий вывод:
Не всегда низкий битрейт означает худшее качество, равно как и увеличение битрейта далеко не всегда улучшает качество звука
Для сравнения, кодек AAC с битрейтом 256 кбит/с выдает качество, аналогичное MP3 с битрейтом 320 кбит/с, так как имеет более сложный и эффективный алгоритм сжатия.
К слову, если вы не знаете, что такое битрейт, то это просто количество данных, передаваемых за одну секунду. Именно снижение битрейта является главной задачей любого Bluetooth-кодека, так как его пропускная способность довольно сильно ограничена.
Выше я говорил, что для эталонного CD-качества нужно более 44 тысяч раз в секунду (44.1 кГц) записывать значение напряжения (громкость звука), используя 16 бит для хранения значений. В этом случае, очень легко посчитать битрейт такой записи, просто умножив 16 на 44.1.
Получается 705.6 кбит/с, но так как у нас стерео-звук, нужно еще умножить это число на два (для левого и правого наушника отдельно), что дает битрейт 1411 кбит/с (705.6*2).
Именно такой битрейт требуется для передачи максимально качественного звука без малейших потерь (CD-Audio). Сравните это с битрейтом популярных кодеков:
Как видим, Huawei обрезает все звуки при кодировании в AAC после 14.2 кГц, что будет заметно любому слушателю. Samsung уничтожает в AAC все, что выше 17 кГц, а вот iPhone кодирует звук вплоть до 19 кГц, что является лучшим показателем среди всех смартфонов (если мы говорим об AAC-кодеке).
Более того, нужно учитывать и то, как именно смартфон кодирует звук. Дело в том, что AAC — наиболее требовательный к ресурсам кодек, потому что он использует самую продвинутую психоакустическую модель. А в Android-смартфонах обработка звука не наделена важнейшим приоритетом, из-за чего возрастает задержка звука при передаче на наушники.
Задержка звука или latency — это промежуток времени, прошедший с момента появления звука до того, как вы его услышите. При прослушивании музыки это не играет особой роли, но вот при просмотре фильмов или во время игр, задержка может очень сильно испортить весь процесс.
Хуже всего то, что от кодека задержка зависит не очень сильно, а основное влияние оказывает сам смартфон. Это хорошо видно на следующем графике, где сравнивается задержка звука (в миллисекундах) на разных смартфонах с разными кодеками:
Как видим, на смартфоне Google Pixel 3 XL разница между кодеками не превышает 100 мс, причем, кодек AAC дает самую большую задержку из-за своей вычислительной сложности. Примерно такая же ситуация наблюдается и во всех остальных случаях, то есть, кодек влияет не так сильно. Но если сравнивать задержку звука между смартфонами, можно получить разницу в 300 мс!
Для справки, любой человек легко ощутит задержку в 150 мс, а на смартфоне Huawei она доходит до 600 мс. Поэтому смартфон действительно влияет на качество беспроводного звука. В плане задержки — ощутимо, в плане аудио-качества разницу заметят не все пользователи.
Кстати, задержка звука на современных смартфонах проявляется зачастую только в играх, так как при просмотре видео оба устройства определяют скорость задержи, а затем смартфон искусственно рассинхронизирует звук и видео так, чтобы картинка немножко отставала от звуковой дорожки. В результате мы не ощущаем никакой задержки звука.
Если вы не уверены, работает ли эта технология на вашем устройстве, просто попробуйте поставить видео в YouTube на паузу (естественно, с подключенными по Bluetooth наушниками). Если технология не работает, видео моментально приостановится, в противном случае между нажатием кнопки паузы и самой паузой произойдет небольшая задержка (несколько сотен миллисекунд).
Зависит ли качество звука в Bluetooth-наушниках от качества файла или приложения?
Частично я уже отвечал на этот вопрос в начале статьи, где говорил, что смартфон в любом случае раскодирует любой файл или поток, а затем заново закодирует его Bluetooth-кодеком. Поэтому не важно, будете ли вы слушать «аудиофильские» flac-файлы без сжатия в максимальном качестве или mp3-файлы, смартфон извлечет из них звуковые данные и закодирует с потерями выбранным кодеком.
Но как быть с потоковыми сервисами? Ведь, если музыка через YouTube Music будет идти с битрейтом 128 кбит/с, тогда при передаче по Bluetooth, даже самый лучший кодек ничего не сможет изменить.
Естественно, если вы хотите получить максимально возможное качество, следует выбирать музыкальные приложения с поддержкой высокого битрейта. Чтобы лучше ориентироваться в приложениях для смартфонов, посмотрите данные в этой таблице:
Естественно, Bluetooth 5.2 с LE Audio принесет и другие нововведения, но об этом поговорим как-нибудь в другой раз.
Что касается первых устройств с поддержкой Bluetooth 5.2 и кодека LC3, они появятся не ранее конца 2020 года.
Кодек AAC
Самый сложный в плане вычислений. Это единственный кодек, использующий сложную психоакустическую модель (MP3 также использует психоакустику, но менее качественные алгоритмы). При использовании iPhone, услышать разницу между AAC-кодеком и эталонным CD-качеством очень сложно.
Тем не менее, любые AirPods тяжело назвать музыкальными наушниками. Даже в самой дорогой модели AirPods Pro (см. наш обзор) нет ни широкой сцены, ни превосходного разделения инструментов, также хромает детализация звука. Но важно понимать, что это проблемы наушников, а не кодека AAC.
Поэтому, если вы ищите хороший звук на iPhone, есть смысл купить более качественные наушники с поддержкой все того же кодека AAC. Те же Sony WF-1000XM3 (см. наш обзор) будут звучать на порядок лучше.
Кодеки aptX, aptX HD, aptX LL (Low Latency) и aptX Adaptive
Эти кодеки не используют психоакустическую модель. Для кодирования разных частот выделяется разное количество бит, при этом, чем выше частота — тем ниже битрейт (меньше бит) и, соответственно, выше шум. Таким образом, кодек aptX отлично сжимает звук до 5.5 кГц, затем динамический диапазон немного падает, а после 11 кГц и вовсе количество бит, используемых для кодирования, сокращается в 4 раза.
В принципе, кодек также учитывает особенности человеческого слуха и выделяет меньше бит для тех частот, которые мы слышим гораздо хуже. Но, если слушать музыку достаточно громко (свыше 100 дБ), можно услышать шум на высоких частотах.
Эту проблему решает вариация кодека под названием aptX HD, в котором для кодирования каждой полосы частот просто дополнительно выделяется по 2 бита. Например, aptX выделяет 8 бит на кодирование частот от 0 до 5500 Гц, в то время, как aptX HD выделяет на этот диапазон 10 бит. То же касается и остальных частот.
Кодеки aptX и SBC примерно дают одинаковое качество звука на низких частотах, но SBC начинает терять в качестве от 2.5 кГц, в то время, как aptX — от 5.5 кГц. В любом случае, aptX HD будет всегда звучать заметно лучше aptX, SBC и AAC.
В некоторых наушниках, телевизорах и аудио-системах встречается кодек aptX LL (Low Latency), главной особенностью которого является очень низкая задержка звука. Если в обычных кодеках задержка (не алгоритмическая) может достигать 300 и более миллисекунд, то использование кодека aptX LL гарантирует дает задержку менее 40 мс, что практически не ощутимо для большинства пользователей.
Однако проблема с этим кодеком заключается в том, что ни один смартфон не поддерживает aptX Low Latency. Связано это с тем, что для снижения задержки данный кодек требует наличие дополнительной физической антенны внутри смартфона.
Если у вас уже есть наушники с aptX LL и вы хотите получить минимальную задержку звука со своим смартфоном, придется докупать специальный Bluetooth-адаптер с aptX LL, который подключается по USB-C к телефону.
Чтобы решить эту проблему и добавить поддержку «быстрого» кодека на смартфоны, компания Qualcomm (владелец семейства кодеков aptX) не так давно представила самый новый кодек — aptX Adaptive, который заменит собой aptX LL. Он вобрал в себя всё лучшее, что было у компании: высокое качество aptX HD и низкую задержку aptX Low Latency.
Так как aptX Adaptive не требует наличие дополнительных антенн, задержка звука здесь более высокая, чем у aptX LL, но разница составляет всего 40-50 мс (чуть менее 40 мс для aptX LL против 80-90 мс для aptX Adaptive).
Другой важной особенностью aptX Adaptive является его способность адаптироваться к качеству сигнала. Когда эфир перегружен, битрейт aptX Adaptive может динамически снижаться до 279 кбит/с, однако из-за новых алгоритмов сжатия звучать он будет в точности, как устаревший aptX с битрейтом 384 кбит/с. Когда же связь хорошая, битрейт может подниматься вплоть до 420 кбит/с и звучать при этом лучше aptX HD с битрейтом 576 кбит/с.
Кроме того, aptX Adaptive использует те же 24 бита для кодирования частот, что и aptX HD, в то время как базовый aptX использует только 16 бит.
Кодек aptX Adaptive имеет обратную совместимость с aptX и aptX HD. То есть, если ваши наушники будут поддерживать только aptX Adaptive, а на смартфоне этого кодека нет, наушники смогут использовать либо aptX, либо aptX HD. Обратной совместимости с кодеком aptX LL нет. То есть, наушники с поддержкой aptX Low Latency не смогут подключиться к смартфону с кодеком aptX Adaptive.
Более подробное сравнение всех этих кодеков смотрите в таблице ниже:
Параметр | aptX HD | aptX | aptX Adaptive (276 кбит/с) | aptX Adaptive (420 кбит/с) |
THD+N (1 кГц) | -90 дБ | -85 дБ | -90 дБ | -100 дБ |
Crosstalk | -155 дБ | -120 дБ | -90 дБ | -200 дБ |
Отношение сигнал/шум (1 кГц) | 129 дБ | 93 дБ | 130 дБ | 135 дБ |
Динамический битрейт | Нет | Нет | Есть | Есть |
Разрядность | 16/24 бит | 16-бит | 24-бит | 24-бит |
Частота дискретизации | 44.1, 48 кГц | 44.1, 48 кГц | 44.1, 48, 96 кГц | 44.1, 48, 96 кГц |
АЧХ | 20 Гц — 22.7 кГц | 20 Гц — 22.7 кГц | 20 Гц — 22.7 кГц | 20 Гц — 22.7 кГц |
Битрейт | 576 кбит/с | 384 кбит/с | 276 кбит/с | 420 кбит/с |
И последняя важная деталь. Семейство кодеков aptX является собственностью компании Qualcomm и каждый, кто хочет использовать их в своих продуктах, должен платить лицензионные отчисления. Причем, aptX, aptX HD, aptX LL и aptX Adaptive нужно лицензировать по отдельности, из-за чего на рынке очень мало наушников, которые бы одновременно поддерживали все эти кодеки.
Кодек LDAC
Этот кодек является самым лучшим и самым худшим одновременно. С одной стороны, он поддерживается практически всеми Android-смартфонами, но в то же время очень редко встречается на наушниках (только на некоторых моделях от Sony).
Кодек поддерживает 3 различных битрейта: 330, 660 и 990 кбит/с (для музыки с частотой дискретизации 44.1 кГц эти значения немного отличаются, но не суть важно).
Так вот, при использовании битрейта 330 кбит/с, LDAC будет звучать хуже любого другого кодека (SBC, AAC, aptX, aptX HD) и, что самое интересное, некоторые смартфоны подключаются к совместимым наушникам именно с битрейтом 330 кбит/с. Поэтому нужно вручную проверять этот параметр.
Что касается LDAC 660 и 990 кбит/с, этот кодек позволяет без потерь передать CD-качество, в плане чего является лучшим кодеком. Прослушивание музыки в CD-качестве на беспроводных наушниках с кодеком LDAC от 660 кбит/с ничем не уступает проводным наушникам.
Основной хейт и все претензии к этому кодеку заключаются в том, что Sony рекламирует его как Hi-Res кодек, способный передавать Hi-Res Audio без потерь, что является откровенным враньем (для передачи Hi-Res звука без потерь нужно, как минимум, в 2 раза выше битрейт). Но если игнорировать весь этот «Hi-Res маркетинг», LDAC — действительно лучший кодек для прослушивания музыки в CD-качестве без потерь (1411 кбит/с).
Как узнать, какой кодек Bluetooth используется на смартфоне и как выбрать другой кодек?
Для того, чтобы узнать, какой кодек был выбран устройствами при подключении наушников, нужно вначале активировать скрытые настройки на Android-смартфоне (они называются параметрами разработчика). Для этого:
- Открываем настройки смартфона
- Переходим в раздел Сведения о телефоне
- Ищем Номер сборки и нажимаем 7 раз эту надпись
- В настройках смартфона появится новый пункт меню Параметры разработчика
Теперь подключаем Bluetooth-наушники и делаем следующее:
- Открываем настройки смартфона
- Переходим в новый раздел Параметры разработчика
- Ищем пункт Аудиокодек Bluetooth
- Под ним будет указан кодек, работающий в данный момент
Если желаете, просто заходите в этот раздел и выбирайте любой другой поддерживаемый кодек (перед этим нужно отключить наушники).
Подытоживая все вышесказанное, можно расположить самые популярные Bluetooth-кодеки следующим образом (по возрастанию качества):
- LDAC 330 кбит/с
- AAC на Android
- SBC
- aptX
- AAC на iPhone
- aptX HD
- LDAC 660 кбит/c
- LDAC 990 кбит/с
И последний момент! Зачастую, при переключении наушников на другой кодек, вы будете слышать разницу в звуке. Но связано это будет скорее не с качеством кодека (если мы говорим об SBC, AAC или aptX), а с тем, что для каждого кодека производитель может изменять настройки эквалайзера и других параметров DSP, встроенного в наушники.