Este artículo también está disponible en inglés.Debido a la producción en masa de teléfonos inteligentes sin un conector de audio de 3.5 mm, los auriculares inalámbricos Bluetooth se han convertido en la forma principal para que muchos escuchen música y se comuniquen en modo auricular.
Los fabricantes de dispositivos inalámbricos no siempre escriben especificaciones detalladas del producto, y los artículos sobre audio Bluetooth en Internet son contradictorios, a veces incorrectos, no hablan de todas las características y, a menudo, copian la misma información que no corresponde a la realidad.
Intentemos averiguar el protocolo, las capacidades de las pilas del sistema operativo Bluetooth, los auriculares y los altavoces, los códecs Bluetooth para música y voz, averiguar qué afecta la calidad del sonido transmitido y el retraso, aprender cómo recopilar y decodificar información sobre códecs compatibles y otras capacidades del dispositivo.
TL; DR :
- SBC - Códec normal
- Los auriculares tienen su propio ecualizador y procesamiento posterior para cada códec por separado.
- aptX no es tan bueno como los anuncios hablan de eso
- LDAC - mierda de marketing
- La calidad de la conversación sigue siendo pobre
- Puede incrustar codificadores de audio en C en el navegador compilándolos en WebAssembly a través de emscripten, y no se ralentizarán mucho.
Música bluetooth
El componente funcional de Bluetooth está definido por perfiles: especificaciones de funciones específicas. La música Bluetooth se transmite utilizando el perfil de transmisión de audio unidireccional de alta calidad A2DP. El estándar A2DP fue adoptado en 2003, y no ha cambiado drásticamente desde entonces.
Dentro del marco del perfil, 1 códec obligatorio de baja complejidad computacional SBC, creado específicamente para Bluetooth, y 3 adicionales están estandarizados. También se permite el uso de códecs no documentados de nuestra propia implementación.
A partir de junio de 2019, estamos
en el cómic xkcd con 14 códecs A2DP:
- SBC ← estandarizado en A2DP, compatible con todos los dispositivos
- MPEG-1/2 Layer 1/2/3 ← estandarizado en A2DP: el conocido MP3 utilizado en la TV digital MP2 y el desconocido MP1
- MPEG-2/4 AAC ← estandarizado en A2DP
- ← códec antiguo Sony ATRAC estandarizado en A2DP
- LDAC ← nuevo códec de Sony
- códec aptX ← de 1988
- aptX HD ← Igual que aptX, pero con diferentes opciones de codificación
- aptX Low Latency ← un
códec completamente diferente, sin implementación de software aptX con un búfer reducido - aptX Adaptive ← otro códec Qualcomm
- FastStream ← pseudo códec , modificación bidireccional de SBC
- HWA LHDC ← nuevo códec de Huawei
- Samsung HD ← 2 dispositivos compatibles
- Samsung escalable ← 2 dispositivos compatibles
- Samsung UHQ-BT ← 3 dispositivos compatibles
Se pregunta por qué se necesitan códecs, cuando
EDR está
disponible en Bluetooth, lo que le permite transferir datos a velocidades de 2 y 3 Mbps, y para PCM de 16 bits y dos canales sin comprimir, 1.4 Mbps es suficiente.
Transferencia de datos Bluetooth
Hay dos tipos de transferencia de datos en Bluetooth: conexión asíncrona sin conexión (ACL) para transmisión asíncrona sin establecer una conexión, y conexión síncrona orientada (SCO) para transmisión síncrona con negociación preliminar de la conexión.
La transmisión se lleva a cabo utilizando un esquema de tiempo compartido y la elección de un canal de transmisión para cada paquete por separado (Frecuencia-Salto / División de tiempo-Duplex, FH / TDD), para lo cual el tiempo se divide en intervalos de 625 microsegundos, llamados intervalos. Uno de los dispositivos transmite en números pares, el otro en números impares. El paquete transmitido puede ocupar 1, 3 o 5 ranuras, según el tamaño de los datos y el tipo de conjunto de transmisión, en cuyo caso un dispositivo transfiere en ranuras pares e impares hasta el final de la transferencia. En total, se pueden recibir y enviar hasta 1600 paquetes por segundo, si cada uno de ellos ocupa 1 ranura, y ambos dispositivos transmiten y reciben algo sin detenerse.
2 y 3 Mbps para EDR, que se pueden encontrar en anuncios y en el sitio web de Bluetooth, son la velocidad máxima de transferencia de datos del canal para todos los datos en total (incluidos los encabezados técnicos de todos los protocolos en los que se deben encapsular los datos), en dos direcciones al mismo tiempo. Las tasas de transferencia de datos reales variarán mucho.
Para transferir música, se utiliza un método asincrónico, casi siempre con la ayuda de paquetes como 2-DH5 y 3-DH5, que transportan la cantidad máxima de datos en el modo EDR de 2 Mbps y 3 Mbps, respectivamente, y ocupan 5 ranuras de la división de tiempo en el aire.
Representación esquemática de una transmisión utilizando 5 ranuras por un dispositivo y 1 ranura por otro (DH5 / DH1):

