Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Kabla ya kusoma nakala hii, inashauriwa kusoma nakala iliyotangulia: Sauti kupitia Bluetooth: maelezo ya juu zaidi kuhusu wasifu, kodeki na vifaa

Baadhi ya watumiaji wa vipokea sauti visivyo na waya huripoti ubora duni wa sauti na ukosefu wa masafa ya juu wanapotumia kodeki ya kawaida ya Bluetooth ya SBC, ambayo inaungwa mkono na vifaa vyote vya sauti. Pendekezo la kawaida la kuboresha sauti ni kununua vifaa na vipokea sauti vinavyobanwa kichwani vinavyotumia kodeki za aptX na LDAC. Kodeki hizi zinahitaji ada za leseni, kwa hivyo vifaa vinavyotumika ni ghali zaidi.

Inabadilika kuwa ubora wa chini wa SBC ni kwa sababu ya mapungufu ya bandia ya safu za Bluetooth na mipangilio ya vichwa vya sauti, na kizuizi hiki kinaweza kupitishwa kwa vifaa vyovyote vilivyopo kupitia mabadiliko ya programu kwa smartphone au kompyuta.

Codec SBC

Kodeki ya SBC ina vigezo vingi tofauti ambavyo hujadiliwa wakati wa awamu ya kusanidi muunganisho. Kati yao:

  • Nambari na aina ya vituo: Stereo ya Pamoja, Stereo, Dual Channel, Mono;
  • Idadi ya bendi za mzunguko: 4 au 8;
  • Idadi ya vitalu katika mfuko: 4, 8, 12, 16;
  • Algorithm ya kusambaza bits wakati wa quantization: Loudness, SNR;
  • Thamani ya juu na ya chini ya dimbwi la biti zinazotumiwa wakati wa ujanibishaji (bitpool): kawaida kutoka 2 hadi 53.

Kifaa cha kusimbua lazima kikubali mchanganyiko wowote wa vigezo hivi. Huenda programu ya kusimba isitekeleze kila kitu.
Rafu zilizopo za Bluetooth kwa kawaida hukubaliana kwenye wasifu ufuatao: Stereo ya Pamoja, bendi 8, vitalu 16, Sauti ya juu, bitpool 2..53. Wasifu huu husimba sauti ya 44.1 kHz kwa kasi ya biti ya 328 kbps.
Parameta ya bitpool huathiri moja kwa moja bitrate ndani ya wasifu mmoja: juu ni, juu ya bitrate, na kwa hiyo ubora.
Hata hivyo, parameter ya bitpool haijafungwa kwa wasifu maalum; Bitrate pia huathiriwa kwa kiasi kikubwa na vigezo vingine: aina ya njia, idadi ya bendi za mzunguko, idadi ya vitalu. Unaweza kuongeza bitrate kwa njia isiyo ya moja kwa moja, kwa kukubaliana na wasifu usio wa kawaida, bila kubadilisha bitpool.

Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Mfumo wa kukokotoa kasi ya biti ya SBC

Kwa mfano, hali ya Njia mbili husimba chaneli tofauti, kwa kutumia bitpool nzima kwa kila chaneli. Kwa kulazimisha kifaa kutumia Chaneli Miwili badala ya Stereo ya Pamoja, tunapata karibu mara mbili ya biti yenye thamani ya juu sawa ya bitipool: 617 kbps.
Kwa maoni yangu, matumizi ya thamani ya bitpool haijafungwa kwa wasifu katika hatua ya mazungumzo ni dosari katika kiwango cha A2DP, ambacho kilisababisha kizuizi cha bandia cha ubora wa SBC. Itakuwa na maana zaidi kujadili bitrate badala ya bitpool.

Thamani hizi zisizobadilika za Bitpool na Bitrate huanzia kwenye jedwali lenye thamani zinazopendekezwa kwa matumizi ya sauti ya hali ya juu. Lakini pendekezo sio sababu ya kujiwekea kikomo kwa maadili haya.

Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Vipimo vya A2DP v1.2, vilivyotumika kuanzia 2007 hadi 2015, vinahitaji vifaa vyote vya kusimbua kufanya kazi ipasavyo na biti hadi 512 kbps:

Avkodare ya SNK itatumia thamani zote zinazowezekana za bitpool ambazo hazisababishi kuzidi kiwango cha juu cha biti. Wasifu huu unaweka kikomo cha kiwango cha juu cha biti kinachopatikana hadi 320kb/s kwa mono, na 512kb/s kwa modi za idhaa mbili.

Katika toleo jipya la vipimo hakuna kikomo juu ya bitrate. Inakadiriwa kuwa vipokea sauti vya kisasa vinavyobanwa kichwani vilivyotolewa baada ya 2015 vinavyotumia EDR vinaweza kuauni viwango vya biti hadi β‰ˆ730 kbps.

Kwa sababu fulani, safu za Bluetooth za Linux (PulseAudio), Android, Blackberry na macOS nilizojaribu zina mipaka ya bandia juu ya dhamana ya juu ya parameta ya bitpool, ambayo inathiri moja kwa moja kiwango cha juu cha bitrate. Lakini hili sio shida kubwa; karibu vichwa vyote vya sauti pia hupunguza kiwango cha juu cha bei ya bitpool hadi 53.
Kama nilivyoona, vifaa vingi hufanya kazi kikamilifu kwenye mrundikano wa Bluetooth uliorekebishwa na kasi ya biti ya 551 kbps, bila kukatizwa au nyufa. Lakini bitrate kama hiyo haitakuwa sawa chini ya hali ya kawaida, kwenye safu za kawaida za Bluetooth.

Kurekebisha stack ya Bluetooth

Rafu yoyote ya Bluetooth inayooana na kiwango cha A2DP inaweza kutumia modi ya Njia mbili, lakini haiwezekani kuiwasha kutoka kwa kiolesura.

Hebu tuongeze kigeuza kwenye kiolesura! Nimetengeneza viraka vya Android 8.1 na Android 9 ambavyo vinaongeza usaidizi kamili wa Vituo viwili kwenye rafu, kuongeza modi kwenye menyu ya kugeuza katika zana za uboreshaji, na kutibu SBC zinazowezeshwa na Dual Channel kana kwamba ni kodeki ya ziada kama aptX. , AAC, au LDAC ( Android huita Sauti hii ya HD) kwa kuongeza alama ya kuteua kwenye mipangilio ya kifaa cha Bluetooth. Hivi ndivyo inavyoonekana:

Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Kiraka kwa Android 9
Kiraka kwa Android 8.1

Kisanduku cha kuteua kinapowashwa, sauti ya Bluetooth huanza kutumwa kwa kasi ya biti 551 kbps, ikiwa vichwa vya sauti vinaunga mkono kasi ya uunganisho wa 3 Mbit / s, au 452 kbps, ikiwa vipokea sauti vya masikioni vinaauni 2 Mbit/s pekee.

Kiraka hiki kimejumuishwa katika mifumo mbadala ifuatayo:

  • LineageOS
  • Ufufuo wa Ufufuo
  • crDroid

551 na 452 kbit/s zilitoka wapi?

Teknolojia ya Bluetooth ya kushiriki hewa imeundwa ili kusambaza kwa ufanisi pakiti kubwa za saizi isiyobadilika. Uhamisho wa data hutokea katika nafasi, idadi kubwa ya nafasi zilizotumwa kwa uhamisho mmoja ni 5. Pia kuna njia za uhamisho zinazotumia nafasi 1 au 3, lakini sio 2 au 4. Katika nafasi 5 unaweza kuhamisha hadi 679 byte kwa kasi ya uunganisho. ya 2 Mbit / s na hadi 1021 byte kwa kasi ya 3 Mbit / s, na kwa 3 - 367 na 552 bytes, kwa mtiririko huo.

Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Ikiwa tunataka kuhamisha data chini ya ka 679 au 1021, lakini zaidi ya 367 au 552 byte, uhamisho bado utachukua nafasi 5 na data itahamishwa kwa wakati mmoja, ambayo inapunguza ufanisi wa uhamisho.

Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

SBC katika hali ya Dual Channel, kwa sauti ya 44100 Hz na vigezo vya Bitpool 38, vitalu 16 kwa kila fremu, masafa 8 ya masafa, husimba sauti katika fremu za baiti 164, kwa kasi ya biti ya 452 kbps.
Sauti lazima iwekwe katika itifaki za uhamishaji za L2CAP na AVDTP, ambazo huchukua baiti 16 kutoka kwa upakiaji wa sauti.

Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Kwa hivyo, upitishaji mmoja wa Bluetooth wenye nafasi 5 unaweza kubeba muafaka 4 wa sauti:

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

