1 điểm bởi GN⁺ 2023-11-25 | 1 bình luận | Chia sẻ qua WhatsApp

Cải thiện chất lượng âm thanh thông qua việc chỉnh sửa Bluetooth stack

  • Người dùng tai nghe không dây thường gặp phải chất lượng âm thanh thấp và thiếu dải cao khi sử dụng codec SBC Bluetooth tiêu chuẩn.
  • Cách giải quyết phổ biến là mua thiết bị hỗ trợ codec aptX hoặc LDAC, nhưng các codec này phát sinh chi phí bản quyền nên thiết bị đắt hơn.
  • Chất lượng thấp của SBC hiện nay xuất phát từ các giới hạn nhân tạo trong Bluetooth stack và tai nghe, và có thể được vượt qua trên mọi thiết bị chỉ bằng chỉnh sửa phần mềm.

Codec SBC

  • SBC có nhiều tham số được thương lượng ở giai đoạn thiết lập kết nối: loại và số lượng kênh âm thanh, số dải tần, số khối âm thanh trên mỗi gói, thuật toán phân bổ bit lượng tử hóa, cùng bitpool tối đa và tối thiểu được dùng trong quá trình lượng tử hóa.
  • Bluetooth stack hiện nay thường thương lượng bộ tùy chọn gồm Joint Stereo, 8 dải, 16 khối, Loudness, bitpool 2..53.
  • Giá trị bitpool là tham số thay đổi bitrate mã hóa; giá trị càng cao thì bitrate và chất lượng càng tăng.

Chỉnh sửa Bluetooth stack

  • Mọi Bluetooth stack tương thích A2DP đều phải hỗ trợ chế độ Dual Channel, nhưng không có cách nào để buộc dùng chế độ này.
  • Đã tạo các bản vá cho Android 8.1 và 9 để thêm chế độ Dual Channel vào menu nhà phát triển, và nó được hiển thị dưới dạng codec "HD Audio" trong cài đặt thiết bị Bluetooth.
  • Bản vá này đã được tích hợp vào các firmware thay thế như LineageOS, Resurrection Remix và crDroid.

Nguồn gốc của 551 và 452 kbps

  • Công nghệ chia khe thời gian của Bluetooth được thiết kế để truyền hiệu quả các gói dữ liệu lớn có kích thước cố định.
  • Việc truyền dữ liệu diễn ra thông qua các khe, và 5 khe là số tối đa có thể được truyền trong một lần truyền.
  • Trong 5 khe, có thể truyền tối đa 679 byte ở tốc độ 2Mbps, và tối đa 1021 byte ở tốc độ 3Mbps.

Vì sao cần tất cả những điều này?

  • Trái với niềm tin phổ biến về chất lượng âm thanh của aptX, trong một số trường hợp SBC có thể tạo ra chất lượng âm thanh tệ hơn mức bitrate tiêu chuẩn 328k.
  • SBC phân bổ động các bit lượng tử hóa cho các dải tần, còn aptX lượng tử hóa các dải tần bằng số bit cố định.
  • Khi dùng SBC bitrate cao, trong đa số trường hợp có thể đạt chất lượng âm thanh vượt aptX, và trên tai nghe hỗ trợ EDR 3 Mb/s, chất lượng này rất gần với aptX HD.

Có thể đi xa hơn nữa không?

  • Bộ bản vá Android cung cấp thêm tùy chọn có thể nâng bitrate của thiết bị EDR 2 mbps từ 452 kbps lên 595 kbps.
  • Có thể bật bitrate cao hơn bằng cách đặt biến persist.bluetooth.sbc_hd_higher_bitrate thành 1.

Tương thích với thiết bị

  • SBC Dual Channel được hỗ trợ trên gần như mọi tai nghe, loa và head unit trên xe.
  • Thiết bị gặp vấn đề với chế độ này là cực kỳ hiếm, nhưng có thể tìm thông tin tương thích chi tiết trên 4pda và xda-developers.

