Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Vzhledem k masové produkci smartphonů bez 3.5mm audio jacku se bezdrátová Bluetooth sluchátka pro mnohé stala hlavním způsobem, jak poslouchat hudbu a komunikovat v režimu headset.
Výrobci bezdrátových zařízení ne vždy píší podrobné specifikace produktů a články o Bluetooth zvuku na internetu jsou rozporuplné, někdy nesprávné, nemluví o všech funkcích a často kopírují stejné informace, které neodpovídají realitě.
Pokusme se pochopit protokol, možnosti Bluetooth OS stacků, sluchátek a reproduktorů, Bluetooth kodeky pro hudbu a řeč, zjistíme, co ovlivňuje kvalitu přenášeného zvuku a latenci, naučíme se sbírat a dekódovat informace o podporovaných kodecích a dalších zařízeních schopnosti.

TL, DR:

  • SBC - normální kodek
  • Sluchátka mají vlastní ekvalizér a postprocessing pro každý kodek zvlášť
  • aptX není tak dobrý, jak bylo inzerováno
  • LDAC je marketingový nesmysl
  • Kvalita hovoru je stále špatná
  • Audio kodéry C můžete vložit do svého prohlížeče tak, že je zkompilujete do WebAssembly přes emscripten, a moc se nezpomalí.

Hudba přes Bluetooth

Funkční složku Bluetooth určují profily - specifikace konkrétních funkcí. Streamování hudby Bluetooth využívá vysoce kvalitní profil jednosměrného přenosu zvuku A2DP. Standard A2DP byl přijat v roce 2003 a od té doby se výrazně nezměnil.
V rámci profilu je standardizován 1 povinný kodek s nízkou výpočetní náročností SBC, vytvořený speciálně pro Bluetooth, a 3 další. Je také možné použít nezdokumentované kodeky vlastní implementace.

Od června 2019 jsme v komiksu xkcd se 14 kodeky A2DP:

  • SBC ← standardizované v A2DP, podporované všemi zařízeními
  • MPEG-1/2 Layer 1/2/3 ← standardizované v A2DP: dobře známé MP3, používané v digitální televizi MP2a neznámý MP1
  • MPEG-2/4 AAC ← standardizované v A2DP
  • ATTRAC ← starý kodek od Sony, standardizovaný v A2DP
  • LDAC ← nový kodek od Sony
  • aptX ← kodek z roku 1988
  • aptX HD ← stejné jako aptX, jen s jinými možnostmi kódování
  • aptX s nízkou latencí ← úplně jiný kodek, žádná softwarová implementace
  • aptX Adaptivní ← další kodek od Qualcommu
  • FastStream ← pseudo kodek, obousměrná modifikace SBC
  • HWA LHDC ← nový kodek od Huawei
  • Samsung HD ← podporované 2 zařízeními
  • Samsung škálovatelný ← podporované 2 zařízeními
  • Samsung UHQ-BT ← podporované 3 zařízeními

Ptáte se, proč vůbec potřebujeme kodeky, když Bluetooth má EDR, které umožňuje přenášet data rychlostí 2 a 3 Mbit/s a pro nekomprimované dvoukanálové 16bitové PCM stačí 1.4 Mbit/s?

Přenos dat přes Bluetooth

V Bluetooth existují dva typy přenosu dat: Asynchronous Connection Less (ACL) pro asynchronní přenos bez navázání spojení a Synchronous Connection Oriented (SCO) pro synchronní přenos s předběžným vyjednáváním spojení.
Přenos se provádí pomocí schématu časového dělení a výběrem přenosového kanálu pro každý paket zvlášť (Frequency-Hop/Time-Division-Duplex, FH/TDD), pro který je čas rozdělen do 625mikrosekundových intervalů nazývaných sloty. Jedno ze zařízení vysílá v sudých slotech, druhé v lichých slotech. Vysílaný paket může zabírat 1, 3 nebo 5 slotů v závislosti na velikosti dat a nastaveném typu přenosu, v tomto případě je přenos jedním zařízením realizován v sudých a lichých slotech až do konce přenosu. Celkem lze přijmout a odeslat až 1600 paketů za sekundu, pokud každý z nich zabírá 1 slot a obě zařízení něco vysílají a přijímají bez zastavení.

2 a 3 Mbit/s pro EDR, které lze nalézt v oznámeních a na webových stránkách Bluetooth, představují maximální kanálovou přenosovou rychlost všech dat celkem (včetně technických hlaviček všech protokolů, ve kterých musí být data zapouzdřena), ve dvou směrech zároveň. Skutečná rychlost přenosu dat se bude značně lišit.

Pro přenos hudby se používá asynchronní metoda, která téměř vždy používá pakety jako 2-DH5 a 3-DH5, které přenášejí maximální množství dat v režimu EDR 2 Mbit/s, respektive 3 Mbit/s a zabírají 5krát -sdílení slotů.

Schematické znázornění přenosu pomocí 5 slotů jedním zařízením a 1 slotu druhým (DH5/DH1):
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Vzhledem k principu časového rozdělení éteru jsme nuceni čekat 625mikrosekundový časový slot po odvysílání paketu, pokud nám druhé zařízení nic nevysílá nebo přenáší malý paket, a více času, pokud vysílá druhé zařízení ve velkých balíčcích. Pokud je k telefonu připojeno více zařízení (například sluchátka, hodinky a fitness náramek), pak se doba přenosu dělí mezi všechna.

Potřeba zapouzdřit zvuk do speciálních transportních protokolů L2CAP a AVDTP ubírá 16 bajtů z možného maximálního množství přenášeného audio užitečného zatížení.

Typ balíčku
Počet slotů
Max. počet bajtů v paketu
Max. počet bajtů užitečného zatížení A2DP
Max. Datový tok užitečného zatížení A2DP

2-DH3
3
367
351
936 kbps

3-DH3
3
552
536
1429 kbps

2-DH5
5
679
663
1414 kbps

3-DH5
5
1021
1005
2143 kbps

