找回密码
 -注册-
查看: 7871|回复: 12
打印 上一主题 下一主题

[zt]蓝牙音频:尽可能详细地介绍配置文件、编解码器和设备。

[复制链接]
跳转到指定楼层
1
发表于 2020-8-28 16:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式 来自 湖南
本帖最后由 philbar 于 2020-8-28 16:45 编辑

按:最近换了TWS800 最大的感触是蓝牙耳机就是hufi 偶尔随便听听也是可以的 以后各种高清蓝牙收发器也是一个趋势了
找了篇bluez的开发者写的文章翻译下
随机更新 不保证正确
建议:
安卓:用aptx-hd ldac(但要手动调到909kbps)
苹果:你没得选
会不会有把底层改的妈都不认识的耳机我不知道 但如果有播放器砖愿意出把底层改的妈都不认识的播放器 我还是愿意尝试下的
不开放更高码率的SBC的原因是:开放了你让aptx HD和ldac咋卖?

原文:https://habr.com/ru/post/427997/
由于没有3.5毫米音频插孔的智能手机大量生产,对于很多人来说,无线蓝牙耳机已经成为耳机模式下听音乐和交流的主要方式。无线设备厂商不一定会写出详细的产品说明书,网络上关于蓝牙音频的文章也存在争议,有时会出现错误,没有讲出所有的功能,而且经常抄袭同样的错误信息。让我们试着了解协议、OS蓝牙堆栈、耳机和扬声器的功能、音乐和语音的蓝牙编解码器,找出影响传输声音质量和延迟的因素,学习如何收集和解码支持的编解码器信息以及设备的其他功能。

太长不看版:
  • SBC - 正常的编解码器
  • 耳机有自己的EQ,并分别对每个编解码器进行后期处理。
  • aptX并不像广告上说的那么好。
  • LDAC -- -- 市场宣传片
  • 通话音质仍然偏低

蓝牙的功能组件由配置文件--特定功能的规范来定义。蓝牙中的音乐流使用高质量的单向音频传输配置文件A2DP来完成。A2DP标准是在2003年通过的,从那时起就没有大的变化。在该配置文件中,专门为蓝牙创建的1个强制性的低计算复杂度SBC编解码器和3个额外的标准化的编解码器。它还允许使用自己实现的非标准编解码器。

截至2019年6月,我们在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相同,只是编码参数不同。
aptXLL ←减少缓冲区的aptX软件实现。
aptX Adaptive ← 高通公司的另一个编解码器
FastStream ← 伪编解码器,双向SBC修改。
HWA LHDC←华为新编解码器。
Samsung HD←只支持2台设备
Samsung Scalable ← 支持2台设备。
Samsung UHQ-BT ← 支持3款设备。
你会问,为什么你需要编解码器,因为蓝牙有EDR ,它允许以2和3 Mbps的速度进行数据传输,而1.4 Mbps的速度对于未压缩的双通道16位PCM来说已经足够了。

蓝牙数据传输
在蓝牙中,有两种类型的数据传输。异步连接少(ACL)用于不建立连接的异步传输,同步连接导向(SCO)用于有连接预协商的同步传输。传输采用分时方案,并分别为每个数据包选择传输信道(Frequency-Hop / Time-Division-Duplex,FH / TDD),对于这些数据包,时间被划分为625微秒的间隔,称为槽(slots)。其中一个设备以偶数槽号传输,另一个以奇数槽号传输。根据数据的大小和设定的传输类型,传输的数据包可以占用1个、3个或5个槽位,在这种情况下,一个设备的传输是以偶数和奇数槽位进行的,直到传输结束。在短短的一秒钟内,最多可以收发1600个数据包,如果每个数据包占用1个槽位,两台设备都在不停地收发东西。可以在蓝牙网站上查到,EDR的2 Mbps和3 Mbps是所有数据总共(包括所有协议中必须封装数据的技术头)同时在两个方向的最大信道传输速率。实际的数据传输速率会有很大差异。传输音乐时,采用异步方式,几乎都是借助于2-DH5和3-DH5类型的数据包,它们在EDR模式下承载的最大数据量分别为2 Mbps和3 Mbps,占用空中5个分时槽。一台设备使用5个槽位,另一台设备使用1个槽位(DH5 / DH1)进行传输的示意图。

由于时间上的空分原理,如果第二台设备不会向我们传输任何东西或者是小数据包,那么我们在传输一个数据包后,需要等待625微秒的时间段,如果第二台设备是以大数据包的方式传输,则需要更长的时间。如果手机上连接了多个设备(比如耳机、手表和健身手环),那么传输时间由所有设备共享。

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


包类型槽数量单包最大数量最大 A2DP载荷数据量最大 A2DP数据率
2-DH33367351936 kbps
3-DH335525361429 kbps
2-DH556796631414 kbps
3-DH55102110052143 kbps

