Este artículo también está disponible en ruso / Este artículo también está disponible en rusoEl mercado masivo de teléfonos inteligentes sin el conector de audio de 3.5 mm cambió la industria de los auriculares, los auriculares inalámbricos Bluetooth se han convertido en la principal forma de escuchar música y comunicarse en modo de auriculares para muchos usuarios.
Los fabricantes de dispositivos Bluetooth rara vez revelan especificaciones detalladas del producto, y los artículos de audio Bluetooth en Internet son contradictorios y, a veces, incorrectos. No cuentan todas las características y, a menudo, publican la misma información falsa.
Tratemos de comprender el protocolo, las capacidades de las pilas Bluetooth, auriculares y altavoces, códecs Bluetooth para música y voz, descubramos qué afecta la calidad del audio transmitido y el retraso, aprenda cómo capturar y decodificar información sobre códecs compatibles y otros características del dispositivo.
TL; DR :
- El códec SBC está bien
- Los auriculares tienen su propio ecualizador por códec y configuración de procesamiento posterior
- aptX no es tan bueno como dicen los anuncios
- LDAC es una pelusa de marketing
- La calidad del audio de voz sigue siendo baja
- Los navegadores pueden ejecutar codificadores de audio compilados en WebAssembly desde C usando emscripten, y ni siquiera se retrasan.
Música por Bluetooth
Los componentes funcionales de Bluetooth están definidos por perfiles, características documentadas formalizadas en especificaciones. La música Bluetooth se transmite utilizando un perfil de transmisión de audio A2DP de alta calidad. El estándar A2DP fue adoptado en 2003, y no ha cambiado drásticamente desde entonces.
El perfil estandariza un códec obligatorio: SBC, un códec de baja complejidad computacional creado específicamente para Bluetooth y 3 códecs adicionales. También se pueden usar códecs específicos del proveedor de su propia implementación, no incluidos en A2DP.
A partir de junio de 2019, vivimos
en el cómic XKCD con 14 códecs A2DP:
- SBC ← incluido en A2DP, compatible con todos los dispositivos
- MPEG-1/2 Layer 1/2/3 ← incluido en A2DP: MP3 ampliamente conocido, común en TV digital MP2 y MP1 obsoleto
- MPEG-2/4 AAC ← incluido en A2DP
- ATRAC ← El viejo códec de Sony, incluido en A2DP
- LDAC ← nuevo códec de Sony
- códec aptX ← de 1988
- aptX HD ← igual que aptX pero con diferente perfil de codificación
- aptX Low Latency ←
códec totalmente diferente, sin implementación de software aptX con un buffer más bajo - aptX Adaptive ← otro códec Qualcomm
- FastStream ← pseudocódigo, modificación bidireccional SBC
- HWA LHDC ← Nuevo códec de Huawei
- Samsung HD ← compatible con 2 dispositivos
- Samsung escalable ← compatible con 2 dispositivos
- Samsung UHQ-BT ← compatible con 3 dispositivos
Quizás se pregunte por qué necesitamos un códec en primer lugar, si Bluetooth tiene
EDR , que le permite transferir datos a 2 o 3 Mb / s, mientras que PCM de 16 bits y dos canales sin comprimir requiere solo 1.4 Mb / s.
Transferencia de datos Bluetooth
Hay dos tipos de transferencia de datos en Bluetooth: conexión asíncrona sin conexión (ACL) para la transferencia asíncrona sin establecer una conexión, y sincrónico orientado a la conexión (SCO), para la transferencia sincrónica con el establecimiento de la conexión.
La transmisión de datos utiliza un esquema de división de tiempo y cambia el canal de frecuencia para cada paquete de datos transmitido (Frecuencia-Salto / División de Tiempo-Dúplex, FH / TDD). El tiempo se divide en intervalos de 625 microsegundos, llamados intervalos. Uno de los dispositivos transmite en números pares de ranuras, el otro, en números impares. Un paquete transmitido puede ocupar 1, 3 o 5 ranuras, según el tamaño de los datos y el modo de transmisión. Si el paquete es lo suficientemente grande y se utiliza más de un modo de transmisión de ranura, los datos se llevan a cabo en ranuras pares e impares hasta el final de la transmisión. En un segundo puede recibir y enviar hasta 1600 paquetes si cada uno de ellos ocupa 1 ranura y ambos dispositivos transmiten y reciben datos continuamente.
Las velocidades de transferencia de 2 o 3 Mbps para EDR que se encuentran en los anuncios y en el sitio web de Bluetooth son la velocidad máxima de transferencia de datos del canal de todos los datos en total (incluidos los encabezados técnicos de todos los protocolos para encapsular los datos) en dos direcciones simultáneamente. La tasa de transferencia de datos real variará mucho.
El método asincrónico se usa para la transmisión de música, casi siempre usando paquetes de tipo 2-DH5 y 3-DH5, que transportan la cantidad máxima de datos en los modos EDR de 2 Mb / sy 3 Mb / s respectivamente y ocupan 5 ranuras de división de tiempo.
Representación esquemática de la transmisión utilizando 5 ranuras por un dispositivo y 1 ranura por otro (DH5 / DH1):

