Cet article est également disponible en anglaisEn raison de la production de masse de smartphones sans prise audio, le casque Bluetooth sans fil 3,5 mm est devenu pour beaucoup le principal moyen d'écouter de la musique et de communiquer en mode casque.
Les fabricants d'appareils sans fil n'écrivent pas toujours des spécifications détaillées des produits et les articles sur l'audio Bluetooth sur Internet sont contradictoires, parfois incorrects, ne parlent pas de toutes les fonctionnalités et copient souvent les mêmes informations qui ne correspondent pas à la réalité.
Essayons de comprendre le protocole, les capacités des piles Bluetooth OS, des écouteurs et des haut-parleurs, des codecs Bluetooth pour la musique et la parole, découvrons ce qui affecte la qualité du son et du retard transmis, apprenons à collecter et décoder des informations sur les codecs pris en charge et d'autres capacités de l'appareil.
TL; DR :
- SBC - Codec normal
- Les écouteurs ont leur propre égaliseur et post-traitement pour chaque codec séparément
- aptX n'est pas aussi bon que les publicités en parlent
- LDAC - conneries marketing
- La qualité de la conversation est toujours médiocre
- Vous pouvez incorporer des encodeurs audio en C dans le navigateur en les compilant dans WebAssembly via emscripten, et ils ne ralentiront pas beaucoup.
Musique Bluetooth
Le composant fonctionnel de Bluetooth est défini par des profils - spécifications de fonctions spécifiques. La musique Bluetooth est transmise à l'aide du profil de transmission audio unidirectionnel de haute qualité A2DP. La norme A2DP a été adoptée en 2003 et n'a pas changé radicalement depuis lors.
Dans le cadre du profil, 1 codec obligatoire de faible complexité de calcul SBC, créé spécifiquement pour Bluetooth, et 3 supplémentaires sont standardisés. L'utilisation de codecs non documentés de notre propre implémentation est également autorisée.
Depuis juin 2019, nous sommes
dans la bande dessinée xkcd avec 14 codecs A2DP:
- SBC ← standardisé en A2DP, pris en charge par tous les appareils
- MPEG-1/2 Layer 1/2/3 ← standardisé en A2DP: le MP3 bien connu utilisé dans la télévision numérique MP2 et le MP1 inconnu
- MPEG-2/4 AAC ← normalisé en A2DP
- ATRAC ← ancien codec Sony standardisé en A2DP
- LDAC ← Le nouveau codec de Sony
- aptX ← codec de 1988
- aptX HD ← Identique à aptX, mais avec différentes options d'encodage
- aptX Low Latency ← un
codec complètement différent, pas d'implémentation de logiciel aptX avec un tampon réduit - aptX Adaptive ← un autre codec Qualcomm
- FastStream ← pseudo codec , modification SBC bidirectionnelle
- HWA LHDC ← Le nouveau codec de Huawei
- Samsung HD ← 2 appareils pris en charge
- Samsung Scalable ← 2 appareils pris en charge
- Samsung UHQ-BT ← 3 appareils pris en charge
Pourquoi les codecs sont-ils nécessaires, demandez-vous, quand l'
EDR est-il
disponible en Bluetooth, qui vous permet de transférer des données à des vitesses de 2 et 3 Mbps, et 1,4 Mbps suffisent pour un PCM 16 bits non compressé à deux canaux?
Transfert de données Bluetooth
Il existe deux types de transfert de données dans Bluetooth: Asynchronous Connection Less (ACL) pour la transmission asynchrone sans établir de connexion, et Synchronous Connection Oriented (SCO) pour la transmission synchrone avec négociation préalable de la connexion.
La transmission est effectuée en utilisant un schéma de partage du temps et un choix de canal de transmission pour chaque paquet séparément (Frequency-Hop / Time-Division-Duplex, FH / TDD), pour lesquels le temps est divisé en intervalles de 625 microsecondes, appelés intervalles. L'un des appareils transmet en nombre de créneaux pairs, l'autre en nombres impairs. Le paquet transmis peut occuper 1, 3 ou 5 emplacements, selon la taille des données et le type d'ensemble de transmission, auquel cas un appareil transfère dans des emplacements pairs et impairs jusqu'à la fin du transfert. Au total, jusqu'à 1600 paquets peuvent être reçus et envoyés par seconde, si chacun d'eux occupe 1 emplacement, et les deux appareils transmettent et reçoivent quelque chose sans s'arrêter.
2 et 3 Mbps pour EDR, qui peuvent être trouvés dans les annonces et sur le site Web Bluetooth, sont le taux de transfert de données de canal maximum pour toutes les données au total (y compris les en-têtes techniques de tous les protocoles dans lesquels les données doivent être encapsulées), dans deux directions en même temps. Les taux de transfert de données réels varieront considérablement.
Pour transférer de la musique, une méthode asynchrone est utilisée, presque toujours à l'aide de paquets comme 2-DH5 et 3-DH5, qui transportent la quantité maximale de données en mode EDR de 2 Mbps et 3 Mbps, respectivement, et occupent 5 emplacements de la division du temps d'antenne.
Représentation schématique d'une transmission utilisant 5 slots par un appareil et 1 slot par un autre (DH5 / DH1):

