AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Bu yazını oxumazdan əvvəl əvvəlki məqaləni oxumağınız tövsiyə olunur: Bluetooth vasitəsilə audio: profillər, kodeklər və cihazlar haqqında mümkün qədər ətraflı

Bəzi simsiz qulaqlıq istifadəçiləri bütün audio cihazları tərəfindən dəstəklənən standart Bluetooth SBC kodekindən istifadə edərkən səs keyfiyyətinin aşağı olması və yüksək tezliklərin olmaması barədə məlumat verirlər. Səsi yaxşılaşdırmaq üçün ümumi tövsiyə aptX və LDAC kodeklərini dəstəkləyən cihazları və qulaqlıqları almaqdır. Bu kodeklər qonorar tələb edir, ona görə də onları dəstəkləyən cihazlar daha bahalıdır.

Məlum olub ki, SBC-nin keyfiyyətinin aşağı olması Bluetooth stəklərinin və qulaqlıq parametrlərinin süni məhdudiyyətləri ilə bağlıdır və bu məhdudiyyəti smartfon və ya kompüterdə proqram dəyişiklikləri etməklə hər hansı mövcud cihazlarda dəf etmək olar.

SBC kodek

SBC kodekində əlaqənin qurulması mərhələsində müzakirə edilən bir çox müxtəlif parametrlər var. Onların arasında:

  • Kanalların sayı və növü: Joint Stereo, Stereo, Dual Channel, Mono;
  • Tezlik diapazonlarının sayı: 4 və ya 8;
  • Paketdəki blokların sayı: 4, 8, 12, 16;
  • Kvantlaşdırma bitinin ayrılması alqoritmi: Ucalıq, SNR;
  • Kvantlaşdırmada istifadə olunan bit hovuzunun maksimum və minimum dəyəri (bitpool): adətən, 2-dən 53-ə qədər.

Dekoder bu seçimlərin istənilən kombinasiyasını dəstəkləməlidir. Kodlayıcı hər şeyi həyata keçirməyə bilər.
Mövcud Bluetooth yığınları adətən aşağıdakı profillə razılaşır: Birgə Stereo, 8 diapazon, 16 blok, Ucalıq, bitpool 2..53. Bu profil 44.1 kbps bit sürətində 328 kHz audio kodlayır.
Bitpool parametri bir profil daxilində bit sürətinə birbaşa təsir göstərir: nə qədər yüksəkdirsə, bit sürəti bir o qədər yüksəkdir və deməli keyfiyyət.
Bununla belə, bitpool parametri xüsusi profilə bağlı deyil; digər parametrlər də bit sürətinə əhəmiyyətli dərəcədə təsir göstərir: kanalların növü, tezlik diapazonlarının sayı, blokların sayı. Bitpool-u dəyişmədən, qeyri-standart profilləri müzakirə etməklə bit sürətini dolayı yolla artıra bilərsiniz.

AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

SBC Bitrate Formula

Məsələn, Dual Channel rejimi hər bir kanal üçün bütün bitpooldan istifadə edərək kanalları ayrıca kodlayır. Cihazı Birgə Stereo əvəzinə Dual Channel istifadə etməyə məcbur etməklə, eyni maksimum bitpool dəyəri 617 kbps olan bit sürətini demək olar ki, iki dəfə artırırıq.
Fikrimcə, danışıqlar mərhələsində qeyri-profil bitpool dəyərinin istifadəsi A2DP standartındakı qüsurdur və bu, SBC keyfiyyətinin süni şəkildə məhdudlaşdırılmasına səbəb olur. Bitpool deyil, bitrate haqqında danışıqlar aparmaq daha ağıllı olardı.

Bu sabit Bitpool və Bitrate dəyərləri yüksək keyfiyyətli audio üçün tövsiyə olunan dəyərlər cədvəlindən yaranır. Ancaq tövsiyə özünüzü bu dəyərlərlə məhdudlaşdırmaq üçün bir səbəb deyil.

AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

2-1.2-ci illərdə aktiv olan A2007DP v2015 spesifikasiyası bütün dekoderlərin 512 kbps-ə qədər bit sürətləri ilə düzgün işləməsini tələb edir:

SNK-nin dekoderi maksimum bit sürətindən artıq olmayan bütün mümkün bitpool dəyərlərini dəstəkləməlidir. Bu profil mövcud maksimum bit sürətini mono üçün 320kb/s, iki kanallı rejimlər üçün isə 512kb/s ilə məhdudlaşdırır.

Spesifikasiyanın yeni versiyasında bitrate limiti yoxdur. Ehtimal olunur ki, 2015-ci ildən sonra buraxılan və EDR-ni dəstəkləyən müasir qulaqlıqlar ≈730 kbps-ə qədər bit sürətini dəstəkləyə bilər.

Nədənsə, sınaqdan keçirdiyim Linux (PulseAudio), Android, Blackberry və macOS Bluetooth yığınlarında bitpool parametrinin maksimum dəyərinə süni məhdudiyyətlər qoyulub ki, bu da birbaşa maksimum bit sürətinə təsir göstərir. Ancaq bu, ən böyük problem deyil, demək olar ki, bütün qulaqlıqlar da maksimum bitpool dəyərini 53 ilə məhdudlaşdırır.
Artıq gördüyüm kimi, cihazların əksəriyyəti 551 kbps bit sürəti ilə dəyişdirilmiş Bluetooth yığınında fasilələr və cod olmadan yaxşı işləyir. Ancaq belə bir bit sürəti heç vaxt normal şəraitdə, adi Bluetooth yığınlarında müzakirə olunmayacaq.

Bluetooth yığınının dəyişdirilməsi

A2DP standartı ilə uyğun gələn hər hansı bir Bluetooth yığınında Dual Channel rejimi üçün dəstək var, lakin onu interfeysdən aktivləşdirmək mümkün deyil.

Gəlin interfeysə keçid əlavə edək! Mən Android 8.1 və Android 9 üçün yamaqlar hazırlamışam ki, onlar yığına tam Dual Channel dəstəyi əlavə edir, developer alətlərində rejim dəyişdirmə menyusuna rejim əlavə edir və Dual Channel effektiv SBC-lərə aptX, AAC kimi əlavə kodek kimi yanaşır. və ya LDAC (Android onu HD Audio adlandırır) cihazın Bluetooth parametrlərinə işarə əlavə etməklə. Göründüyü kimi:

AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Android 9 üçün yamaq
Android 8.1 üçün yamaq

Yoxlama qutusu aktivləşdirildikdə, Bluetooth səsi bit sürəti ilə ötürülməyə başlayır 551 kbps, qulaqlıqlar 3 Mbps bağlantını dəstəkləyirsə və ya 452 kbpsqulaqlıqlar yalnız 2 Mbps dəstəkləyirsə.

Bu yamaq aşağıdakı alternativ proqram təminatına daxildir:

  • LineageOS
  • Qiyamət Remixi
  • crDroid

551 və 452 kbps haradan gəldi?

Bluetooth-da hava ayırma texnologiyası böyük, sabit ölçülü paketləri səmərəli şəkildə ötürmək üçün nəzərdə tutulmuşdur. Məlumat ötürülməsi slotlarda baş verir, bir köçürmədə göndərilən slotların ən çoxu 5-dir. 1 və ya 3 deyil, 2 və ya 4 slotdan istifadə edən ötürmə rejimləri də var. Qoşulma sürəti ilə 5 slotda 679 bayta qədər ötürülə bilər. 2 Mbit / s və 1021 Mb / s sürətlə 3 bayta qədər və müvafiq olaraq 3 - 367 və 552 baytda.

AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Əgər biz 679 və ya 1021 baytdan az, lakin 367 və ya 552 baytdan çox məlumat ötürmək istəyiriksə, onda köçürmə yenə də 5 slot tutacaq və məlumat eyni vaxtda ötürüləcək ki, bu da ötürmə səmərəliliyini azaldır.

AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Dual Channel rejimində SBC, Bitpool 44100 parametrli 38 Hz audio, hər kadra 16 blok, 8 tezlik diapazonu, audionu 164 kbps bit sürəti ilə 452 bayt çərçivəyə kodlayır.
Audio L2CAP və AVDTP ötürmə protokollarında kapsullaşdırılmalıdır ki, bu da audio yükündən 16 bayt alır.

AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Beləliklə, 5 yuvalı bir Bluetooth ötürülməsində 4 audio çərçivəni yerləşdirmək mümkündür:

679 (EDR 2 mbit/s DH5) - 4 (L2CAP) - 12 (AVDTP/RTP) - 1 (заголовок SBC) - (164*4) = 6

Biz 11.7 ms audio məlumatı 3.75 ms-də ötürüləcək göndərmə paketinə yerləşdiririk və paketdə 6 istifadə olunmamış bayt qalır.
Bitpool-u bir az qaldırsanız, 4 audio çərçivə artıq bir paketə yığıla bilməz. Siz eyni vaxtda 3 kadr göndərməlisiniz ki, bu da ötürmə səmərəliliyini azaldır, hər kadra ötürülən audionun miqdarını azaldır və pis radio şəraitində səsin daha sürətli kəkələməsinə səbəb olacaq.

Eyni şəkildə, EDR 551 Mbps üçün 3 kbps bit sürəti seçildi: Bitpool 47 ilə, hər çərçivə üçün 16 blok, 8 tezlik diapazonu, 200 kbps bit sürəti ilə 551 bayt çərçivə ölçüsü əldə edilir. Bir paketdə 5 kadr və ya 14.6 ms musiqi var.

Bütün SBC parametrlərinin hesablanması alqoritmi olduqca mürəkkəbdir, əl ilə sayarsanız asanlıqla çaşa bilərsiniz, buna görə də maraqlananlara kömək etmək üçün interaktiv kalkulyator hazırladım: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Bütün bunlar niyə lazımdır?

AptX kodekinin səs keyfiyyəti ilə bağlı məşhur inancın əksinə olaraq, bəzi fayllarda standart bit sürəti 328 kbps olan SBC-dən daha pis nəticələr verə bilər.

SBC kvantlama bitlərini aşağıdan yuxarıya doğru dinamik şəkildə tezlik diapazonlarına ayırır. Əgər bütün bit sürəti aşağı və orta tezliklər üçün istifadə olunubsa, yuxarı tezliklər "kəsilmiş" olacaq (əvəzində səssizlik olacaq).
aptX hər zaman eyni sayda bit olan tezlik zolaqlarını kvantlaşdırır, buna görə də onun sabit bit sürəti var: 352 kHz üçün 44.1 kbps, 384 ​​kHz üçün 48 kbps və bitləri onlara ehtiyac duyan tezliklərə "tərcümə edə" bilmir. ən çox. SBC-dən fərqli olaraq, aptX tezlikləri "kəsməyəcək", lakin onlara kvantlaşdırma səs-küyü əlavə edəcək, audionun dinamik diapazonunu azaldacaq və bəzən xarakterik xırıltılar təqdim edəcək. SBC, əksinə, "detalları yeyir" - ən sakit yerləri atır.
Orta hesabla, SBC 328k ilə müqayisədə aptX geniş diapazonlu musiqidə daha az təhrif təqdim edir, lakin dar diapazonlu, yüksək dinamik diapazonlu musiqidə SBC 328k bəzən qalib gəlir.

Xüsusi bir halı nəzərdən keçirək. Piano qeydinin spektroqramı:
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Əsas enerji 0-dan 4 kHz-ə qədər olan tezliklərdə yerləşir və 10 kHz-ə qədər davam edir.
aptX ilə sıxılmış faylın spektroqramı belə görünür:
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

SBC 328k belə görünür.
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Görünür ki, SBC 328k vaxtaşırı 16 kHz-dən yuxarı diapazonu tamamilə söndürdü və bütün mövcud bit sürətini bu dəyərdən aşağı diapazonlara sərf etdi. Bununla birlikdə, aptX insan qulağı tərəfindən eşidilən tezlik spektrinə daha çox təhrif təqdim etdi, bu aptX spektroqramından çıxarılan orijinal spektroqramda görünə bilər (daha parlaq, daha çox təhrif):
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

SBC 328k siqnalı 0 ilə 10 kHz diapazonunda daha az korladı və qalanını kəsdi:
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