Debido al principio de tiempo compartido, tenemos que esperar un intervalo de tiempo de 625 microsegundos después de transmitir un paquete si el segundo dispositivo no nos transmite nada o si transmite un paquete pequeño, y más tiempo si el segundo dispositivo realiza la transmisión en paquetes grandes. Si hay más de un dispositivo conectado al teléfono (por ejemplo, auriculares, reloj inteligente y una pulsera de fitness), el tiempo de transmisión se comparte entre todos.
La transmisión de audio A2DP requiere encapsulación en protocolos de transporte especiales L2CAP y AVDTP que deducen 16 bytes de la cantidad máxima posible de carga de audio en el paquete.
1414 y 1429 kbps simplemente no son suficientes para transmitir audio sin comprimir en condiciones reales, con una banda ruidosa de 2,4 GHz y datos de servicio ocasionales. EDR 3 Mbps exige una potencia de transmisión y una relación señal / ruido, por lo que incluso en el modo 3-DH5 no es posible una transmisión PCM cómoda, ya que siempre habrá interrupciones a corto plazo y todo funcionará de manera más o menos confiable solo a una distancia de Un par de metros.
En la práctica, incluso la transmisión de audio de 990 kb / s (LDAC 990 kb / s) no es trivial para transmitir de manera confiable.
Volvamos a los códecs.
Sbc
Este códec es obligatorio para todos los dispositivos compatibles con el estándar A2DP. El mejor y el peor códec al mismo tiempo.
SBC es un códec simple y computacionalmente rápido con un modelo psicoacústico primitivo (con enmascaramiento auditivo simple) que utiliza modulación de código de pulso adaptativo (APCM).
La especificación A2DP recomienda utilizar dos perfiles: Calidad media y Alta calidad.

El códec tiene muchas configuraciones que le permiten controlar el retraso algorítmico, el número de muestras en el bloque y el algoritmo de asignación de bits, pero casi siempre los parámetros utilizados en la especificación se usan en todas partes:
estéreo conjunto , 8 bandas de frecuencia, 16 bloques en el audio marco, método de asignación de bits de
sonoridad .
SBC puede ajustar el parámetro de agrupación de bits dinámicamente, lo que afecta directamente a la tasa de bits. Si la radio está obstruida, los paquetes se pierden o los dispositivos están muy lejos, la fuente de audio puede reducir la agrupación de bits para evitar interrupciones de audio hasta que la conexión vuelva a ser estable.
Los fabricantes de la mayoría de los auriculares establecen el valor máximo del parámetro bitpool en 53, lo que limita la tasa de bits a 328 kilobits por segundo cuando se utiliza el perfil recomendado.
Incluso si el fabricante de auriculares ha establecido el valor máximo de bitpool por encima de 53 (que es cierto, por ejemplo, para Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, y también para algunos receptores y unidades principales de automóviles), la mayoría de los sistemas operativos no permitirán el uso velocidades de bits más altas debido a límites internos en las pilas de Bluetooth.
Además, algunos fabricantes establecen un valor de grupo de bits máximo bajo para algunos dispositivos. Por ejemplo, en Bluedio T es igual a 39, en Samsung Gear IconX es 37, lo que da una calidad de sonido deficiente.
Las limitaciones artificiales se introdujeron en las pilas Bluetooth probablemente debido a la cantidad insuficiente de pruebas de certificación y la incompatibilidad de algunos dispositivos con grandes valores de Bitpool o perfiles atípicos, incluso si informan que los admiten. Fue más fácil para los desarrolladores restringir las opciones a valores buenos conocidos de un perfil recomendado, en lugar de crear una base de datos de dispositivos incompatibles. Aunque ahora lo hacen para otras funciones que funcionan incorrectamente.
SBC asigna dinámicamente bits de cuantificación para bandas de frecuencia, actuando de abajo hacia arriba, con diferentes pesos. Si se utilizó la velocidad de bits completa para las frecuencias bajas y medias, las frecuencias superiores se cortarán (se reemplazarán por silencio).
Ejemplo de SBC 328 kbps. El audio original está en la parte superior, el audio codificado con SBC está en la parte inferior. Las pistas se cambian para comparar. La secuencia de audio en el archivo de video se comprime usando el códec FLAC sin pérdidas. El uso de FLAC en el contenedor mp4 no está oficialmente estandarizado, es por eso que el audio puede no reproducirse en su navegador (debería funcionar en las últimas versiones de escritorio Chrome y Firefox). Si no tiene sonido, puede descargar el archivo y abrirlo en cualquier reproductor de video.
ZZ Top - Hombre bien vestidoEl momento de conmutación es visible en el espectrograma: SBC corta periódicamente sonidos silenciosos por encima de 17.5 kHz, y no asigna bits en absoluto para una banda por encima de 20 kHz. Se puede hacer clic en el espectrograma (1,7 MB).

