前言#
前段時間在用 LinkBuds 连接电脑的时候发现音频选项中有一个 SBC-XQ 编码器,有点好奇就去查了一下,只翻到这篇 19 年 6 月发布在 SoundExpert 的文章,写的还挺详细的,遂将其翻译成中文。
该译文借助了 ChatGPT 进行辅助翻译,仅供学习,版权归原作者所有(
原文地址:http://soundexpert.org/articles/-/blogs/audio-quality-of-sbc-xq-bluetooth-audio-codec
正文#
SBC XQ 不仅仅是一种新的蓝牙音频编解码器,它更是一种 Lifehack 。
标准的 SBC 被强制性地整合进所有的蓝牙立体声音频设备中 [1][2]。它可以在任意高的比特率下工作,但是 Bluetooth 的文档推荐在高质量模式下使用 328 kbit/s(44.1kHz/16bits)。根据 SE 的评级,这种模式仅仅提供了可接受的音频质量,为了提高蓝牙音频传输的质量:
- CSR 公司,一家跨国半导体公司,收购了 APT Licensing Ltd. 并推出了 aptX ,接着推出了 aptX HD,然后是高通收购了所有这些公司,并进一步推出了 aptX Low Lattency 和 aptX Adaptive ;
- Sony 推出了其专有的 Hi-Res LDAC;
- 三星推出了三种新的蓝牙音频编解码器 HD/Scalable/UHQ-BT ;
- 华为推出了 HWA LHDC 音频编解码器;
- 苹果在其产品中使用 AAC;
- ValdikSS 为 Android 写了补丁,Pali Rohár 为 Linux 写了补丁,这些补丁可以解锁 SBC 的更高比特率。
事实证明,几乎所有现代的蓝牙无线耳机、扬声器、接收器... 出厂时支持的 SBC 比特率高达 730 kbit/s,而这个补丁(SBC XQ)则可以帮助在 Android 环境下对蓝牙音频进行如下比特率的编码:
- BT EDR 2 - 44.1/16bits 452.0 kbit/s,48/16 492.0 kbit/s
- BT EDR 3 - 44.1/16bits 551.2 kbit/s,48/16 600.0 kbit/s
这些比特率的选择看起来像是在音频质量、兼容性与蓝牙连接稳定性之间做了一个合理的妥协 [3][4]。
SBC XQ 在 44.1kHz/16bit 下的结果已经添加到了我们的听测中:
SBC XQ CBR@452.0 (Bluetooth)** - Subband codec for Bluetooth A2DP profile, CBR, 452.0 kbit/s FBR
CODER: SBC Encoder LIB Version 1.5 (Philips)
- usage: sbc_encoder -v -p -r453000 -oout.sbc ref.wav
- SBC XQ default setting for BT EDR2
- 44100 Hz, Dual Channel
- bitpool: 38, bands: 8, blk_len: 16, allocation method: Loudness
DECODER: SBC Decoder LIB Version 1.5 (Philips)
SBC XQ CBR@551.2 (Bluetooth)** - Subband codec for Bluetooth A2DP profile, CBR, 551.2 kbit/s FBR
CODER: SBC Encoder LIB Version 1.5 (Philips)
- usage: sbc_encoder -v -p -r552000 -oout.sbc ref.wav
- SBC XQ default setting for BT EDR3
- 44100 Hz, Dual Channel
- bitpool: 47, bands: 8, blk_len: 16, allocation method: Loudness
DECODER: SBC Decoder LIB Version 1.5 (Philips)
此页面提供了早期评分(目前不够准确)的信息,您可以在 Encoders 320+ kbit/s 页面下方参加 SE 听觉测试以获得更准确的结果,在该页面下方有一份简短的说明。
SBC XQ 在音乐信号下的失真因子测量#
如果下面的文段看起来有点混乱,请参考之前的文章 - Audio quality of Bluetooth aptX and aptX HD
再次强调,通过任何客观测量手段进行感知声音质量的评估都应该非常谨慎。在失真因子测量中,我们有一个标准,用于定义该测量是否可以作为此类评估的依据。这个标准是被测试设备的声音特征或者失真特征之间的相似性,如果它们的失真特征足够接近,那么它们的测量结果就能很好地与感知声音质量得分相对应。
为了更客观的判断结果,我们将比较 SBC XQ @ 452.0 和 SBC XQ @ 551.2 的伪影签名与 SBC @ 201(低质量)、SBC229(中等质量)、SBC @ 328(高质量)、aptX @ 352、aptX HD @ 529、ADPCM IMA @ 354、AAC @ 256。就像在之前的文章中一样,我们将使用 Pink Floyd 的专辑《The Dark Side of The Moon》作为测试信号。
図 1 显示了不同的蓝牙音频编解码器如何根据其特征标识相互关联。两个编解码器之间的连接线越短,它们的特征标识就越相似。秩相关系数 0.1 对于失真因子与主观评分之间的关系至关重要。
我们可以看到,SBC 和 aptX 具有类似的伪影特征(差距 < 0.1),因此它们的失真因子测量值可以指示它们的感知声音质量(?)。
実在是不知道这怎么翻译了,原句为:We can see that SBC and aptX codecs have similar artifact signatures (distance<0.1), so their df-measurements are indicative of their perceived sound quality. 如果您有更好的翻译,请在下面留言,谢谢。
図 2 为测试编解码器的失真因子序列的直方图,其显示了中位数与 25/75 百分位数。失真因子的中位数是平均波形退化的估计值。直方图的形状与波形退化的特征 / 类型(伪影特征)有关。
从失真因子的中位数来看,我们可以有把握地得出结论:SBC-XQ 的音频质量与 aptX HD 相当,而对于采用了 BT EDR3 的设备,SBC XQ 略胜一筹,在盲听测试中很难区分它们。 SBC 使用基本的声学模型进行编码,而 aptX 根本不使用该模型,因此它们的感知音频质量主要由比特率决定。可以借助 Bluetooth A2DP SBC/aptX 在线编码器对比不同 SBC 设置,包括 SBC XQ,与 aptX 和 aptX HD 进行听觉比较 [5]。
目前,LineageOS、Resurrection Remix 和 crDroid 的 Android 分支已经包含了所需的补丁。来自 Pali Rohár 的 Linux PulseAudio 补丁除了支持 SBC XQ,还添加了对 aptX、aptX HD 和 FastStream 编解码器的支持 [6]。这种额外的音频质量提升是完全免费的,很难想出会有任何反对将此选项包含在所有蓝牙协议栈和主要 Android 分支中的理由。您可以在您的操作系统中请求此功能:
- Android: https://issuetracker.google.com/issues/new?component=190923&template=845103
- Linux (PulseAudio): https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Community/
- macOS and iOS: https://www.apple.com/feedback/
- Windows:
- Win10 - Use Feedback app on the Start Menu
- Toshiba Bluetooth Stack - https://www.webcom.toshiba.co.jp/us/voice/
- IVT BlueSoleil (1000Moons) - http://www.bluesoleil.com/life/254.html
- Broadcom WIDCOMM BT Stack - https://www.broadcom.com/company/contact-us/feedback-and-comments and https://community.broadcom.com/ideation/allideas (requires registration)
译注:LineageOS 起初的确有 SBC-XQ 的支持,不过后面又删除了这一补丁,原因未知。
参考文献:#
[1] Bluetooth SIG, Specification of the Bluetooth System, Profiles, Advanced Audio Distribution Profile, v1.3.2, 2019-01-21, https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=457083
[2] Christian Hoene, Mansoor Hyder, “Considering Bluetooth’s Subband Codec (SBC) for Wideband Speech and Audio on the Internet”, Technical Report WSI-2009-3, 2009-10, https://pdfs.semanticscholar.org/1f19/561d03bc88b67728375566c95bbf77e730d5.pdf
[3] ValdikSS, “Bluetooth stack modifications to improve audio quality on headphones without AAC, aptX, or LDAC codecs”, 2019-06-18, https://habr.com/en/post/456476/
[4] ValdikSS, “Improve Bluetooth audio quality on headphones without aptX or LDAC”, since 2018-08-22, https://forum.xda-developers.com/android/software-hacking/improve-bluetooth-audio-quality-t3832615
[5] Bluetooth A2DP SBC/aptX online encoder, https://btcodecs.valdikss.org.ru/sbc-encoder/
[6] Pali Rohár, New API for Bluetooth A2DP codecs, since 2019-01-12, https://patchwork.freedesktop.org/series/55117/