Problémy s bezdrátovými Bluetooth sluchátky nastávají nejen ve fázi připojení, ale i poté, kdy jsou sluchátka již připojena k telefonu, ale zvuk přes ně je reprodukován s určitým zkreslením, praskáním nebo dokonce zadrháváním, zastavováním atd. Nebo zvuk zaostává za videem, objeví se desynchronizace. V tomto článku se podíváme na několik řešení, která lze použít, pokud k tomuto problému dojde při používání bezdrátových sluchátek s telefony Android nebo iPhone. Co se týče samotných sluchátek, podobné problémy se vyskytují u naprosto jakéhokoli modelu a formátu Bluetooth sluchátek. Včetně s TWS (když jsou dvě sluchátka oddělená). Pokud máte podobný problém, ale při připojení sluchátek k počítači, přečtěte si tento článek: špatný zvuk ve sluchátkách Bluetooth na počítači nebo notebooku.

Ze své zkušenosti mohu říci, že problémy se zkreslením nebo rušením při přehrávání zvuku přes bezdrátová sluchátka jsou na Androidu častější než na iPhonu. Tam to všechno funguje jaksi stabilněji. Stává se například, že v bezdrátových Bluetooth sluchátkách po připojení k telefonu není vůbec žádný zvuk. Téměř všechna řešení tedy budou pro Android.

Důvodem je obrovské množství různých zařízení (včetně velmi zastaralých), různé verze Androidu, optimalizace softwaru a hardwaru atd. To, že se zvuk přenáší vzduchem, a mohou nastat problémy s nějakým druhem rušení, atd. ., kvůli kterému klesá kvalita zvuku a objevuje se zkreslení nebo desynchronizace, je to pochopitelné. A tyto momenty je také potřeba vyloučit, o tom si povíme později.

Pokud mluvíme o důvodech, lze je rozdělit do dvou skupin:

  1. Software: chyby v softwaru sluchátek nebo chytrých telefonů, různé funkce a nastavení, problémy s ovládáním různých programů (včetně přehrávačů hudby a videa), kodeků atd.
  2. Hardware: výkon telefonu (slabý hardware), hardwarové poruchy sluchátek nebo telefonu (často problémy s anténou, která zesiluje signál Bluetooth, se samotným modulem Bluetooth), velký rozdíl ve verzích Bluetooth mezi telefonem a sluchátky.

Co mám dělat, když zvuk v telefonu přes sluchátka zadrhává nebo se zpožďuje?

  • Restartujte telefon. Vypněte a znovu zapněte sluchátka. Pokud máte sluchátka TWS, schovejte je do pouzdra, vyjměte je a po restartu je připojte k telefonu.
  • Zkuste přehrávat hudbu nebo video, které je uloženo v paměti telefonu, a ne přes internet. Problém snad není v přenosu zvuku, ale ve špatné rychlosti internetového připojení a obsah se prostě nestihne načíst, takže se zastaví.
  • Vypněte Wi-Fi v telefonu. Chápu, že to není řešení, protože bez Wi-Fi to nejde, ale zkuste to zkontrolovat. Naopak, pokud je Wi-Fi již vypnuto, zapněte jej.
  • Pokud má váš telefon pouzdro, zkuste jej odstranit. a znovu je připojte. Poté zkontrolujte, jak se zvuk přehrává, zda se zadrhává nebo zda zvuk nezaostává za videem.
  • Aktualizujte firmware svého telefonu (Android nebo iOS) a sluchátek (pokud je to možné pomocí sluchátek). Software sluchátek lze obvykle aktualizovat prostřednictvím proprietární aplikace.
  • Nezapomeňte sluchátka vyzkoušet s jiným telefonem nebo počítačem. Takže můžete pochopit, jaký je důvod. Poté mi můžete napsat do komentářů, pokusím se navrhnout řešení. Pokud se jedná o problém se sluchátky na všech zařízeních, pak se s největší pravděpodobností jedná o selhání hardwaru. V této situaci můžete aktualizovat software sluchátek, resetovat nastavení a znovu je připojit.
  • Zkontrolujte, zda nedochází k rušení zvuku na jiných místech. V jiné místnosti, venku. To nám umožní vyloučit možnost rušení z Wi-Fi routeru, jiných zařízení atd.
  • Zkuste nainstalovat a použít jiný přehrávač.
