Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Artikulu hau irakurri aurretik, aurreko artikulua irakurtzea gomendatzen da: Bluetooth bidezko audioa: profil, kodec eta gailuei buruzko ahalik eta xehetasun handiena

Haririk gabeko entzungailuen erabiltzaile batzuek soinu-kalitate txarra eta maiztasun altuen falta adierazten dute SBC Bluetooth kodeka estandarra erabiltzen dutenean, audio-gailu guztiek onartzen dutena. Soinua hobetzeko gomendio arrunta aptX eta LDAC kodekak onartzen dituzten gailuak eta entzungailuak erostea da. Kodec hauek lizentzia tasak eskatzen dituzte, beraz, horiek onartzen dituzten gailuak garestiagoak dira.

Ematen du SBCren kalitate baxua Bluetooth pilaren eta aurikularren ezarpenen muga artifizialengatik dela, eta muga hori lehendik dauden edozein gailutan saihestu daiteke telefono edo ordenagailu batean software aldaketen bidez.

SBC kodeka

SBC kodekak hainbat parametro ditu, konexioa konfiguratzeko fasean negoziatzen direnak. Haien artean:

  • Kanal kopurua eta mota: Joint Stereo, Stereo, Dual Channel, Mono;
  • Maiztasun-banden kopurua: 4 edo 8;
  • Paketearen bloke kopurua: 4, 8, 12, 16;
  • Kuantizazioan bitak banatzeko algoritmoa: Ozentasuna, SNR;
  • Kuantizazioan erabilitako bit multzoaren gehienezko eta gutxieneko balioa (bitpool): normalean 2tik 53ra.

Deskodetzeko gailuak parametro horien edozein konbinazio onartu behar du. Baliteke kodetzaileak dena ez inplementatzea.
Lehendik dauden Bluetooth pilak normalean profil honetan bat datoz: Estereo bateratua, 8 banda, 16 bloke, Ozentasuna, bitpool 2..53. Profil honek 44.1 kHz-ko audioa kodetzen du 328 kbps-ko bit-abiaduran.
Bitpool parametroak zuzenean eragiten dio bit-tasa profil baten barruan: zenbat eta handiagoa izan, orduan eta handiagoa izango da bit-tasa eta, beraz, kalitatea.
Hala ere, bitpool parametroa ez dago profil zehatz bati lotuta; Bit-tasa beste parametro batzuek ere eragiten dute neurri handi batean: kanal motak, maiztasun banda kopurua, bloke kopurua. Bit-tasa zeharka handitu dezakezu, estandarrak ez diren profilak adostuz, bitpool aldatu gabe.

Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

SBC bit-tasa kalkulatzeko formula

Adibidez, Kanal Bikoitzeko moduak kanalak bereiz kodetzen ditu, kanal bakoitzeko bit-pool osoa erabiliz. Gailua kanal bikoitza erabiltzera Joint Stereo-ren ordez, bit-tasa ia bikoitza lortuko dugu bitpool gehienezko balio berdinarekin: 617 kbps.
Nire ustez, negoziazio fasean profil bati lotuta ez dagoen bitpool balio bat erabiltzea A2DP estandarraren akats bat da, eta horrek SBC kalitatearen muga artifizial bat ekarri zuen. Zentzu handiagoa izango luke bit-tasa negoziatzea bitpool baino.

Bitpool eta Bitrate balio finko hauek kalitate handiko audiorako erabiltzeko gomendatutako balioak dituen taula batetik sortzen dira. Baina gomendio bat ez da balio horietara mugatzeko arrazoia.

Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

2tik 1.2era aktibo egon zen A2007DP v2015 zehaztapenak deskodetze-gailu guztiek behar bezala funtzionatzea eskatzen du 512 kbps arteko bit-abiadurarekin:

SNK-ren deskodetzaileak bit-tasa maximoa gainditzen ez duten bit-balio posible guztiak onartuko ditu. Profil honek erabilgarri dagoen gehienezko bit-tasa 320 kb/s-ra mugatzen du monorako eta 512 kb/s-ra bi kanaleko moduetarako.

