通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

由于没有3.5毫米音频插孔的智能手机的大量生产,无线蓝牙耳机已成为许多人以耳机模式听音乐和交流的主要方式。
无线设备的制造商并不总是编写详细的产品规格,并且互联网上有关蓝牙音频的文章相互矛盾,有时不正确,没有谈论所有功能,并且经常复制与现实不符的相同信息。
让我们尝试了解协议、蓝牙操作系统堆栈、耳机和扬声器的功能、用于音乐和语音的蓝牙编解码器,找出影响传输声音质量和延迟的因素,了解如何收集和解码有关支持的编解码器和其他设备的信息能力。

TL博士:

  • SBC-- 普通编解码器
  • 耳机对每个编解码器都有自己的均衡器和后处理
  • aptX 并不像宣传的那么好
  • LDAC是营销废话
  • 通话质量仍然很差
  • 您可以通过 emscripten 将 C 音频编码器编译到 WebAssembly 中,从而将它们嵌入到浏览器中,并且它们不会减慢太多。

通过蓝牙播放音乐

蓝牙的功能组件由配置文件(特定功能的规范)决定。 蓝牙音乐流使用高品质 A2DP 单向音频传输配置文件。 A2DP 标准于 2003 年采用,此后没有发生重大变化。
在该配置文件中,专门为蓝牙创建的 1 个低计算复杂度 SBC 强制编解码器和 3 个附加编解码器已标准化。 也可以使用您自己实现的未记录的编解码器。

截至 2019 年 XNUMX 月,我们 在xkcd漫画中 具有 14 个 A2DP 编解码器:

  • SBC ← A2DP 标准化,所有设备都支持
  • MPEG-1/2 Layer 1/2/3 ← A2DP 标准化:众所周知 MP3,用于数字电视 MP2,且未知 MP1
  • MPEG-2/4 AAC ← A2DP 标准化
  • ATRAC ← 索尼的旧编解码器,在 A2DP 中标准化
  • LDAC ← 索尼的新编解码器
  • APTX ← 1988 年的编解码器
  • aptX HD ← 与 aptX 相同,只是编码选项不同
  • aptX低延迟 ← 完全不同的编解码器,没有软件实现
  • aptX自适应 ← 高通的另一个编解码器
  • 快流 ← 伪编解码器,双向SBC修改
  • 华华LHDC ← 华为的新编解码器
  • 三星高清 ← 支持 2 台设备
  • 三星可扩展 ← 支持 2 台设备
  • 三星UHQ-BT ← 支持 3 台设备

您会问,当蓝牙具有 EDR 时,我们为什么还需要编解码器,它允许您以 2 和 3 Mbit/s 的速度传输数据,而对于未压缩的两通道 16 位 PCM,1.4 Mbit/s 就足够了?

通过蓝牙传输数据

蓝牙中有两种类型的数据传输:异步连接较少(ACL),用于异步传输,无需建立连接;同步连接导向(SCO),用于通过初步连接协商进行同步传输。
使用时分方案进行传输,并为每个数据包单独选择传输通道(跳频/时分双工,FH/TDD),其中时间被划分为称为时隙的 625 微秒间隔。 其中一个设备在偶数时隙中传输,另一个设备在奇数时隙中传输。 传输的数据包可以占用 1、3 或 5 个时隙,具体取决于数据的大小和设置的传输类型,在这种情况下,一台设备的传输将在偶数和奇数时隙中进行,直到传输结束。 如果每个数据包占用 1600 个时隙,并且两台设备不间断地传输和接收数据,那么每秒最多可以接收和发送 1 个数据包。

EDR的2和3Mbit/s,可以在公告和蓝牙网站上找到,是两个方向上所有数据总计(包括必须封装数据的所有协议的技术标头)的最大通道传输速率同时地。 实际数据传输速度会有很大差异。

传输音乐采用异步方式,几乎都是使用2-DH5、3-DH5这样的数据包,EDR模式下最大数据量分别为2Mbit/s、3Mbit/s,占用5时间- 共享插槽。

一台设备使用 5 个插槽,另一台设备使用 1 个插槽 (DH5/DH1) 进行传输的示意图:
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

由于电波的时分原理,如果第二个设备没有向我们传输任何内容或传输小数据包,我们在传输数据包后将被迫等待 625 微秒的时隙,如果第二个设备传输数据包,则需要等待更多时间大包。 如果不止一台设备连接到手机(例如耳机、手表和健身手环),则传输时间将在所有设备之间共享。

将音频封装在特殊传输协议 L2CAP 和 AVDTP 中的需要从可能的最大传输音频负载量中占用 16 个字节。

包装类型
插槽数量
最大限度。 数据包中的字节数
最大限度。 A2DP 有效负载的字节数
最大限度。 A2DP 负载比特率

2-DH3
3
367
351
936kbps

3-DH3
3
552
536
1429kbps

2-DH5
5
679
663
1414kbps