Tunaweka 11.7 ms ya data ya sauti kwenye pakiti inayotumwa, ambayo itatumwa kwa 3.75 ms, na tuna baiti 6 ambazo hazijatumiwa zimesalia kwenye pakiti.
Ukiinua bitpool kidogo, haitawezekana tena kufunga fremu 4 za sauti kwenye kifurushi kimoja. Utalazimika kutuma fremu 3 kwa wakati mmoja, ambayo inapunguza ufanisi wa uwasilishaji, inapunguza kiwango cha sauti inayopitishwa kwa kila fremu, na itasababisha kwa haraka zaidi kukwama kwa sauti katika hali mbaya ya redio.

Kwa njia hiyo hiyo, bitrate ya 551 kbit / s ilichaguliwa kwa EDR 3 Mbit / s: na Bitpool 47, vitalu 16 kwa sura, safu 8 za mzunguko, ukubwa wa sura ni 200 bytes, na bitrate ya 551 kbit / s. Kifurushi kimoja kina fremu 5 au ms 14.6 za muziki.

Algorithm ya kuhesabu vigezo vyote vya SBC ni ngumu sana, unaweza kuchanganyikiwa kwa urahisi ikiwa utahesabu kwa mikono, kwa hivyo nilitengeneza kikokotoo cha maingiliano kusaidia wale wanaopenda: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Kwa nini haya yote yanahitajika?

Kinyume na imani maarufu kuhusu ubora wa sauti wa aptX codec, kwenye baadhi ya faili inaweza kutoa matokeo mabaya zaidi kuliko SBC yenye kasi ya biti ya kawaida ya 328 kbps.

SBC inasambaza biti za ujazo kwa bendi za masafa kwa msingi wa chini hadi juu. Ikiwa bitrate yote ilitumiwa kwa masafa ya chini na ya kati, masafa ya juu "yatakatwa" (kutakuwa na ukimya badala yake).
aptX hukadiria bendi za masafa kwa idadi sawa ya biti wakati wote, ndiyo maana ina kasi ya kukatika kila mara: 352 kbps kwa 44.1 kHz, 384 kbps kwa 48 kHz, na haiwezi "kuhama kidogo" hadi kwa masafa yale yanayohitaji zaidi. . Tofauti na SBC, aptX "haitapunguza" masafa, lakini itaongeza kelele za ujazo kwao, kupunguza safu wasilianifu ya sauti, na wakati mwingine itaanzisha mlio wa tabia. SBC "hula maelezo" - hutupa maeneo tulivu zaidi.
Kwa wastani, ikilinganishwa na SBC 328k, aptX inaleta upotoshaji mdogo katika muziki wenye masafa mapana, lakini katika muziki wenye masafa finyu ya masafa na masafa mapana, SBC 328k hushinda wakati mwingine.