1414和1429 kbps对于实际条件下的非压缩音频传输来说是绝对不够的,2.4 GHz的频段噪音很大,而且需要传输开销数据。EDR 3 Mbps对传输功率和空中噪音的要求很高,因此,即使在3-DH5模式下,也无法轻易实现PCM传输,总会出现短暂的中断,一切只能在一两米的距离内工作。在实际应用中,即使是990kbit/s的音频流(LDAC 990kbit/s)也很难传输。

让我们回到编码上。

SBC所有A2DP设备都必须支持的编码。同时是最好和最差的编码。
采样率采样深度比特率编码支持解码支持
16, 32, 44.1, 48 kHz16 bit10-1500 kbps所有设备所有设备
SBC是一种简单且计算速度快的编解码器,具有原始的心理声学模型(仅对安静的声音进行掩蔽),使用自适应脉冲码调制(APCM)。
A2DP规范推荐使用两种配置文件。中间质量和高质量。

编解码器有很多设置,可以让你控制算法延迟、一个音块中的采样数、比特分配算法,但几乎普遍使用规范中推荐的相同参数。联合立体声 ,8个频段,一个音频帧中的16个块,响度位分配方法。
SBC支持动态改变Bitpool参数,这直接影响比特率。如果收音机堵塞,丢包,或者设备距离较远,音源可能会降低Bitpool,直到连接正常。

大多数耳机制造商将最大Bitpool值设置为53,当使用推荐的配置文件时,将比特率限制为328 kbps。即使耳机制造商将最大Bitpool值设置得高于53(例如,这种型号可以找到。Beats Solo3、JBL Everest Elite 750NC、Apple AirPods,在一些接收机和汽车头戴式耳机上也会出现这种情况),那么由于蓝牙堆栈中设置了该值的内部限制,大多数操作系统将不允许你使用更高的比特率。此外,一些厂商还为一些设备设置了较低的最大Bitpool值。比如Bluedio T有39个,三星Gear IconX有37个,这样的音质就很差。蓝牙堆栈开发者的人为限制,很可能是由于一些设备不兼容高Bitpool值或非典型的配置文件,即使他们报告了他们的支持,以及认证过程中的测试数量不足而产生的。蓝牙堆栈的作者更容易将自己限制在同意推荐的配置文件上,而不是建立不正确设备的数据库(尽管现在他们对其他不正确的工作功能也这样做)。SBC为频段动态分配量化位,从下到上操作,权重不同。如果所有的比特率都用于低频和中频,那么高频就会被 "切断"(会有空音量代替)。


频谱图上可以看到切换的时刻。SBC周期性地削减17.5千赫以上的轻声,并且完全不为20千赫以上的频段分配比特。完整的频谱图可点击。我在这个音轨上听不出原版和SBC的区别。

总而言之,SBC是一个非常灵活的编解码器:它可以配置为低延迟,在高比特率(452+kb/s)下提供出色的音频质量,并且对于大多数人来说,在标准的高质量(328kb/s)下也相当不错。然而,有几个原因导致该编解码器因其低音质而臭名昭著。A2DP标准并没有定义固定的配置文件(它只给出了建议),蓝牙协议栈开发者对Bitpool进行了人为的限制,传输音频的参数并没有在用户界面上显示出来,耳机厂商可以自由设置,从不在产品的技术特性中指定Bitpool值。Bitpool参数只直接影响一个配置文件内的比特率。同样的bitpool值为53,既可以在推荐的高品质配置文件下产生328 kbps的比特率,也可以在双声道模式和4个频段下产生1212 kbps的比特率,这也是为什么操作系统作者除了bitpool之外,还对比特率进行了限制。我认为这种情况的出现是由于A2DP标准的缺陷:必须协商比特率,而不是Bitpool。

aptX and aptX HD

aptX是一种简单的、计算速度快的编解码器,不需要心理声学,它使用自适应差分脉冲码调制(ADPCM)。它大约出现在1988年(专利申请日期为1988年2月)。在蓝牙之前,它主要用于专业的无线音频设备。目前由高通公司拥有,它需要授权和许可费用。截至2014年:一次性支付6000美元,每台设备≈1美元,最多可以批量购买1万台设备。
编解码器只有一个参数--采样率。虽然也有通道数/模式配置选项,但我所知道的所有设备都只支持立体声(70多个型号)。


编码采样率采样深度比特率编码支持解码支持
aptX16, 32, 44.1, 48 kHz16 bit128 / 256 / 352 / 384 kb/s (depending on sample rate)Windows 10 (desktop and mobile), macOS, Android 4.4+/7*, Blackberry OS 10Wide variety of devices (in hardware)