3-DH5
5
1021
1005
2143kbps

1414 和 1429 kbps 绝对不足以在实际条件下传输未压缩的音频,因为 2.4 GHz 范围存在噪音并且需要传输服务数据。 EDR 3 Mbit/s 对传输功率和空中噪声的要求很高,因此,即使在 3-DH5 模式下,舒适的 PCM 传输也是不可能的,总会出现短暂的中断,并且一切只能在一定距离内工作。几米。
实际上,即使是 990 kbit/s 的音频流(LDAC 990 kbit/s)也很难传输。

让我们回到编解码器。

SBC

所有支持 A2DP 标准的设备都需要编解码器。 同时是最好和最差的编解码器。

采样频率
容量
比特率
编码支持
解码支持

16、32、44.1、48 kHz
16位
10-1500kbps
所有设备
所有设备

SBC 是一种简单且计算快速的编解码器,具有原始心理声学模型(仅应用安静声音的掩蔽),使用自适应脉冲编码调制 (APCM)。
A2DP 规范建议使用两种配置文件:中质量和高质量。
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

编解码器有许多设置,允许您控制算法延迟、块中的样本数、位分布算法,但几乎所有地方都使用规范中推荐的相同参数:联合立体声、8 个频段、16 个块音频帧,响度位分配方法。
SBC支持动态改变Bitpool参数,这直接影响比特率。 如果电波堵塞、数据包丢失或设备距离较远,音频源可能会减少比特池,直到通信恢复正常。

大多数耳机制造商将最大 Bitpool 值设置为 53,这将使用推荐配置文件时的比特率限制为 328 kbit/s。
即使耳机制造商将最大 Bitpool 值设置为高于 53(此类型号也有,例如:Beats Solo³、JBL Everest Elite 750NC、Apple AirPods,在某些接收器和车载主机上也有),那么大多数操作系统都不允许由于蓝牙堆栈中设置的内部值限制而使用增加的比特率。
此外,一些制造商将某些设备的最大 Bitpool 值设置为较低。 例如,Bluedio T 的值为 39,Samsung Gear IconX 的值为 37,音质较差。

蓝牙堆栈开发人员的人为限制很可能是由于某些具有较大 Bitpool 值或非典型配置文件的设备不兼容(即使他们报告了对它们的支持)以及认证期间的测试不足而引起的。 对于蓝牙堆栈的作者来说,更容易限制自己同意推荐的配置文件,而不是创建不正确设备的数据库(尽管现在他们对其他不正确工作的功能这样做)。

SBC按照从低到高的基础,以不同的权重动态地将量化比特分配给频带。 如果所有比特率都用于低频和中频,则高频将被“切断”(反而会出现静音)。

示例 SBC 328 kbps。 顶部是原始的,底部是 SBC,周期性地在轨道之间切换。 视频文件中的音频使用FLAC无损压缩编解码器。 在 mp4 容器中使用 FLAC 尚未正式标准化,因此不能保证您的浏览器能够播放它,但它应该可以在最新版本的桌面 Chrome 和 Firefox 中运行。 如果没有声音,您可以下载该文件并在功能齐全的视频播放器中打开它。
ZZ 上衣 - 衣着讲究的男士

频谱图显示了切换时刻:SBC 定期消除 17.5 kHz 以上的安静声音,并且根本不为 20 kHz 以上的频段分配任何比特。 单击 (1.7 MB) 可以获得完整的频谱图。
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

在这首曲目中,我听不出原版和 SBC 之间有任何区别。

让我们采用一些更新的东西,模拟使用带有 Bitpool 37 的 Samsung Gear IconX 耳机获得的音频(上图 - 原始信号,下图 - SBC 239 kbps,FLAC 音频)。
无意识的自我放纵 - 见证

我在人声的高频处听到噼啪声、较少的立体声效果和令人不快的“沉闷”声。

尽管 SBC 是一种非常灵活的编解码器,但它可以配置为低延迟,在高比特率 (452+ kbps) 下提供出色的音频质量,并且对于大多数人来说在标准高质量 (328 kbps) 下相当不错,因为A2DP标准没有指定固定的配置文件(只是给出了建议),堆栈开发人员对Bitpool设置了人为限制,传输音频的参数不会显示在用户界面中,耳机制造商可以自由设置自己的设置并且永远不会在产品的技术规格中标明了 Bitpool 值,编解码器因其低音质而闻名,尽管这不是编解码器本身的问题。
Bitpool 参数仅直接影响一个配置文件内的比特率。 相同的 Bitpool 53 值可以在推荐的高质量配置文件下提供 328 kbps 的比特率,在双通道和 1212 个频段下提供 4 kbps 的比特率,这就是为什么操作系统作者除了对 Bitpool 的限制之外,还设置了限制和比特率。 在我看来,这种情况的出现是由于 A2DP 标准的缺陷:需要协商比特率,而不是 Bitpool。