En raison du principe de partage du temps, nous sommes obligés d'attendre un intervalle de temps de 625 microsecondes après la transmission d'un paquet, si le deuxième appareil ne nous transmet rien ou transmet un petit paquet, et plus de temps si le deuxième appareil transmet en gros paquets. Si plusieurs appareils sont connectés au téléphone (par exemple, un casque, une montre et un bracelet de fitness), le temps de transmission est partagé entre tous.
La nécessité d'encapsuler l'audio dans les protocoles de transport spéciaux L2CAP et AVDTP prend 16 octets de la quantité maximale possible de charge utile audio transmise.
Les 1414 et 1429 kbit / s ne sont certainement pas suffisants pour transmettre du son non compressé dans des conditions réelles, avec une bande de 2,4 GHz bruyante et la nécessité de transférer des données de service. L'EDR à 3 Mbps exige de la puissance de transmission et du bruit de l'air.Par conséquent, même en mode 3-DH5, une transmission PCM confortable est impossible, il y aura constamment des interruptions à court terme et tout ne fonctionnera qu'à une distance de quelques mètres.
En pratique, même le flux audio à 990 kbit / s (LDAC 990 kbit / s) est difficile à transmettre.
Revenons aux codecs.
Sbc
Codec requis pour tous les appareils prenant en charge la norme A2DP. Le meilleur et le pire codec en même temps.
SBC est un codec simple et rapide sur le plan des calculs, avec un modèle psychoacoustique primitif (seuls les sons silencieux sont masqués), utilisant la modulation adaptative par impulsions et codes (APCM).
La spécification A2DP recommande l'utilisation de deux profils: qualité moyenne et haute qualité.

Le codec possède de nombreux paramètres qui vous permettent de contrôler le retard algorithmique, le nombre d'échantillons dans un bloc, l'algorithme d'allocation de bits, mais presque partout les mêmes paramètres recommandés dans la spécification sont utilisés:
Stéréo mixte , 8 bandes de fréquences, 16 blocs dans une trame audio, Méthode de distribution des bits de
Loudness .
SBC prend en charge le changement dynamique du paramètre Bitpool, qui affecte directement le débit binaire. Si la radio est obstruée, que les paquets sont perdus ou que les appareils sont éloignés, la source audio peut réduire Bitpool jusqu'à ce que la connexion se normalise.
Les fabricants de la plupart des écouteurs définissent la valeur maximale du paramètre Bitpool sur 53, ce qui limite le débit binaire à 328 kilobits par seconde lors de l'utilisation du profil recommandé.
Même si le fabricant des écouteurs a défini la valeur maximale de Bitpool au-dessus de 53 (de tels modèles se trouvent, par exemple: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, se produisent également sur certains récepteurs et unités de tête de voiture), la plupart des systèmes d'exploitation ne permettront pas d'utiliser des débits binaires accrus en raison de définir la valeur limite interne dans les piles Bluetooth.
En outre, certains fabricants définissent une valeur Bitpool maximale faible pour certains appareils. Par exemple, pour Bluedio T c'est 39, pour Samsung Gear IconX - 37, ce qui donne une mauvaise qualité sonore.
Les restrictions artificielles de la part des développeurs de piles Bluetooth sont probablement dues à l'incompatibilité de certains appareils avec de grandes valeurs Bitpool ou des profils atypiques, même s'ils ont signalé leur prise en charge, et un nombre insuffisant de tests lors de la certification. Il était plus facile pour les auteurs de piles Bluetooth de se limiter à s'entendre sur un profil recommandé, plutôt que de créer des bases de données d'appareils incorrects (bien qu'ils le fassent maintenant pour d'autres fonctions qui ne fonctionnent pas correctement).
SBC alloue dynamiquement des bits de quantification pour les bandes de fréquences, fonctionnant de bas en haut avec différents poids. Si le bitrate entier a été utilisé pour les fréquences basses et moyennes, les fréquences plus élevées seront «coupées» (il y aura du silence à la place).
Exemple SBC 328 kbps. Ci-dessus est l'original, ci-dessous est le SBC, basculant périodiquement entre les pistes. Pour l'audio, le fichier vidéo utilise le codec de compression FLAC sans perte. L'utilisation de FLAC dans le conteneur mp4 n'est pas officiellement standardisée, donc ce n'est pas un fait que votre navigateur le jouera, mais cela devrait fonctionner dans les dernières versions de Chrome et Firefox de bureau. Si vous n'avez pas de son, vous pouvez télécharger le fichier et l'ouvrir dans un lecteur vidéo à part entière.
ZZ Top - Sharp Dressed ManLe moment de commutation est visible sur le spectrogramme: SBC coupe périodiquement les sons calmes au-dessus de 17,5 kHz et n'émet aucun bit pour la bande au-dessus de 20 kHz. Le spectrogramme complet est disponible par clic (1,7 Mo).