READ
Jak poznáte, že je potřeba vyměnit kabeláž?

Další řešení (pro Android)

Pokud výše uvedená řešení nepomohla zbavit se problému se zkreslením zvuku přes sluchátka nebo alespoň zjistit, jaký je důvod, zkuste složitější řešení. Některé z nich jsem četl na fórech. Pokud něco nefunguje nebo máte nějaké dotazy, napište do komentářů.

Povolte kodek AAC v nastavení Bluetooth v systému Android

Váš smartphone s největší pravděpodobností používá ve výchozím nastavení kodek SBC (na iPhonu se standardně používá AAC). V případě SBC mohou nastat problémy se zvukem (praskání, šum atd.). Musíte zkusit přepnout na kodek AAC v nastavení smartphonu. Na Androidu to s největší pravděpodobností (je pro mě těžké říci, kde se tato nastavení nacházejí na různých verzích Androidu, různých telefonech atd.) lze provést v sekci „Pro vývojáře“ – „Audio kodek pro Bluetooth“. Zde vyberte AAC.

Kodek ACC v nastavení Bluetooth v systému Android

Můžete experimentovat s dalšími možnostmi.

Vypněte úsporný režim

Pokud je důvodem nedostatečný výkon zařízení, problém s přenosem zvuku může vyřešit vypnutí úsporného režimu. V nastavení telefonu můžete vypnout režim úspory energie (Battery Saver). Nejrychlejší způsob, jak toho dosáhnout, je prostřednictvím panelu oznámení. Je tam samostatné tlačítko.

Zkreslení zvuku přes sluchátka na Androidu kvůli úspornému režimu

Zakázat 4G

Na internetu je mnoho recenzí, že vypnutí 4G (přepnutí do režimu pouze 3G) vyřešilo problém s rušením při přehrávání zvuku z telefonu přes Bluetooth sluchátko. Možná deaktivace 4G uvolní zatížení bezdrátového modulu nebo procesoru. Můžeš to zkusit. 4G můžete zakázat v nastavení v části „Mobilní síť“ – „Mobilní data“. Položka „Preferovaný režim sítě“. Nastavte jej na „Pouze 3G“.

Zvuk přes Bluetooth sluchátka je kvůli 4G závadný

Poté restartujte svůj smartphone.

Zkreslení a desynchronizace zvuku kvůli aplikacím

Pro odlehčení hardwaru a zvýšení výkonu telefonu je potřeba odstranit nebo zavřít (je vhodné smazat) všechny nepotřebné aplikace. Existuje také informace, že zvuk do sluchátek může být přenášen zkresleně kvůli hlasovým asistentům. Viděl jsem například recenzi, ve které autor řekl, že problém zmizel po odstranění prohlížeče Yandex s hlasovou asistentkou Alice. Sám jsem to netestoval, ale může to být funkční řešení. Také jsem viděl, kdy byl problém vyřešen „zamrznutím“ standardního hlasového asistenta (Voice Assistant).

Vypněte zvukové efekty

Ne všechny smartphony mají takové nastavení. Ukazuji to na příkladu smartphonu Redmi. V sekci „Pokročilá nastavení“ může být položka „Sluchátka a zvukové efekty“. Zde deaktivujte „MI Sound Enhancement“. Aby se nastavení aktivovalo, musíte připojit sluchátka.

Zvuk se zpožďuje a zadrhává kvůli zvukovým efektům na Androidu