不同操作系统中SBC功能支持表:

GA
支持的采样率
限制最大值比特池
限制最大值比特率
典型比特率
Bitpool动态调整

窗户10
44.1кГц
53
512kbps
328kbps
✓*

Linux(BlueZ + PulseAudio)
16、32、44.1、48 kHz
64(用于传入连接)、53(用于传出连接)
没有限制
328kbps
✓*

MacOS的海伊谢拉
44.1кГц
64,默认53***
不明
328kbps

Android 4.4-9
44.1/48 kHz**
53
328kbps
328kbps

Android 4.1-4.3.1
44.1、48 kHz**
53
229kbps
229kbps

黑莓OS 10的
48кГц
53
没有限制
328kbps

* 如果传输条件改善,比特池只会减少,但不会自动增加。 要恢复 Bitpool,您需要停止播放,等待几秒钟,然后再次启动音频。
** 默认值取决于编译固件时指定的堆栈设置。 在 Android 8/8.1 中,频率仅为 44.1 kHz 或 48 kHz,具体取决于编译期间的设置,在其他版本中同时支持 44.1 kHz 和 48 kHz。
*** 可以在Bluetooth Explorer 程序中增加Bitpool 值。

aptX 和 aptX HD

aptX 是一种简单且计算快速的编解码器,无需心理声学,使用自适应差分脉冲编码调制(ADPCM)。 1988年左右出现(申请日期 专利 日期为 1988 年 2014 月),在蓝牙之前,它主要用于专业无线音频设备。 目前由高通公司所有,需要许可和特许权使用费。 截至 6000 年:一次性 1 美元,每台设备 约 10000 美元,批量最多 XNUMX 台设备(p.16)。
aptX 和 aptX HD 是相同的编解码器,具有不同的编码配置文件。

编解码器只有一个参数——选择采样频率。 然而,可以选择通道的数量/模式,但在我所知的所有设备(70 多个)中,仅支持立体声。

编解码器
采样频率
容量
比特率
编码支持
解码支持

APTX
16、32、44.1、48 kHz
16位
128 / 256 / 352 / 384 kbps(取决于采样率)
Windows 10(桌面版和移动版)、macOS、Android 4.4+/7*、Blackberry OS 10
各种音频设备(硬件)

* 7 之前的版本需要修改蓝牙堆栈。 仅当 Android 设备制造商已从 Qualcomm 获得编解码器许可(如果操作系统具有编码库)时,才支持该编解码器。

aptX 将音频分为 4 个频段,并不断地用相同的位数对其进行量化:8-0 kHz 5.5 位,4-5.5 kHz 11 位,2-11 kHz 16.5 位,2-16.5 kHz 22 位(采样率 44.1 kHz 的数字)。

aptX 音频示例(顶部 - 原始信号,底部 - aptX,仅左声道的频谱图,FLAC 格式的声音):

高音变得有点红,但你听不出区别。

由于量化位的固定分布,编解码器无法将位“移动”到最需要它们的频率。 与 SBC 不同,aptX 不会“削减”频率,而是会向频率添加量化噪声,从而降低音频的动态范围。

例如,不应假设每频带使用 2 位会将动态范围降低至 12 dB:即使使用 96 个量化位,ADPCM 也允许高达 2 dB 的动态范围,但仅限于特定信号。
ADPCM 存储当前样本和下一个样本之间的数值差,而不是像 PCM 那样存储绝对值。 这使您可以减少存储相同(无丢失)或几乎相同(具有相对较小的舍入误差)信息所需的位数的要求。 为了减少舍入误差,使用系数表。
在创建编解码器时,作者计算了一组音乐音频文件的 ADPCM 系数。 音频信号越接近构建表格的音乐集,aptX 产生的量化误差(噪声)就越少。

正因为如此,综合测试总是会产生比音乐更糟糕的结果。 我做了一个特殊的合成示例,其中 aptX 显示了较差的结果 - 频率为 12.4 kHz 的正弦波(上方 - 原始信号,下方 - aptX。音频为 FLAC。降低音量!):

频谱图:
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

噪音清晰可闻。

但是,如果生成幅度较小的正弦波,使其更安静,则噪声也会变得更安静,表明动态范围很宽:

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

要听出原始音乐曲目和压缩音乐曲目之间的差异,您可以反转其中一个信号并逐通道添加曲目。 一般来说,这种方法是不正确的,并且对于更复杂的编解码器不会给出合理的结果,但特别对于 ADPCM 它非常合适。
原版和aptX的区别
信号的均方根差为-37.4 dB,这对于这种压缩音乐来说并不算多。

aptX HD

aptX HD 不是独立的编解码器 - 它是 aptX 编解码器的改进编码配置文件。 这些变化影响了为编码频率范围分配的位数:10-0 kHz 为 5.5 位,6-5.5 kHz 为 11 位,4-11 kHz 为 16.5 位,4-16.5 kHz 为 22 位(44.1 kHz 为数字) 。