Zehaztapenaren bertsio berrian ez dago bit-tasa mugarik. EDR onartzen duten 2015etik aurrera kaleratutako entzungailu modernoek β‰ˆ730 kbps arteko bit-tasa onartzen dutela kalkulatzen da.

Arrazoiren batengatik, probatu ditudan Linux (PulseAudio), Android, Blackberry eta macOS Bluetooth pilek muga artifizialak dituzte bitpool parametroaren gehienezko balioaren gainean, eta horrek zuzenean eragiten du bit-tasa maximoan. Baina hau ez da arazo handiena; ia entzungailu guztiek ere mugatzen dute bitpool gehienezko balioa 53ra.
Dagoeneko ikusi dudanez, gailu gehienek ezin hobeto funtzionatzen dute 551 kbps-ko bit-abiadura duen Bluetooth pila aldatu batean, etenik edo krak gabe. Baina halako bit-tasa ez da inoiz koherentea izango baldintza normaletan, Bluetooth pila arruntetan.

Bluetooth pila aldatzen

A2DP estandarrekin bateragarria den Bluetooth pila batek Dual Channel modurako onartzen du, baina ezin da interfazetik aktibatu.

Gehi diezaiogun etengailu bat interfazeari! Android 8.1 eta Android 9rako adabakiak egin ditut, kanal bikoitzeko laguntza osoa gehitzen dutenak pilara, modu bat gehitzen duten garapen-tresnetako modua aldatzeko menuan eta kanal bikoitzeko gaitutako SBCak aptX bezalako kodek gehigarri bat balira bezala tratatzen dituzte. , AAC edo LDAC (Android-ek HD Audio honi deitzen dio) Bluetooth gailuaren ezarpenetan kontrol-marka bat gehituta. Honela dirudi:

Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Android 9rako adabakia
Android 8.1rako adabakia

Kontrol-laukia aktibatuta dagoenean, Bluetooth audioa bit-tasa batean igortzen hasten da 551 kbps, entzungailuek 3 Mbit/s-ko konexio-abiadura onartzen badute edo 452 kbps, entzungailuek 2 Mbit/s bakarrik onartzen badute.

Adabaki hau firmware alternatibo hauetan sartzen da:

  • LineageOS
  • Resurrection Remix
  • crDroid

Nondik sortu ziren 551 eta 452 kbit/s?

Bluetooth airea partekatzeko teknologia tamaina finkoko pakete handiak modu eraginkorrean transmititzeko diseinatuta dago. Datu-transferentzia zirrikituetan gertatzen da, transferentzia batean bidaltzen diren zirrikituen kopuru handiena 5 da. 1 edo 3 zirrikitu erabiltzen dituzten transferentzia moduak ere badaude, baina ez 2 edo 4. 5 zirrikituetan 679 byte arte transferitu ditzakezu konexio-abiaduran. 2 Mbit/s-ko eta 1021 byte arteko 3 Mbit/s-ko abiaduran, eta 3 - 367 eta 552 byte-n, hurrenez hurren.

Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

679 edo 1021 byte baino datu gutxiago transferitu nahi baditugu, baina 367 edo 552 byte baino gehiago, transferentziak oraindik 5 slot hartuko ditu eta datuak aldi berean transferituko dira, eta horrek transferentziaren eraginkortasuna murrizten du.

Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

SBC Kanal Bikoitzeko moduan, 44100 Hz-ko audioa Bitpool 38 parametroarekin, 16 bloke fotograma bakoitzeko, 8 maiztasun-tarte, audioa 164 byte-ko markoetan kodetzen du, 452 kbps-ko bit-abiadurarekin.
Audioa L2CAP eta AVDTP transferentzia-protokoloetan kapsulatu behar da, audio-kargatik 16 byte hartzen dituztenak.

Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Horrela, 5 zirrikitu dituen Bluetooth transmisio batek 4 audio fotograma har ditzake:

679 (EDR 2 mbit/s DH5) - 4 (L2CAP) - 12 (AVDTP/RTP) - 1 (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ SBC) - (164*4) = 6

Bidaltzen ari den paketean 11.7 ms-ko audio datu sartzen ditugu, 3.75 ms-tan transmitituko direnak, eta erabili gabeko 6 byte geratzen zaizkigu paketean.
Bitpool apur bat igotzen baduzu, jada ezin izango dira 4 audio-markoak pakete batean bildu. Aldi berean 3 fotograma bidali beharko dituzu eta horrek transmisioaren eraginkortasuna murrizten du, fotograma bakoitzeko transmititzen den audio kopurua murrizten du eta azkarrago irrati-baldintza txarretan audio toteltasuna eragingo du.

Modu berean, EDR 551 Mbit/s-ko 3 kbit/s-ko bit-abiadura aukeratu zen: Bitpool 47-rekin, 16 bloke fotogramako, 8 maiztasun-tarte, fotograma-tamaina 200 bytekoa da, 551 kbit/s-ko bit-abiadurarekin. Pakete batek 5 fotograma edo 14.6 ms musika ditu.

SBC parametro guztiak kalkulatzeko algoritmoa nahiko konplexua da, erraz nahas zaitezke eskuz zenbatzen baduzu, beraz, kalkulagailu interaktibo bat egin dut interesa dutenei laguntzeko: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Zergatik behar da hori guztia?

AptX kodekaren soinu-kalitateari buruz uste denaren aurka, fitxategi batzuetan SBC baino emaitza okerragoak izan ditzake 328 kbps-ko bit-tasa estandar batekin.

SBC-k kuantizazio-bitak modu dinamikoan esleitzen ditu maiztasun-bandetara, baxutik gorako oinarrian. Bit-tasa guztia maiztasun baxuetarako eta ertainetarako erabili bazen, maiztasun altuak "moztu" egingo dira (isiltasuna egongo da ordez).
aptX-k bit-kopuru berdineko frekuentzia-bandak kuantifikatzen ditu denbora guztian, eta horregatik bit-tasa konstantea du: 352 kbps 44.1 kHz, 384 kbps 48 kHz, eta ezin du "bit-shift" horiek gehien behar dituzten maiztasunetara. . SBC ez bezala, aptX-k ez ditu maiztasunak "moztuko", baizik eta kuantizazio zarata gehituko die, audioaren barruti dinamikoa murriztuz eta, batzuetan, crackling ezaugarriak sartuz. SBCk "detaileak jaten ditu" - eremurik lasaienak baztertzen ditu.
Batez beste, SBC 328k-arekin alderatuta, aptX-k distortsio gutxiago sartzen du maiztasun-tarte zabaleko musikan, baina maiztasun-tarte estua eta dinamiko-barruti zabaleko musikan, batzuetan, SBC 328k irabazten du.

Azter dezagun kasu berezi bat. Pianoa jotzen duen grabazio baten espektrograma:
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Energia nagusia 0 eta 4 kHz arteko maiztasunetan dago, eta 10 kHz arte jarraitzen du.
AptX-n konprimitutako fitxategi baten espektrograma itxura hau du:
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Eta hau da SBC 328k itxura.
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Ikusten denez, SBC 328k-k aldiro guztiz itzaltzen zuela 16 kHz-tik gorako tartea, eta erabilgarri dagoen bit-tasa guztia balio honen azpiko barrutietan gastatzen zuen. Hala ere, aptX-ek distortsio gehiago sartu zuen giza belarriarentzat entzuten den maiztasun-espektroan, aptX espektrogramatik kendutako jatorrizko espektrograman ikus daitekeen bezala (zenbat eta distortsio handiagoa, orduan eta distortsio handiagoa):
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

SBC 328k-k seinalea gutxiago hondatu zuen 0 eta 10 kHz arteko tartean, eta gainerakoa moztu zuen:
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

SBCren 485k bit-tasa nahikoa zen maiztasun-tarte osoa mantentzeko, bandak desgaitu gabe.
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

