1 points par GN⁺ 2023-11-25 | 1 commentaires | Partager sur WhatsApp

Amélioration de la qualité audio via une modification de la pile Bluetooth

  • Les utilisateurs de casques sans fil constatent une qualité sonore médiocre et un manque d’aigus lorsqu’ils utilisent le codec Bluetooth SBC standard.
  • Acheter un appareil compatible avec les codecs aptX ou LDAC est la solution habituelle, mais ces codecs impliquent des coûts de licence, ce qui rend les appareils plus chers.
  • La faible qualité du SBC provient actuellement de limitations artificielles de la pile Bluetooth et des casques, et il est possible de les contourner sur tous les appareils par de simples modifications logicielles.

Codec SBC

  • Le SBC dispose de plusieurs paramètres négociés lors de la phase d’établissement de la connexion : type et nombre de canaux audio, nombre de sous-bandes de fréquence, nombre de blocs audio par paquet, algorithme d’allocation des bits de quantification, ainsi que valeurs maximale et minimale du bitpool utilisées pendant la quantification.
  • Les piles Bluetooth actuelles négocient généralement l’ensemble d’options suivant : Joint Stereo, 8 bandes, 16 blocs, Loudness, bitpool 2..53.
  • La valeur du bitpool est le paramètre qui modifie le bitrate d’encodage ; plus elle est élevée, plus le bitrate et la qualité augmentent.

Modification de la pile Bluetooth

  • Toutes les piles Bluetooth compatibles A2DP doivent prendre en charge le mode Dual Channel, mais il n’existe aucun moyen de forcer l’utilisation de ce mode.
  • Des correctifs ont été créés pour Android 8.1 et 9 afin d’ajouter le mode Dual Channel au menu développeur, où il apparaît comme codec « HD Audio » dans les paramètres des appareils Bluetooth.
  • Ce correctif a été intégré dans des firmwares alternatifs comme LineageOS, Resurrection Remix et crDroid.

Origine des 551 et 452 kbps

  • La technologie Bluetooth à répartition temporelle a été conçue pour transmettre efficacement de gros paquets de taille fixe.
  • Le transfert de données s’effectue par slots, et 5 slots constituent le nombre maximal pouvant être transmis en une seule fois.
  • Sur 5 slots, il est possible de transmettre jusqu’à 679 octets à 2 Mbps et jusqu’à 1021 octets à 3 Mbps.

Pourquoi tout cela est-il nécessaire ?

  • Contrairement à la croyance répandue sur la qualité audio de l’aptX, le SBC peut dans certains cas produire une qualité audio inférieure au bitrate standard de 328k.
  • Le SBC alloue dynamiquement les bits de quantification aux bandes de fréquence, tandis que l’aptX quantifie les bandes de fréquence avec un nombre constant de bits.
  • En utilisant un SBC à haut bitrate, on peut obtenir dans la plupart des cas une qualité sonore supérieure à l’aptX, et sur des casques prenant en charge l’EDR 3 Mb/s, une qualité très proche de l’aptX HD.

Peut-on aller plus loin ?

  • Le patchset Android fournit une option supplémentaire permettant d’augmenter encore le bitrate des appareils EDR 2 mbps, de 452 kbps à 595 kbps.
  • Il est possible d’activer ce bitrate plus élevé en définissant la variable persist.bluetooth.sbc_hd_higher_bitrate sur 1.

Compatibilité avec les appareils

  • Le SBC Dual Channel est pris en charge par presque tous les casques, enceintes et autoradios.
  • Les appareils posant des problèmes avec ce mode sont très rares, mais des informations détaillées sur la compatibilité sont disponibles sur 4pda et xda-developers.

Comparaison de la qualité audio

  • Un service web a été créé pour encoder l’audio en temps réel dans le navigateur en SBC (ainsi qu’en aptX et aptX HD), afin de comparer la qualité sonore de différents profils SBC et codecs.

Contacter les développeurs Android

  • Une demande a été adressée aux développeurs de la pile Bluetooth de Google pour inclure le correctif dans l’AOSP, mais aucune réponse n’a encore été reçue.
  • Aucun commentaire n’a non plus été obtenu de la part des personnes impliquées dans le développement sur le système de revue de code Gerrit.

Conclusion

  • Les utilisateurs des firmwares LineageOS, Resurrection Remix et crDroid peuvent améliorer la qualité audio Bluetooth en cochant une case dans les paramètres des appareils Bluetooth.
  • Les utilisateurs Linux peuvent également installer le correctif de Pali Rohár pour obtenir un bitrate SBC plus élevé.

Avis de GN⁺

Le point le plus important de cet article est qu’il est possible d’améliorer la qualité de l’audio Bluetooth existant uniquement par des modifications logicielles. C’est une solution séduisante, car elle permet de profiter d’un son de meilleure qualité sur des appareils déjà possédés, sans acheter du matériel compatible avec de nouveaux codecs coûteux. En particulier, le fait que ces modifications soient possibles pour les utilisateurs de firmwares open source est une avancée intéressante, car elle améliore l’accessibilité technique et permet aux utilisateurs d’avoir davantage de contrôle sur leurs appareils.