编解码器
采样频率
容量
比特率
编码支持
解码支持

aptX HD
16、32、44.1、48 kHz
24 位
192 / 384 / 529 / 576 kbps(取决于采样率)
安卓 8+*
一些音频设备(硬件)

* 7 之前的版本需要修改蓝牙堆栈。 仅当 Android 设备制造商已从 Qualcomm 获得编解码器许可(如果操作系统具有编码库)时,才支持该编解码器。

比 aptX 不太常见:显然需要高通的单独许可以及单独的许可费用。

让我们用 12.4 kHz 的正弦波重复该示例:
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

比 aptX 好很多,但还是有点吵。

aptX低延迟

从参与其开发的人员提供的有限信息来看,高通的编解码器与标准 aptX 和 aptX HD 没有任何共同之处。 专为交互式低延迟音频传输(电影、游戏)而设计,其中音频延迟无法通过软件调整。 编码器和解码器尚无已知的软件实现;它们仅由发射器、接收器、耳机和扬声器支持,但智能手机和计算机不支持。

采样频率
比特率
编码支持
解码支持

44.1кГц
276/420kbps
一些发射器(硬件)
一些音频设备(硬件)

AAC格式

AAC,即高级音频编码,是一种计算复杂的编解码器,具有严格的心理声学模型。 广泛用于互联网上的音频,其受欢迎程度仅次于 MP3。 需要许可和特许权使用费:一次性 15000 美元(员工少于 1000 名的公司为 15 美元)+ 前 0.98 台设备 500000 美元().
该编解码器在 MPEG-2 和 MPEG-4 规范中标准化,与常见的误解相反,它不属于 Apple。

采样频率
比特率
编码支持
解码支持

8 - 96 kHz
8 - 576 kbps(立体声),256 - 320 kbps(蓝牙典型值)
macOS、Android 7+*、iOS
各种音频设备(硬件)

* 仅适用于制造商已支付许可费的设备

iOS 和 macOS 使用 Apple 目前最好的 AAC 编码器来提供尽可能高的音频质量。 Android 使用质量第二高的 Fraunhofer FDK AAC 编码器,但可能使用平台 (SoC) 中内置的各种编码质量未知的硬件。 根据 SoundGuys 网站最近的测试,不同Android手机的AAC编码质量差异很大:
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

大多数无线音频设备的 AAC 最大比特率为 320 kbps,有些仅支持 256 kbps。 其他比特率极为罕见。
AAC 在 320 和 256 kbps 比特率下提供出色的质量,但受制于 已压缩内容的顺序编码丢失不过,即使采用多种顺序编码,在 256 kbps 的比特率下,在 iOS 上也很难听出与原版的差异;对于单一编码,例如 MP3 320 kbps 到 AAC 256 kbps,损失可以忽略不计。
与其他蓝牙编解码器一样,任何音乐都首先由编解码器解码,然后进行编码。 当听AAC格式的音乐时,首先由操作系统解码,然后再次编码为AAC,以便通过蓝牙传输。 这对于混合多个音频流(例如音乐和新消息通知)是必要的。 iOS 也不例外。 在网上你可以找到很多说法,在iOS上,AAC格式的音乐通过蓝牙传输时不会转码,这是不正确的。

MP1/2/3

MPEG-1/2 Part 3 系列的编解码器包括众所周知且广泛使用的 MP3、不太常见的 MP2(主要用于数字电视和广播)以及完全未知的 MP1。

旧的 MP1 和 MP2 编解码器根本不受支持:我找不到任何可以对它们进行编码或解码的耳机或蓝牙堆栈。
某些耳机支持 MP3 解码,但任何现代操作系统堆栈都不支持编码。 如果您手动更改配置文件,Windows 的第三方 BlueSoleil 堆栈似乎可以编码为 MP3,但对我来说,安装它会导致 Windows 10 上的 BSoD。结论 - 该编解码器实际上不能用于蓝牙音频。
此前,在 2006-2008 年,A2DP 标准在设备中普及之前,人们通过 MSI BluePlayer 程序在诺基亚 BH-3 耳机上收听 MP501 音乐,该程序可在 Symbian 和 Windows Mobile 上使用。 当时,智能手机的操作系统架构允许访问许多低级功能,在Windows Mobile上甚至可以安装第三方蓝牙堆栈。

MP3编解码器的最后一个专利已到期,自23年2017月XNUMX日起使用该编解码器不需要许可费。

如果以上述参考文献中提到的运行时间最长的专利作为衡量标准,那么当由 Technicolor 持有和管理的美国专利 3 到期时,MP16 技术于 2017 年 6,009,399 月 XNUMX 日在美国成为无专利的。

来源: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

采样频率
比特率
编码支持
解码支持

16 - 48 kHz
8 - 320 kbps
任何地方都不支持
一些音频设备(硬件)

LDAC