aptX将音频分成4个频段,并以相同的比特数连续量化。0-5.5 kHz为8位,5.5-11 kHz为4位,11-16.5 kHz为2位,16.5-22 kHz为2位(44.1 kHz采样率的数值)。
由于量化位的固定分布,编解码器无法将位 "转移 "到最需要它们的频率上。与SBC不同的是,aptX不会 "切断 "频率,但会在其中添加量化噪声,从而降低音频的动态范围。

我们不应该认为一个频段使用2个比特,就可以将动态范围降低到12dB。ADPCM允许使用高达96dB的动态范围,即使是使用2个量化位,但只在使用某种类型的信号上。
ADPCM将当前值和下一个值之间的差值以数字表示,而不是像PCM那样使用绝对值。这就降低了对存储相同(无损失)或几乎相同(四舍五入误差相对较小)信息所需比特数的要求。为了减少舍入误差,应用了因子表。
在创建编解码器时,作者在一组音乐音频文件上计算了ADPCM系数。音频信号越接近于建立表格的那组音乐,aptX产生的量化误差(噪声)就越小。


频谱图

噪声是清晰可闻的。

但是,如果你产生的正弦波振幅较小,使其更安静,噪声也会变得更安静,这说明动态范围很宽。


aptX HD不是一个独立的编解码器--它是一个改进的aptX编码配置文件。这些变化会影响到分配给频段编码的比特数,0-5.5 kHz为10比特,5.5-11 kHz为6比特,11-16.5 kHz为4比特,16.5 kHz为4比特。0-5.5 kHz为10位,5.5-11 kHz为6位,11-16.5 kHz为4位,16.5-22 kHz为4位(44.1 kHz的数值)。


这种编解码器比aptX更不常见:似乎需要向高通公司单独授权,并单独收取授权费。
让我们用12.4kHz的正弦波重复这个例子。


AAC
AAC,即高级音频编码,是一种计算复杂的编解码器,具有复杂的心理声学模型。它被广泛应用于互联网上的音频,是仅次于MP3的第二大流行编解码器。需要授权和许可费用:一次性支付15000美元(或员工少于15人的公司支付1000美元)+前50万台设备的0.98美元(来源)。
该编解码器是在MPEG-2和MPEG-4规范内标准化的,尽管经常有人误解,但该编解码器并不属于苹果。

Sample rateBitrateEncoding supportDecoding support
8 — 96 kHz8 — 576 kb/s (for stereo), 256 — 320 kb/s (typical for Bluetooth)macOS, Android 7+*, iOSWide variety of devices (in hardware)
iOS和macOS包含了目前最好的苹果AAC编码器,可以产生最高的音频质量。Android使用的是第二好的Fraunhofer FDK AAC编码器,但也可以使用嵌入在平台(SoC)中的各种硬件编码器,编码质量未知。根据SoundGuys网站最近公布的测试结果,不同Android手机的AAC编码质量差异很大。

大多数无线音频设备的AAC最大比特率为320 kbps,有些只支持256 kbps。其他比特率的情况极为罕见。
AAC在320和256 kb/s的比特率下可以提供很好的质量,但是在已经压缩的内容上容易产生损耗,然而在iOS上很难听出原音和AAC 256 kb/s的区别,即使连续编码几次也是如此。对于MP3 320 kbps编码成AAC 256 kbps的损失可以忽略不计。就像其他蓝牙编解码器一样,任何音乐都是先解码再用编解码器编码。当收听AAC格式的音乐时,首先由操作系统解码,然后再次编码成AAC,通过蓝牙传输。这对于混合音乐、新消息通知等多个音频流是必要的,iOS也不例外。你可以找到很多说法,说iOS不会将音乐转码成AAC格式通过蓝牙传输,这是不正确的。

AAC对标准编码方法有许多扩展。其中之一--可扩展到无损(SLS)--是蓝牙的标准化,可以让你传输无损音频。不幸的是,在现有设备上找不到SLS支持。减少传输延迟的扩展AAC-LD(Low Delay)不是蓝牙的标准。

LDAC
索尼公司新推出并积极推广的 "Hi-Res "编解码器,支持高达96 kHz的采样率和24位深度,比特率高达990 kbps。它被宣传为发烧级编解码器,作为现有蓝牙编解码器的替代品。它具有自适应比特率功能,可根据无线电传输条件调整比特率。

LDAC编码器(libldac)包含在标准的Android发行版中,从操作系统版本8开始,任何Android智能手机都支持编码。软件解码器并不是免费提供的,编解码器规范也没有向大众开放,不过,乍一看这个编码器,内部结构与索尼在PlayStation 4和Vita中使用的ATRAC9编解码器类似:两者都工作在频域,使用修改后的离散余弦变换(MDCT)和Huffman压缩。LDAC将音频分成12或16个频段。12用于44.1和48kHz,16用于88.2和96kHz。

LDAC几乎只有索尼耳机支持。LDAC解码有时会出现在其他厂商的耳机和DAC上,但很少。