Je n'entends pas la différence entre l'original et SBC sur cette piste.
Prenons quelque chose de plus récent et simulons l'audio qui se serait produit à l'aide des écouteurs Samsung Gear IconX avec Bitpool 37 (en haut, le signal d'origine, en bas, SBC 239 kbit / s, le son est en FLAC).
Indulgence personnelle sans esprit - TémoinJ'entends des crépitements, moins d'effet stéréo et un "cliquetis" désagréable de voix à haute fréquence.
Bien que SBC et un codec très flexible puissent être configurés pour de faibles latences, il offre une excellente qualité audio à des débits élevés (452+ kbps) et est assez bon pour la plupart des gens sur la haute qualité standard (328 kbps), en raison de que la norme A2DP ne spécifie pas de profils fixes (et ne donne que des recommandations), les développeurs des piles définissent des restrictions artificielles sur Bitpool, les paramètres de l'audio transmis ne sont pas affichés dans l'interface utilisateur, et les fabricants de casques sont libres de définir leurs propres paramètres et de ne jamais indiquer la valeur de Bitpool techniquement En raison de ses caractéristiques de produit, le codec est réputé pour sa faible qualité sonore, bien que ce ne soit pas un problème pour le codec lui-même.
Le paramètre Bitpool affecte directement le débit binaire dans un seul profil. La même valeur Bitpool 53 peut donner soit un débit binaire de 328 kbit / s avec le profil de haute qualité recommandé, soit 1212 kbit / s avec
double canal et 4 bandes de fréquence, c'est pourquoi les auteurs du système d'exploitation, en plus des restrictions sur Bitpool, fixent une limite et sur Bitrate. Selon moi, cette situation est due à une faille de la norme A2DP: il fallait coordonner le débit, pas Bitpool.
Tableau de prise en charge des fonctionnalités SBC dans différents systèmes d'exploitation:
* Bitpool ne fait que diminuer, mais n'augmente pas automatiquement, en cas d'amélioration des conditions de transmission. Pour restaurer Bitpool, vous devez arrêter la lecture, attendre quelques secondes et redémarrer l'audio.
** La valeur par défaut dépend des paramètres de pile spécifiés lors de la compilation du firmware. Dans Android 8 / 8.1, la fréquence n'est que de 44,1 kHz ou 48 kHz, selon les paramètres lors de la compilation, dans d'autres versions, 44,1 kHz et 48 kHz sont pris en charge en même temps.
*** La valeur Bitpool peut être augmentée dans Bluetooth Explorer.aptX et aptX HD
aptX est un codec simple et rapide sur le plan des calculs, sans psychoacoustique, utilisant la modulation adaptative différentielle par impulsions et codage (
ADPCM ). Il est apparu vers 1988 (la date de dépôt du
brevet est datée de février 1988), avant Bluetooth, il était principalement utilisé dans les équipements audio sans fil professionnels,
RNIS , les cinémas. Actuellement détenue par Qualcomm, nécessite des licences et des redevances. À partir de 2014: 6 000 $ à la fois et ≈ 1 $ pour chaque appareil, pour des lots allant jusqu'à 10 000 appareils (
source , p. 16).
aptX et aptX HD sont le même codec, avec des profils d'encodage différents.
Le codec n'a qu'un seul paramètre - le choix de la fréquence d'échantillonnage. Il y a cependant un choix du nombre / mode de canaux, mais dans tous les appareils que je connais (70+ pièces), seule la stéréo est prise en charge.
* Les versions antérieures à 7 nécessitent une modification de la pile Bluetooth. Le codec n'est pris en charge que si le fabricant de l'appareil Android a autorisé Qualcomm à utiliser le codec (si le système d'exploitation possède des bibliothèques de codage).aptX divise l'audio en 4 bandes de fréquences et les quantifie avec le même nombre de bits en continu: 8 bits pour 0-5,5 kHz, 4 bits pour 5,5-11 kHz, 2 bits pour 11-16,5 kHz, 2 bits pour 16,5-22 kHz ( chiffres pour une fréquence d'échantillonnage de 44,1 kHz).
Exemple aptX-audio (en haut est le signal source, en bas est aptX, spectrogrammes des canaux gauche uniquement, son en FLAC):
Les fréquences supérieures sont devenues un peu plus rouges, mais aucune différence n'est entendue.
En raison de la distribution fixe des bits de quantification, le codec ne peut pas «transférer les bits» vers les fréquences qui en ont le plus besoin. Contrairement à SBC, aptX ne «coupera» pas les fréquences, mais leur ajoutera du bruit de quantification, réduisant la plage dynamique de l'audio.
Il ne faut pas considérer que l'utilisation, par exemple, de 2 bits pour une bande réduit la plage dynamique à 12 dB: ADPCM vous permet d'utiliser jusqu'à 96 dB de plage dynamique même lorsque vous utilisez 2 bits de quantification, mais uniquement avec un signal spécifique.
ADPCM stocke la différence de représentation numérique entre l'échantillon actuel et l'échantillon suivant, au lieu d'écrire la valeur absolue, comme dans PCM. Cela vous permet de réduire les exigences relatives au nombre de bits requis pour stocker les mêmes informations (sans perte) ou presque les mêmes (avec une erreur d'arrondi relativement faible). Pour réduire les erreurs d'arrondi, des tableaux de coefficients sont utilisés.
Lors de la création du codec, les auteurs ont calculé les coefficients ADPCM sur un ensemble de fichiers audio musicaux. Plus le signal audio est proche de l'ensemble de musique sur lequel les tables ont été construites, moins aptX crée d'erreurs de quantification (bruit).
Pour cette raison, les tests synthétiques produiront toujours des résultats pires que la musique. J'ai fait un exemple synthétique spécial où aptX montre de mauvais résultats - une onde sinusoïdale de 12,4 kHz (ci-dessus est le signal d'origine, ci-dessous est aptX. Son en FLAC. Baissez le volume!):
Graphique du spectre:

Les bruits sont clairement audibles.
Cependant, si une sinusoïde avec une amplitude plus petite est générée de manière à être plus silencieuse, le bruit deviendra également plus silencieux, ce qui indique une large plage dynamique:

Pour entendre la différence entre la piste musicale d'origine et la piste compressée, vous pouvez inverser l'un des signaux et ajouter les pistes canal par canal. Cette approche, en général, est incorrecte et ne donnerait pas un résultat sain avec des codecs plus complexes, mais spécifiquement pour ADPCM, elle est tout à fait appropriée.
La différence entre l'original et aptXLa différence quadratique moyenne des signaux est de -37,4 dB, ce qui n'est pas beaucoup pour une telle musique compressée.
aptX HD
aptX HD n'est pas un codec autonome - c'est un profil d'encodage de codec aptX amélioré. Les changements ont affecté le nombre de bits alloués pour le codage des plages de fréquences: 10 bits pour 0-5,5 kHz, 6 bits pour 5,5-11 kHz, 4 bits pour 11-16,5 kHz, 4 bits pour 16,5-22 kHz (chiffres pour 44,1 kHz).
* Les versions antérieures à 7 nécessitent une modification de la pile Bluetooth. Le codec n'est pris en charge que si le fabricant de l'appareil Android a autorisé Qualcomm à utiliser le codec (si le système d'exploitation possède des bibliothèques de codage).Moins courant qu'aptX: il semble exiger une licence distincte de Qualcomm et des frais de licence distincts.
Répétons l'exemple avec une onde sinusoïdale de 12,4 kHz:

Beaucoup mieux qu'avec aptX, mais toujours bruyant.
aptX Low Latency
La version à faible latence d'aptX n'est pas un codec autonome, mais ne diffère que par les paramètres de délai et de tampon utilisés du côté du périphérique audio. Le reste est juste aptX.Le codec est conçu pour une transmission audio interactive à faible latence (films, jeux), où le retard audio ne peut pas être réglé par programme. L'implémentation logicielle est disponible en tant que pilote Dell pour les puces Bluetooth Intel . Également pris en charge par les émetteurs, les récepteurs, les écouteurs et les haut-parleurs, mais pas les smartphones.Aac
AAC, ou Advanced Audio Coding, est un codec de calcul complexe avec un modèle psychoacoustique sérieux. Il est largement utilisé pour l'audio sur Internet, le deuxième plus populaire après MP3. Licences et redevances requises: 15 000 $ à la fois (ou 1 000 $ pour les entreprises de moins de 15 employés) + 0,98 $ pour les 500 000 premiers appareils ( source ).Le codec est normalisé dans le cadre des spécifications MPEG-2 et MPEG-4 et, contrairement à une idée fausse, n'appartient pas à Apple.* Uniquement sur les appareils dont les fabricants ont payé des redevances. IOS et macOS utilisent le meilleur encodeur Apple AAC à ce jour, offrant la meilleure qualité audio possible. Android utilise l'encodeur Fraunhofer FDK AAC de deuxième qualité, mais divers matériels intégrés à la plate-forme (SoC) peuvent être utilisés, avec une qualité d'encodage inconnue.Selon de récents tests SoundGuys, la qualité de l'encodage AAC par différents téléphones Android est très différente: laplupart des appareils audio sans fil pour AAC ont un débit binaire maximal de 320 kbps, certains ne supportent que 256 kbps. Les autres débits sont extrêmement rares.AAC offre une excellente qualité à 320 et 256 kbps mais est soumis à
perte d'encodage séquentiel de contenu déjà compressé , cependant, il est difficile d'entendre des différences avec l'original sur iOS à un débit de 256 kbps même avec plusieurs encodages consécutifs, avec un seul encodage, par exemple, MP3 320 kbps en AAC 256 kbps peut être négligé.Comme avec les autres codecs Bluetooth, toute musique est d'abord décodée, puis encodée par le codec. Lorsque vous écoutez de la musique au format AAC, elle est d'abord décodée au moyen du système d'exploitation, puis encodée à nouveau en AAC, pour une transmission via Bluetooth. Cela est nécessaire pour mélanger plusieurs flux audio, par exemple, la musique et la notification d'un nouveau message. iOS ne fait pas exception. Sur Internet, vous pouvez trouver de nombreuses allégations selon lesquelles sur iOS AAC la musique n'est pas transcodée lorsqu'elle est transmise via Bluetooth, ce qui est incorrect.La norme AAC a de nombreuses extensions de la méthode de codage standard. L'un d'eux - Scalable To Lossless (SLS) - est standardisé pour Bluetooth et vous permet de transférer de l'audio sans perte (sans perte). Hélas, sur les appareils réels, le support d'extension n'est pas trouvé. L'extension pour réduire le délai de transmission AAC-LD (Low Delay) n'est pas standardisée pour Bluetooth.MP1 / 2/3
Les codecs de la famille MPEG-1/2 Part 3 sont constitués de MP3 bien connus et largement utilisés, de MP2 moins courants (utilisés principalement dans la télévision et la radio numériques) et de MP1 totalement inconnus.Les anciens codecs MP1 et MP2 ne sont pas pris en charge du tout: je n'ai trouvé aucun casque et pas une seule pile Bluetooth qui les encoderait ou les décoder.Le décodage MP3 est pris en charge par certains écouteurs, mais l'encodage n'est pris en charge sur aucune pile de systèmes d'exploitation modernes. Il semble que la pile BlueSoleil tierce pour Windows puisse encoder en MP3 si vous modifiez manuellement le fichier de configuration, mais mon installation conduit à BSoD sur Windows 10. Conclusion - le codec ne peut pas réellement être utilisé pour l'audio Bluetooth.Plus tôt, en 2006-2008, avant que la norme A2DP ne soit distribuée dans les appareils, les gens écoutaient de la musique MP3 sur le casque Nokia BH-501 via le programme MSI BluePlayer, qui était disponible sur Symbian et Windows Mobile. À cette époque, l'architecture du système d'exploitation du smartphone permettait d'accéder à de nombreuses fonctions de bas niveau et il était possible d'installer des piles Bluetooth tierces sur Windows Mobile.Le dernier brevet du codec MP3 a expiré, l'utilisation du codec ne nécessite pas de redevances à partir du 23 avril 2017.Si le brevet le plus ancien mentionné dans les références susmentionnées est pris à titre de mesure, la technologie MP3 est devenue sans brevet aux États-Unis le 16 avril 2017 lorsque le brevet américain 6 009 399, détenu et administré par Technicolor, a expiré.
: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.htmlLDAC
Le nouveau codec haute résolution de Sony, activement promu, prend en charge des taux d'échantillonnage allant jusqu'à 96 kHz et une résolution de 24 bits, avec un débit pouvant atteindre 990 kbps. Annoncé comme codec audiophile, en remplacement des codecs Bluetooth existants. Il a la fonction de réglage adaptatif du débit, en fonction des conditions de la radio.L'encodeur LDAC ( libldac ) est inclus dans le package Android standard, donc l'encodage est pris en charge sur n'importe quel smartphone Android, à partir de la version 8 du système d'exploitation. Les décodeurs logiciels ne sont pas disponibles gratuitement, la spécification du codec n'est pas accessible au grand public, cependant, à première vue sur l'encodeur, le périphérique interne est similaire à ATRAC9- Codec Sony utilisé dans la PlayStation 4 et Vita: les deux fonctionnent dans la gamme de fréquences, utilisent la transformée en cosinus discrète modifiée (MDCT) et la compression en utilisant l'algorithme de Huffman.LDAC utilise la division en 12 ou 16 bandes de fréquences: 12 pour 44,1 et 48 kHz, 16 pour 88,2 et 96 kHz.Le support LDAC est représenté presque exclusivement par les écouteurs Sony. La capacité de décoder le LDAC se trouve parfois sur les écouteurs et les DAC d'autres fabricants, mais très rarement.La commercialisation de LDAC en tant que codec haute résolution nuit à sa composante technique: il est stupide de dépenser du débit binaire pour transmettre des fréquences inaudibles par l'oreille humaine et une profondeur de bits accrue, tant qu'il ne suffit pas de transmettre la qualité CD (44,1 / 16) sans perte. Heureusement, le codec a deux modes de fonctionnement: la transmission audio CD et la transmission audio haute résolution. Dans le premier cas, seuls 44,1 kHz / 16 bits sont transmis par voie aérienne.Étant donné que le décodeur logiciel LDAC n'est pas disponible gratuitement, il est impossible de tester le codec sans dispositifs supplémentaires qui décodent LDAC. Selon le test LDAC sur le DAC avec son support, qui a été connecté par les ingénieurs de SoundGuys.com via une sortie numérique et enregistré le son émis sur les signaux de test, le LDAC 660 et 990 kbps en mode qualité CD fournit un rapport signal / bruit légèrement meilleur que celui d'aptX HD C'est un bon résultat. Source: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026 LDAC prend également en charge le débit binaire dynamique en dehors des profils établis - de 138 kbps à 990 kbps, mais, pour autant que je sache, Android n'utilise que des profils standardisés 303 / 606/909 et 330/660/990 kbit / s.
Autres codecs
Les autres codecs A2DP ne sont pas largement utilisés. Leur support est soit presque totalement absent, soit disponible uniquement sur certains modèles de casques et smartphones.Le codec ATRAC normalisé en A2DP n'a jamais été utilisé comme codec Bluetooth même par Sony, les codecs Samsung HD, Samsung Scalable et Samsung UHQ-BT ont un support très limité des appareils de transmission et de réception, et le HWA LHDC est trop nouveau et n'est pris en charge que trois (?) appareils.Prise en charge du codec audio
Tous les fabricants ne publient pas d'informations précises sur les codecs prenant en charge certains écouteurs, haut-parleurs, récepteurs ou émetteurs sans fil. Parfois, il arrive que la prise en charge d'un certain codec soit uniquement pour la transmission, mais pas pour la réception (pertinente pour les émetteurs-récepteurs combinés), bien que le fabricant prétend simplement être "pris en charge", sans commentaires (je suppose que l'octroi de licences distinctes pour les encodeurs et les décodeurs de certains codecs est à blâmer. ) Dans les appareils les moins chers, vous ne trouverez peut-être pas du tout le support déclaré d'aptX.Malheureusement, dans les interfaces de la plupart des OS, le codec utilisé n'est affiché nulle part. Les informations à ce sujet sont disponibles uniquement dans Android, à partir de la version 8, et macOS. Cependant, même dans ces systèmes d'exploitation, seuls les codecs prenant en charge à la fois le téléphone / ordinateur et les écouteurs seront affichés.Comment savoir quels codecs le périphérique prend en charge? L'option la plus fiable est d'enregistrer et d'analyser un vidage de trafic avec les paramètres de négociation A2DP!Cela peut être fait sur Linux, macOS et Android. Sous Linux, vous pouvez utiliser Wireshark ou hcidump, sur macOS vous pouvez utiliser Bluetooth Explorer, et sur Android vous pouvez utiliser la fonction d'enregistrement de vidage Bluetooth HCI standard, qui est disponible dans les outils du développeur. Vous recevrez un vidage btsnoop, qui peut être téléchargé sur l'analyseur Wireshark.Faites attention: Vous ne pouvez obtenir le bon vidage qu'en vous connectant du téléphone / ordinateur au casque / haut-parleur (peu importe à quel point cela semble drôle)! Les écouteurs peuvent établir indépendamment une connexion avec le téléphone, auquel cas ils demanderont une liste de codecs au téléphone, et non l'inverse. Pour vous assurer que vous enregistrez le vidage correct, déconnectez d'abord le jumelage avec l'appareil, puis, pendant l'enregistrement du vidage, jumelez le téléphone avec les écouteurs.Utilisez le filtre d'affichage suivant pour filtrer le trafic non pertinent:btavdtp.signal_id
En conséquence, vous devriez voir quelque chose de similaire:

À chaque point de la commande GetCapabilities, vous pouvez cliquer et voir les caractéristiques détaillées du codec.

Wireshark ne connaît pas tous les identificateurs de codec, donc certains codecs devront être déchiffrés manuellement, en consultant le tableau d'identificateurs ci-dessous:
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
Pour savoir si votre appareil prend en charge des vitesses EDR de 3 Mbps, vous pouvez filtrer:
bthci_evt.code==0x0b

Afin de ne pas analyser les vidages manuellement, j'ai fait un service qui analysera tout automatiquement:
btcodecs.valdikss.org.ruPour Windows, il existe un utilitaire
Bluetooth Tweaker simple mais utile, qui, entre autres, affiche les codecs actuels et pris en charge.
Sous Linux, vous pouvez également utiliser le programme avinfo inclus avec BlueZ.
Comparaison des codecs. Quel codec est le meilleur?
Chaque codec a ses avantages et ses inconvénients.
aptX et aptX HD utilisent des profils codés en dur qui ne peuvent pas être modifiés sans modifier l'encodeur et le décodeur. Ni le fabricant du téléphone ni celui des écouteurs ne peuvent modifier le débit binaire ou les coefficients de codage aptX. Le propriétaire du codec, Qualcomm, fournit un encodeur de référence sous la forme d'une bibliothèque. Ces faits sont le point fort d'aptX - vous savez à l'avance quelle qualité de son vous obtiendrez, sans «mais».
SBC, au contraire, a de nombreux paramètres configurables, un débit binaire dynamique (l'encodeur peut réduire le paramètre bitpool si la radio est chargée), et n'a pas de codes durs, mais seulement la «qualité moyenne» et la «haute qualité» recommandées, qui ont été ajoutées à la spécification A2DP en 2003 année. La «haute qualité» n'est pas si élevée par rapport aux normes modernes, et la plupart des piles Bluetooth ne permettent pas d'utiliser les paramètres mieux que dans le profil «haute qualité», bien qu'il n'y ait pas de limitations techniques à cela.
Bluetooth SIG ne possède pas d'encodeur de référence SBC sous forme de bibliothèque, et les fabricants le mettent en œuvre eux-mêmes.
Ce sont les faiblesses de SBC - il n'est jamais clair à l'avance quelle qualité sonore attendre d'un appareil particulier. SBC peut produire à la fois une qualité sonore faible et très élevée, mais cette dernière est inaccessible sans désactiver ni contourner les limitations artificielles des piles Bluetooth.
La situation avec AAC est ambiguë: d'une part, le codec devrait théoriquement donner une qualité indiscernable de l'original, mais la pratique, à en juger par les tests du laboratoire SoundGuys sur différents appareils Android, ne le confirme pas. Très probablement, la faute est sur les encodeurs audio matériels de faible qualité intégrés dans divers chipsets téléphoniques. Il est logique d'utiliser AAC uniquement sur les appareils Apple, et sur Android, il est limité à aptX et LDAC.
En règle générale, les équipements qui prennent en charge les codecs alternatifs sont de meilleure qualité, simplement parce que pour les appareils de faible qualité absolument bon marché, il n'est pas logique de payer des frais de licence pour l'utilisation de ces codecs. Selon mes tests, SBC sonne très bien sur un équipement de haute qualité.
J'ai fait un service web encodant l'audio en SBC, aptX et aptX HD en temps réel, directement dans le navigateur. Avec lui, vous pouvez tester ces codecs audio sans transmettre réellement audio via Bluetooth, sur tous les écouteurs filaires, haut-parleurs et votre musique préférée, ainsi que modifier les paramètres d'encodage directement pendant la lecture audio:
btcodecs.valdikss.org.ru/sbc-encoderLe service utilise les bibliothèques de codage SBC du projet BlueZ et libopenaptx de ffmpeg, qui sont compilées dans WebAssembly et JavaScript à partir de C, via emscripten, pour s'exécuter dans le navigateur. Qui pourrait rêver d'un tel avenir!
Voici à quoi ça ressemble:
Veuillez noter comment le niveau de bruit change après 20 kHz pour différents codecs. Il n'y a pas de fréquences supérieures à 20 kHz dans le fichier MP3 d'origine.
Essayez de changer de codec et d'évaluer si vous entendez la différence entre l'original, le SBC 53 Joint Stereo (profil standard et le plus courant) et aptX / aptX HD.
J'entends la différence entre les codecs dans les écouteurs !
Les personnes qui n'entendent pas la différence entre les codecs lors des tests via un service Web affirment qu'elles l'entendent lors de l'écoute de musique dans des écouteurs sans fil. Hélas, ce n'est pas une blague ou un effet placebo: la différence est vraiment audible, mais elle n'est pas provoquée par des différences de
codecs .
La grande majorité des chipsets audio Bluetooth utilisés pour recevoir des appareils sans fil sont équipés d'un processeur de signal numérique (DSP), qui met en œuvre un égaliseur, un
compandeur , un expandeur stéréo et d'autres choses conçues pour améliorer (ou changer) le son. Les fabricants d'équipements Bluetooth peuvent configurer le DSP
pour chaque codec séparément , et lors du basculement entre les codecs, l'auditeur pensera qu'il entend la différence dans les codecs lorsqu'il écoute réellement différents paramètres DSP.
Convoyeur de traitement du son Kalimba DSP en puces CSR / Qualcomm
Activation de diverses fonctions DSP pour chaque codec et sortie séparémentCertains appareils du segment premium sont équipés d'un programme qui vous permet de configurer les paramètres DSP, mais la plupart des écouteurs moins chers n'ont pas cette fonctionnalité, et les utilisateurs ne peuvent pas désactiver le son de post-traitement en utilisant des moyens réguliers.
Caractéristiques de l'appareil
La version moderne de la norme A2DP a la
fonction de "contrôle absolu du volume" - contrôle du volume de l'appareil avec des commandes spéciales du protocole AVRCP, qui contrôle le gain de l'étage de sortie, au lieu de réduire par programme le volume du flux audio. Si, lors du changement du volume du casque, le changement ne se synchronise pas avec le volume du téléphone, cela signifie que votre casque ou le téléphone ne prend pas en charge cette fonction. Dans ce cas, il est logique d'écouter de la musique toujours avec le volume maximum sur le téléphone, en ajustant le volume réel avec les boutons du casque - dans ce cas, le rapport signal / bruit sera meilleur et la qualité audio
devrait être plus élevée.
En réalité, il y a des situations tristes. Un puissant compresseur est activé sur mon casque RealForce OverDrive D1 pour SBC, et l'augmentation du volume augmente le niveau des sons faibles, mais le volume des sons forts ne change pas (le signal est compressé). Pour cette raison, vous devez régler le volume sur l'ordinateur à environ la moitié, dans ce cas, il n'y a pratiquement aucun effet de compression.
Selon mes observations, tous les écouteurs avec codecs supplémentaires prennent en charge la fonction de contrôle du volume absolu, apparemment c'est l'une des exigences pour la certification des codecs.
Certains écouteurs prennent en charge la
connexion de deux appareils en même temps . Cela permet, par exemple, d'écouter de la musique depuis un ordinateur et de recevoir des appels depuis un téléphone. Cependant, vous devez savoir que les codecs alternatifs sont désactivés dans ce mode, et seul SBC est utilisé.
La fonction de rapport de retard
AVDTP 1.3 permet au casque de signaler un retard au périphérique émetteur à partir duquel le son est réellement lu. Cela vous permet d'ajuster la synchronisation de l'audio et de la vidéo tout en regardant des fichiers vidéo: s'il y a des problèmes de diffusion, l'audio ne sera pas en retard sur la vidéo, mais au contraire, la vidéo sera ralentie par le lecteur vidéo jusqu'à ce que l'audio et la vidéo soient à nouveau synchronisés.
La fonction est prise en charge par de nombreux écouteurs, Android 9+ et Linux avec PulseAudio 12.0+. Je ne connais pas la prise en charge des fonctions sur d'autres plateformes.
Communication bidirectionnelle via Bluetooth. Transmission vocale.
Pour la transmission vocale en Bluetooth, Synchronous Connection Oriented (SCO) et sa version améliorée de Enhanced Synchronous Connection Oriented (eSCO) sont utilisées - transmission synchrone avec coordination préliminaire de la connexion. Le mode vous permet de transmettre le son et la voix dans l'ordre, avec une vitesse symétrique d'envoi et de réception, sans attendre la confirmation de la transmission et la réexpédition des paquets. Cela réduit le délai global de transmission audio sur le canal radio, mais impose de sérieuses restrictions sur la quantité de données transmises par unité de temps et affecte négativement la qualité de l'audio.
Lorsque ce mode est utilisé, la voix du microphone et l'audio vers le casque sont transmis avec la même qualité.
Le transfert des données lui-même est normalisé par le profil HSP, qui décrit également des fonctions supplémentaires, telles que le fonctionnement des boutons de volume, des boutons d'interception et de fin d'appel.
Malheureusement, à partir de 2019, la qualité de la voix sur Bluetooth est toujours médiocre, et on ne sait pas pourquoi Bluetooth SIG n'en fait rien.
CVSD
Le codec vocal de base
de CVSD a été normalisé en 2002 et est pris en charge par tous les appareils Bluetooth bidirectionnels. Il fournit une transmission audio avec une fréquence d'échantillonnage de 8 kHz, ce qui correspond à la qualité de la téléphonie filaire conventionnelle.
Un exemple d'enregistrement dans ce codec .
mSBC
Un codec mSBC supplémentaire a été normalisé en 2009, et en 2010 des puces sont apparues qui l'utilisent pour transmettre la voix. mSBC est largement pris en charge par divers appareils.
Ce n'est pas un codec indépendant, mais un SBC régulier du standard A2DP, avec un profil d'encodage fixe: 16 kHz, mono, bitpool 26.
Un exemple d'enregistrement dans ce codec .
Pas brillant, mais beaucoup mieux que CVSD, mais il est toujours désagréable de l'utiliser pour communiquer via Internet, en particulier lorsque vous utilisez des écouteurs pour communiquer dans le jeu - le son du jeu sera également transmis avec une fréquence d'échantillonnage de 16 kHz.
Faststream
CSR a décidé de développer l'idée de réutiliser SBC. Pour contourner les limites du protocole SCO et utiliser des débits binaires plus élevés, CSR est allé dans l'autre sens - ils ont implémenté la prise en charge de l'audio SBC bidirectionnel dans la norme de transmission audio A2DP unidirectionnelle, des profils de codage standardisés et l'ont appelé «FastStream».
FastStream transmet un son stéréo de 44,1 ou 48 kHz avec un débit binaire de 212 kbit / s aux haut-parleurs, et mono, 16 kHz, avec un débit binaire de 72 kbit / s (légèrement meilleur que mSBC) est utilisé pour transmettre l'audio du microphone. De tels paramètres sont bien mieux adaptés à la communication dans les jeux en ligne - le son du jeu et les interlocuteurs seront de haute qualité.
Un exemple d'enregistrement dans ce codec (+
son de microphone, le même que mSBC ).
La société a proposé une béquille intéressante, mais en raison du fait qu'elle contredit la norme A2DP, elle n'est prise en charge que par certains des émetteurs de la société (qui fonctionnent comme une carte audio USB, pas comme un appareil Bluetooth), mais elle n'a pas été prise en charge dans les piles Bluetooth, bien que le nombre d'écouteurs avec prise en charge FastStream ne soit pas si petit.
Pour le moment, la prise en charge de FastStream dans le système d'exploitation se présente uniquement
sous la forme d'un correctif pour Linux PulseAudio du développeur Pali Rohár, qui n'est pas inclus dans la branche principale du programme.
aptX Low Latency
À notre grande surprise, aptX Low Latency prend également en charge l'audio bidirectionnel, implémentant le même principe que FastStream.
Il ne fonctionnera pas pour utiliser cette fonctionnalité du codec - il n'y a pas de support pour le décodage à faible latence dans n'importe quel OS ou dans n'importe quelle pile Bluetooth que je connais.
Bluetooth 5, Classic et Low Energy
Il y a beaucoup de confusion autour des spécifications et des versions de Bluetooth en raison de la présence de deux normes incompatibles sous la même marque, qui sont toutes deux largement utilisées à des fins différentes.
Il existe deux protocoles Bluetooth différents et non compatibles: Bluetooth Classic et Bluetooth Low Energy (LE, alias Bluetooth Smart). Il existe également un troisième protocole, Bluetooth High Speed, mais il n'est pas courant et n'est pas utilisé dans les appareils ménagers.
À partir de Bluetooth 4.0, les changements dans les spécifications concernent principalement Bluetooth Low Energy, et la version Classic n'a reçu que des améliorations mineures.
Liste des changements entre Bluetooth 4.2 et Bluetooth 5:
9 CHANGEMENTS DE v4.2 À 5.0
9.1 NOUVELLES FONCTIONNALITÉS
Plusieurs nouvelles fonctionnalités sont introduites dans la version Bluetooth Core Specification 5.0. Les principaux axes d'amélioration sont:
• Masque de disponibilité des emplacements (SAM)
• 2 Msym / s PHY pour LE
• LE longue portée
• Publicité non connectable à cycle de service élevé
• Extensions publicitaires LE
• Algorithme de sélection de canal LE # 2
9.1.1 Fonctionnalités ajoutées dans CSA5 - Intégrées dans v5.0
• Puissance de sortie plus élevée
Source: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (page 291)Un seul changement a affecté la version Classic dans la spécification Bluetooth 5: ils ont ajouté la prise en charge de la technologie Slot Availability Mask (SAM), conçue pour améliorer la séparation de l'air. Toutes les autres modifications affectent uniquement Bluetooth LE (et une puissance de sortie supérieure également).
Tous les appareils audio utilisent uniquement Bluetooth Classic. Les écouteurs et les haut-parleurs ne peuvent pas être connectés via Bluetooth Low Energy: il n'y a pas de norme pour la transmission audio à l'aide de LE. La norme A2DP, utilisée pour transmettre un son de haute qualité, ne fonctionne que via Bluetooth Classic, et il n'y a pas d'analogue dans LE.
Conclusion - acheter des appareils audio avec Bluetooth 5 uniquement à cause de la nouvelle version du protocole est inutile. Bluetooth 4.0 / 4.1 / 4.2 dans le contexte de la transmission audio fonctionnera de la même manière.
Si l'annonce de nouveaux écouteurs mentionne un double rayon de fonctionnement et une consommation d'énergie réduite grâce au Bluetooth 5, alors sachez qu'ils ne se comprennent pas ou vous induisent en erreur. Pas étonnant, même les fabricants de puces Bluetooth dans leurs annonces sont confus quant aux différences dans la nouvelle version de la norme, et certaines puces Bluetooth 5 ne prennent en charge la cinquième version que pour LE, et pour Classic, elles utilisent 4.2.
Retard audio
La quantité de retard (décalage) de l'audio dépend de nombreux facteurs: la taille du tampon dans la pile audio, dans la pile Bluetooth et dans l'appareil sans fil le plus reproducteur, le retard algorithmique du codec.
Le délai des codecs simples, tels que SBC, aptX et aptX HD, est assez petit et est de 3 à 6 ms, ce qui peut être négligé, mais des codecs complexes, tels que AAC et LDAC, peuvent provoquer un retard notable. Le retard algorithmique AAC pour 44,1 kHz est de 60 ms. LDAC - environ 30 ms (selon une analyse approximative du code source. Je peux me tromper, mais pas beaucoup.)
Le retard résultant dépend fortement du périphérique de lecture, de son chipset et de sa mémoire tampon. Pendant les tests, j'ai obtenu un écart de 150 à 250 ms sur différents appareils (avec le codec SBC). En supposant que les périphériques prenant en charge des codecs aptX, AAC et LDAC supplémentaires utilisent des composants de haute qualité et une petite taille de tampon, nous obtenons les retards typiques suivants:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Je vous rappelle: aptX Low Latency n'est pas pris en charge sur les systèmes d'exploitation, car un retard inférieur ne peut être obtenu que par un ensemble d'émetteur + récepteur ou d'émetteur + casque / haut-parleur, et tous les appareils doivent prendre en charge ce codec.
Problèmes de certification et de logos des appareils Bluetooth
Comment distinguer un appareil audio de haute qualité d'un appareil bon marché? En apparence, tout d'abord!
Écouteurs, haut-parleurs et récepteurs chinois bon marché:
- Le mot «Bluetooth» est manquant sur la boîte et l'appareil, le plus souvent utilisé «sans fil» et «BT»
- Logo Bluetooth manquant
sur boîte ou appareil - Pas de LED bleue clignotante
L'absence de ces éléments indique que l'appareil n'a pas passé la certification, ce qui signifie qu'il est potentiellement problématique ou de mauvaise qualité. Par exemple, les écouteurs Bluedio ne sont pas certifiés Bluetooth et ne sont pas entièrement conformes à la spécification A2DP. Ils ne passeraient pas la certification.
Considérez plusieurs appareils et boîtes d'entre eux:



Ce sont tous des appareils non certifiés. Les instructions peuvent inclure le logo et le nom de la technologie Bluetooth, mais le plus important est qu'ils se trouvent sur la boîte et / ou sur l'appareil lui-même.
Si vos écouteurs ou haut-parleur disent «Ze bluetooth dewise est connecté avec succès», cela ne signifie pas non plus leur qualité:
Conclusion
Le Bluetooth est-il capable de remplacer complètement les écouteurs et les casques filaires? Il est capable, mais au prix d'un temps de conversation de faible qualité, d'un retard de transmission audio accru, ce qui peut être gênant dans les jeux, et de nombreux codecs propriétaires qui nécessitent des frais de licence et augmentent le coût final des smartphones et des écouteurs.
La commercialisation de codecs alternatifs est très forte: aptX et LDAC sont présentés comme un remplacement tant attendu du SBC "obsolète et mauvais", qui est loin d'être aussi mauvais qu'on le pense généralement.
Il s'est avéré que les limitations artificielles des piles Bluetooth sur le débit binaire SBC peuvent être contournées, de sorte que SBC ne sera pas inférieur à aptX HD. J'ai pris l'initiative de mes propres mains et fait un patch pour le firmware LineageOS: Nous
modifions la pile Bluetooth pour améliorer le son sur les écouteurs sans codecs AAC, aptX et LDACPlus d'informations peuvent être trouvées sur
SoundGuys et
SoundExpert .
Bonus: encodeur de référence SBC, informations sur le flux binaire A2DP et fichiers de test . Ce fichier était auparavant affiché publiquement sur le site Bluetooth, mais il n'est désormais disponible que pour ceux qui ont accédé au Bluetooth SIG.