索尼积极推广的新型“Hi-Res”编解码器,支持高达 96 kHz 和 24 位的采样率,比特率高达 990 kbps。 它被宣传为发烧级编解码器,作为现有蓝牙编解码器的替代品。 它具有根据广播条件自适应比特率调整的功能。

LDAC编码器(利布达克)包含在标准 Android 包中,因此从操作系统版本 8 开始的任何 Android 智能手机都支持编码。 没有免费的软件解码器,编解码器规范不向公众公开,但是,乍一看编码器,编解码器的内部结构类似于 ATRAC9 - PlayStation 4 和 Vita 中使用的索尼编解码器:两者都在频域中工作,使用改进的离散余弦变换 (MDCT) 并使用霍夫曼算法进行压缩。

LDAC 支持几乎完全由索尼耳机提供。 有时,其他制造商的耳机和 DAC 也具有解码 LDAC 的功能,但这种情况很少见。

采样频率
比特率
编码支持
解码支持

44.1 - 96 kHz
303/606/909 kbit/s(适用于 44.1 和 88.2 kHz)、330/660/990 kbit/s(适用于 48 和 96 kHz)
Android 8的+
一些索尼耳机和一些其他制造商的设备(硬件)

将 LDAC 作为高分辨率编解码器进行营销会损害其技术组件:将比特率花费在传输人耳听不见的频率并增加比特深度上是愚蠢的,而在没有损失的情况下传输 CD 质量 (44.1/16) 是不够的。 幸运的是,编解码器有两种工作模式:CD 音频传输和 Hi-Res 音频传输。 在第一种情况下,仅通过空中传输 44.1 kHz/16 位。

由于软件 LDAC 解码器不是免费提供的,因此在没有解码 LDAC 的附加设备的情况下不可能测试编解码器。 根据 LDAC 在其支持下的 DAC 测试结果,SoundGuys.com 工程师通过数字输出连接并在测试信号上记录输出声音,CD 质量模式下的 LDAC 660 和 990 kbps 提供了信号到信噪比比aptX HD略好。

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息
来源: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC 还支持既定配置文件之外的动态比特率 - 从 138 kbps 到 990 kbps,但据我所知,Android 仅使用标准化配置文件 303/606/909 和 330/660/990 kbps。

其他编解码器

其他 A2DP 编解码器并未得到广泛使用。 它们的支持要么几乎完全不存在,要么仅在某些型号的耳机和智能手机上可用。
A2DP 中标准化的 ATRAC 编解码器甚至连索尼自己也从未用作蓝牙编解码器,Samsung HD、Samsung Scalable 和 Samsung UHQ-BT 编解码器对发送和接收设备的支持非常有限,而 HWA LHDC 太新,仅支持三种(?) 设备。

音频设备的编解码器支持

并非所有制造商都会发布有关某些无线耳机、扬声器、接收器或发射器支持的编解码器的准确信息。 有时,对某种编解码器的支持仅适用于传输,而不适用于接收(与组合发射器-接收器相关),尽管制造商只是声明“支持”,没有注释(我假设某些编码器和解码器的单独许可编解码器是造成这种情况的罪魁祸首)。 在最便宜的设备中,您可能根本找不到声明的 aptX 支持。

不幸的是,大多数操作系统的界面不会显示任何地方使用的编解码器。 有关此信息仅适用于 Android(从版本 8 开始)和 macOS。 但是,即使在这些操作系统中,也只会显示手机/计算机和耳机都支持的编解码器。

如何找出您的设备支持哪些编解码器? 使用A2DP协商参数记录并分析流量转储!
这可以在 Linux、macOS 和 Android 上完成。 在 Linux 上,您可以使用 Wireshark 或 hcidump,在 macOS 上,您可以使用蓝牙资源管理器,在 Android 上,您可以使用标准蓝牙 HCI 转储保存功能,该功能可在开发人员工具中使用。 您将收到 btsnoop 格式的转储,可以将其加载到 Wireshark 分析器中。
注意:只有通过从手机/计算机连接到耳机/扬声器才能获得正确的转储(无论听起来多么有趣)! 耳机可以独立与手机建立连接,在这种情况下,它们将从手机请求编解码器列表,反之亦然。 为了确保记录正确的转储,请首先取消设备配对,然后在记录转储时将手机与耳机配对。

使用以下显示过滤器过滤掉不相关的流量:

btavdtp.signal_id

结果,您应该看到与此类似的内容:
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

您可以单击 GetCapability 命令中的每一项来查看编解码器的详细特性。
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

Wireshark 不知道所有编解码器标识符,因此某些编解码器必须手动解密,查看下面的标识符表:

Mandatory:
0x00 - SBC

Optional:
0x01 - MPEG-1,2 (aka MP3)
0x02 - MPEG-2,4 (aka AAC)
0x04 - ATRAC