Zakazujeme „Přístup ke kontaktům a protokolům hovorů“

Při prvním připojení sluchátek budete požádáni o povolení přístupu ke kontaktům a protokolu hovorů. Zpravidla všichni kliknou na „Povolit“. Zkuste sluchátka z telefonu odebrat podle těchto pokynů, znovu je připojit, a když se objeví tento požadavek, vyberte „Odmítnout“ (Odmítnout).

READ
Jak posílit cihlovou zeď?

Zvuk ve sluchátkách z telefonu Android zamrzá kvůli přístupu ke kontaktům a hovorům

Můžete také zkusit deaktivovat „Phone Audio Device“ v nastavení (sluchátka nebudou fungovat jako headset) a stejnou „Contact Exchange“. Ponechte pouze „Multimediální zvukové zařízení“.

Používání sluchátek pouze pro zvuk bez mikrofonu v systému Android

Vypněte „Viditelnost“ pro ostatní zařízení

Zátěž modulu Bluetooth můžete ulevit vypnutím funkce „Viditelnost“, když je váš smartphone prohledatelný a viditelný na jiných zařízeních. To lze provést v nastavení Bluetooth.

Zakázat funkci

Pokud tam máte položku „Vyhledat zařízení Bluetooth“, vypněte ji také. Po těchto krocích by měl být zvuk ve sluchátkách reprodukován bez zkreslení nebo zamrzání.

Zakázání A2DP Hardware Offload

V komentářích Sergey (díky mu!) sdílel řešení. Jeho sluchátka TWS začala po aktualizaci na Android 12 koktat. Pomohlo vypnutí A2DP hardwarové zátěže v možnostech pro vývojáře.

Zakázání A2DP Hardware Offload

Zvuk ve sluchátkách se zadrhává a je přerušován pouze na ulici při chůzi

Existuje mnoho zpráv o tomto problému. A to vše je velmi zvláštní. Zvuk doma ve sluchátkách je normální, ale když jdete ven, nebo při chůzi/běhání, zvuk začne mizet. v čem by mohl být problém? V komentářích se Dmitry podělil o zajímavý postřeh: důvodem je oblečení. Přesněji v syntetickém oblečení. Způsobuje rušení. Tento problém se samozřejmě nevyskytuje u všech sluchátek.

Článek rád doplním o nová řešení. Pokud se vám podařilo překonat tento problém pomocí řešení z tohoto, zanechte svůj názor v komentářích. Pokud máte nějaké jiné řešení, prosím sdílejte, budu vděčný! No ptejte se, určitě všem odpovím.

Někteří uživatelé bezdrátových sluchátek hlásí špatnou kvalitu zvuku a nedostatek vysokých frekvencí při použití standardního kodeku Bluetooth SBC, který podporují všechna zvuková zařízení. Častým doporučením pro zlepšení zvuku je nákup zařízení a sluchátek s podporou kodeků aptX a LDAC. Tyto kodeky vyžadují licenční poplatky, takže zařízení, která je podporují, jsou dražší.

Ukazuje se, že nízká kvalita SBC je způsobena umělým omezením Bluetooth stacků a nastavení sluchátek a toto omezení lze obejít na jakémkoli existujícím zařízení softwarovými změnami smartphonu nebo počítače.

Kodek SBC

Kodek SBC má mnoho různých parametrů, které se vyjednávají během fáze nastavování připojení. Mezi nimi:

  • Počet a typ kanálů: Joint Stereo, Stereo, Dual Channel, Mono;
  • Počet frekvenčních pásem: 4 nebo 8;
  • Počet bloků v balení: 4, 8, 12, 16;
  • Algoritmus pro distribuci bitů během kvantizace: Loudness, SNR;
  • Maximální a minimální hodnota skupiny bitů použitých při kvantizaci (bitpool): obvykle od 2 do 53.