1414 a 1429 kbps na přenos nekomprimovaného zvuku v reálných podmínkách při hlučném rozsahu 2.4 GHz a nutnosti přenášet data služeb rozhodně nestačí. EDR 3 Mbit/s je náročná na vysílací výkon a hluk ve vzduchu, proto ani v režimu 3-DH5 není možný pohodlný přenos PCM, vždy dojde ke krátkodobým výpadkům a vše bude fungovat pouze na vzdálenost pár metrů.
V praxi je obtížné přenášet i 990 kbit/s audio stream (LDAC 990 kbit/s).

Vraťme se ke kodekům.

SBC

Kodek je vyžadován pro všechna zařízení, která podporují standard A2DP. Nejlepší a nejhorší kodek zároveň.

Vzorkovací frekvence
Bitová hloubka
Bitová rychlost
Podpora kódování
Podpora dekódování

16, 32, 44.1, 48 kHz
Bit 16
10-1500 kbps
Všechna zařízení
Všechna zařízení

SBC je jednoduchý a výpočetně rychlý kodek s primitivním psychoakustickým modelem (aplikuje se pouze maskování tichých zvuků), využívající adaptivní pulzní kódovou modulaci (APCM).
Specifikace A2DP doporučuje pro použití dva profily: Střední kvalita a Vysoká kvalita.
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Kodek má mnoho nastavení, která vám umožňují ovládat zpoždění algoritmu, počet vzorků v bloku, algoritmus distribuce bitů, ale téměř všude se používají stejné parametry doporučené ve specifikaci: Joint Stereo, 8 frekvenčních pásem, 16 bloků v zvukový rámec, metoda distribuce bitů hlasitosti.
SBC podporuje dynamickou změnu parametru Bitpool, která přímo ovlivňuje bitrate. Pokud jsou vzdušné vlny ucpané, pakety jsou ztraceny nebo jsou zařízení umístěna na velké vzdálenosti, může zdroj zvuku snížit Bitpool, dokud se komunikace nevrátí do normálu.

Většina výrobců sluchátek nastavuje maximální hodnotu Bitpool na 53, což omezuje datový tok na 328 kilobitů za sekundu při použití doporučeného profilu.
I když výrobce sluchátek nastavil maximální hodnotu Bitpool nad 53 (takové modely se vyskytují například: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, které lze nalézt také na některých přijímačích a hlavových jednotkách automobilu), pak většina OS nedovolí použití zvýšených datových toků kvůli nastavenému internímu limitu hodnot v Bluetooth stackech.
Někteří výrobci navíc u některých zařízení nastavují maximální hodnotu Bitpool na nízkou. Například pro Bluedio T je to 39, pro Samsung Gear IconX je to 37, což dává špatnou kvalitu zvuku.

Umělá omezení ze strany vývojářů Bluetooth stacků vznikla nejspíše z důvodu nekompatibility některých zařízení s velkými hodnotami Bitpoolu nebo atypických profilů, i když pro ně hlásili podporu, a nedostatečného testování při certifikaci. Pro autory Bluetooth stacků bylo jednodušší omezit se na odsouhlasení doporučeného profilu, než vytvářet databáze nesprávných zařízení (i když to nyní dělají pro jiné nesprávně fungující funkce).

SBC dynamicky přiděluje kvantizační bity frekvenčním pásmům na bázi nízkých až vysokých s různými váhami. Pokud byl celý datový tok použit pro nízké a střední frekvence, vysoké frekvence budou „odříznuty“ (místo toho bude ticho).

Příklad SBC 328 kbps. Nahoře je originál, dole je SBC, periodicky přepínající mezi skladbami. Zvuk ve video souboru používá bezztrátový kompresní kodek FLAC. Použití FLAC v mp4 kontejneru není oficiálně standardizováno, takže není zaručeno, že jej váš prohlížeč přehraje, ale mělo by fungovat v nejnovějších verzích desktopových Chrome a Firefox. Pokud nemáte zvuk, můžete si soubor stáhnout a otevřít v plnohodnotném přehrávači videa.
ZZ Top - Sharp Dressed Man

Spektrogram ukazuje okamžik přepnutí: SBC periodicky ořezává tiché zvuky nad 17.5 kHz a pro pásmo nad 20 kHz nepřiděluje vůbec žádné bity. Celý spektrogram je dostupný po kliknutí (1.7 MB).
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Na této skladbě neslyším žádný rozdíl mezi originálem a SBC.

Vezměme něco novějšího a simulujme zvuk, který by byl získán pomocí sluchátek Samsung Gear IconX s Bitpool 37 (nahoře - původní signál, níže - SBC 239 kbps, zvuk ve FLAC).
Bezduché shovívavost - Svědek

Slyším praskání, menší stereo efekt a nepříjemný „cinkavý“ zvuk ve vysokých frekvencích vokálů.

Ačkoli je SBC velmi flexibilní kodek, lze jej nakonfigurovat na nízkou latenci, poskytuje vynikající kvalitu zvuku při vysokých přenosových rychlostech (452+ kbps) a je docela dobrý pro většinu lidí při standardní vysoké kvalitě (328 kbps), protože standard A2DP neurčuje pevné profily (ale dává pouze doporučení), vývojáři stacků nastavili pro Bitpool umělá omezení, parametry přenášeného zvuku se nezobrazují v uživatelském rozhraní a výrobci sluchátek si mohou nastavit vlastní nastavení a nikdy uvádějí v technických specifikacích produktu hodnotu Bitpool, kodek se proslavil nízkou kvalitou zvuku, i když to není problém kodeku jako takového.
Parametr Bitpool přímo ovlivňuje přenosovou rychlost pouze v rámci jednoho profilu. Stejná hodnota Bitpool 53 může dát jak datový tok 328 kbps s doporučeným profilem High Quality, tak 1212 kbps s Dual Channel a 4 frekvenčními pásmy, proto autoři OS kromě omezení na Bitpool nastavili limit a na Přenosová rychlost. Jak to vidím, tato situace vznikla kvůli chybě ve standardu A2DP: bylo nutné vyjednat bitrate, ne Bitpool.