Vendor specific:
0xFF 0x004F 0x01   - aptX
0xFF 0x00D7 0x24   - aptX HD
0xFF 0x000A 0x02   - aptX Low Latency
0xFF 0x00D7 0x02   - aptX Low Latency
0xFF 0x000A 0x01   - FastStream
0xFF 0x012D 0xAA   - LDAC
0xFF 0x0075 0x0102 - Samsung HD
0xFF 0x0075 0x0103 - Samsung Scalable Codec
0xFF 0x053A 0x484C - Savitech LHDC

0xFF 0x000A 0x0104 - The CSR True Wireless Stereo v3 Codec ID for AAC
0xFF 0x000A 0x0105 - The CSR True Wireless Stereo v3 Codec ID for MP3
0xFF 0x000A 0x0106 - The CSR True Wireless Stereo v3 Codec ID for aptX

为了不手动分析转储,我创建了一个可以自动分析所有内容的服务: btcodecs.valdikss.org.ru

编解码器的比较。 哪个编解码器更好?

每个编解码器都有自己的优点和缺点。
aptX 和 aptX HD 使用硬编码配置文件,如果不修改编码器和解码器就无法更改。 手机制造商和耳机制造商都无法更改比特率或 aptX 编码系数。 编解码器的所有者 Qualcomm 以库的形式提供参考编码器。 这些事实是 aptX 的优势 - 您提前知道您将获得什么样的声音质量,没有任何“但是”。

相比之下,SBC 有许多可配置的参数、动态比特率(如果电波繁忙,编码器可以减少比特池参数),并且没有硬编码配置文件,只有推荐的“中等质量”和“高质量”。于 2 年添加到 A2003DP 规范中。 按照今天的标准,“高质量”不再那么高,大多数蓝牙堆栈不允许您使用比“高质量”配置文件更好的参数,尽管对此没有技术限制。
蓝牙 SIG 没有参考 SBC 编码器作为库,由制造商自行实现。
这些是 SBC 的弱点 - 事先无法明确特定设备的音质。 SBC 可以产生低质量和非常高质量的音频,但如果不禁用或绕过蓝牙堆栈的人为限制,后者是无法实现的。

AAC 的情况是不明确的:一方面,理论上编解码器应该产生与原始编解码器没有区别的质量,但实际上,从 SoundGuys 实验室在不同 Android 设备上的测试来看,这一点尚未得到证实。 最有可能的原因是各种手机芯片组中内置的低质量硬件音频编码器。 仅在 Apple 设备上使用 AAC 才有意义,而在 Android 上则将其限制为 aptX 和 LDAC。

支持替代编解码器的硬件往往具有更高的质量,仅仅是因为对于非常便宜、低质量的设备来说,支付许可费用来使用这些编解码器是没有意义的。 在我的测试中,SBC 在优质设备上听起来非常好。

我制作了一个 Web 服务,可以在浏览器中实时将音频编码为 SBC、aptX 和 aptX HD。 有了它,您可以在任何有线耳机、扬声器和您喜爱的音乐上测试这些音频编解码器,而无需通过蓝牙实际传输音频,还可以在播放音频时直接更改编码参数:
btcodecs.valdikss.org.ru/sbc-encoder
该服务使用 BlueZ 项目中的 SBC 编码库和 ffmpeg 中的 libopenaptx,这些库通过 emscripten 从 C 编译为 WebAssembly 和 JavaScript,以便在浏览器中运行。 谁能梦想这样的未来!

下面是它的外观:

请注意不同编解码器的噪声水平在 20 kHz 后如何变化。 原始 MP3 文件不包含 20 kHz 以上的频率。

尝试切换编解码器,看看您是否听到原始 SBC 53 Joint Stereo(标准和最常见的配置文件)和 aptX/aptX HD 之间的差异。

我可以听出编解码器之间的差异 在耳机里!

在通过网络服务测试期间没有听到编解码器之间差异的人声称,他们在使用无线耳机听音乐时听到了这种差异。 唉,这不是玩笑,也不是安慰剂效应:差异确实是听得见的,但并不是由差异引起的 编解码器.

无线接收设备中使用的绝大多数蓝牙音频芯片组都配备了数字信号处理器 (DSP),它实现了均衡器、压缩扩展器、立体声扩展器和其他旨在改善(或改变)声音的功能。 蓝牙设备制造商可以配置DSP 分别针对每个编解码器,并且在编解码器之间切换时,听众会认为他们听到的是编解码器操作的差异,而实际上他们听到的是不同的 DSP 设置。

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息
CSR/Qualcomm 制造的芯片中的 DSP Kalimba 音频处理管道

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息
为每个编解码器激活不同的DSP功能并分别输出

一些高级设备附带的软件允许您自定义 DSP 设置,但大多数便宜的耳机没有,并且用户无法手动关闭音频后处理。

设备功能特点