Dekódovací zařízení musí podporovat jakoukoli kombinaci těchto parametrů. Kodér nemusí implementovat vše.
Stávající sady Bluetooth se obvykle shodují na následujícím profilu: Joint Stereo, 8 pásem, 16 bloků, Loudness, bitpool 2..53. Tento profil kóduje zvuk 44.1 kHz při datovém toku 328 kbps.
Parametr bitpool přímo ovlivňuje datový tok v rámci jednoho profilu: čím vyšší je, tím vyšší je datový tok a tím i kvalita.
Parametr bitpool však není vázán na konkrétní profil; Přenosová rychlost je také do značné míry ovlivněna dalšími parametry: typem kanálů, počtem frekvenčních pásem, počtem bloků. Datový tok můžete zvýšit nepřímo, odsouhlasením nestandardních profilů, bez změny bitpoolu.

READ
Co je uretanová barva?

Vzorec pro výpočet bitrate SBC

Například režim Dual Channel kóduje kanály samostatně, přičemž pro každý kanál využívá celý bitpool. Tím, že zařízení přinutíme používat Dual Channel místo Joint Stereo, získáme téměř dvojnásobný datový tok se stejnou maximální hodnotou bitpoolu: 617 kbps.
Podle mého názoru je použití neprofilové bitpoolové hodnoty ve fázi vyjednávání chybou standardu A2DP, která vedla k umělému omezení kvality SBC. Bylo by moudřejší vyjednat bitrate, ne bitpool.

Tyto pevné hodnoty Bitpool a Bitrate pocházejí z tabulky doporučených hodnot pro vysoce kvalitní zvuk. Ale doporučení není důvodem k tomu, abyste se omezovali na tyto hodnoty.

Tabulka profilů Bluetooth SBC

Specifikace A2DP v1.2, která byla aktivní v letech 2007 až 2015, vyžaduje, aby všechna dekódovací zařízení fungovala správně s datovými toky až 512 kbps:

Dekodér SNK musí podporovat všechny možné hodnoty bitového fondu, které nevedou k překročení maximální bitové rychlosti. Tento profil omezuje dostupnou maximální přenosovou rychlost na 320 kb/s pro mono a 512 kb/s pro dvoukanálové režimy.

V nové verzi specifikace není žádný limit datového toku. Předpokládá se, že moderní sluchátka vydaná po roce 2015 a podporující EDR mohou podporovat přenosové rychlosti až ≈730 kbps.

Z nějakého důvodu mají mnou testované zásobníky Bluetooth pro Linux (PulseAudio), Android, Blackberry a macOS umělé limity maximální hodnoty parametru bitpool, který přímo ovlivňuje maximální bitrate. To ale není největší problém, téměř všechna sluchátka také omezují maximální bitpool hodnotu na 53.
Jak jsem již viděl, většina zařízení funguje perfektně na upraveném Bluetooth stacku s datovým tokem 551 kbps, bez přerušení a praskání. Ale takový datový tok nebude nikdy konzistentní za normálních podmínek, na běžných Bluetooth stackech.

Úprava zásobníku Bluetooth

V každém Bluetooth stacku, který je kompatibilní se standardem A2DP, existuje podpora pro režim Dual Channel, ale není možné ji aktivovat z rozhraní.

Pojďme přidat přepínač do rozhraní! Vytvořil jsem záplaty pro Android 8.1 a Android 9, které do zásobníku přidávají plnou podporu Dual Channel, přidávají režim do nabídky přepínání režimů ve vývojářských nástrojích a zacházejí s SBC s podporou Dual Channel, jako by to byl další kodek jako aptX, AAC. nebo LDAC (Android tomu říká HD Audio) přidáním zaškrtnutí do nastavení Bluetooth zařízení. Vypadá to takto:

obraz

Když je zaškrtávací políčko aktivováno, zvuk Bluetooth se začne přenášet bitovou rychlostí 551 kbps, pokud sluchátka podporují rychlost připojení 3 Mbit/s, popř 452 kbps, pokud sluchátka podporují pouze 2 Mbit/s.