485k SBC bit sürəti bantları kəsmədən bütün tezlik diapazonunu saxlamaq üçün kifayət idi.
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Bu tərkibdə SBC 485k 0-15 kHz diapazonunda aptX-dən xeyli irəlidədir və daha kiçik, lakin yenə də nəzərə çarpan fərqlə - 15-22 kHz-də (daha qaranlıq, daha az təhrif):
AAC, aptX və LDAC kodekləri olmayan qulaqlıqlarda səsi yaxşılaşdırmaq üçün Bluetooth yığınının dəyişdirilməsi

Orijinal audio, SBC və aptX arxivi.

Yüksək bit sürətli SBC-yə keçməklə siz istənilən qulaqlıqda tez-tez aptX-dən üstün olan səs əldə edəcəksiniz. 3 Mbps EDR bağlantısını dəstəkləyən qulaqlıqlarda 551 kbps aptX HD ilə müqayisə olunan səs çıxarır.

Və bəlkə daha çox?

Android yamaqda həmçinin 2Mbps EDR cihazları üçün bit sürətini daha da artırmaq imkanı var. Çətin radio şəraitində ötürülmə sabitliyinin azalması hesabına bit sürətini 452 kbps-dən 595 kbps-ə qədər artırmaq mümkündür.
Persist.bluetooth.sbc_hd_higher_bitrate dəyişənini 1-ə təyin etmək kifayətdir:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Ekstremal bit sürəti üçün yamaq yalnız LineageOS 15.1-də qəbul edilir, lakin 16.0-da deyil.

Cihaz Uyğunluğu

SBC Dual Channel demək olar ki, bütün qulaqlıqlar, dinamiklər və avtomobil baş blokları tərəfindən dəstəklənir. Bu təəccüblü deyil - standart hər hansı bir dekodlaşdırma cihazında dəstəyini təyin edir. Bu rejimin problemlərə səbəb olduğu az sayda cihaz var, lakin bunlar tək nümunələrdir.
Uyğun cihazlar haqqında ətraflı məlumat üçün baxın 4pda və ya xda-developers.

Səs fərqlərinin müqayisəsi

Mən real vaxt rejimində, birbaşa brauzerdə SBC-də (həmçinin aptX və aptX HD) səsi kodlayan veb xidməti yaratdım. Onun köməyi ilə siz hər hansı naqilli qulaqlıqlarda, dinamiklərdə və sevdiyiniz musiqidə Bluetooth vasitəsilə həqiqətən səs ötürmədən müxtəlif SBC profillərinin və digər kodeklərin səsini müqayisə edə, həmçinin səsin səsləndirilməsi zamanı kodlaşdırma parametrlərini dəyişə bilərsiniz.
btcodecs.valdikss.org.ru/sbc-encoder

Android Tərtibatçıları ilə əlaqə saxlayın

Mən Google-da bir çox Bluetooth yığını tərtibatçılarına məktub yazaraq, onlardan Android-in əsas filialına - AOSP-ə yamaqlar daxil etməyi düşünmələrini xahiş etdim, lakin heç bir cavab almadım. Yamaqlarım içəridədir Android üçün Gerrit yamaq sistemi də iştirak edən hər kəsdən şərhsiz qaldı.
Mənə Google-dan tərtibatçılar və Android-də SBC HD-nin tətbiqi ilə bağlı köməklik göstərilsəydi, şad olardım. Gerritdəki yamaq köhnəlib (bu, ilkin düzəlişlərdən biridir) və tərtibatçılar mənim dəyişikliklərimlə maraqlansalar, onu yeniləyəcəm (onu yeniləmək mənim üçün asan deyil, Android ilə uyğun cihazlarım yoxdur) Q).

Nəticə

LineageOS, Resurrection Remix və crDroid proqram təminatı ilə smartfonların istifadəçiləri hazırda təkmilləşdirilmiş səs keyfiyyətindən istifadə edə bilərlər, sadəcə olaraq Bluetooth cihazının parametrlərində seçimi aktivləşdirin. Linux istifadəçiləri də quraşdırmaqla artan SBC bit sürəti əldə edə bilərlər Pali Rohardan yamaq, digər şeylər arasında aptX, aptX HD və FastStream kodekləri üçün dəstək əlavə edir.

Mənbə: www.habr.com

Добавить комментарий