Debido al principio de tiempo compartido, nos vemos obligados a esperar un intervalo de tiempo de 625 microsegundos después de transmitir un paquete, si el segundo dispositivo no nos transmite nada o transmite un paquete pequeño, y más tiempo si el segundo dispositivo está transmitiendo en paquetes grandes. Si hay más de un dispositivo conectado al teléfono (por ejemplo, auriculares, un reloj y un brazalete de ejercicios), el tiempo de transmisión se comparte entre todos.
La necesidad de encapsular audio en los protocolos de transporte especiales L2CAP y AVDTP requiere 16 bytes de la cantidad máxima posible de audio de carga útil transmitida.
1414 y 1429 kbit / s definitivamente no son suficientes para transmitir sonido sin comprimir en condiciones reales, con una banda ruidosa de 2,4 GHz y la necesidad de transferir datos de servicio. 3 Mbps EDR exige potencia de transmisión y ruido de aire, por lo tanto, incluso en modo 3-DH5, la transmisión PCM cómoda es imposible, habrá interrupciones a corto plazo constantemente, y todo funcionará solo a una distancia de un par de metros.
En la práctica, incluso la transmisión de audio a 990 kbit / s (LDAC 990 kbit / s) es difícil de transmitir.
De vuelta a los códecs.
Sbc
Se requiere códec para todos los dispositivos que admiten 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 (solo se enmascaran los sonidos silenciosos), utilizando modulación de código de pulso adaptativo (APCM).
La especificación A2DP recomienda dos perfiles para su uso: 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 un bloque, el algoritmo de asignación de bits, pero en casi todas partes se utilizan los mismos parámetros recomendados en la especificación:
estéreo estéreo , 8 bandas de frecuencia, 16 bloques en un cuadro de audio, método de distribución de bits de
volumen .
SBC admite el cambio dinámico del parámetro Bitpool, que afecta directamente a la velocidad de bits. Si la radio está obstruida, los paquetes se pierden o los dispositivos están muy lejos, la fuente de audio puede reducir Bitpool hasta que la conexión se normalice.
Los fabricantes de la mayoría de los auriculares establecen el valor máximo del parámetro Bitpool en 53, lo que limita la velocidad de bits a 328 kilobits por segundo cuando se utiliza el perfil recomendado.
Incluso si el fabricante de auriculares establece el valor máximo de Bitpool por encima de 53 (tales modelos se encuentran, por ejemplo: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, también ocurre en algunos receptores y unidades principales del automóvil), entonces la mayoría de los sistemas operativos no permitirán usar tasas de bits mayores debido a establecer el valor límite interno en pilas de Bluetooth.
Además, algunos fabricantes establecen un valor de Bitpool máximo bajo para algunos dispositivos. Por ejemplo, para Bluedio T es 39, para Samsung Gear IconX - 37, lo que da una calidad de sonido deficiente.
Las restricciones artificiales por parte de los desarrolladores de pilas de Bluetooth probablemente surgieron debido a la incompatibilidad de algunos dispositivos con grandes valores de Bitpool o perfiles atípicos, incluso si informaron su soporte, y un número insuficiente de pruebas durante la certificación. Fue más fácil para los autores de las pilas de Bluetooth restringirse a acordar un perfil recomendado, en lugar de crear bases de datos de dispositivos incorrectos (aunque ahora lo hacen para otras funciones que funcionan incorrectamente).
SBC asigna dinámicamente bits de cuantificación para bandas de frecuencia, operando de baja a alta con diferentes pesos. Si se utilizó la tasa de bits completa para las frecuencias bajas y medias, las frecuencias más altas se "cortarán" (en su lugar habrá silencio).
Ejemplo de SBC 328 kbps. Arriba está el original, abajo está el SBC, que cambia periódicamente entre pistas. Para el audio, el archivo de video utiliza el códec de compresión FLAC sin pérdidas. El uso de FLAC en el contenedor mp4 no está oficialmente estandarizado, por lo que no es un hecho que su navegador lo juegue, pero debería funcionar en las últimas versiones de Chrome y Firefox de escritorio. Si no tiene sonido, puede descargar el archivo y abrirlo en un reproductor de video completo.
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 emite bits para la banda por encima de 20 kHz. El espectrograma completo está disponible haciendo clic (1,7 MB).