Tabulka podpory funkcí SBC v různých operačních systémech:

OS
Podporované vzorkovací frekvence
Limit max. Bitpool
Limit max. Bitová rychlost
Typický datový tok
Dynamické nastavení bitpoolu

Windows 10
44.1 кГц
53
512 kbps
328 kbps
✓*

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (pro příchozí připojení), 53 (pro odchozí připojení)
Bez omezení
328 kbps
✓*

MacOS High Sierra
44.1 кГц
64, výchozí 53***
Neznámý
328 kbps

Android 4.4-9
44.1/48 kHz**
53
328 kbps
328 kbps

Android 4.1-4.3.1
44.1, 48 kHz**
53
229 kbps
229 kbps

Blackberry OS 10
48 кГц
53
Bez omezení
328 kbps

* Bitpool se pouze snižuje, ale nezvyšuje se automaticky, pokud se podmínky přenosu zlepší. Chcete-li obnovit Bitpool, musíte zastavit přehrávání, počkat několik sekund a znovu spustit zvuk.
** Výchozí hodnota závisí na nastavení zásobníku zadaném při kompilaci firmwaru. V Androidu 8/8.1 je frekvence pouze buď 44.1 kHz nebo 48 kHz v závislosti na nastavení při kompilaci, v ostatních verzích jsou podporovány současně 44.1 kHz a 48 kHz.
*** Hodnotu Bitpool lze zvýšit v programu Bluetooth Explorer.

aptX a aptX HD

aptX je jednoduchý a výpočetně rychlý kodek, bez psychoakustiky, využívající adaptivní diferenciální modulaci pulzního kódu (ADPCM). Objevilo se kolem roku 1988 (datum podání patent z února 1988), před Bluetooth se používal především v profesionálních bezdrátových audio zařízeních. V současné době ve vlastnictví Qualcomm, vyžaduje licencování a licenční poplatky. Od roku 2014: 6000 1 $ jednorázově a ≈ 10000 $ za zařízení, pro dávky až XNUMX XNUMX zařízení (zdroj, str. 16).
aptX a aptX HD jsou stejný kodek s různými profily kódování.

Kodek má pouze jeden parametr – výběr vzorkovací frekvence. Je zde ovšem na výběr počet/režim kanálů, ale ve všech mně známých zařízeních (70+ kusů) je podporováno pouze Stereo.

Kodek
Vzorkovací frekvence
Bitová hloubka
Bitová rychlost
Podpora kódování
Podpora dekódování

aptX
16, 32, 44.1, 48 kHz
Bit 16
128/256/352/384 kbps (v závislosti na vzorkovací frekvenci)
Windows 10 (desktop a mobil), macOS, Android 4.4+/7*, Blackberry OS 10
Široká škála audio zařízení (hardware)

* Verze do 7 vyžadují úpravu zásobníku Bluetooth. Kodek je podporován pouze v případě, že výrobce zařízení Android licencoval kodek od společnosti Qualcomm (pokud má operační systém knihovny kódování).

aptX rozděluje zvuk do 4 frekvenčních pásem a kvantuje je neustále se stejným počtem bitů: 8 bitů pro 0-5.5 kHz, 4 bity pro 5.5-11 kHz, 2 bity pro 11-16.5 kHz, 2 bity pro 16.5-22 kHz ( hodnoty pro vzorkovací frekvenci 44.1 kHz).

Příklad zvuku aptX (nahoře - původní signál, dole - aptX, spektrogramy pouze levých kanálů, zvuk ve FLAC):

Výšky trochu zčervenaly, ale rozdíl nebyl slyšet.

Kvůli pevné distribuci kvantizačních bitů nemůže kodek „posunout bity“ na frekvence, které je nejvíce potřebují. Na rozdíl od SBC nebude aptX „ořezávat“ frekvence, ale přidá k nim kvantizační šum, čímž sníží dynamický rozsah zvuku.

Nemělo by se předpokládat, že použití např. 2 bitů na pásmo sníží dynamický rozsah na 12 dB: ADPCM umožňuje až 96 dB dynamického rozsahu i při použití 2 kvantizačních bitů, ale pouze pro určitý signál.
ADPCM ukládá číselný rozdíl mezi aktuálním vzorkem a dalším vzorkem, místo aby ukládal absolutní hodnotu jako v PCM. To umožňuje snížit požadavky na počet bitů potřebných k uložení stejné (bez ztráty) nebo téměř stejné (s relativně malou zaokrouhlovací chybou) informace. Pro snížení zaokrouhlovacích chyb se používají tabulky koeficientů.
Při vytváření kodeku autoři vypočítali koeficienty ADPCM na sadě hudebních zvukových souborů. Čím blíže je zvukový signál hudebnímu souboru, na kterém byly stoly postaveny, tím méně kvantizačních chyb (šumu) aptX vytváří.

Z tohoto důvodu budou syntetické testy vždy přinášet horší výsledky než hudba. Udělal jsem speciální syntetický příklad, ve kterém aptX ukazuje špatné výsledky - sinusovka s frekvencí 12.4 kHz (nahoře - původní signál, dole - aptX. Zvuk ve FLAC. Snižte hlasitost!):

Spektrální graf:
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Zvuky jsou jasně slyšitelné.

Pokud však generujete sinusovou vlnu s menší amplitudou, takže je tišší, hluk se také ztiší, což naznačuje široký dynamický rozsah:

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Chcete-li slyšet rozdíl mezi původní hudební stopou a komprimovanou stopou, můžete invertovat jeden ze signálů a přidávat stopy kanál po kanálu. Tento přístup je obecně nesprávný a nedával by rozumné výsledky se složitějšími kodeky, ale konkrétně pro ADPCM je docela vhodný.
Rozdíl mezi originálem a aptX
Rozdíl střední kvadratické hodnoty signálů je na úrovni -37.4 dB, což na takto komprimovanou hudbu není mnoho.