Hebu fikiria kesi maalum. Mtazamo wa rekodi ya kucheza piano:
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Nishati kuu iko katika masafa kutoka 0 hadi 4 kHz, na inaendelea hadi 10 kHz.
Mtazamo wa faili iliyoshinikizwa katika aptX inaonekana kama hii:
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Na hivi ndivyo SBC 328k inavyoonekana.
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Inaweza kuonekana kuwa SBC 328k ilizima kabisa masafa ya zaidi ya 16 kHz mara kwa mara, na ikatumia kasi ya biti yote inayopatikana kwenye safu zilizo chini ya thamani hii. Walakini, aptX ilileta upotoshaji zaidi katika wigo wa masafa unaosikika kwa sikio la mwanadamu, kama inavyoweza kuonekana kwenye taswira asili iliyotolewa kutoka kwa spectrogram ya aptX (inavyong'aa, ndivyo upotoshaji zaidi):
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Wakati SBC 328k iliharibu mawimbi chini ya masafa kutoka 0 hadi 10 kHz, na kukata zingine:
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Biti ya 485k ya SBC ilitosha kuhifadhi masafa yote ya masafa, bila kuzima bendi.
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

SBC 485k iko mbele kwa kiasi kikubwa aptX kwenye wimbo huu katika safu ya 0-15 kHz, ikiwa na tofauti ndogo lakini bado inayoonekana ya 15-22 kHz (nyeusi ndivyo upotoshaji unavyopungua):
Kurekebisha mrundikano wa Bluetooth ili kuboresha sauti kwenye vipokea sauti vinavyobanwa kichwani bila AAC, aptX na kodeki za LDAC

Hifadhi ya sauti asili, SBC na aptX.

Kwa kubadilisha hadi SBC ya kasi ya juu, utapata sauti ambayo mara nyingi hushinda aptX kwenye vipokea sauti vya kichwa vyovyote. Kwenye vipokea sauti vinavyobanwa kichwani vinavyotumia muunganisho wa 3 Mbps EDR, kasi ya biti ya 551 kbps hutoa sauti inayolingana na aptX HD.

Je, unaweza kufanya hata zaidi?

Kiraka cha Android pia kinajumuisha chaguo la kuongeza zaidi kasi ya biti kwa vifaa vya 2 Mbps EDR. Unaweza kuongeza bitrate kutoka 452 kbit/s hadi 595 kbit/s, kwa gharama ya kupunguza uthabiti wa maambukizi katika hali ngumu ya redio.
Inatosha kuweka kigezo cha persist.bluetooth.sbc_hd_higher_bitrate kuwa 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Kiraka kilichokithiri cha biti hadi sasa kimepitishwa tu katika LineageOS 15.1, lakini sio katika 16.0.

Utangamano wa Kifaa

SBC Dual Channel inaauniwa na takriban vichwa vyote vya sauti, spika na vichwa vya gari. Hii haishangazi - kiwango kinahitaji usaidizi wake katika vifaa vyovyote vya kusimbua. Kuna idadi ndogo ya vifaa ambavyo hali hii husababisha matatizo, lakini haya ni matukio ya pekee.
Maelezo zaidi kuhusu vifaa vinavyoendana yanaweza kupatikana 4pda au watengenezaji wa xda.

Ulinganisho wa tofauti za sauti

Nilitengeneza huduma ya wavuti ambayo husimba sauti kwa SBC (pamoja na aptX na aptX HD) kwa wakati halisi, kwenye kivinjari. Kwa hiyo, unaweza kulinganisha sauti ya wasifu tofauti wa SBC na kodeki zingine, bila kusambaza sauti kupitia Bluetooth, kwenye vipokea sauti vinavyobanwa kichwani vyenye waya, spika, na muziki unaoupenda, na pia kubadilisha vigezo vya usimbaji moja kwa moja unapocheza sauti.
btcodecs.valdikss.org.ru/sbc-encoder

Wasiliana na Wasanidi Programu wa Android

Niliandikia watengenezaji wengi wa rafu za Bluetooth huko Google nikiwauliza wazingatie kujumuisha viraka kwenye tawi kuu la Android - AOSP, lakini sikupokea jibu moja. Vibandiko vyangu ndani Mfumo wa kiraka wa Gerrit kwa Android pia ilibaki bila maoni kutoka kwa mtu yeyote aliyehusika.
Ningefurahi ikiwa ningepata usaidizi wa kuwasiliana na wasanidi programu kwenye Google na kuleta SBC HD kwenye Android. Kiraka kwenye gerrit tayari kimepitwa na wakati (hii ni moja ya masahihisho ya mapema), na nitaisasisha ikiwa watengenezaji wangependa mabadiliko yangu (sio rahisi kwangu kuisasisha, sina vifaa vinavyoendana na Android Q. )

Hitimisho

Watumiaji wa simu mahiri zilizo na LineageOS, Resurrection Remix na programu dhibiti ya crDroid wanaweza kufurahia ubora wa sauti ulioboreshwa sasa hivi, washa tu chaguo hilo katika mipangilio ya kifaa cha Bluetooth. Watumiaji wa Linux wanaweza pia kupata ongezeko la kasi ya biti ya SBC kwa kusakinisha kiraka kutoka Pali Rohar, ambayo, kati ya mambo mengine, inaongeza usaidizi kwa codecs za aptX, aptX HD na FastStream.

Chanzo: mapenzi.com

Kuongeza maoni