A2DP 标准的现代版本具有 “绝对音量控制”功能 — 使用 AVRCP 协议的特殊命令控制设备音量,该命令调节输出级的增益,而不是以编程方式降低音频流的音量。 如果您更改耳机音量时,更改与手机音量不同步,则您的耳机或手机不支持此功能。 在这种情况下,最好总是在手机上以最大音量听音乐,用耳机按钮调整实际音量 - 这样的话,信噪比会更好,音质也更好 一定是 上方。
事实上,也有令人悲伤的情况。 在我的用于 SBC 的 RealForce OverDrive D1 耳机上,打开了强压缩扩展器,增加音量会导致安静声音的音量增加,而响亮声音的音量不会改变(信号被压缩)。 因此,您必须将计算机上的音量设置为一半左右,在这种情况下几乎没有压缩效果。
据我观察,所有附加编解码器的耳机都支持绝对音量控制功能,显然这是编解码器认证的要求之一。

部分耳机支持 同时连接两个设备。 例如,您可以通过计算机收听音乐并通过手机接听电话。 但是,您应该注意,在此模式下,替代编解码器被禁用,并且仅使用 SBC。

AVDTP 1.3 延迟报告功能 允许耳机将延迟传达给实际播放声音的传输设备。 这允许您在观看视频文件时调整音频与视频的同步:如果无线电传输出现问题,音频不会落后于视频,但相反,视频会被视频播放器减慢,直到音频和视频再次同步。
许多耳机、Android 9+ 和带有 PulseAudio 12.0+ 的 Linux 都支持该功能。 我不知道其他平台是否支持此功能。

通过蓝牙进行双向通信。 语音传输。

对于蓝牙中的语音传输,使用面向同步连接(SCO)——通过连接的初步协商进行同步传输。 该模式允许您严格按顺序传输声音和语音,发送和接收速度对称,无需等待传输确认和重新发送数据包。 这减少了无线电信道上音频传输的总体延迟,但对每单位时间传输的数据量施加了严格的限制,并对质量产生负面影响。
使用此模式时,语音和音频都以相同的质量传输。
不幸的是,截至 2019 年,蓝牙语音质量仍然很差,目前还不清楚为什么蓝牙 SIG 没有采取任何措施。

心血管疾病

基本的 CVSD 语音编解码器于 2002 年标准化,所有双向蓝牙通信设备均支持该编解码器。 它提供采样频率为 8 kHz 的音频传输,相当于传统有线电话的质量。

此编解码器中的录音示例.

微控制器

附加的 mSBC 编解码器于 2009 年标准化,2010 年使用它进行语音传输的芯片已经出现。 mSBC 被各种设备广泛支持。
这不是一个独立的编解码器,而是来自 A2DP 标准的常规 SBC,具有固定的编码配置文件:16 kHz、单声道、位池 26。

此编解码器中的录音示例.

不算出色,但比 CVSD 好得多,但用于在线交流仍然很烦人,尤其是当你在游戏中使用耳机进行交流时 - 游戏的音频也会以 16 kHz 的采样率传输。

FastStreamCSR公司决定开发利用SBC的想法。 为了绕过 SCO 协议的限制并使用更高的比特率,CSR 走了一条不同的路线 - 他们将对双向 SBC 音频的支持引入到 A2DP 单向音频传输标准中,标准化编码配置文件,并将其称为“FastStream”。

FastStream 以 44.1 或 48 kHz、比特率为 212 kbps 的立体声音频传输到扬声器,而单声道、16 kHz、比特率为 72 kbps(比 mSBC 稍好)用于从麦克风传输音频。 这些参数更适合在线游戏中的交流 - 游戏和对话者的声音将是高质量的。

此编解码器中的录音示例 (+ 麦克风发出声音,与 mSBC 相同).

该公司想出了一个有趣的拐杖,但由于它与 A2DP 标准相矛盾,因此仅在该公司的某些发射器(用作 USB 音频卡,而不是蓝牙设备)中支持它,但它并不支持获得蓝牙堆栈的支持,尽管支持 FastStream 的耳机数量并不少。

目前,操作系统中仅支持 FastStream 作为 Linux PulseAudio 的补丁 来自开发人员 Pali Rohár,他不包含在该程序的主分支中。

aptX低延迟

令您惊讶的是,aptX Low Latency 还支持双向音频,实现与 FastStream 相同的原理。
不可能在任何地方使用编解码器的此功能 - 在我所知的任何操作系统或任何蓝牙堆栈中都不支持低延迟解码。

蓝牙 5,经典和低功耗

由于同一品牌下存在两种不兼容的标准,而这两种标准都广泛用于不同的目的,因此蓝牙规范和版本存在很多混乱。

有两种不同且不兼容的蓝牙协议:经典蓝牙和低功耗蓝牙(LE,也称为智能蓝牙)。 还有第三种协议,即高速蓝牙,但它并不普遍,也没有在家用设备中使用。

从蓝牙 4.0 开始,规范的变化主要涉及蓝牙低功耗,而经典版本仅获得了较小的改进。