Kde se vzalo 551 a 452 kbit/s?

Technologie air-splitting v Bluetooth je navržena tak, aby efektivně přenášela velké pakety pevné velikosti. Přenos dat probíhá ve slotech, největší počet slotů odeslaných při jednom přenosu je 5. Existují také přenosové režimy, které využívají 1 nebo 3 sloty, ale ne 2 nebo 4. V 5 slotech lze přenést až 679 bajtů rychlostí připojení 2 Mbps a až 1021 bajtů při rychlosti 3 Mbps, respektive 3 – 367 a 552 bajtů.

READ
Proč máčíte štěpky?

obraz

Pokud chceme přenést méně dat než 679 nebo 1021 bajtů, ale více než 367 nebo 552 bajtů, bude přenos stále trvat 5 slotů a data budou přenesena za stejnou dobu, což snižuje efektivitu přenosu.

obraz

SBC v režimu Dual Channel, při 44100 Hz zvuku s parametry Bitpool 38, 16 bloků na snímek, 8 frekvenčních rozsahů, kóduje zvuk do 164 bajtových snímků s bitovou rychlostí 452 kbps.
Zvuk musí být zapouzdřen v přenosových protokolech L2CAP a AVDTP, které odebírají 16 bajtů z užitečného obsahu zvuku.

V jednom přenosu Bluetooth s 5 sloty je tedy možné osadit 4 zvukové rámce:

Do odesílaného paketu vměstnáme 11.7 ms audio dat, která se přenesou za 3.75 ms a v paketu nám zbývá 6 nevyužitých bajtů.
Pokud bitpool trochu zvednete, nebude již možné zabalit 4 audiorámce do jednoho balíčku. Budete muset posílat 3 snímky najednou, což snižuje efektivitu přenosu, snižuje množství zvuku přenášeného na snímek a rychleji vede k zasekávání zvuku ve špatných rádiových podmínkách.

Stejně tak byl zvolen datový tok 551 kbps pro EDR 3 Mbps: s Bitpool 47, 16 bloků na snímek, 8 frekvenčních pásem, je získána velikost rámce 200 bajtů s bitovou rychlostí 551 kbps. Jedno balení obsahuje 5 snímků nebo 14.6 ms hudby.

Algoritmus pro výpočet všech parametrů SBC je poměrně složitý, můžete se snadno zmást, pokud budete počítat ručně, proto jsem vytvořil interaktivní kalkulačku, která pomůže zájemcům: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Proč je to všechno nutné?

Na rozdíl od všeobecného přesvědčení o kvalitě zvuku kodeku aptX může u některých souborů poskytovat horší výsledky než SBC se standardní bitovou rychlostí 328 kbps.

SBC dynamicky přiděluje kvantizační bity do frekvenčních pásem způsobem zdola nahoru. Pokud byl celý datový tok použit pro spodní a střední frekvence, budou horní frekvence „odříznuty“ (místo toho bude ticho).
aptX kvantuje frekvenční pásma stále stejným počtem bitů, a proto má konstantní datový tok: 352 kbps pro 44.1 kHz, 384 kbps pro 48 kHz a neumí „bit-shift“ na ty 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 a někdy zavede charakteristické praskání. SBC „žere detaily“ – vyřadí nejtišší oblasti.
V průměru ve srovnání s SBC 328k přináší aptX menší zkreslení u hudby s širokým rozsahem, ale u hudby s úzkým rozsahem a vysokým dynamickým rozsahem SBC 328k někdy vyhrává.

obraz

Podívejme se na zvláštní případ. Spektrogram klavírní nahrávky:

obraz

Hlavní energie leží ve frekvencích od 0 do 4 kHz a pokračuje až do 10 kHz.
Spektrogram souboru komprimovaného v aptX vypadá takto:

obraz

A takto vypadá SBC 328k.

obraz

Je vidět, že SBC 328k periodicky úplně vypínal rozsah nad 16 kHz a utratil veškerý dostupný datový tok na rozsahy pod touto hodnotou. Nicméně aptX zavedlo větší zkreslení do frekvenčního spektra slyšitelného lidským uchem, jak lze vidět na odečteném původním spektrogramu od spektrogramu aptX (čím jasnější, tím větší zkreslení):

READ
Proč potřebujete generátor plynu?

obraz

Zatímco SBC 328k kazil signál méně v rozsahu od 0 do 10 kHz a zbytek odřízl:

obraz

485k bitrate SBC stačilo k zachování celého frekvenčního rozsahu, bez deaktivace pásem.

obraz

SBC 485k je na této stopě výrazně před aptX v rozsahu 0-15 kHz, s menším, ale stále znatelným rozdílem 15-22 kHz (čím tmavší, tím menší zkreslení):

Přepnutím na SBC s vysokým datovým tokem získáte zvuk, který často překonává aptX na jakýchkoli sluchátkách. Na sluchátkách, která podporují konektivitu 3 Mb/s EDR, poskytuje přenosová rychlost 551 kb/s zvuk srovnatelný s aptX HD.

Dokážete ještě víc?

Oprava pro Android také obsahuje možnost dalšího zvýšení bitrate pro 2 Mbps EDR zařízení. Můžete zvýšit bitrate ze 452 kbit/s na 595 kbit/s, za cenu snížení stability přenosu v obtížných rádiových podmínkách.
Proměnnou persist.bluetooth.sbc_hd_higher_bitrate stačí nastavit na 1:

Oprava pro extrémní datový tok je akceptována pouze v LineageOS 15.1, ale ne v 16.0.

Kompatibilita zařízení

SBC Dual Channel podporují téměř všechna sluchátka, reproduktory a hlavní jednotky automobilu. Není se čemu divit – standard vyžaduje jeho podporu v jakýchkoli dekódovacích zařízeních. Existuje malý počet zařízení, na kterých tento režim způsobuje problémy, ale jedná se o izolované případy.
Více podrobností o kompatibilních zařízeních lze nalézt na 4pda nebo xda-developers.

Porovnání zvukových rozdílů

Vytvořil jsem webovou službu, která kóduje zvuk do SBC (stejně jako aptX a aptX HD) v reálném čase, přímo v prohlížeči. S ním můžete porovnávat zvuk různých profilů SBC a dalších kodeků, aniž byste skutečně přenášeli zvuk přes Bluetooth, na jakýchkoli kabelových sluchátkách, reproduktorech a své 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

Kontaktujte vývojáře Android

Napsal jsem mnoha vývojářům Bluetooth stacku ve společnosti Google a požádal je, aby zvážili zahrnutí oprav do hlavní větve Androidu – AOSP, ale nedostal jsem jedinou odpověď. Moje záplaty v systému záplat Gerrit pro Android také zůstaly bez připomínek od kohokoli zúčastněného.
Byl bych rád, kdybych mohl získat nějakou pomoc, jak se spojit s vývojáři v Google a přinést SBC HD do Androidu. Záplata v gerritu je již zastaralá (jedná se o jednu z prvních revizí) a pokud budou mít vývojáři zájem o mé změny, aktualizuji ji (není pro mě snadné ji aktualizovat, nemám zařízení kompatibilní s Android Q ).

Závěr

Uživatelé chytrých telefonů s LineageOS, Resurrection Remix a firmwarem crDroid si mohou vychutnat vylepšenou kvalitu zvuku právě teď, stačí aktivovat možnost v nastavení zařízení Bluetooth. Uživatelé Linuxu mohou získat zvýšené bitrate SBC také instalací patche od Paliho Rohára, který mimo jiné přidává podporu kodeků aptX, aptX HD a FastStream.