So sánh chất lượng âm thanh

  • Đã tạo một dịch vụ web mã hóa âm thanh sang SBC theo thời gian thực ngay trong trình duyệt (cũng như aptX và aptX HD), cho phép so sánh chất lượng âm thanh giữa nhiều profile SBC và codec khác nhau.

Liên hệ với các nhà phát triển Android

  • Đã yêu cầu các nhà phát triển Bluetooth stack của Google đưa bản vá vào AOSP, nhưng đến nay vẫn chưa nhận được phản hồi.
  • Ngay cả trong hệ thống review mã Gerrit cũng chưa nhận được bất kỳ bình luận nào từ những người liên quan đến việc phát triển.

Kết luận

  • Người dùng firmware LineageOS, Resurrection Remix và crDroid có thể cải thiện chất lượng âm thanh Bluetooth bằng cách chọn ô tương ứng trong cài đặt thiết bị Bluetooth.
  • Người dùng Linux cũng có thể cài đặt bản vá của Pali Rohár để đạt bitrate SBC cao hơn.

Ý kiến của GN⁺

Điểm quan trọng nhất của bài viết này là chất lượng âm thanh Bluetooth hiện có có thể được cải thiện chỉ bằng chỉnh sửa phần mềm. Đây là một giải pháp hấp dẫn vì cho phép trải nghiệm âm thanh chất lượng cao trên thiết bị hiện có mà không cần mua thiết bị mới hỗ trợ các codec đắt tiền. Đặc biệt, với người dùng firmware mã nguồn mở, khả năng thực hiện các chỉnh sửa như vậy là một bước tiến thú vị, giúp tăng khả năng tiếp cận công nghệ và cho phép người dùng kiểm soát thiết bị của mình tốt hơn.