蓝牙4.2和蓝牙5之间的变化列表:

从 v9 到 4.2 的 5.0 项变更

9.1 新功能

蓝牙核心规范 5.0 版本中引入了多项新功能。 需要改进的主要领域是:
• 插槽可用性掩码 (SAM)
• 用于 LE 的 2 Msym/s PHY
•LE 长距离
• 高负载周期不可连接广告
• LE 广告扩展
• LE 通道选择算法#2
9.1.1 CSA5 中添加的功能 - 集成在 v5.0 中
•更高的输出功率

来源: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (291页面)

在蓝牙 5 规范框架内,只有一项更改影响了经典版本:增加了对时隙可用性掩码 (SAM) 技术的支持,该技术旨在改善无线电广播分离。 所有其他更改仅影响蓝牙 LE(以及更高的输出功率)。

所有 音频设备仅使用经典蓝牙。 无法通过低功耗蓝牙连接耳机和扬声器:没有使用 LE 传输音频的标准。 用于传输高质量音频的 A2DP 标准只能通过经典蓝牙工作,并且 LE 中没有类似的标准。

结论 - 仅仅因为新版本的协议而购买带有蓝牙 5 的音频设备是没有意义的。 蓝牙4.0/4.1/4.2在音频传输方面的工作原理完全相同。
如果新耳机的发布提到蓝牙 5 使工作范围加倍并降低功耗,那么您应该知道他们要么自己不理解,要么误导您。 难怪,因为即使是蓝牙芯片制造商在其公告中也对新版本标准之间的差异感到困惑,并且一些蓝牙5芯片仅支持LE的第五版本,而使用4.2作为Classic。

音频传输延迟

音频延迟量取决于许多因素:音频堆栈、蓝牙堆栈和无线播放设备本身中的缓冲区大小,以及编解码器的算法延迟。

SBC、aptX 和 aptX HD 等简单编解码器的延迟非常小,为 3-6 毫秒,可以忽略不计,但 AAC 和 LDAC 等复杂编解码器会导致明显的延迟。 44.1 kHz 的 AAC 算法延迟为 60 毫秒。 LDAC - 大约 30 毫秒(基于对源代码的粗略分析。我可能是错的,但不多。)

由此产生的延迟很大程度上取决于播放设备、其芯片组和缓冲区。 在测试过程中,我在不同设备(使用 SBC 编解码器)上收到了 150 到 250 毫秒的延迟。 如果我们假设支持附加编解码器 aptX、AAC 和 LDAC 的设备使用高质量组件和较小的缓冲区大小,我们会得到以下典型延迟:

单板卡:150-250ms
aptX:130-180 毫秒
AAC:190-240 毫秒
LDAC:160-210 毫秒

让我提醒您:操作系统不支持 aptX Low Latency,这就是为什么较低的延迟只能通过发射器+接收器或发射器+耳机/扬声器组合来获得,并且所有设备都必须支持此编解码器。

蓝牙设备、认证和徽标问题

如何区分高品质音频设备和廉价工艺品? 首先是外观!

对于廉价的中国耳机、扬声器和接收器:

  1. 盒子和设备上缺少“蓝牙”一词,最常使用“无线”和“BT”
  2. 蓝牙标志缺失 通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息 在盒子或设备上
  3. 无蓝色 LED 闪烁

缺少这些元素表明该设备尚未经过认证,这意味着它可能质量低劣且存在问题。 例如,Bluedio 耳机未经过蓝牙认证,也不完全符合 A2DP 规范。 他们不会通过认证。

让我们考虑其中的几种设备和盒子:
通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

通过蓝牙的音频:有关配置文件、编解码器和设备的最大详细信息

这些都是未经认证的设备。 说明可能包含蓝牙技术的徽标和名称,但最重要的是它们位于包装盒和/或设备本身上。

如果您的耳机或扬声器显示“Ze 蓝牙 dewise 连接成功”,这也并不表明其质量:

结论

蓝牙能否完全取代有线耳机和耳麦? 它是有能力的,但代价是通话质量差、游戏中令人讨厌的音频延迟增加,以及需要许可费用并增加智能手机和耳机的最终成本的大量专有编解码器。

替代编解码器的营销非常强劲:aptX 和 LDAC 被视为“过时且糟糕”的 SBC 的期待已久的替代品,而 SBC 并不像人们想象的那么糟糕。

事实证明,蓝牙堆栈对SBC比特率的人为限制是可以绕过的,这样SBC就不会逊色于aptX HD。 我主动为 LineageOS 固件打了补丁: 我们修改蓝牙堆栈以改善不使用 AAC、aptX 和 LDAC 编解码器的耳机的声音

更多信息可以在网站上找到 健全的家伙 и 声音专家.

奖励: SBC参考编码器、A2DP比特流信息和测试文件。 该文件曾经在蓝牙网站上公开发布,但现在仅对蓝牙 SIG 成员开放。

来源: habr.com

添加评论