No puedo escuchar la diferencia entre el original y el SBC en esta pista.
Tomemos algo más nuevo y simulemos la calidad de audio de los auriculares Samsung Gear IconX con Bitpool 37 (la parte superior es la transmisión original, la parte inferior es SBC 239 kbps, FLAC se usa para audio).
Autoindulgencia sin sentido - TestigoOigo crujidos, un efecto estéreo más pequeño y un "ruido" desagradable de voces a altas frecuencias.
En resumen, SBC es un códec muy flexible: puede configurarse para baja latencia, ofrece una excelente calidad de audio a altas velocidades de bits (452+ kb / s) y es bastante bueno para la mayoría de las personas con alta calidad estándar (328 kb / s) . Sin embargo, hay algunas razones por las que el códec es infame por su baja calidad de sonido: el estándar A2DP no define perfiles fijos (solo da recomendaciones), los desarrolladores de la pila Bluetooth establecen límites artificiales en Bitpool, los parámetros del audio transmitido no se muestran en la interfaz de usuario, y los fabricantes de auriculares son libres de establecer su configuración y nunca especificar el valor de Bitpool en las características técnicas del producto.
El parámetro bitpool afecta directamente la tasa de bits solo dentro de un perfil. El mismo valor de grupo de bits de 53 puede producir tanto la tasa de bits de 328 kbps con el perfil de alta calidad recomendado como 1212 kbps en modo de
doble canal y 4 bandas de frecuencia, razón por la cual los autores del sistema operativo también establecen límites en la tasa de bits además de bitpool. Supongo que la situación surgió debido a la falla en el estándar A2DP: era necesario negociar la tasa de bits, no la agrupación de bits.
Tabla de características de SBC compatibles con diferentes sistemas operativos:
* Bitpool disminuye, pero no aumenta automáticamente en caso de condiciones de transmisión variables. Para restaurar la agrupación de bits, debe detener la reproducción, esperar un par de segundos y reiniciar el audio.
** El valor predeterminado depende de la configuración de la pila especificada al compilar el firmware. En Android 8 / 8.1, la frecuencia es solo 44.1 kHz o 48 kHz, dependiendo de la configuración al compilar, otras versiones admiten 44.1 kHz y 48 kHz simultáneamente.
*** El valor de Bitpool se puede ajustar con el software Bluetooth Explorer.aptX y aptX HD
aptX es un códec simple y rápido desde el punto de vista computacional, sin psicoacústica, que utiliza la modulación de código de pulso diferencial adaptativo (
ADPCM ). Apareció alrededor de 1988 (
la fecha de presentación de la
patente es febrero de 1988). Antes de Bluetooth, se usaba principalmente para equipos de audio inalámbricos profesionales. Actualmente propiedad de Qualcomm, requiere licencias y tarifas de licencia. A partir de 2014: $ 6,000 pago único y ≈ $ 1 por dispositivo, para lotes de hasta 10,000 dispositivos (
fuente , página 16).
El códec tiene un solo parámetro: frecuencia de muestreo. Aunque también hay una opción de configuración de modo / número de canal, todos los dispositivos que conozco solo admiten estéreo (más de 70 modelos).
* Las versiones hasta 7 requieren la modificación de la pila de Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android ha autorizado el uso del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación incluidas).aptX divide el audio en 4 bandas de frecuencia y las cuantifica con el mismo número de bits continuamente: 8 bits para 0-5.5 kHz, 4 bits para 5.5-11 kHz, 2 bits para 11-16.5 kHz, 2 bits para 16.5-22 kHz ( valores para frecuencia de muestreo de 44,1 kHz).
Ejemplo de audio aptX (arriba - audio original, abajo - audio codificado aptX, espectrogramas de canales izquierdos solamente, sonido en FLAC):
Las frecuencias superiores son un poco más rojas, pero la diferencia no es audible.
Debido a la distribución fija de los bits de cuantificación, el códec no puede "transferir los bits" a las frecuencias que más los necesitan. A diferencia de SBC, aptX no "cortará" las frecuencias, pero les agregará ruido de cuantización, reduciendo el rango dinámico del audio.
No debemos suponer que el uso, por ejemplo, de 2 bits para una banda reduce el rango dinámico a 12 dB: ADPCM permite utilizar hasta 96 dB de rango dinámico, incluso con 2 bits de cuantización, pero solo con un cierto tipo de señal .
ADPCM almacena la diferencia entre el valor actual y el siguiente en representación numérica, en lugar de usar el valor absoluto, como en PCM. Esto reduce los requisitos para la cantidad de bits necesarios para almacenar la misma información (sin pérdida) o casi la misma (con un error de redondeo relativamente pequeño). Para reducir los errores de redondeo, se aplican tablas de factores.
Al crear el códec, los autores calcularon los coeficientes ADPCM en un conjunto de archivos de audio de música. Cuanto más cerca esté la señal de audio del conjunto de música en el que se construyeron las tablas, aptX genera menos errores de cuantificación (ruido).
Debido a esto, las pruebas sintéticas siempre producirán peores resultados que la música. Hice un ejemplo sintético especial en el que aptX funciona mal: una onda sinusoidal de 12.4 kHz (señal original superior, inferior - aptX. Sonido en FLAC. Violación de oído, ¡disminuye el volumen!):
Gráfico de espectro:

El ruido es claramente audible.
Sin embargo, si genera una onda sinusoidal con una amplitud más pequeña para que sea más silenciosa, el ruido también se volverá más silencioso, lo que indica un amplio rango dinámico:

Para escuchar la diferencia entre una pista de música original y una comprimida, puede invertir una de las señales y agregar pistas a los canales respectivos. Este enfoque es incorrecto en general y no daría resultados adecuados con códecs más complejos, pero para el códec de clase ADPCM, este método es razonable.
La diferencia entre audio codificado original y aptXLa diferencia cuadrática media de las señales está en el nivel de -37.4 dB, que no es mucho para esa música comprimida.
aptX HD
aptX HD no es un códec independiente, es un perfil de codificación aptX mejorado. Los cambios afectan el número de bits asignados para la codificación de bandas de frecuencia: 10 bits para 0-5.5 kHz, 6 bits para 5.5-11 kHz, 4 bits para 11-16.5 kHz, 4 bits para 16.5-22 kHz (valores para 44.1 kHz) .
* Las versiones hasta 7 requieren la modificación de la pila de Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android ha autorizado el uso del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación incluidas).Este códec es menos común que aptX: parece requerir una licencia separada de Qualcomm y tarifas de licencia separadas.
Repitamos el ejemplo con una onda sinusoidal de 12.4 kHz:

Mucho mejor que con aptX, pero sigue siendo ruidoso.
aptX baja latencia
La versión de baja latencia de aptX no es un códec independiente. Solo difiere en la configuración de latencia y búferes que se aplican en el lado de la unidad de audio. Además de eso, ese es un aptX habitual.
Fue diseñado para la transmisión de audio interactiva con baja latencia (películas, juegos), donde el retardo de sonido no se puede ajustar mediante programación. Hay
una implementación de software de controlador de Dell disponible para chips Intel Bluetooth . También es compatible con transmisores, receptores, auriculares y altavoces, pero no con teléfonos inteligentes.
Aac
AAC, o Advanced Audio Coding, es un códec computacionalmente sofisticado con un modelo psicoacústico complejo. Es ampliamente utilizado para audio en Internet, el segundo códec más popular después de MP3. Requiere licencia y tarifas de licencia: $ 15,000 pago único (o $ 1000 para empresas con menos de 15 empleados) + $ 0.98 para los primeros 500,000 dispositivos (
fuente ).
El códec está estandarizado dentro de las especificaciones MPEG-2 y MPEG-4 y, a pesar de la frecuente creencia errónea, no pertenece a Apple.
* solo en dispositivos cuyos fabricantes pagaron regalíasiOS y macOS contienen el mejor codificador AAC de Apple disponible hasta la fecha, produciendo la mejor calidad de audio posible. Android usa el segundo mejor codificador Fraunhofer FDK AAC, pero también puede usar varios codificadores de hardware integrados en la plataforma (SoC) con una calidad de codificación desconocida.
Según las pruebas recientes publicadas en el sitio web de SoundGuys , la calidad de la codificación AAC en diferentes teléfonos Android varía mucho:

La mayoría de los dispositivos de audio inalámbricos tienen una velocidad de bits máxima de 320 kbps para AAC, algunos admiten solo 256 kbps. Otras tasas de bits son extremadamente raras.
AAC proporciona una excelente calidad a velocidades de bits de 320 y 256 kb / s, pero es propenso a la
pérdida de generación en contenido ya comprimido, sin embargo, es difícil escuchar las diferencias entre el original y AAC 256 kb / s en iOS, incluso con varias codificaciones consecutivas. Para MP3 320 kbps codificados en AAC 256 kbps, la pérdida puede descuidarse.
Al igual que con cualquier otro códec Bluetooth, cualquier música se decodifica primero y luego se codifica con un códec. Al escuchar música en formato AAC, el sistema operativo primero lo decodifica, luego se codifica nuevamente en AAC, para su transmisión por Bluetooth. Esto es necesario para mezclar varias transmisiones de audio, como música y notificaciones de mensajes nuevos. iOS no es la excepción. Puede encontrar muchas afirmaciones de que iOS no transcodifica música en formato AAC para su transmisión a través de Bluetooth, lo cual es incorrecto.
AAC tiene muchas extensiones para el método de codificación estándar. Uno de ellos, escalable a sin pérdida (SLS), está estandarizado para Bluetooth y le permite transferir audio sin pérdida. Desafortunadamente, no se pudo encontrar soporte SLS en los dispositivos existentes. Una extensión para reducir el retraso de transmisión AAC-LD (Low Delay) no está estandarizada para Bluetooth.
MP1 / 2/3
Los códecs MPEG-1/2 Parte 3 consisten en MP3 conocidos y ampliamente utilizados, el MP2 menos común (utilizado principalmente en TV y radio digital) y el MP1 completamente desconocido.
Los viejos códecs MP1 y MP2 no son compatibles en absoluto, no pude encontrar auriculares ni ninguna pila Bluetooth que los codificara o decodificara.
La decodificación de MP3 es compatible con algunos auriculares, pero la codificación no es compatible con ninguna pila moderna de sistemas operativos. Parece que la pila BlueSoleil de terceros para Windows puede codificar MP3 si edita manualmente el archivo de configuración, pero en mi instalación conduce a BSoD en Windows 10. El resultado: en realidad no puede usar un códec para audio Bluetooth.
Anteriormente, en 2006-2008, antes de que el estándar A2DP se usara ampliamente en dispositivos, la gente escuchaba música MP3 en el auricular Nokia BH-501 a través del programa MSI BluePlayer, que estaba disponible en Symbian y Windows Mobile. En ese momento, la arquitectura del sistema operativo de los teléfonos inteligentes permitía el acceso a muchas funciones de bajo nivel, incluso era posible instalar una pila Bluetooth de terceros en Windows Mobile.
La última patente del códec MP3 ha caducado, el uso del códec no requiere tarifas de licencia desde el 23 de abril de 2017.
Si se toma como medida la patente de más larga duración mencionada en las referencias antes mencionadas, entonces la tecnología MP3 quedó libre de patentes en los Estados Unidos el 16 de abril de 2017 cuando expiró la Patente de EE. UU. 6,009,399, en poder y administrada por Technicolor.
Fuente: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.htmlLDAC
Nuevo y promocionado activamente códec "Hi-Res" de Sony que admite frecuencias de muestreo de hasta 96 kHz y 24 bits de profundidad, con una velocidad de bits de hasta 990 kbps. Se anuncia como un códec audiófilo, como reemplazo de los códecs Bluetooth existentes. Tiene una función de velocidad de bits adaptativa que sintoniza la velocidad de bits dependiendo de las condiciones de transmisión de radio.
El codificador LDAC (
libldac ) está incluido en la distribución estándar de Android, la codificación es compatible con cualquier teléfono inteligente Android a partir de la versión 8 del sistema operativo. Los decodificadores de software no están disponibles de forma gratuita y la especificación del códec no está disponible para el público en general, sin embargo, a primera vista en el codificador, los
componentes internos son similares al códec
ATRAC9 de Sony utilizado en PlayStation 4 y Vita: ambos trabajan en el dominio de la frecuencia, usan una transformación de coseno discreta modificada (MDCT) y compresión Huffman.
LDAC divide el audio en 12 o 16 bandas de frecuencia: 12 se utiliza para 44,1 y 48 kHz, 16 para 88,2 y 96 kHz.
LDAC es compatible casi exclusivamente solo con auriculares Sony. La decodificación LDAC a veces se encuentra en auriculares y DAC de otros fabricantes, pero muy raramente.
El marketing de "códec de alta resolución" de LDAC perjudica sus propiedades técnicas: no es aconsejable gastar la tasa de bits para codificar y transmitir frecuencias que no son audibles para el oído humano y una mayor profundidad de bits cuando aún no es posible comprimir sin pérdidas el audio de calidad de CD. Afortunadamente, el códec tiene dos modos de operación: transmisión de audio de CD y transmisión de audio de alta resolución. En el primer caso, solo se transmiten 44.1 kHz / 16 bits por el aire.
Dado que el decodificador de software LDAC no está disponible gratuitamente, no es posible probar el códec sin dispositivos adicionales que decodifiquen LDAC. Según los resultados de la prueba LDAC en el DAC con su soporte, que los ingenieros de SoundGuys.com conectaron a través de la salida digital y grabaron el sonido de salida de las señales de prueba, el LDAC 660 y 990 kbit / s en modo de calidad de CD proporciona una señal -relación de ruido ligeramente mejor que la de aptX HD. Este es un buen resultado.
Fuente: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026LDAC también admite una tasa de bits dinámica fuera de los perfiles establecidos: de 138 kbps a 990 kbps, pero por lo que puedo decir, Android solo usa perfiles estandarizados de 303/606/909 y 330/660/990 kbps.
Otros códecs
Otros códecs A2DP no se usan ampliamente. Su soporte está casi ausente o solo está disponible en ciertos modelos de auriculares y teléfonos inteligentes.
El códec ATRAC estandarizado A2DP nunca ha sido utilizado como un códec Bluetooth, incluso por Sony. Los códecs Samsung HD, Samsung Escalable y Samsung UHQ-BT tienen un soporte muy limitado para dispositivos de transmisión y recepción. HWA LHDC es demasiado nuevo y solo admite tres (?) Dispositivos.
Soporte de códec de dispositivos de audio
No todos los fabricantes publican información precisa sobre los códecs compatibles con ciertos auriculares, parlantes, receptores o transmisores inalámbricos. A veces sucede que cierto códec es compatible solo para la transmisión pero no para la recepción (relevante para transmisores-receptores combinados), aunque el fabricante simplemente declara "soporte", sin ninguna nota (supongo que la culpa es de licencias separadas de codificadores y decodificadores) . En los dispositivos más baratos, nunca puede encontrar el soporte declarado para aptX.
Desafortunadamente, los códecs compatibles no se muestran en ninguna parte en la mayoría de las interfaces del sistema operativo. La información sobre el códec utilizado actualmente solo está presente en Android, a partir de la versión 8 y macOS. Sin embargo, incluso en estos sistemas operativos, solo se mostrarán los códecs compatibles tanto con el teléfono / computadora como con los auriculares.
¿Cómo averiguar qué códecs admite el dispositivo? ¡Al capturar y analizar el volcado de tráfico con las opciones de negociación de A2DP!
Esto se puede hacer en Linux, macOS y Android. En Linux puede usar Wireshark o hcidump, en macOS se puede usar Bluetooth Explorer y en Android usar la función de guardado de volcado Bluetooth HCI disponible en las herramientas para desarrolladores. Obtendrá un volcado en formato btsnoop, que podría abrirse en el analizador Wireshark.
NOTA : necesitará conectarse desde el teléfono inteligente / computadora a los auriculares para capturar el volcado correcto, no al revés (¡no importa lo tonto que parezca)! Los auriculares también pueden establecer una conexión con el teléfono inteligente o la PC, en cuyo caso solicitarán una lista de códecs del teléfono y no divulgarán su propio conjunto de códecs. Para asegurarse de capturar un volcado correcto, primero desconecte el dispositivo y luego, mientras graba el volcado, empareje el teléfono con los auriculares.
Use el siguiente filtro de visualización para ocultar el tráfico irrelevante:
btavdtp.signal_id
Como resultado, debería ver algo similar:

Al hacer clic en el comando GetCapabilities puede obtener información detallada del códec.

Wireshark no conoce todos los identificadores de códec, por lo que algunos de los códecs tendrán que descifrarse manualmente, según la tabla de identificadores a continuación:
Mandatory: 0x00 - SBC Optional: 0x01 - MPEG-1,2 (aka MP3) 0x02 - MPEG-2,4 (aka AAC) 0x04 - ATRAC Vendor specific: 0xFF 0x004F 0x01 - aptX 0xFF 0x00D7 0x24 - aptX HD 0xFF 0x000A 0x02 - aptX Low Latency 0xFF 0x00D7 0x02 - aptX Low Latency 0xFF 0x000A 0x01 - FastStream 0xFF 0x012D 0xAA - LDAC 0xFF 0x0075 0x0102 - Samsung HD 0xFF 0x0075 0x0103 - Samsung Scalable Codec 0xFF 0x053A 0x484C - Savitech LHDC 0xFF 0x000A 0x0104 - The CSR True Wireless Stereo v3 Codec ID for AAC 0xFF 0x000A 0x0105 - The CSR True Wireless Stereo v3 Codec ID for MP3 0xFF 0x000A 0x0106 - The CSR True Wireless Stereo v3 Codec ID for aptX
Puede averiguar si su dispositivo admite EDR 3 Mbps utilizando el siguiente filtro:
bthci_evt.code==0x0b