aptX HD

aptX HD není samostatný kodek - je to vylepšený profil kódování kodeku aptX. Změny ovlivnily počet bitů přidělených pro kódovací frekvenční rozsahy: 10 bitů pro 0-5.5 kHz, 6 bitů pro 5.5-11 kHz, 4 bity pro 11-16.5 kHz, 4 bity pro 16.5-22 kHz (číslice pro 44.1 kHz) .

Kodek
Vzorkovací frekvence
Bitová hloubka
Bitová rychlost
Podpora kódování
Podpora dekódování

aptX HD
16, 32, 44.1, 48 kHz
24 bitů
192/384/529/576 kbps (v závislosti na vzorkovací frekvenci)
Android 8+*
Některá zvuková zařízení (hardware)

* Verze do 7 vyžadují úpravu zásobníku Bluetooth. Kodek je podporován pouze v případě, že výrobce zařízení Android licencoval kodek od společnosti Qualcomm (pokud má operační systém knihovny kódování).

Méně běžné než aptX: zjevně vyžaduje samostatné licencování od Qualcommu a samostatné licenční poplatky.

Zopakujme příklad se sinusovkou při 12.4 kHz:
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Mnohem lepší než aptX, ale pořád trochu hlučné.

aptX s nízkou latencí

Kodek od Qualcommu, který nemá nic společného se standardním aptX a aptX HD, soudě podle omezených informací od lidí, kteří se na jeho vývoji podílejí. Navrženo pro interaktivní přenos zvuku s nízkou latencí (filmy, hry), kde nelze softwarově upravit zpoždění zvuku. Nejsou známy žádné softwarové implementace kodérů a dekodérů, podporují je výhradně vysílače, přijímače, sluchátka a reproduktory, nikoli však chytré telefony a počítače.

Vzorkovací frekvence
Bitová rychlost
Podpora kódování
Podpora dekódování

44.1 кГц
276/420 kbps
Některé vysílače (hardware)
Některá zvuková zařízení (hardware)

AAC

AAC, neboli Advanced Audio Coding, je výpočetně složitý kodek se seriózním psychoakustickým modelem. Široce používaný pro zvuk na internetu, druhý v popularitě po MP3. Vyžaduje licence a licenční poplatky: 15000 1000 $ jednorázově (nebo 15 0.98 $ pro společnosti s méně než 500000 zaměstnanci) + XNUMX $ pro prvních XNUMX XNUMX zařízení (zdroj).
Kodek je standardizován v rámci specifikací MPEG-2 a MPEG-4 a na rozdíl od běžné mylné představy nepatří společnosti Apple.

Vzorkovací frekvence
Bitová rychlost
Podpora kódování
Podpora dekódování

8 - 96 kHz
8 - 576 kbps (pro stereo), 256 - 320 kbps (typické pro Bluetooth)
macOS, Android 7+*, iOS
Široká škála audio zařízení (hardware)

* pouze na zařízeních, jejichž výrobci zaplatili licenční poplatky

iOS a macOS používají aktuální nejlepší kodér AAC od společnosti Apple k poskytování nejvyšší možné kvality zvuku. Android používá druhý nejkvalitnější kodér Fraunhofer FDK AAC, ale může používat různý hardware zabudovaný do platformy (SoC) s neznámou kvalitou kódování. Podle posledních testů na webu SoundGuys, kvalita kódování AAC se u různých telefonů Android velmi liší:
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Většina bezdrátových zvukových zařízení má maximální přenosovou rychlost 320 kbps pro AAC, některá podporují pouze 256 kbps. Jiné přenosové rychlosti jsou extrémně vzácné.
AAC poskytuje vynikající kvalitu při datových tocích 320 a 256 kbps, ale podléhá ztráta sekvenčního kódování již komprimovaného obsahu, nicméně na iOS při bitrate 256 kbps i při několika sekvenčních kódováních těžko uslyšíte nějaké rozdíly oproti originálu, u jediného kódování např. MP3 320 kbps až AAC 256 kbps lze ztráty zanedbat.
Stejně jako u jiných kodeků Bluetooth je jakákoli hudba nejprve dekódována a poté zakódována kodekem. Při poslechu hudby ve formátu AAC je nejprve dekódována OS a poté opět zakódována do AAC pro přenos přes Bluetooth. To je nezbytné pro míchání více zvukových proudů, jako je hudba a upozornění na nové zprávy. iOS není výjimkou. Na internetu můžete najít mnoho tvrzení, že na iOS není hudba ve formátu AAC překódována při přenosu přes Bluetooth, což není pravda.

MP1/2/3

Kodeky rodiny MPEG-1/2 Part 3 se skládají ze známého a hojně používaného MP3, méně obvyklého MP2 (používaného především v digitální televizi a rádiu) a zcela neznámého MP1.

Staré kodeky MP1 a MP2 nejsou podporovány vůbec: nenašel jsem žádná sluchátka ani zásobník Bluetooth, které by je kódovaly nebo dekódovaly.
Některá sluchátka podporují dekódování MP3, ale žádný moderní zásobník operačního systému toto kódování nepodporuje. Zdá se, že třetí strana BlueSoleil stack pro Windows může kódovat do MP3, pokud ručně změníte konfigurační soubor, ale pro mě jeho instalace vede k BSoD na Windows 10. Závěr - kodek ve skutečnosti nelze použít pro zvuk Bluetooth.
Dříve, v letech 2006-2008, před rozšířením standardu A2DP do zařízení, lidé poslouchali hudbu ve formátu MP3 na náhlavní soupravě Nokia BH-501 prostřednictvím programu MSI BluePlayer, který byl k dispozici pro Symbian a Windows Mobile. Architektura OS smartphonů v té době umožňovala přístup k mnoha nízkoúrovňovým funkcím a na Windows Mobile bylo dokonce možné instalovat Bluetooth stacky třetích stran.

Poslední patent kodeku MP3 vypršel, používání kodeku nevyžaduje od 23. dubna 2017 licenční poplatky.

