Chỉnh sửa Bluetooth stack để cải thiện chất lượng âm thanh của tai nghe không có AA(2019)
(habr.com)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_bitratethà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
Ý 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
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
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'
Đề 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
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
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
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
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
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
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