Para no analizar los volcados manualmente, hice un servicio que analizará todo automáticamente:
btcodecs.valdikss.org.ruEl software simple pero útil de Windows
Bluetooth Tweaker muestra los códecs compatibles y actualmente utilizados, además de otras funciones.
Los usuarios de Linux también pueden usar la utilidad avinfo del paquete BlueZ.
Comparación de códec. ¿Qué códec es mejor?
Cada códec tiene sus ventajas y desventajas.
aptX y aptX HD utilizan perfiles codificados que no se pueden cambiar sin modificar el codificador y el decodificador. Ni el teléfono inteligente ni el fabricante de los auriculares pueden cambiar la tasa de bits o los factores de codificación de aptX. Qualcomm, el propietario del códec, distribuye el codificador de referencia como una biblioteca a los licenciatarios. Estos hechos son el fuerte de aptX: usted sabe de antemano qué calidad de sonido obtendrá, sin peros.
SBC, por el contrario, tiene muchos parámetros ajustables, velocidad de bits dinámica (el codificador puede reducir el parámetro de bitpool si la radio está congestionada) y no tiene perfiles codificados, sino solo la "calidad media" y "alta calidad" recomendadas que se han agregado a la especificación A2DP en 2003. La "alta calidad" ya no es tan alta para los estándares modernos, y la mayoría de las pilas Bluetooth no permiten usar parámetros que son mejores que en el perfil de "alta calidad", aunque no existen técnicas limitaciones para esto.
Bluetooth SIG no proporciona un codificador de referencia SBC en forma de biblioteca, y los fabricantes lo implementan ellos mismos.
Estas son las debilidades de SBC: nunca está claro de antemano qué calidad de sonido se espera de un dispositivo en particular. SBC puede producir tanto una calidad de sonido baja como muy alta, pero esta última es inalcanzable sin deshabilitar o eludir las limitaciones artificiales de las pilas de Bluetooth.
La situación con AAC es ambigua: por un lado, teóricamente, el códec debería producir una calidad que no se distingue del original, pero la práctica, a juzgar por las pruebas del laboratorio SoundGuys en diferentes dispositivos Android, no está confirmada. Lo más probable es que la falla esté en codificadores de audio de hardware de baja calidad integrados en varios conjuntos de chips para teléfonos. Tiene sentido usar AAC solo en dispositivos Apple; con Android es mejor que te quedes con aptX / HD y LDAC.
Los dispositivos que admiten códecs alternativos suelen ser de mayor calidad, simplemente porque no tiene sentido pagar regalías por dispositivos muy baratos y de baja calidad para usar estos códecs. Según mis pruebas, SBC suena muy bien en hardware de alta calidad.
Hice un servicio web que codifica audio a SBC, aptX y aptX HD en tiempo real, directamente en su navegador. Puede usarlo para probar estos códecs de audio sin transmitir audio a través de Bluetooth, en cualquier auricular con cable, altavoces y su música favorita, y también cambiar los parámetros de codificación directamente durante la reproducción de audio:
btcodecs.valdikss.org.ru/sbc-encoderEl servicio utiliza bibliotecas de codificación SBC del proyecto BlueZ y libopenaptx de ffmpeg, que se compilan en WebAssembly y JavaScript desde C a través de emscripten, para su ejecución en un navegador. ¡Quién podría haber soñado con un futuro así!
Así es como se ve:
Observe cómo cambia el nivel de ruido después de 20 kHz para diferentes códecs. No hay frecuencias superiores a 20 kHz presentes en el archivo MP3 original.
Intente cambiar los códecs y vea si puede escuchar la diferencia entre el SBC 53 Joint Stereo original (el perfil estándar y más común) y aptX / aptX HD.
¡Pero puedo escuchar la diferencia entre los códecs en unos auriculares !
Las personas que no escuchan la diferencia entre los códecs mientras prueban a través de un servicio web afirman que la escuchan cuando escuchan música con auriculares Bluetooth. Desafortunadamente, eso no es una broma o un efecto placebo: la diferencia es realmente audible, pero no es causada por la diferencia
en los códecs .
La gran mayoría de los conjuntos de chips de audio Bluetooth utilizados en la recepción de dispositivos inalámbricos están equipados con un procesador de señal digital (DSP) que implementa un ecualizador,
comparador , extensor estéreo y otras cosas diseñadas para mejorar (o cambiar) el sonido. Los fabricantes de hardware Bluetooth pueden configurar el DSP
para cada códec por separado , y al cambiar entre códecs, el oyente sentirá que puede escuchar la diferencia en el rendimiento de los códecs cuando en realidad están escuchando diferentes configuraciones de DSP.
Canal de procesamiento de audio Kalimba DSP en SoC CSR / Qualcomm
Activación de varias funciones DSP para cada códec y salida por separadoAlgunos dispositivos de segmento premium están equipados con un software que le permite ajustar los parámetros DSP, pero la mayoría de los auriculares más baratos no tienen esta característica, y los usuarios no pueden desactivar el procesamiento posterior del sonido con herramientas estándar.
Características funcionales de los dispositivos
La versión actual del estándar A2DP tiene una función de
control de volumen absoluto que permite controlar la ganancia de salida con comandos especiales mediante el uso del protocolo AVRCP, en lugar de reducir mediante programación el volumen de la transmisión de audio. Si cambia el volumen de los auriculares y el cambio no está sincronizado con el volumen del teléfono, esto significa que sus auriculares o teléfono no son compatibles con esta función. En este caso, tiene sentido escuchar siempre música al volumen máximo en el teléfono, ajustando el volumen real con los botones de los auriculares: la relación señal / ruido será mejor y la calidad de audio
debería ser mayor.
En realidad, hay situaciones tristes. Por RealForce OverDrive, los auriculares D1 usan un compander fuerte para SBC y un aumento en el volumen conduce a un aumento en el nivel de sonidos silenciosos, y el volumen de los sonidos fuertes no cambia (se produce la compresión de la señal). Debido a esto, es necesario configurar el volumen en la computadora a aproximadamente la mitad, en este caso prácticamente no hay efecto de compresión.
Según mis observaciones, todos los auriculares con códecs adicionales admiten la función de control de volumen absoluto, que es probablemente uno de los requisitos para la certificación de códecs.
Algunos auriculares admiten la
conexión de dos dispositivos al mismo tiempo . Esto permite, por ejemplo, escuchar música desde una computadora y recibir llamadas desde un teléfono. Sin embargo, debe tener en cuenta que los códecs alternativos están deshabilitados en este modo, y solo se utiliza SBC.
La función
AVDTP 1.3 Delay Reporting permite a los auriculares informar un retraso a un dispositivo emisor que realmente reproduce el sonido. Esto ayuda a ajustar la sincronización de audio con video mientras mira archivos de video: si se produce una congestión de radio, el audio no se retrasará con respecto al video, sino que, por el contrario, el reproductor de video reducirá la velocidad del video hasta que el audio y el video estén sincronizado de nuevo.
La característica es compatible con muchos auriculares, Android 9+ y Linux con PulseAudio 12.0+. No estoy al tanto de la compatibilidad con otros sistemas operativos.
Comunicación dúplex por Bluetooth. Transmisión de voz.
Synchronous Connection Oriented (SCO) y su versión mejorada Enhanced Synchronous Connection Oriented (eSCO) son los modos utilizados para la transmisión de voz Bluetooth. El modo le permite transmitir sonido y voz estrictamente en orden, con una velocidad simétrica de envío y recepción, sin esperar la confirmación de la transmisión y reenvío de paquetes. Esto reduce el retraso general en la transmisión de audio a través del canal de radio, pero impone serias restricciones en la cantidad de datos transmitidos por unidad de tiempo y afecta negativamente la calidad del audio.
Cuando se utiliza este modo, tanto la voz del micrófono como el audio se transmiten a los auriculares con la misma calidad.
La transferencia de los datos en sí está estandarizada por el perfil HSP, que también describe funciones adicionales, como el funcionamiento de los botones de control de volumen, la recogida del auricular y el colgado.
Desafortunadamente, a partir de 2019, la calidad de la transmisión de voz a través de Bluetooth sigue siendo pobre, y no está claro por qué Bluetooth SIG no está haciendo nada al respecto.
CVSD
El códec básico de transferencia de voz
CVSD se estandarizó en 2002 y es compatible con todos los dispositivos Bluetooth bidireccionales. Proporciona transmisión de audio con una frecuencia de muestreo de 8 kHz, que corresponde a la calidad de la telefonía convencional por cable.
Un ejemplo de grabación en este códec .
mSBC
El códec mSBC adicional se estandarizó en 2009, y en 2010 había chips que ya lo usaban para la transmisión de voz. mSBC es ampliamente compatible con varios dispositivos.
Este no es un códec independiente, sino el SBC habitual del estándar A2DP, con un perfil de codificación fijo: 16 kHz, mono, bitpool 26.
Un ejemplo de grabación en este códec .
No es brillante, pero es mucho mejor que CVSD, aunque todavía es desagradable usarlo para comunicarse a través de Internet, especialmente cuando usa auriculares para comunicarse en el juego: el sonido del juego también se transmitirá a una frecuencia de muestreo de 16 kHz .
Faststream
CSR decidió desarrollar aún más la idea de reutilizar SBC. Para sortear las limitaciones del protocolo SCO y utilizar velocidades de bits más altas, CSR fue en sentido contrario: agregaron soporte para audio SBC bidireccional en el estándar A2DP de transmisión de audio unidireccional, y lo llamaron "FastStream".
FastStream transmite sonido estéreo de 44,1 o 48 kHz a los altavoces con una velocidad de bits de 212 kbps. 16 kHz con una tasa de bits de 72 kbps (ligeramente mejor que la de mSBC) se utiliza para transmitir audio desde un micrófono. Dichos parámetros son mucho más adecuados para la comunicación en los juegos en línea: el sonido del juego y los compañeros de equipo serán de alta calidad.
Un ejemplo de grabación en este códec (+
audio del micrófono, igual que en mSBC ).
La compañía ideó un truco interesante, pero debido al hecho de que contradice el estándar A2DP, solo algunos de los transmisores de la compañía lo admiten (que funciona como una tarjeta de audio USB y no un dispositivo Bluetooth), pero no recibió Soporte en pila Bluetooth. Sin embargo, la cantidad de auriculares con soporte FastStream no es tan pequeña.
Por el momento, el soporte FastStream solo está disponible
en forma de parche para Linux PulseAudio de Pali Rohár, que no está incluido en la rama principal del programa.
aptX baja latencia
Para sorpresa, aptX Low Latency también admite audio bidireccional, implementando el mismo principio que FastStream.
No hay forma de usar esta función del códec en ninguna parte: no hay soporte para la decodificación de baja latencia en ningún sistema operativo y en ninguna pila Bluetooth que yo sepa.
Bluetooth 5, clásico y de baja energía
Existe mucha confusión sobre las especificaciones y versiones de Bluetooth debido a la presencia de dos estándares incompatibles bajo una misma marca, los cuales son ampliamente utilizados para diferentes propósitos.
Hay dos protocolos de Bluetooth diferentes e incompatibles: Bluetooth Classic y Bluetooth Low Energy (LE, también conocido como Bluetooth Smart). También hay un tercer protocolo, Bluetooth de alta velocidad, pero no es común y no se usa en electrodomésticos.
A partir de Bluetooth 4.0, los cambios en las especificaciones se centraron principalmente en Bluetooth Low Energy, mientras que la versión Classic recibió solo mejoras menores.
Lista de cambios entre Bluetooth 4.2 y Bluetooth 5:
9 CAMBIOS DE v4.2 A 5.0
9.1 NUEVAS CARACTERÍSTICAS
Se introducen varias características nuevas en la versión Bluetooth Core Specification 5.0. Las principales áreas de mejora son:
• Máscara de disponibilidad de ranura (SAM)
• 2 Msym / s PHY para LE
• LE de largo alcance
• Publicidad no conectable de alto ciclo de trabajo
• Extensiones de publicidad LE
• Algoritmo de selección de canal LE # 2
9.1.1 Características agregadas en CSA5 - Integradas en v5.0
• Mayor potencia de salida
Fuente: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (página 291)Solo un cambio afectó a la versión clásica dentro de la especificación de Bluetooth 5: soporte para la tecnología de Máscara de disponibilidad de ranura (SAM), diseñada para mejorar el uso compartido de frecuencias de radio. Todos los demás cambios afectan solo a Bluetooth LE (lo mismo se aplica a la potencia de salida superior también).
Todos los dispositivos de audio usan solo Bluetooth Classic. Los auriculares y los altavoces no se pueden conectar a través de Bluetooth Low Energy. No hay un estándar para transmitir audio usando LE. El estándar A2DP, utilizado para transmitir audio de alta calidad, funciona solo a través de Bluetooth Classic, y no existe un equivalente en LE.
En resumen: comprar dispositivos de audio con Bluetooth 5 solo por la nueva versión del protocolo no tiene sentido. Bluetooth 4.0 / 4.1 / 4.2 en el contexto de la transmisión de audio funcionará de la misma manera.
Si el anuncio de los nuevos auriculares menciona un radio doble y un consumo de energía reducido gracias a Bluetooth 5, entonces debe saber que no se entienden o lo engañan. No es de extrañar, incluso los fabricantes de chips Bluetooth confunden la diferencia en ambos estándares, y algunos chips Bluetooth 5 admiten la quinta versión solo para LE y usan 4.2 para Classic.
Latencia de transmisión de audio
La cantidad de latencia (retraso) en el audio depende de muchos factores: el tamaño del búfer en la biblioteca de audio, en la pila de Bluetooth y en el dispositivo de reproducción, el retraso algorítmico del códec.
El retraso de los códecs simples, como SBC, aptX y aptX HD es bastante pequeño, aproximadamente de 3 a 6 ms, lo que puede descuidarse, pero los códecs complejos, como AAC y LDAC, pueden generar un retraso notable. El retraso algorítmico AAC para 44.1 kHz es de 60 ms. LDAC: aproximadamente 30 ms (mediante un análisis aproximado del código fuente. Puedo estar equivocado, pero no mucho).
El retraso total depende en gran medida del dispositivo de reproducción, su conjunto de chips y el búfer. Durante las pruebas, obtuve una extensión de 150 a 250 ms en diferentes dispositivos (con el códec SBC). Si suponemos que los dispositivos con soporte para códecs adicionales aptX, AAC y LDAC usan componentes de mejor calidad y un tamaño de búfer pequeño, obtenemos los siguientes valores de latencia típicos:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Permítame recordarle: aptX Low Latency no es compatible con los sistemas operativos, por lo que solo se puede obtener un retraso menor con un transmisor + receptor o transmisor + paquete de auriculares / altavoces, y todos los dispositivos deben ser compatibles con este códec.
Los problemas con las certificaciones, logotipos y dispositivos.
¿Cómo distinguir el dispositivo de audio de alta calidad de las artesanías baratas? Por la apariencia, en primer lugar!
Los auriculares, altavoces y receptores chinos baratos tienen:
- No hay una palabra "Bluetooth" en la caja y el dispositivo, la mayoría de las veces se reemplaza por "Inalámbrico" y "BT"
- Sin logo de Bluetooth
en caja o dispositivo - Sin LED azul intermitente
La ausencia de estos elementos indica que el dispositivo no ha sido certificado, lo que significa que es potencialmente problemático o de mala calidad. Por ejemplo, los auriculares Bluedio no están certificados por Bluetooth y no cumplen completamente con la especificación A2DP. No habrían pasado el proceso de certificación.
Veamos varios dispositivos y cajas de ellos:



Todos estos son dispositivos no certificados. Las instrucciones pueden tener el logotipo y el nombre de "Bluetooth", pero lo más importante: estos elementos deben estar presentes en el dispositivo o en la caja.
Si sus auriculares o altavoz dicen "Ze bluetooth dewise está conectado con éxito", esto tampoco dice nada bueno sobre la calidad:
Conclusión
¿Puede Bluetooth reemplazar completamente los auriculares y auriculares con cable? Probablemente, pero a costa de una voz de baja calidad, una mayor latencia en la transmisión de sonido, lo que puede ser molesto en los juegos, y una multitud de códecs patentados que requieren tarifas de licencia y aumentan el costo final de los teléfonos inteligentes y los auriculares.
La comercialización de códecs alternativos es muy fuerte: aptX y LDAC se presentan como un reemplazo largamente esperado del SBC "obsoleto y malo", que está lejos de ser tan malo como comúnmente se piensa.
Al final resultó que, las limitaciones artificiales de las pilas de Bluetooth en SBC pueden pasarse por alto, por lo que el SBC estará a la par con aptX HD. Tomé la iniciativa e hice un parche para el firmware de LineageOS:
modificación de la pila de Bluetooth para mejorar el sonido en los auriculares sin códecs AAC, aptX y LDACSe puede encontrar más información sobre códecs en los sitios web
SoundGuys y
SoundExpert .
Bonificación: codificador de referencia SBC, información de flujo de bits A2DP y archivos de prueba . Este archivo se publicó anteriormente en el sitio web de Bluetooth públicamente, pero ahora está disponible solo para aquellos que se han unido a Bluetooth SIG.