Pokud se vezme jako měřítko nejdéle fungující patent zmíněný ve výše uvedených odkazech, pak se technologie MP3 stala bezpatentovou ve Spojených státech 16. dubna 2017, kdy vypršela platnost patentu USA 6,009,399 XNUMX XNUMX, který drží a spravuje Technicolor.

Zdroj: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

Vzorkovací frekvence
Bitová rychlost
Podpora kódování
Podpora dekódování

16 - 48 kHz
8-320 kbps
Nikde není podporováno
Některá zvuková zařízení (hardware)

LDAC

Nový a aktivně propagovaný kodek „Hi-Res“ od Sony, který podporuje vzorkovací frekvence až 96 kHz a 24bitovou bitovou rychlost s bitovou rychlostí až 990 kbps. Je inzerován jako audiofilský kodek, jako náhrada stávajících kodeků Bluetooth. Má funkci adaptivního nastavení bitrate v závislosti na podmínkách rozhlasového vysílání.

LDAC kodér (libldac) je součástí standardního balíčku Android, takže kódování je podporováno na jakémkoli smartphonu Android počínaje OS verze 8. Neexistují volně dostupné softwarové dekodéry, specifikace kodeku není dostupná široké veřejnosti, nicméně na první pohled na kodér je vnitřní struktura kodeku podobná ATRAC9 - Kodek Sony používaný v PlayStation 4 a Vita: oba pracují ve frekvenční doméně, využívají upravenou diskrétní kosinusovou transformaci (MDCT) a kompresi pomocí Huffmanova algoritmu.

Podporu LDAC zajišťují téměř výhradně sluchátka od Sony. Schopnost dekódovat LDAC se někdy vyskytuje u sluchátek a DAC od jiných výrobců, ale velmi zřídka.

Vzorkovací frekvence
Bitová rychlost
Podpora kódování
Podpora dekódování

44.1 - 96 kHz
303/606/909 kbit/s (pro 44.1 a 88.2 kHz), 330/660/990 kbit/s (pro 48 a 96 kHz)
Android 8 +
Některá sluchátka Sony a některá zařízení od jiných výrobců (hardware)

Marketing LDAC jako kodeku Hi-Res poškozuje jeho technickou složku: je hloupé utrácet datový tok za přenos frekvencí neslyšitelných pro lidské ucho a zvyšovat bitovou hloubku, zatímco nestačí přenášet kvalitu CD (44.1/16) beze ztrát. . Naštěstí má kodek dva provozní režimy: přenos zvuku CD a přenos zvuku Hi-Res. V prvním případě se vzduchem přenáší pouze 44.1 kHz/16 bitů.

Protože softwarový dekodér LDAC není volně dostupný, není možné otestovat kodek bez dalších zařízení, která dekódují LDAC. Podle výsledků testu LDAC na DAC s jeho podporou, který inženýři SoundGuys.com připojili přes digitální výstup a zaznamenali výstupní zvuk na testovací signály, LDAC 660 a 990 kbps v režimu CD kvality poskytuje signál poměr šumu o něco lepší než u aptX HD.

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních
Zdroj: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC podporuje i dynamické datové toky mimo zavedené profily – od 138 kbps do 990 kbps, ale pokud vím, Android používá pouze standardizované profily 303/606/909 a 330/660/990 kbps.

Jiné kodeky

Jiné kodeky A2DP se příliš nepoužívají. Jejich podpora buď téměř úplně chybí, nebo je dostupná pouze u určitých modelů sluchátek a smartphonů.
Kodek ATRAC standardizovaný v A2DP nebyl nikdy použit jako kodek Bluetooth ani samotnou společností Sony, kodeky Samsung HD, Samsung Scalable a Samsung UHQ-BT mají velmi omezenou podporu vysílacích a přijímacích zařízení a HWA LHDC je příliš nový a podporuje pouze tři (?) zařízení.

Podpora kodeků pro zvuková zařízení

Ne všichni výrobci zveřejňují přesné informace o kodecích, které jsou podporovány některými bezdrátovými sluchátky, reproduktory, přijímači nebo vysílači. Někdy se stává, že podpora určitého kodeku je pouze pro vysílání, ale ne pro příjem (relevantní pro kombinované vysílače-přijímače), ačkoli výrobce pouze deklaruje „podporu“, bez poznámek (předpokládám, že samostatné licencování kodérů a dekodérů některých za to mohou kodeky). V nejlevnějších zařízeních deklarovanou podporu aptX možná vůbec nenajdete.

Bohužel, rozhraní většiny operačních systémů nezobrazují nikde použitý kodek. Informace o tom jsou k dispozici pouze v systémech Android od verze 8 a macOS. I v těchto OS se však zobrazí pouze ty kodeky, které podporuje telefon/počítač i sluchátka.

Jak zjistíte, které kodeky vaše zařízení podporuje? Zaznamenávejte a analyzujte výpis provozu s parametry vyjednávání A2DP!
To lze provést v systémech Linux, macOS a Android. Na Linuxu můžete použít Wireshark nebo hcidump, na macOS můžete použít Bluetooth Explorer a na Androidu můžete použít standardní funkci ukládání výpisu Bluetooth HCI, která je k dispozici ve vývojářských nástrojích. Obdržíte výpis ve formátu btsnoop, který lze načíst do analyzátoru Wireshark.
Poznámka: správný výpis lze získat pouze připojením telefonu/počítače ke sluchátkům/reproduktorům (bez ohledu na to, jak vtipně to může znít)! Sluchátka dokážou samostatně navázat spojení s telefonem, v takovém případě si vyžádají seznam kodeků z telefonu a ne naopak. Chcete-li zajistit, aby byl zaznamenán správný výpis, nejprve zrušte spárování zařízení a poté během záznamu výpisu spárujte telefon se sluchátky.

Pomocí následujícího filtru zobrazení můžete odfiltrovat irelevantní provoz:

btavdtp.signal_id