No escucho la diferencia entre el original y el SBC en esta pista.
Tomemos algo más nuevo y simulemos el audio que habría resultado usando los auriculares Samsung Gear IconX con Bitpool 37 (en la parte superior está la señal original, en la parte inferior hay SBC 239 kbit / s, el sonido está en FLAC).
Autoindulgencia sin sentido - TestigoOigo crujidos, menos efecto estéreo y un "ruido" desagradable de las voces a altas frecuencias.
Aunque SBC y un códec muy flexible se pueden configurar para bajas latencias, proporciona una excelente calidad de audio a altas velocidades de bits (452+ kbps) y es bastante bueno para la mayoría de las personas en la alta calidad estándar (328 kbps), debido a que el estándar A2DP no especifica perfiles fijos (pero solo da recomendaciones), los desarrolladores de las pilas establecen restricciones 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 sus propios ajustes y nunca indican técnicamente el valor de Bitpool Debido a sus características de producto, el códec es famoso por su baja calidad de sonido, aunque esto no es un problema para el códec como tal.
El parámetro Bitpool afecta directamente la tasa de bits dentro de un único perfil. El mismo valor de Bitpool 53 puede proporcionar una velocidad de bits de 328 kbit / s con el perfil de alta calidad recomendado, o 1212 kbit / s con un
canal dual y 4 bandas de frecuencia, por lo que los autores del sistema operativo, además de las restricciones en Bitpool, establecen una restricción y en Bitrate. Tal como lo veo, esta situación surgió debido a una falla en el estándar A2DP: era necesario coordinar la tasa de bits, no Bitpool.
Tabla de soporte para funciones SBC en diferentes sistemas operativos:
* Bitpool solo disminuye, pero no aumenta automáticamente, en caso de mejora de las condiciones de transmisión. Para restaurar Bitpool, 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 durante la compilación, en otras versiones, 44.1 kHz y 48 kHz son compatibles al mismo tiempo.
*** El valor de Bitpool se puede aumentar en 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 data de febrero de 1988), antes de Bluetooth se usaba principalmente en equipos de audio inalámbricos profesionales,
ISDN , salas de cine. Actualmente propiedad de Qualcomm, requiere licencias y regalías. A partir de 2014: $ 6,000 a la vez y ≈ $ 1 por cada dispositivo, para lotes de hasta 10,000 dispositivos (
fuente , p. 16).
aptX y aptX HD son el mismo códec, con diferentes perfiles de codificación.
El códec tiene solo un parámetro: la elección de la frecuencia de muestreo. Sin embargo, hay una opción de número / modo de canales, pero en todos los dispositivos que conozco (más de 70 piezas) solo se admite Stereo.
* Las versiones anteriores a la 7 requieren la modificación de la pila Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android tiene licencia de Qualcomm para usar el códec (si el sistema operativo tiene bibliotecas de codificación).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 ( dígitos para una frecuencia de muestreo de 44,1 kHz).
Ejemplo de aptX-audio (en la parte superior está la señal fuente, en la parte inferior está aptX, espectrogramas de solo los canales izquierdos, sonido en FLAC):
Las frecuencias superiores se han vuelto un poco más rojas, pero no se oyen diferencias.
Debido a la distribución fija de los bits de cuantización, el códec no puede "transferir bits" a las frecuencias que más los necesitan. A diferencia de SBC, aptX no "cortará" las frecuencias, sino que les agregará ruido de cuantificación, reduciendo el rango dinámico del audio.
No se debe considerar que usar, por ejemplo, 2 bits para una banda reduce el rango dinámico a 12 dB: ADPCM le permite usar hasta 96 dB de rango dinámico incluso cuando usa 2 bits de cuantificación, pero solo con una señal específica.
ADPCM almacena la diferencia en la representación numérica entre la muestra actual y la siguiente, en lugar de escribir el valor absoluto, como en PCM. Esto le permite reducir 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 utilizan tablas de coeficientes.
Al crear el códec, los autores calcularon los coeficientes ADPCM en un conjunto de archivos de audio de música. Cuanto más se acerca la señal de audio al conjunto de música en el que se construyeron las tablas, menos errores de cuantificación (ruido) crea aptX.
Debido a esto, las pruebas sintéticas siempre producirán peores resultados que la música. Hice un ejemplo sintético especial donde aptX muestra malos resultados: una onda sinusoidal de 12.4 kHz (arriba es la señal original, debajo está aptX. Sonido en FLAC. ¡Baje el volumen!):
Gráfico de espectro:

Los ruidos son claramente audibles.
Sin embargo, si se genera una sinusoide con una amplitud menor 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 la pista de música original y la comprimida, puede invertir una de las señales y agregar las pistas canal por canal. Este enfoque, en general, es incorrecto y no daría un resultado sensato con códecs más complejos, pero específicamente para ADPCM es bastante adecuado.
La diferencia entre el original y aptXLa diferencia de raíz 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 de códec aptX mejorado. Los cambios afectaron el número de bits asignados para codificar los rangos 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 (dígitos para 44.1 kHz).
* Las versiones anteriores a la 7 requieren la modificación de la pila Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android tiene licencia de Qualcomm para usar el códec (si el sistema operativo tiene bibliotecas de codificación).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, sino que solo difiere en la configuración de retardo y búfer que se usa en el lado del dispositivo de audio. El resto es solo aptX.El códec está diseñado para la transmisión de audio interactiva con baja latencia (películas, juegos), donde el retraso de audio no se puede ajustar mediante programación. La implementación del software está disponible como controlador de Dell para los chips Bluetooth de Intel . 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 complejo con un modelo psicoacústico serio. Es ampliamente utilizado para audio en Internet, el segundo más popular después de MP3. Requiere licencia y regalías: $ 15,000 a la vez (o $ 1,000 para compañías con menos de 15 empleados) + $ 0.98 para los primeros 500,000 dispositivos ( fuente ).El códec está estandarizado como parte de las especificaciones MPEG-2 y MPEG-4 y, al contrario de lo que se cree, no pertenece a Apple.* Solo en dispositivos cuyos fabricantes pagaron regalías. IOS y macOS utilizan el mejor codificador AAC de Apple hasta la fecha, proporcionando la mejor calidad de audio posible. Android usa el segundo codificador Fraunhofer FDK AAC de la más alta calidad, pero se pueden usar varios hardware integrados en la plataforma (SoC), con una calidad de codificación desconocida.Según las recientes pruebas de SoundGuys, la calidad de la codificación AAC por diferentes teléfonos Android es muy diferente: lamayoría de los dispositivos de audio inalámbricos para AAC tienen una velocidad de bits máxima de 320 kbps, algunos solo admiten 256 kbps. Otras tasas de bits son extremadamente raras.AAC proporciona una calidad excelente a 320 y 256 kbps, pero está sujeto a
pérdida de codificación secuencial de contenido ya comprimido , sin embargo, es difícil escuchar diferencias con el original en iOS a una velocidad de bits de 256 kbps incluso con varias codificaciones consecutivas, con una codificación única, por ejemplo, MP3 320 kbps en AAC 256 kbps puede ser descuidadoAl igual que con otros códecs Bluetooth, cualquier música primero se decodifica, luego se codifica mediante el códec. Al escuchar música en formato AAC, primero se decodifica por medio del sistema operativo, luego se codifica nuevamente en AAC, para su transmisión a través de Bluetooth. Esto es necesario para mezclar varias transmisiones de audio, por ejemplo, música y notificación de un nuevo mensaje. iOS no es la excepción. En Internet, puede encontrar muchas acusaciones de que en iOS la música AAC no se transcodifica cuando se transmite a través de Bluetooth, lo cual es incorrecto.El estándar 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 (sin pérdida). Por desgracia, en dispositivos reales, no se encuentra soporte de expansión. La extensión para reducir el retraso de transmisión AAC-LD (Low Delay) no está estandarizada para Bluetooth.MP1 / 2/3
Los códecs de la familia MPEG-1/2 Parte 3 consisten en MP3 conocidos y ampliamente utilizados, MP2 menos común (utilizado principalmente en TV y radio digital) y MP1 completamente desconocido.Los viejos códecs MP1 y MP2 no son compatibles en absoluto: no pude encontrar ningún auricular y ni una sola 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 de sistemas operativos modernos. Parece que la pila de BlueSoleil de terceros para Windows puede codificar a MP3 si cambia manualmente el archivo de configuración, pero mi instalación conduce a BSoD en Windows 10. Conclusión: el códec no se puede usar para audio Bluetooth.Anteriormente, en 2006-2008, antes de que el estándar A2DP se distribuyera en dispositivos, la gente escuchaba música MP3 en los auriculares 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 del teléfono inteligente permitía el acceso a muchas funciones de bajo nivel, y en Windows Mobile era completamente posible instalar pilas Bluetooth de terceros.La última patente de códec MP3 ha caducado, el uso del códec no requiere regalías a partir del 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.
: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.htmlLDAC
El nuevo y promocionado códec de alta resolución de Sony, que admite velocidades de muestreo de hasta 96 kHz y resolución de 24 bits, con una velocidad de bits de hasta 990 kbps. Anunciado como un códec audiófilo, como un reemplazo para los códecs Bluetooth existentes. Tiene la función de ajuste adaptativo de bitrate, dependiendo de las condiciones de la radio.El codificador LDAC ( libldac ) se incluye en el paquete estándar de Android, por lo que la codificación es compatible con cualquier teléfono inteligente Android, comenzando con la versión 8 del sistema operativo. Los decodificadores de software no están disponibles gratuitamente, la especificación del códec no es accesible para el público en general, sin embargo, a primera vista del codificador, el dispositivo interno es similar al ATRAC9- Códec de Sony usado en PlayStation 4 y Vita: ambos trabajan en el rango de frecuencia, usan la transformada discreta de coseno modificada (MDCT) y la compresión usando el algoritmo Huffman.LDAC usa la división en 12 o 16 bandas de frecuencia: 12 se usa para 44.1 y 48 kHz, 16 para 88.2 y 96 kHz.El soporte LDAC está representado casi exclusivamente por los auriculares Sony. La capacidad de decodificar LDAC a veces se encuentra en auriculares y DAC de otros fabricantes, pero muy raramente.Comercializar LDAC como un códec de alta resolución perjudica su componente técnico: es estúpido gastar una tasa de bits en la transmisión de frecuencias inaudibles para el oído humano y una mayor profundidad de bits, siempre que no sea suficiente para transmitir la calidad de CD (44.1 / 16) sin pérdida. 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 a través del aire.Dado que el decodificador de software LDAC no está disponible gratuitamente, es imposible probar el códec sin dispositivos adicionales que decodifiquen LDAC. De acuerdo con la prueba LDAC en el DAC con su soporte, que fue conectado por los ingenieros de SoundGuys.com a través de una salida digital y grabó el sonido emitido en las señales de prueba, el LDAC 660 y 990 kbps en modo de calidad de CD proporciona una relación de señal a ruido ligeramente mejor que la de aptX HD Este es un buen resultado. Fuente: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026 LDAC 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 usa solo perfiles estandarizados 303 / 606/909 y 330/660/990 kbit / s.
Otros códecs
Otros códecs A2DP no se usan ampliamente. Su soporte está casi ausente o está disponible solo en ciertos modelos de auriculares y teléfonos inteligentes.El códec ATRAC estandarizado en 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 de los dispositivos de transmisión y recepción, y el HWA LHDC es demasiado nuevo y solo es compatible tres (?) dispositivos.Soporte de códec de audio
No todos los fabricantes publican información precisa sobre los códecs que admiten ciertos auriculares, altavoces, receptores o transmisores inalámbricos. A veces sucede que el soporte para cierto códec es solo para transmisión, pero no para recepción (relevante para transmisores-receptores combinados), aunque el fabricante afirma simplemente ser "soporte", sin notas (supongo que las licencias separadas de codificadores y decodificadores de algunos códecs son los culpables ) En los dispositivos más baratos, es posible que no encuentre el soporte aptX declarado.Desafortunadamente, en las interfaces de la mayoría de los sistemas operativos, el códec utilizado no se muestra en ninguna parte. La información sobre esto solo está disponible 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 que admiten tanto el teléfono / computadora como los auriculares.¿Cómo averiguar qué códecs admite el dispositivo? ¡La opción más confiable es registrar y analizar un volcado de tráfico con parámetros de negociación A2DP!Esto se puede hacer en Linux, macOS y Android. En Linux, puede usar Wireshark o hcidump, en macOS puede usar Bluetooth Explorer, y en Android puede usar la función estándar de guardar volcado Bluetooth HCI, que está disponible en las herramientas del desarrollador. Recibirá un volcado de btsnoop, que puede descargarse al analizador Wireshark.Presta atencion: ¡Puede obtener el volcado correcto solo conectándose desde el teléfono / computadora a los auriculares / altavoz (no importa lo divertido que suene)! Los auriculares pueden establecer independientemente una conexión con el teléfono, en cuyo caso solicitarán una lista de códecs del teléfono, y no al revés. Para asegurarse de grabar el volcado correcto, primero desconecte el emparejamiento con el dispositivo y luego, mientras graba el volcado, empareje el teléfono con los auriculares.Use el siguiente filtro de pantalla para filtrar el tráfico irrelevante:btavdtp.signal_id
Como resultado, debería ver algo similar:

En cada punto del comando GetCapabilities, puede hacer clic y ver las características detalladas del códec.

Wireshark no conoce todos los identificadores de códec, por lo que algunos códecs tendrán que descifrarse manualmente, mirando 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
Para averiguar si su dispositivo admite velocidades EDR de 3 Mbps, puede filtrar:
bthci_evt.code==0x0b

Para no analizar los volcados manualmente, hice un servicio que analizará todo automáticamente:
btcodecs.valdikss.org.ruPara Windows hay una utilidad
Bluetooth Tweaker simple pero útil, que, entre otras cosas, muestra los códecs actuales y compatibles.
En Linux, también puede usar el programa avinfo incluido con BlueZ.
Comparación de códecs. ¿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 fabricante del teléfono ni el fabricante de los auriculares pueden cambiar la tasa de bits o los coeficientes de codificación aptX. El propietario del códec, Qualcomm, proporciona un codificador de referencia en forma de biblioteca. Estos hechos son el punto fuerte de aptX: usted sabe de antemano qué calidad de sonido obtendrá, sin "peros".
SBC, por el contrario, tiene muchos parámetros configurables, una velocidad de bits dinámica (un codificador puede reducir el parámetro de agrupación de bits si la radio está cargada) y no tiene códigos rígidos, sino solo la "calidad promedio" y "alta calidad" recomendadas, que se agregaron a la especificación A2DP en 2003 año La "alta calidad" no es tan alta para los estándares modernos, y la mayoría de las pilas Bluetooth no permiten usar los parámetros mejor que en el perfil de "alta calidad", aunque no hay limitaciones técnicas para esto.
Bluetooth SIG no tiene 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 esperar 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, el códec teóricamente debería ofrecer una calidad indistinguible 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, y en Android está limitado a aptX y LDAC.
El equipo que admite códecs alternativos, por regla general, es de mayor calidad, simplemente porque para dispositivos de baja calidad absolutamente baratos no tiene sentido pagar tarifas de licencia por usar estos códecs. Según mis pruebas, SBC suena muy bien en equipos de alta calidad.
Hice un servicio web que codifica audio en SBC, aptX y aptX HD en tiempo real, directamente en el navegador. Con él, puede 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, así como cambiar la configuración de codificación directamente durante la reproducción de audio:
btcodecs.valdikss.org.ru/sbc-encoderEl servicio utiliza las 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 ejecutarse en el navegador. ¡Quién podría soñar con un futuro así!
Así es como se ve:
Tenga en cuenta cómo cambia el nivel de ruido después de 20 kHz para diferentes códecs. No hay frecuencias superiores a 20 kHz en el archivo MP3 original.
Intente cambiar los códecs y evaluar si escucha la diferencia entre el original, el SBC 53 Joint Stereo (perfil estándar y más común) y aptX / aptX HD.
¡Escucho la diferencia entre los códecs en los auriculares !
Las personas que no escuchan la diferencia entre los códecs durante las pruebas a través de un servicio web afirman que la escuchan cuando escuchan música en auriculares inalámbricos. Por desgracia, esto no es una broma o un efecto placebo: la diferencia es realmente audible, pero no es causada por las diferencias en los
códecs .
La gran mayoría de los chipsets 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 , expansor estéreo y otras cosas diseñadas para mejorar (o cambiar) el sonido. Los fabricantes de equipos Bluetooth pueden configurar el DSP
para cada códec por separado , y al cambiar entre códecs, el oyente pensará que escucha la diferencia en los códecs cuando realmente escucha diferentes configuraciones de DSP.
Transportador de procesamiento de sonido Kalimba DSP en chips 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 programa que le permite configurar 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 sonido de procesamiento posterior por medios regulares.
Características del dispositivo
La versión moderna del estándar A2DP tiene la
función de "control de volumen absoluto" : control de volumen del dispositivo con comandos especiales del protocolo AVRCP, que controla la ganancia de la etapa de salida, en lugar de reducir mediante programación el volumen de la transmisión de audio. Si, al cambiar el volumen de los auriculares, el cambio no se sincroniza con el volumen del teléfono, significa que sus auriculares o el teléfono no son compatibles con esta función. En este caso, tiene sentido escuchar música siempre con el volumen máximo en el teléfono, ajustando el volumen real con los botones de los auriculares; en este caso, la relación señal / ruido será mejor y la calidad de audio
debería ser mayor.
En realidad, hay situaciones tristes. Se activa un compander fuerte en mi RealForce OverDrive D1 para auriculares SBC, y al aumentar el volumen aumenta el nivel de los sonidos silenciosos, pero el volumen de los sonidos fuertes no cambia (la señal se comprime). Debido a esto, debe 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, aparentemente este es 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 al dispositivo de transmisión desde el que se reproduce el sonido. Esto le permite ajustar la sincronización de audio y video mientras mira archivos de video: si hay problemas con la transmisión, el audio no se retrasará con respecto al video, sino que, por el contrario, el reproductor de video ralentizará el video hasta que el audio y el video vuelvan a sincronizarse.
La característica es compatible con muchos auriculares, Android 9+ y Linux con PulseAudio 12.0+. No sé sobre el soporte de funciones en otras plataformas.
Comunicación bidireccional a través de Bluetooth. Transmisión de voz.
Para la transmisión de voz en Bluetooth, se utilizan Synchronous Connection Oriented (SCO) y su versión mejorada de Enhanced Synchronous Connection Oriented (eSCO): transmisión sincrónica con coordinación preliminar de la conexión. El modo le permite transmitir sonido y voz 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 a los auriculares se transmiten 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 volumen, los botones de captura y finalización de llamada.
Desafortunadamente, a partir de 2019, la calidad de la voz a través de Bluetooth sigue siendo pobre, y no está claro por qué Bluetooth SIG no hace nada con él.
CVSD
El códec de voz básico de
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 un registro en este códec .
mSBC
En 2009 se estandarizó un códec mSBC adicional, y en 2010 aparecieron chips que lo utilizan para transmitir voz. mSBC es ampliamente compatible con varios dispositivos.
Este no es un códec independiente, sino un SBC normal del estándar A2DP, con un perfil de codificación fijo: 16 kHz, mono, bitpool 26.
Un ejemplo de un registro en este códec .
No brilla, pero es mucho mejor que CVSD, pero sigue siendo 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á con una frecuencia de muestreo de 16 kHz.
Faststream
CSR decidió desarrollar la idea de reutilizar SBC. Para eludir las limitaciones del protocolo SCO y usar velocidades de bits más altas, CSR fue al revés: implementaron soporte para audio SBC bidireccional en el estándar para transmitir audio unidireccional A2DP, perfiles de codificación estandarizados y lo llamaron "FastStream".
FastStream transmite sonido estéreo de 44.1 o 48 kHz con una velocidad de bits de 212 kbit / s a los altavoces, y mono, 16 kHz, con una velocidad de bits de 72 kbit / s (ligeramente mejor que mSBC) se utiliza para transmitir audio desde el micrófono. Dichos parámetros son mucho más adecuados para comunicarse en juegos en línea: el sonido del juego y los interlocutores serán de alta calidad.
Un ejemplo de grabación en este códec (+
sonido de micrófono, igual que mSBC ).
A la compañía se le ocurrió una muleta interesante, pero debido al hecho de que contradice el estándar A2DP, solo es compatible con algunos de los transmisores de la compañía (que funcionan como una tarjeta de audio USB, no un dispositivo Bluetooth), pero no recibió soporte en pilas Bluetooth, aunque la cantidad de auriculares con soporte FastStream no es tan pequeña.
Por el momento, el soporte para FastStream en el sistema operativo solo está
en forma de un parche para Linux PulseAudio del desarrollador Pali Rohár, que no está incluido en la rama principal del programa.
aptX baja latencia
Para nuestra sorpresa, aptX Low Latency también admite audio bidireccional, implementando el mismo principio que FastStream.
No funcionará usar esta función del códec: no hay soporte para la decodificación de baja latencia en ningún sistema operativo o en cualquier pila Bluetooth que conozca.
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 la misma marca, los cuales son ampliamente utilizados para diferentes propósitos.
Hay dos protocolos de Bluetooth diferentes, no compatibles: 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 dispositivos domésticos.
Comenzando con Bluetooth 4.0, los cambios en la especificación se referían principalmente a Bluetooth Low Energy, y 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 Classic dentro de la especificación Bluetooth 5: agregaron soporte para la tecnología Slot Availability Mask (SAM), que fue diseñada para mejorar la separación del aire. Todos los demás cambios afectan solo a Bluetooth LE (y también a una mayor potencia de salida).
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 existe un estándar para la transmisión de audio con LE. El estándar A2DP, utilizado para transmitir audio de alta calidad, funciona solo a través de Bluetooth Classic, y no hay análogo en LE.
Conclusión: comprar dispositivos de audio con Bluetooth 5 solo porque 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 nuevos auriculares menciona un doble radio de funcionamiento y un menor consumo de energía 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 en sus anuncios están confundidos acerca de las diferencias en la nueva versión del estándar, y algunos chips Bluetooth 5 admiten la quinta versión solo para LE, y para Classic usan 4.2.
Retraso de audio
La cantidad de retraso (retraso) del audio depende de muchos factores: el tamaño del búfer en la pila de audio, en la pila Bluetooth y en el dispositivo inalámbrico más reproductivo, el retraso algorítmico del códec.
El retraso de los códecs simples, como SBC, aptX y aptX HD, es muy pequeño y es de 3 a 6 ms, lo que puede descuidarse, pero los códecs complejos, como AAC y LDAC, pueden causar un retraso notable. El retraso algorítmico AAC para 44.1 kHz es de 60 ms. LDAC: aproximadamente 30 ms (de acuerdo con un análisis aproximado del código fuente. Puedo estar equivocado, pero no mucho).
El retraso resultante 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). Suponiendo que los dispositivos que admiten códecs aptX, AAC y LDAC adicionales usan componentes de alta calidad y un tamaño de búfer pequeño, obtenemos los siguientes retrasos típicos:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Le recuerdo: aptX Low Latency no es compatible con los sistemas operativos, debido a que un retardo más bajo solo puede ser obtenido por un grupo de transmisor + receptor o transmisor + auriculares / altavoz, y todos los dispositivos deben ser compatibles con este códec.
Certificaciones de dispositivos Bluetooth y problemas de logotipos
¿Cómo distinguir un dispositivo de audio de alta calidad de una nave barata? En apariencia, en primer lugar!
Auriculares, altavoces y receptores chinos baratos:
- Falta la palabra "Bluetooth" en la caja y el dispositivo, la mayoría de las veces se usa "Wireless" y "BT"
- Falta el logotipo de Bluetooth
en caja o dispositivo - Sin LED azul intermitente
La ausencia de estos elementos indica que el dispositivo no pasó la certificación, lo que significa que es potencialmente problemático o de mala calidad. Por ejemplo, los auriculares Bluedio no tienen certificación Bluetooth y no cumplen completamente con la especificación A2DP. No aprobarían la certificación.
Considere varios dispositivos y cajas de ellos:



Todos estos son dispositivos no certificados. Las instrucciones pueden incluir el logotipo y el nombre de la tecnología Bluetooth, pero lo más importante es que están en la caja y / o en el dispositivo en sí.
Si sus auriculares o altavoces dicen "Ze bluetooth dewise está conectado con éxito", esto tampoco significa su calidad:
Conclusión
¿Bluetooth puede reemplazar por completo los auriculares y auriculares con cable? Es capaz, pero a costa de un tiempo de conversación de baja calidad, un mayor retraso de transmisión de audio, que puede ser molesto en los juegos, y muchos 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 muy esperado por el SBC "obsoleto y malo", que está lejos de ser tan malo como se suele pensar.
Al final resultó que, las limitaciones artificiales de las pilas de Bluetooth en la tasa de bits SBC se pueden eludir, por lo que SBC no será inferior a aptX HD. Tomé la iniciativa en mis propias manos e hice un parche para el firmware de LineageOS:
modificamos la pila Bluetooth para mejorar el sonido en los auriculares sin códecs AAC, aptX y LDACSe puede encontrar más información en
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 de Bluetooth públicamente, pero ahora está disponible solo para aquellos que han ingresado al Bluetooth SIG.