1 bình luận

 
GN⁺ 2023-11-25
Ý kiến trên Hacker News
  • Đánh giá tích cực về mức độ hỗ trợ rộng rãi và khả năng mở rộng tự nhiên của SBC

    Việc SBC được hỗ trợ rộng rãi là rất tuyệt, và có vẻ như đây là một phần mở rộng tự nhiên của tiêu chuẩn hiện có. Cá nhân tôi thấy vấn đề không nằm ở LDAC hay AAC so với SBC, mà là chất lượng của HFP quá kém. Ngay khoảnh khắc bật micro lên là có cảm giác như quay về thập niên 90. Mong chất lượng âm thanh Bluetooth hai chiều sẽ được cải thiện.

  • Phân tích chuyên sâu về lỗi trong Bluetooth stack của Android và chỉ ra sự đa dạng của phần cứng

    Bài viết này không nói về Bluetooth nói chung mà là một phân tích chuyên sâu về lỗi trong Bluetooth stack của Android. Điều tác giả hoàn toàn không nhắc tới là phần cứng được sử dụng rất đa dạng. Android chạy trên vô số chipset Bluetooth khác nhau. Vì vậy, dù một bản vá có vẻ hoạt động trên một phần cứng, chưa chắc nó sẽ hoạt động trên điện thoại Android khác. Ngoài ra, điều này cũng có thể thay đổi tùy theo các tác vụ khác mà thiết bị đang thực hiện. Ví dụ, nếu dùng chung chipset BT+Wifi và vừa stream video qua Wi-Fi vừa stream âm thanh tới tai nghe, thiết bị sẽ phải phân bổ tài nguyên dựa trên mức sử dụng Wi-Fi và BT. Do đó, âm thanh lưu cục bộ và âm thanh phát qua stream không nhất thiết sẽ nhận cùng các tham số CODEC. Có rất nhiều khác biệt tinh vi trong chủ đề này mà tác giả chưa xem xét, nên cần thận trọng khi đọc.

  • Chia sẻ trải nghiệm điều chỉnh tham số SBC và sử dụng AAC, aptX, LDAC trên Windows qua 'Alternative A2DP Driver'

    "Alternative A2DP Driver" cung cấp tính năng này trên Windows. Có thể tùy chỉnh tham số SBC và dùng AAC, aptX(chưa thử) nữa. Theo trải nghiệm của tôi, nó hoạt động tốt, và có thể dùng LDAC với Sony XM4. Đây là bản thử nghiệm nhưng giá rẻ. Tôi nhận thấy phạm vi Bluetooth giảm ở chế độ chất lượng cao, qua đó xác nhận rằng codec (hoặc ít nhất là một thứ gì đó) thực sự đã thay đổi. Liên kết ở trên không phải liên kết tiếp thị liên kết.

  • Đề cập khả năng cải thiện âm thanh bitrate cao hơn và chất lượng audio headset trên Linux với SBC XQ và mSBC

    Trên Linux, có thể bật âm thanh SBC bitrate cao hơn thông qua thứ gọi là "SBC XQ". Tương tự, có thể dùng "mSBC" để có âm thanh headset chất lượng cao hơn (dĩ nhiên vẫn thấp hơn so với SBC hay APTX). Nhiều tai nghe hỗ trợ codec âm thanh tốt hơn, nhưng hỗ trợ này chưa phổ biến và cũng không chắc giúp cải thiện âm thanh hai chiều. Mong Google đã hoặc sẽ sớm tích hợp tính năng như thế này.

  • Nêu nhu cầu về khả năng cho phép buffer trước trong thời gian dài trong profile âm thanh Bluetooth

    Tôi muốn có một tính năng trong profile âm thanh Bluetooth cho phép buffer trước trong thời gian dài. Ví dụ, khi phát một bài hát dài 1 phút thì toàn bộ bài hát nên được buffer sẵn. Nếu nhấn 'tạm dừng' hoặc thay đổi âm lượng thì buffer nên bị loại bỏ. Tuy vậy, buffer dài sẽ giúp điện thoại tiết kiệm điện năng và chịu đựng tốt hơn kết nối radio không ổn định.

  • Chia sẻ trải nghiệm dùng tính năng truyền âm thanh chất lượng cao trên LineageOS và đề cập nhu cầu cải thiện trải nghiệm người dùng

    Tôi đã dùng tính năng này trên LineageOS và rất hài lòng. Khả năng truyền âm thanh chất lượng cao hơn tới những thiết bị như dàn âm thanh trên xe không hỗ trợ codec bên thứ ba là cực kỳ hữu ích. Nó cũng mang lại lợi ích lớn với tai nghe. Trải nghiệm người dùng vẫn cần cải thiện đôi chút, nhưng bản thân tính năng này thì rất tuyệt.

  • Nhắc tới việc cần thêm năm (2019) vào tiêu đề và việc tính năng này đã được triển khai trong PulseAudio và PipeWire

    Có lẽ nên thêm (2019) vào tiêu đề. Dù có đề cập đến "tất cả các Bluetooth stack hiện tại", các tính năng này thực ra đã được triển khai trong PulseAudio và PipeWire.

  • Quan điểm hoài nghi về ảnh hưởng thực tế của chênh lệch bitrate giữa Dual Channel và Joint Stereo đến chất lượng âm thanh

    Tôi hoài nghi rằng Dual Channel 551 kbps lại mang đến chất lượng tốt hơn rõ rệt so với Joint Stereo 328 kbps. Với phần lớn âm nhạc, tôi tự hỏi liệu đó có chỉ là dùng nhiều bit hơn để mã hóa thông tin trùng lặp hay không.

  • Câu hỏi về cách cải thiện chất lượng HFP trên macOS và chia sẻ trải nghiệm dùng mSBC trên Linux

    Có ai biết cách cải thiện chất lượng HFP khi dùng Bluetooth trên macOS không? Tôi từng có trải nghiệm chất lượng khá tốt với mSBC trên Linux, nhưng trên macOS thì nó hoàn toàn tệ hại và chuyển sang chất lượng kiểu đường dây điện thoại/mono. Tôi tò mò không biết đã có bản hack nào để làm cho nó hoạt động đúng trên Darwin hay chưa.

  • Chia sẻ việc không biết mình đang dùng SBC và lời cảm ơn đối với bài đăng

    Tôi đã dùng Lineage 18-1 mà không hề biết mình đang sử dụng tính năng SBC. Nhờ bài đăng này tôi mới biết mình đã dùng SBC. "magic -"