V důsledku toho byste měli vidět něco podobného tomuto:
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Kliknutím na každou položku v příkazu GetCapabilities zobrazíte podrobné charakteristiky kodeku.
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Wireshark nezná všechny identifikátory kodeků, takže některé kodeky budou muset být dešifrovány ručně, podívejte se na tabulku identifikátorů níže:

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

Abychom neanalyzovali výpisy ručně, vytvořil jsem službu, která bude vše analyzovat automaticky: btcodecs.valdikss.org.ru

Srovnání kodeků. Který kodek je lepší?

Každý kodek má své výhody a nevýhody.
aptX a aptX HD používají pevně zakódované profily, které nelze změnit bez úpravy kodéru a dekodéru. Výrobce telefonu ani výrobce sluchátek nemůže změnit datový tok ani faktory kódování aptX. Vlastník kodeku, společnost Qualcomm, poskytuje referenční kodér ve formě knihovny. Tyto skutečnosti jsou silnou stránkou aptX – předem víte, jakou kvalitu zvuku získáte, bez jakýchkoliv „ale“.

Naproti tomu SBC má mnoho konfigurovatelných parametrů, dynamický datový tok (kodér může snížit parametr bitpool, pokud jsou rádiové vlny vytížené) a nemá pevně zakódované profily, pouze doporučené „střední kvalita“ a „vysoká kvalita“, které byly přidán do specifikace A2DP v roce 2003. „Vysoká kvalita“ již není podle dnešních standardů tak vysoká a většina Bluetooth stacků vám neumožňuje používat parametry lépe než profil „vysoké kvality“, ačkoli pro to neexistují žádná technická omezení.
Bluetooth SIG nemá referenční SBC kodér jako knihovnu a výrobci jej implementují sami.
To jsou slabiny SBC – nikdy není předem jasné, jakou kvalitu zvuku od konkrétního zařízení očekávat. SBC může produkovat zvuk nízké i velmi vysoké kvality, ale bez deaktivace nebo obcházení umělých omezení stohů Bluetooth je tato možnost nedosažitelná.

Situace s AAC je nejednoznačná: na jedné straně by měl kodek teoreticky produkovat kvalitu k nerozeznání od originálu, ale v praxi, soudě podle testů laboratoře SoundGuys na různých zařízeních Android, to není potvrzeno. Na vině jsou s největší pravděpodobností nekvalitní hardwarové audio kodéry zabudované v různých čipsetech telefonů. Má smysl používat AAC pouze na zařízeních Apple a na Androidu jej omezit na aptX a LDAC.

Hardware, který podporuje alternativní kodeky, bývá kvalitnější, jednoduše proto, že u velmi levných a nekvalitních zařízení nemá smysl platit licenční poplatky za používání těchto kodeků. V mých testech zní SBC na kvalitním vybavení velmi dobře.

Vytvořil jsem webovou službu, která kóduje zvuk do SBC, aptX a aptX HD v reálném čase, přímo v prohlížeči. S ním můžete otestovat tyto zvukové kodeky, aniž byste skutečně přenášeli zvuk přes Bluetooth, na jakýchkoli kabelových sluchátkách, reproduktorech a vaší oblíbené hudbě a také měnit parametry kódování přímo při přehrávání zvuku:
btcodecs.valdikss.org.ru/sbc-encoder
Služba využívá ke spuštění v prohlížeči knihovny kódování SBC z projektu BlueZ a libopenaptx z ffmpeg, které jsou zkompilovány do WebAssembly a JavaScript z C prostřednictvím emscripten. Kdo by mohl snít o takové budoucnosti!

Vypadá to takto:

Všimněte si, jak se mění hladina šumu po 20 kHz pro různé kodeky. Původní soubor MP3 neobsahuje frekvence nad 20 kHz.

Zkuste přepnout kodeky a uvidíte, zda uslyšíte rozdíl mezi originálem, SBC 53 Joint Stereo (standardní a nejběžnější profil) a aptX/aptX HD.

Slyším rozdíl mezi kodeky ve sluchátkách!

Lidé, kteří při testování přes webovou službu neslyší rozdíl mezi kodeky, tvrdí, že jej slyší při poslechu hudby na bezdrátových sluchátkách. Bohužel to není vtip nebo placebo efekt: rozdíl je opravdu slyšitelný, ale není způsoben rozdíly kodeky.

Naprostá většina Bluetooth audio čipsetů používaných v bezdrátových přijímacích zařízeních je vybavena digitálním signálovým procesorem (DSP), který implementuje ekvalizér, kompander, stereo expandér a další věci určené ke zlepšení (nebo změně) zvuku. Výrobci zařízení Bluetooth mohou nakonfigurovat DSP pro každý kodek zvlášťa při přepínání mezi kodeky si posluchač bude myslet, že slyší rozdíl v ovládání kodeků, zatímco ve skutečnosti poslouchá různá nastavení DSP.

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních
DSP Kalimba potrubí pro zpracování zvuku v čipech vyrobených CSR/Qualcomm

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních
Aktivujte různé funkce DSP pro každý kodek a výstup samostatně

Některá prémiová zařízení se dodávají se softwarem, který umožňuje upravit nastavení DSP, ale většina levnějších sluchátek to nedělá a uživatelé nemohou ručně vypnout následné zpracování zvuku.

Funkční vlastnosti zařízení