1 commentaires

 
GN⁺ 2023-11-25
Avis Hacker News
  • Évaluation positive du large support de SBC et de sa capacité d’évolution naturelle

    Le fait que SBC soit largement pris en charge est excellent, et cela semble être une extension naturelle du standard existant. Personnellement, mon problème n’est pas LDAC ou AAC par rapport à SBC, mais la faible qualité de HFP. Dès que le micro s’active, on a l’impression de revenir dans les années 90. J’aimerais voir une amélioration de la qualité de l’audio Bluetooth bidirectionnel.

  • Analyse approfondie d’un bug dans la pile Bluetooth d’Android et remarque sur la variabilité du matériel

    Cet article n’est pas une analyse du Bluetooth en général, mais une analyse approfondie d’un bug dans la pile Bluetooth d’Android. Ce que l’auteur ne mentionne pas du tout, c’est que le matériel utilisé est extrêmement varié. Android fonctionne sur d’innombrables chipsets Bluetooth. Ainsi, même si le correctif semble fonctionner sur un matériel donné, il peut ne pas fonctionner sur d’autres téléphones Android. Cela peut aussi dépendre des autres tâches en cours sur l’appareil. Par exemple, si le chipset BT+Wifi est partagé et que vous streamez une vidéo en Wifi tout en diffusant de l’audio vers un casque, l’appareil doit allouer ses ressources entre l’usage du Wifi et celui du BT. Donc, un audio stocké localement et un audio en streaming n’obtiendront pas nécessairement les mêmes paramètres de CODEC. Il existe beaucoup de nuances sur ce sujet que l’auteur n’a pas prises en compte, donc il faut lire cela avec prudence.

  • Partage d’expérience sur le réglage des paramètres SBC avec « Alternative A2DP Driver » sous Windows, ainsi que sur l’usage de AAC, aptX et LDAC

    « Alternative A2DP Driver » propose cette fonctionnalité sous Windows. On peut personnaliser les paramètres SBC et utiliser AAC, aptX (je ne l’ai pas essayé) et LDAC. D’après mon expérience, cela fonctionne bien, et je peux utiliser LDAC avec un Sony XM4. C’est une version d’essai, mais peu coûteuse. J’ai constaté une réduction de la portée Bluetooth en mode haute qualité, ce qui confirme qu’un codec (ou au moins quelque chose) change effectivement. Le lien ci-dessus n’est pas affilié.

  • Mention de la possibilité d’améliorer l’audio à plus haut débit sous Linux avec SBC XQ et la qualité audio des casques avec mSBC

    Sous Linux, on peut activer un audio SBC à plus haut débit via ce qu’on appelle « SBC XQ ». De même, on peut utiliser « mSBC » pour obtenir un audio casque de meilleure qualité (même si cela reste bien sûr inférieur à SBC ou APTX). Beaucoup de casques prennent en charge de meilleurs codecs audio, mais ce support n’est pas universel et l’amélioration de l’audio bidirectionnel n’est pas garantie. J’aimerais que Google intègre déjà ce type de fonctionnalité, ou quelque chose de similaire.

  • Mise en avant de la nécessité d’une fonction permettant une mise en tampon longue à l’avance dans les profils audio Bluetooth

    J’aimerais qu’on invente dans les profils audio Bluetooth une fonctionnalité permettant de mettre en tampon sur une longue durée à l’avance. Par exemple, lors de la lecture d’une chanson d’une minute, toute la chanson devrait être mise en tampon. Si l’on clique sur « pause » ou que l’on change le volume, le tampon devrait être abandonné. Mais un tampon long permettrait au téléphone d’économiser de l’énergie et de mieux tolérer une connectivité radio instable.

  • Retour d’expérience sur l’utilisation de cette fonction dans LineageOS et mention de la nécessité d’améliorer l’expérience utilisateur

    J’ai utilisé cette fonctionnalité dans LineageOS et j’en suis très satisfait. La possibilité d’envoyer un audio de meilleure qualité vers des appareils comme un autoradio qui ne prend pas en charge les codecs tiers est très utile. On peut aussi en tirer un grand bénéfice avec des casques. L’expérience utilisateur mériterait quelques améliorations, mais la fonctionnalité elle-même est excellente.

  • Mention de la nécessité d’ajouter l’année (2019) au titre et rappel que c’est déjà implémenté dans PulseAudio et PipeWire

    Il vaudrait mieux ajouter (2019) au titre. Il est fait mention de « toutes les piles Bluetooth actuelles », mais ces fonctionnalités sont déjà implémentées dans PulseAudio et PipeWire.

  • Point de vue sceptique sur l’effet réel sur la qualité audio de la différence de débit entre Dual Channel et Joint Stereo

    Je suis sceptique quant à l’idée qu’un Dual Channel à 551 kbps offre une qualité sensiblement meilleure qu’un Joint Stereo à 328 kbps. Pour la plupart des morceaux, je me demande si cela ne revient pas simplement à utiliser davantage de bits pour encoder des informations redondantes.

  • Question sur une méthode pour améliorer la qualité de HFP sous macOS et partage d’expérience avec mSBC sous Linux

    Quelqu’un sait-il s’il existe un moyen d’améliorer la qualité de HFP via Bluetooth sur macOS ? J’ai eu une qualité plutôt bonne avec mSBC sous Linux, mais sur macOS c’est complètement médiocre et cela repasse en qualité ligne téléphonique / mono. Je me demande s’il existe déjà un hack pour faire fonctionner cela correctement sur Darwin.

  • Expérience d’un utilisateur qui ne savait pas qu’il utilisait SBC et remerciement pour le billet

    En utilisant Lineage 18-1, je ne savais pas que j’utilisais la fonctionnalité SBC. Ce billet m’a permis de découvrir que j’utilisais bien cette fonctionnalité. "magic -"