SBC 485k aptX baino nabarmen aurreratu da pista honetan 0-15 kHz-ko tartean, eta diferentzia txikiagoa, baina oraindik nabarmena duena - 15-22 kHz (zenbat eta ilunagoa, orduan eta distortsio gutxiago):
Bluetooth pila aldatzen dugu entzungailuen soinua hobetzeko AAC, aptX eta LDAC kodekarik gabe

Jatorrizko audioaren artxiboa, SBC eta aptX.

Bit-tasa handiko SBC batera aldatuz gero, sarritan aptX gainditzen duen audioa lortuko duzu edozein aurikularretan. 3 Mbps EDR konektibitatea onartzen duten entzungailuetan, 551 kbps-ko bit-abiadurak aptX HD-ren pareko soinua sortzen du.

Are gehiago egin dezakezu?

Android adabakiak 2 Mbps EDR gailuetarako bit-tasa gehiago areagotzeko aukera ere badu. Bit-tasa 452 kbit/s-tik 595 kbit/s-ra igo dezakezu, irrati-baldintza zailetan transmisio-egonkortasuna murriztearen kostuarekin.
Nahikoa da persist.bluetooth.sbc_hd_higher_bitrate aldagaia 1ean ezartzea:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Muturreko bit-tasa adabakia LineageOS 15.1-en bakarrik onartu da orain arte, baina ez 16.0-n.

Gailuen bateragarritasuna

SBC Dual Channel ia entzungailu, bozgorailu eta autoko unitate nagusi guztiek onartzen dute. Hau ez da harritzekoa - estandarrak edozein deskodetze gailutan laguntza behar du. Modu honek arazoak sortzen dituen gailu kopuru txiki bat da, baina kasu isolatuak dira.
Gailu bateragarriei buruzko xehetasun gehiago hemen aurki daitezke W4bsitXNUMX-dns.com edo xda-garatzaileek.

Soinu-desberdintasunen konparaketa

Audioa SBCra (baita aptX eta aptX HD ere) denbora errealean kodetzen duen web-zerbitzu bat egin nuen, arakatzailean bertan. Harekin, SBC profil ezberdinen eta beste kodec batzuen soinua konparatu dezakezu, Bluetooth bidez audioa benetan transmititu gabe, kabledun entzungailuetan, bozgorailuetan eta zure gogoko musikatan, eta kodetze-parametroak zuzenean alda ditzakezu audioa erreproduzitzen duzun bitartean.
btcodecs.valdikss.org.ru/sbc-encoder

Jarri harremanetan Android garatzaileekin

Google-ko Bluetooth pila garatzaile askori idatzi nien Android-en adar nagusian - AOSP adabakiak sartzea kontuan hartzeko eskatuz, baina ez nuen erantzun bakar bat ere jaso. Nire adabakiak sartu Androiderako Gerrit adabaki sistema ere parte hartu zuten inoren iritzirik gabe geratu zen.
Pozik egongo nintzateke Google-ko garatzaileekin harremanetan jartzeko eta SBC HD Androidera ekartzeko laguntzaren bat lortuko banu. Gerrit-en adabakia zaharkituta dago jada (hau da hasierako berrikuspenetako bat), eta garatzaileei nire aldaketetan interesatzen bazaie eguneratuko dut (ez zait erraza izaten eguneratzea, ez dut Android Q-ekin bateragarri diren gailurik ).

Ondorioa

LineageOS, Resurrection Remix eta crDroid firmwarea duten telefono adimendunen erabiltzaileek soinu-kalitate hobetua goza dezakete oraintxe bertan, Bluetooth gailuaren ezarpenetan aukera aktibatu besterik ez dago. Linux erabiltzaileek SBC bit-tasa handitu dezakete instalatuz Pali Rohar-en adabakia, besteak beste, aptX, aptX HD eta FastStream kodeketarako laguntza gehitzen duena.

Iturria: www.habr.com

Gehitu iruzkin berria