Moderní verze standardu A2DP má funkce „absolutní ovládání hlasitosti“. — ovládání hlasitosti zařízení pomocí speciálních příkazů protokolu AVRCP, které reguluje zesílení koncového stupně, namísto programového snižování hlasitosti audio streamu. Pokud když změníte hlasitost ve sluchátkách, změna se nesynchronizuje s hlasitostí v telefonu, pak vaše sluchátka nebo telefon tuto funkci nepodporují. V tomto případě má smysl vždy poslouchat hudbu s maximální hlasitostí na telefonu, skutečnou hlasitost upravovat tlačítky sluchátek - v tomto případě bude poměr signálu k šumu lepší a kvalita zvuku musí být vyšší.
Ve skutečnosti dochází k smutným situacím. Na mých sluchátkách RealForce OverDrive D1 pro SBC je zapnutý silný kompander a zvýšení hlasitosti vede ke zvýšení úrovně tichých zvuků, přičemž hlasitost hlasitých zvuků se nemění (signál je komprimován). Na počítači si kvůli tomu musíte nastavit hlasitost zhruba na polovinu, v takovém případě prakticky nedochází k žádnému kompresnímu efektu.
Podle mého pozorování všechna sluchátka s přídavnými kodeky podporují funkci absolutního ovládání hlasitosti, zřejmě je to jeden z požadavků na certifikaci kodeků.

Některá sluchátka podporují připojení dvou zařízení současně. To vám umožní například poslouchat hudbu z počítače a přijímat hovory z telefonu. Měli byste si však uvědomit, že v tomto režimu jsou zakázány alternativní kodeky a používá se pouze SBC.

Funkce hlášení zpoždění AVDTP 1.3 umožňuje sluchátkům sdělit vysílacímu zařízení zpoždění, při kterém je zvuk skutečně přehráván. To umožňuje upravit synchronizaci zvuku s videem při prohlížení videosouborů: pokud se vyskytnou problémy s rádiovým přenosem, zvuk nebude za videem zaostávat, ale naopak video bude přehrávačem videa zpomalováno, dokud nebude zvuk a video jsou opět synchronizovány.
Funkce je podporována mnoha sluchátky, Android 9+ a Linux s PulseAudio 12.0+. Nejsem si vědom podpory této funkce na jiných platformách.

Obousměrná komunikace přes Bluetooth. Přenos hlasu.

Pro přenos hlasu v Bluetooth se používá Synchronous Connection Oriented (SCO) - synchronní přenos s předběžným sjednáním spojení. Režim umožňuje přenášet zvuk a hlas přísně v pořádku, se symetrickou rychlostí odesílání a příjmu, bez čekání na potvrzení přenosu a opětovného odesílání paketů. To snižuje celkové zpoždění přenosu zvuku přes rádiový kanál, ale ukládá vážná omezení na množství dat přenášených za jednotku času a negativně ovlivňuje kvalitu.
Při použití tohoto režimu se hlas i zvuk přenášejí ve stejné kvalitě.
Bohužel od roku 2019 je kvalita hlasu přes Bluetooth stále špatná a není jasné, proč s tím Bluetooth SIG nic nedělá.

CVSD

Základní kodek CVSD řeči byl standardizován v roce 2002 a je podporován všemi obousměrnými komunikačními zařízeními Bluetooth. Poskytuje přenos zvuku se vzorkovací frekvencí 8 kHz, což odpovídá kvalitě běžné drátové telefonie.

Příklad záznamu v tomto kodeku.

mSBC

Dodatečný kodek mSBC byl standardizován v roce 2009 a v roce 2010 se již objevily čipy využívající jej pro přenos hlasu. mSBC je široce podporován různými zařízeními.
Nejedná se o nezávislý kodek, ale o běžný SBC ze standardu A2DP, s pevným profilem kódování: 16 kHz, mono, bitpool 26.

Příklad záznamu v tomto kodeku.

Není brilantní, ale mnohem lepší než CVSD, ale stále je otravné používat ho pro online komunikaci, zvláště když používáte sluchátka ke komunikaci ve hře - zvuk hry bude také přenášen se vzorkovací frekvencí 16 kHz.

Společnost FastStreamCSR se rozhodla rozvinout myšlenku využití SBC. Aby CSR obešli omezení protokolu SCO a použili vyšší bitrate, vydali se jinou cestou – do standardu jednosměrného přenosu zvuku A2DP zavedli podporu obousměrného zvuku SBC, standardizovali profily kódování a nazvali to „FastStream“.

FastStream přenáší stereo zvuk na 44.1 nebo 48 kHz s bitovou rychlostí 212 kbps do reproduktorů a mono, 16 kHz, s bitrate 72 kbps se používá pro přenos zvuku z mikrofonu (o něco lepší než mSBC). Takové parametry jsou mnohem vhodnější pro komunikaci v online hrách - zvuk hry a účastníci rozhovoru budou vysoce kvalitní.

Příklad záznamu v tomto kodeku (+ zvuk z mikrofonu, stejně jako mSBC).

Společnost přišla se zajímavou berličkou, ale vzhledem k tomu, že odporuje standardu A2DP, je podporována pouze v některých firemních vysílačích (které fungují jako USB audio karta, nikoli Bluetooth zařízení), ale ne získat podporu v Bluetooth stacks.i když počet sluchátek s podporou FastStream není tak malý.

V tuto chvíli je podpora FastStream pouze v OS jako záplata pro Linux PulseAudio od vývojáře Pali Rohára, který není zařazen v hlavní větvi programu.

aptX s nízkou latencí

K vašemu velkému překvapení aptX Low Latency také podporuje obousměrný zvuk a implementuje stejný princip jako FastStream.
Tuto funkci kodeku není možné nikde použít – v žádném OS ani v žádném mně známém stacku Bluetooth neexistuje podpora dekódování s nízkou latencí.

Bluetooth 5, klasický a nízkoenergetický

Kolem specifikací a verzí Bluetooth bylo mnoho zmatků kvůli přítomnosti dvou nekompatibilních standardů pod stejnou značkou, z nichž oba jsou široce používány pro různé účely.

Existují dva různé, nekompatibilní protokoly Bluetooth: Bluetooth Classic a Bluetooth Low Energy (LE, také známý jako Bluetooth Smart). Existuje také třetí protokol, Bluetooth High Speed, ale ten není rozšířený a v domácích zařízeních se nepoužívá.

Počínaje Bluetooth 4.0 se změny ve specifikaci týkaly především Bluetooth Low Energy a verze Classic se dočkala jen drobných vylepšení.

Seznam změn mezi Bluetooth 4.2 a Bluetooth 5:

9 ZMĚN OD 4.2 NA 5.0

9.1 NOVÉ FUNKCE

Ve verzi Bluetooth Core Specification 5.0 je představeno několik nových funkcí. Hlavní oblasti zlepšení jsou:
• Maska dostupnosti slotu (SAM)
• 2 Msym/s PHY pro LE
• LE dlouhý dosah
• Nepřipojitelná reklama ve vysokém zatížení
• LE Advertising Extensions
• Algoritmus výběru kanálu LE č. 2
9.1.1 Funkce přidané v CSA5 – Integrováno ve verzi 5.0
• Vyšší výstupní výkon

Zdroj: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (strana 291)

Pouze jedna změna se dotkla verze Classic v rámci specifikace Bluetooth 5: přidala podporu technologie Slot Availability Mask (SAM), která má zlepšit oddělení rozhlasového vysílání. Všechny ostatní změny se týkají pouze Bluetooth LE (a také vyššího výstupního výkonu).

vše Zvuková zařízení používají pouze Bluetooth Classic. Není možné připojit sluchátka a reproduktory přes Bluetooth Low Energy: neexistuje žádný standard pro přenos zvuku pomocí LE. Standard A2DP, používaný pro přenos vysoce kvalitního zvuku, funguje pouze přes Bluetooth Classic a v LE neexistuje žádný analog.

Závěr – kupovat audio zařízení s Bluetooth 5 jen kvůli nové verzi protokolu je nesmyslné. Bluetooth 4.0/4.1/4.2 v kontextu přenosu zvuku bude fungovat úplně stejně.
Pokud oznámení nových sluchátek zmiňuje dvojnásobný operační dosah a sníženou spotřebu energie díky Bluetooth 5, pak byste měli vědět, že tomu buď sami nerozumí, nebo vás klamou. Není divu, protože i výrobci Bluetooth čipů ve svých oznámeních tápou v rozdílech mezi novou verzí standardu a některé čipy Bluetooth 5 podporují pátou verzi pouze pro LE a pro Classic používají 4.2.

Zpoždění přenosu zvuku

Velikost zpoždění (lag) zvuku závisí na mnoha faktorech: na velikosti vyrovnávací paměti v zásobníku zvuku, v zásobníku Bluetooth a v samotném bezdrátovém přehrávacím zařízení a na algoritmickém zpoždění kodeku.

Latence jednoduchých kodeků jako SBC, aptX a aptX HD je velmi malá, 3-6 ms, což lze zanedbat, ale složité kodeky jako AAC a LDAC mohou způsobit znatelné zpoždění. Algoritmická latence AAC pro 44.1 kHz je 60 ms. LDAC - asi 30 ms (na základě hrubé analýzy zdrojového kódu. Mohu se mýlit, ale ne moc.)

Výsledná latence značně závisí na přehrávacím zařízení, jeho čipsetu a vyrovnávací paměti. Během testů jsem na různých zařízeních obdržel rozptyl 150 až 250 ms (s kodekem SBC). Pokud předpokládáme, že zařízení podporující další kodeky aptX, AAC a LDAC používají vysoce kvalitní komponenty a malou velikost vyrovnávací paměti, dostaneme následující typické latence:

SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms

Připomínám: aptX Low Latency není v operačních systémech podporován, a proto lze nižší latenci získat pouze s kombinací vysílač+přijímač nebo vysílač+sluchátka/reproduktor a všechna zařízení musí tento kodek podporovat.

Problémy se zařízením Bluetooth, certifikací a logem

Jak rozeznat kvalitní audio zařízení od levného řemesla? Především vzhledově!

Pro levná čínská sluchátka, reproduktory a přijímače:

  1. Na krabici a zařízení chybí slovo „Bluetooth“, nejčastěji se používá „Wireless“ a „BT“
  2. Chybí logo Bluetooth Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních na krabici nebo zařízení
  3. Žádná modrá blikající LED

Absence těchto prvků naznačuje, že zařízení nebylo certifikováno, což znamená, že je potenciálně nekvalitní a problematické. Například sluchátka Bluedio nemají certifikaci Bluetooth a nesplňují plně specifikaci A2DP. Neprošli by certifikací.

Podívejme se na několik zařízení a krabic z nich:
Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Zvuk přes Bluetooth: co nejvíce podrobností o profilech, kodecích a zařízeních

Všechno jsou to necertifikovaná zařízení. Návod může obsahovat logo a název technologie Bluetooth, ale nejdůležitější je, že jsou na krabici a/nebo na samotném zařízení.

Pokud vaše sluchátka nebo reproduktor říkají „Ze bluetooth dewise je úspěšně připojeno“, také to neznamená jejich kvalitu:

Závěr

Může Bluetooth zcela nahradit kabelová sluchátka a náhlavní soupravy? Je to schopné, ale za cenu špatné kvality hovoru, zvýšené latence zvuku, která může být ve hrách otravná, a množství proprietárních kodeků, které vyžadují licenční poplatky a zvyšují konečné náklady na smartphony i sluchátka.

Marketing alternativních kodeků je velmi silný: aptX a LDAC jsou prezentovány jako dlouho očekávaná náhrada za „zastaralý a špatný“ SBC, který není zdaleka tak špatný, jak si lidé myslí.

Jak se ukázalo, umělá omezení Bluetooth stacků na bitrate SBC lze obejít, takže SBC nebude horší než aptX HD. Vzal jsem iniciativu do svých rukou a udělal záplatu pro firmware LineageOS: Úprava zásobníku Bluetooth pro zlepšení zvuku ve sluchátkách bez kodeků AAC, aptX a LDAC

Více informací naleznete na webových stránkách Zvuk chlapi и SoundExpert.

bonus: Referenční kodér SBC, informace o bitovém toku A2DP a testovací soubory. Tento soubor byl dříve zveřejněn na webových stránkách Bluetooth, ale nyní je k dispozici pouze členům Bluetooth SIG.

Zdroj: www.habr.com

Přidat komentář