Sample rateBitrateEncoding supportDecoding support
44.1 — 96 kHz303/606/909 kb/s (for 44.1 and 88.2 kHz), 330/660/990 kb/s (for 48 and 96 kHz)Android 8+Some Sony headphones and selected devices from other manufacturers (in hardware)
LDAC "Hi-Res编解码器 "的营销伤害了它的技术属性:在仍无法无损压缩CD质量音频的情况下,花费比特率去编码和传输人耳听不到的频率和更高的比特深度是不明智的。幸运的是,编解码器有两种工作模式。CD音频传输和Hi-Res音频传输。在第一种情况下,只有44.1 kHz / 16位的音频在空中传输。

由于LDAC软件解码器不是免费提供的,如果没有额外的解码LDAC的设备,就无法测试该编解码器。根据SoundGuys.com工程师通过数字输出连接到其支持的DAC上进行LDAC测试的结果,并记录下测试信号的输出声音,LDAC 660和990 kbit/s在CD质量模式下提供的信噪比略优于aptX HD。这是一个不错的结果。


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



2
发表于 2020-8-28 19:10 来自手机 | 只看该作者 来自 中国
虽然没看懂,但是我就觉得“改的她妈都不认识”说的就是sbc,所以tws800应该使用sbc而不是acc。。。
对不对?
回复

使用道具 举报

3
 楼主| 发表于 2020-8-28 19:19 | 只看该作者 来自 湖南长沙
poohyuan15 发表于 2020-8-28 19:10
虽然没看懂,但是我就觉得“改的她妈都不认识”说的就是sbc,所以tws800应该使用sbc而不是acc。。。
对不对 ...

支持aac的 改sbc的必须改播放器才有意义

回复

使用道具 举报

4
发表于 2020-8-28 19:27 来自手机 | 只看该作者 来自 中国
philbar 发表于 2020-8-28 19:19
支持aac的 改sbc的必须改播放器才有意义

我的是华为p40pro。。ACC也菜
回复

使用道具 举报

5
发表于 2020-8-28 20:49 | 只看该作者 来自 江苏
aac和sbc是半斤八两,各有各的优缺点
回复

使用道具 举报

6
发表于 2020-8-28 20:50 | 只看该作者 来自 江苏
这帖子存在这么久了,打架的人没来啊,我还想看热闹,补课去了吗?
回复

使用道具 举报

7
发表于 2020-8-28 21:28 来自手机 | 只看该作者 来自 中国
我一直好奇,改得他妈妈都不认识,到底改了什么。
回复

使用道具 举报

8
发表于 2020-8-29 11:31 | 只看该作者 来自 广东广州
本帖最后由 poluozero 于 2020-8-29 11:32 编辑
zfvic 发表于 2020-8-28 20:49
aac和sbc是半斤八两,各有各的优缺点

我倒觉得AAC对标的其实是aptX,而且两者的差异也很明显,AAC偏重听感方面的优化,而aptX则充分暴露了高通重视数据远多于听感。

不过也正因为这样,AAC本身的上限比较明显,对于接收端的可优化空间也相对较少。而aptX则算是有好的材料,怎么烹调就看不同厂家的调教实力了。
回复

使用道具 举报

9
发表于 2020-8-29 12:34 | 只看该作者 来自 江苏
aptx应该是延迟低点,实际听感区别不是很大
回复

使用道具 举报

10
发表于 2020-8-29 13:58 | 只看该作者 来自 广东广州
wangxiao1 发表于 2020-8-29 12:34
aptx应该是延迟低点,实际听感区别不是很大

aptX对于高频的损失会少于AAC以及SBC
回复

使用道具 举报

11
 楼主| 发表于 2020-8-29 15:21 | 只看该作者 来自 湖南
本帖最后由 philbar 于 2020-8-29 15:26 编辑
poluozero 发表于 2020-8-29 13:58
aptX对于高频的损失会少于AAC以及SBC

ha?太搞笑了 aptX高频直接降低量化 损失小不存在的

aptX将音频分成4个频段,并以相同的比特数连续量化。0-5.5 kHz为8位,5.5-11 kHz为4位,11-16.5 kHz为2位,16.5-22 kHz为2位(44.1 kHz采样率的数值)。
超过11kHz就是2位量化 噪声大到能够听得见
回复

使用道具 举报

12
发表于 2020-8-29 16:41 | 只看该作者 来自 广东广州
philbar 发表于 2020-8-29 15:21
ha?太搞笑了 aptX高频直接降低量化 损失小不存在的

超过11kHz就是2位量化 噪声大到能够听得见

所以才需要大神你来科普啊
回复

使用道具 举报

13
发表于 2020-9-7 16:55 | 只看该作者 来自 天津河东区
楼主有心了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2025-1-30 16:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表