本文也有英文版本由于没有3.5毫米音频插孔的智能手机的大量生产,无线蓝牙耳机已成为许多人在耳机模式下听音乐和交流的主要方式。
无线设备的制造商并不总是编写详细的产品规格,并且Internet上有关蓝牙音频的文章是相互矛盾的,有时是不正确的,没有谈论所有功能,并且经常复制与现实不符的相同信息。
让我们尝试找出协议,蓝牙OS堆栈,耳机和扬声器的功能,用于音乐和语音的蓝牙编解码器,找出影响传输声音和延迟质量的因素,了解如何收集和解码有关支持的编解码器和其他设备功能的信息。
TL; DR :
- SBC-普通编解码器
- 耳机具有自己的均衡器,并分别为每个编解码器进行后处理
- aptX不如广告所言
- LDAC-营销废话
- 通话质量仍然很差
- 您可以通过emscripten将C音频编码器编译到WebAssembly中,从而将C音频编码器嵌入到浏览器中,并且不会减慢速度。
蓝牙音乐
蓝牙的功能组件由配置文件-特定功能的规范定义。 蓝牙音乐是使用A2DP高质量单向音频传输配置文件传输的。 A2DP标准于2003年采用,从那时以来并没有发生太大变化。
在配置文件的框架内,为蓝牙专门创建了1个低计算复杂性SBC的强制性编解码器,另外3个则被标准化。 也允许使用我们自己的实现中未记录的编解码器。
截至2019年6月,我们已使用14种A2DP编解码器
进入xkcd漫画中 :
- A2DP中标准化的SBC ←,受所有设备支持
- 在A2DP中标准化的MPEG-1 / 2 1/2/3←← :数字电视MP2中使用的著名MP3和未知MP1
- MPEG-2 / 4 AAC ←在A2DP中标准化
- ATRAC ←在A2DP中标准化的旧Sony编解码器
- LDAC ←索尼的新编解码器
- 1988年的aptX ←编解码器
- aptX HD ←与aptX相同,但编码选项不同
- aptX Low Latency ←
完全不同的编解码器,没有减少缓冲区的aptX软件实现 - aptX自适应 ←另一个高通编解码器
- FastStream ←伪编解码器 ,双向SBC修改
- HWA LHDC ←华为的新编解码器
- 支持三星高清 ←2设备
- 三星可扩展 ←2设备支持
- 三星UHQ-BT ←支持3台设备
您问为什么在蓝牙中什么时候才需要编解码器,而
EDR在蓝牙中何时
可用 ,它可以让您以2和3 Mbps的速度传输数据,而1.4 Mbps的带宽足以满足未压缩的两通道16位PCM?
蓝牙数据传输
蓝牙中有两种类型的数据传输:异步连接较少(ACL),用于在不建立连接的情况下进行异步传输;以及面向同步连接(SCO),用于在进行了初步协商的情况下进行同步传输。
使用分时方案进行传输,并为每个数据包分别选择传输通道(频率-跳/时分双工,FH / TDD),将时间分为625微秒的间隔(称为时隙)。 其中一个设备以偶数插槽号传输,其他设备以奇数号传输。 根据数据的大小和传输集的类型,传输的数据包可以占用1、3或5个时隙,在这种情况下,一个设备将在偶数和奇数时隙中传输,直到传输结束。 如果它们每个占用1个插槽,则每秒最多可以接收和发送1600个数据包,并且两个设备都可以不停地发送和接收数据。
EDR的2和3 Mbps是在两个方向同时显示的所有数据(包括应封装数据的所有协议的技术标头)总计的所有数据的最大信道数据传输速率,可在公告中以及在Bluetooth网站上找到。 实际数据传输速率将有很大的不同。
为了传输音乐,通常使用异步方法,几乎总是在诸如2-DH5和3-DH5之类的数据包的帮助下,它们在EDR模式下分别承载2 Mbps和3 Mbps的最大数据量,并占用了5个空中时分时隙。
一个设备使用5个插槽,另一个设备使用1个插槽(DH5 / DH1)的传输示意图:

根据分时共享的原则,如果第二个设备不向我们发送任何内容或发送小数据包,则在发送数据包后我们不得不等待625微秒的时隙,如果第二个设备以大数据包发送数据,则我们不得不等待更长的时间。 如果电话连接了多个设备(例如耳机,手表和健身手环),则传输时间将在所有设备之间共享。
需要在特殊的传输协议L2CAP和AVDTP中封装音频,这需要从传输的最大有效负载音频量中提取16个字节。
1414和1429 kbit / s绝对不足以在嘈杂的2.4 GHz频段和需要传输服务数据的真实条件下传输未压缩的声音。 3 Mbps EDR要求传输功率和空气噪声,因此,即使在3-DH5模式下,也无法进行舒适的PCM传输,并且会不断出现短期中断,并且一切都只能在几米的距离内进行。
实际上,即使是990 kbit / s的音频流(LDAC 990 kbit / s)也难以传输。
回到编解码器。
b
所有支持A2DP标准的设备都需要编解码器。 最好和最坏的编解码器同时进行。
SBC是一种简单且计算快速的编解码器,具有原始的心理声学模型(仅掩盖了安静的声音),并使用自适应脉冲编码调制(APCM)。
A2DP规范建议使用两个配置文件:“中等质量”和“高质量”。

编解码器具有许多设置,可用于控制算法延迟,一个块中的样本数,位分配算法,但是几乎在所有地方都使用了规范中建议的相同参数:
联合立体声 ,8个频段,一个音频帧中的16个块,
响度位分配方法。
SBC支持动态更改Bitpool参数,该参数直接影响比特率。 如果无线电阻塞,数据包丢失或设备距离很远,则音频源可以减少Bitpool,直到连接恢复正常。
大多数耳机的制造商都将Bitpool参数的最大值设置为53,使用推荐的配置文件时,它将位速率限制为每秒328 KB。
即使耳机制造商将最大位池值设置为高于53(例如找到了以下型号:BeatsSolo³,JBL Everest Elite 750NC,Apple AirPods,也出现在某些接收器和车载主机上),但是由于以下原因,大多数操作系统将不允许使用增加的比特率:在蓝牙堆栈中设置内部极限值。
另外,一些制造商为某些设备设置了较低的最大位池值。 例如,Bluedio T的声音为39,Samsung Gear IconX的声音为37。
蓝牙堆栈开发人员的人为限制很可能是由于某些具有大的Bitpool值或非典型配置文件的设备不兼容而导致的,即使它们报告了支持,并且认证期间的测试数量也不足。 蓝牙协议栈的作者更容易将自己限制在推荐的配置文件上,而不是创建不正确设备的数据库(尽管现在他们这样做是为了处理其他不正确的功能)。
SBC为频段动态分配量化位,以不同的权重从低到高运行。 如果整个比特率都用于低频和中频,则较高的频率将被“切断”(取而代之的是静音)。
SBC示例328 kbps。 上面是原始图像,下面是SBC,它会在音轨之间定期切换。 对于音频,视频文件使用无损FLAC压缩编解码器。 在mp4容器中使用FLAC尚未正式标准化,因此您的浏览器无法播放FLAC,但它应可在最新版本的台式机Chrome和Firefox中使用。 如果没有声音,则可以下载文件,然后在功能完善的视频播放器中将其打开。
ZZ上衣-穿着整齐的男人切换时刻在频谱图上可见:SBC会定期消除17.5 kHz以上的安静声音,并且在20 kHz以上的频段完全不发出比特。 完整的频谱图可通过单击(1.7 MB)获得。

在这首单曲中,我没有听到原件和SBC之间的区别。
让我们进行一些更新,模拟使用带Bitpool 37的Samsung Gear IconX耳机产生的音频(顶部是原始信号,底部是SBC 239 kbit / s,声音在FLAC中)。
虚心的自我放纵-见证我听到crack啪声,较少的立体声效果以及高频时令人不快的人声“杂音”。
尽管可以配置SBC和非常灵活的编解码器以实现低延迟,但是由于以下原因,它可以在高比特率(452+ kbps)时提供出色的音频质量,并且对于大多数使用标准高质量(328 kbps)的用户来说是相当不错的A2DP标准未指定固定配置文件(仅提供建议),堆栈的开发人员在Bitpool上设置了人为限制,传输的音频参数未显示在用户界面中,并且耳机制造商可以自由设置自己的设置,并且从不从技术上表明Bitpool的价值 由于其产品特性,编解码器以其低声音质量而闻名,尽管这对于编解码器本身而言并不是问题。
Bitpool参数直接影响单个配置文件中的比特率。 相同的Bitpool 53值可以提供具有建议的“高质量”配置文件的328 kbit / s比特率,或者具有
双通道和4个频段的1212 kbit / s,这就是为什么OS作者除了对Bitpool进行限制之外还设置了限制以及比特率。 如我所见,这种情况是由于A2DP标准中的缺陷引起的:有必要协调比特率,而不是Bitpool。
不同操作系统中SBC功能的支持表:
*在传输条件改善的情况下,Bitpool仅会减少,但不会自动增加。 要还原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年2月),在蓝牙之前它主要用于专业无线音频设备,
ISDN和电影院。 目前由高通所有,需要许可和特许权使用费。 截至2014年:一次6,000美元,每台设备≈$ 1,最多10,000个设备的批次(
来源 ,第16页)。
aptX和aptX HD是相同的编解码器,具有不同的编码配置文件。
编解码器只有一个参数-采样频率的选择。 但是,可以选择通道的数量/模式,但是在我所知的所有设备(超过70件)中,仅支持立体声。
* 7之前的版本需要修改蓝牙协议栈。 仅当Android设备的制造商许可Qualcomm使用编解码器时(如果操作系统具有编码库),才支持编解码器。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的数字)。
示例aptX-audio(顶部是源信号,底部是aptX,仅左声道的频谱图,FLAC中的声音):
较高的频率变红了一点,但听不到差异。
由于量化位的固定分布,编解码器无法将位“转移”到最需要它们的频率。 与SBC不同,aptX不会“削减”频率,而是会向其添加量化噪声,从而减小音频的动态范围。
不应考虑在一个频带上使用例如2位将动态范围降低到12 dB:即使使用2个量化位,ADPCM仍允许您使用高达96 dB的动态范围,但仅对特定信号有效。
ADPCM将当前和下一个样本之间的差异存储在数字表示形式中,而不是像PCM中那样写入绝对值。 这使您可以减少存储相同(无损失)或几乎相同(舍入误差相对较小)信息所需的位数。 为了减少舍入误差,使用系数表。
在创建编解码器时,作者在一组音乐音频文件上计算了ADPCM系数。 音频信号越接近构建表格的音乐集,aptX产生的量化误差(噪声)越少。
因此,综合测试总是会产生比音乐更差的结果。 我做了一个特殊的合成示例,其中aptX显示的效果很差-正弦波为12.4 kHz(上面是原始信号,下面是aptX。FLAC中的声音。调低音量!):
频谱图:

声音清晰可见。
但是,如果生成幅度较小的正弦曲线使其更安静,则噪声也会变得更安静,这表明动态范围很广:

要收听原始音乐曲目和压缩音乐曲目之间的差异,您可以将信号之一反相并逐个通道添加曲目。 通常,这种方法是不正确的,并且对于更复杂的编解码器不会给出理智的结果,但是特别适用于ADPCM,这是非常合适的。
原始和aptX的区别信号的均方根差为-37.4 dB,对于这种压缩音乐来说并不算多。
aptX HD
aptX HD不是独立的编解码器-它是改进的aptX编解码器编码配置文件。 变化影响分配给编码频率范围的位数:0-5.5 kHz为10位,5.5-11 kHz为6位,11-16.5 kHz为4位,16.5-22 kHz为4位(44.1 kHz为数字)。
* 7之前的版本需要修改蓝牙协议栈。 仅当Android设备的制造商许可Qualcomm使用编解码器时(如果操作系统具有编码库),才支持编解码器。与aptX相比,它不那么常见:它似乎需要从高通获得单独的许可,并需要单独的许可费用。
让我们以12.4 kHz正弦波重复该示例:

比aptX好得多,但仍然很吵。
aptX低延迟
aptX的低延迟版本不是独立的编解码器,仅在音频设备端使用的延迟和缓冲区设置上有所不同。剩下的就是aptX。编解码器设计用于低延迟(电影,游戏)的交互式音频传输,其中音频延迟无法通过编程方式进行调整。该软件实现可用作Dell蓝牙芯片的Dell驱动程序。发射器,接收器,耳机和扬声器也支持,但智能手机不支持。AAC
AAC或高级音频编码是一种具有严重心理声学模型的计算复杂的编解码器。它被广泛用于Internet上的音频,仅次于MP3。要求许可和特许权使用费:一次15,000美元(对于少于15名员工的公司,每次1,000美元)+首500,000台设备0.98美元(来源)。编解码器被标准化为MPEG-2和MPEG-4规范的一部分,并且与误解相反,它不属于Apple。*仅在制造商支付了使用费的设备上。iOS和macOS使用迄今为止最好的Apple AAC编码器,可提供最高的音频质量。 Android使用质量第二高的Fraunhofer FDK AAC编码器,但是可以使用平台(SoC)中嵌入的各种硬件,但编码质量未知。根据最近的SoundGuys测试,不同Android手机的AAC编码质量有很大不同:大多数用于AAC的无线音频设备的最大比特率均为320 kbps,有些仅支持256 kbps。其他比特率极为罕见。AAC可以在320和256 kbps的速率下提供出色的质量,但必须遵守
丢失了已压缩内容的顺序编码,但是,即使使用多个连续编码和单个编码(例如,AAC 256 kbps中的MP3 320 kbps),也很难听到以256 kbps的比特率与iOS上原始内容的任何差异可以忽略。与其他蓝牙编解码器一样,任何音乐都首先被解码,然后由编解码器编码。收听AAC格式的音乐时,首先会通过OS对其进行解码,然后再次以AAC进行编码,以通过蓝牙进行传输。这对于混合多个音频流(例如音乐和新消息的通知)是必需的。 iOS也不例外。在互联网上,您可以找到许多指控,称在iOS上AAC音乐通过蓝牙传输时未进行转码,这是不正确的。AAC标准对标准编码方法进行了许多扩展。其中之一-可伸缩至无损(SLS)-已针对蓝牙进行了标准化,可让您无损(无损)传输音频。las,在真实设备上,找不到扩展支持。减少传输延迟的扩展AAC-LD(低延迟)未针对蓝牙进行标准化。MP1 / 2/3
MPEG-1 / 2第3部分系列的编解码器由众所周知且使用广泛的MP3,较少见的MP2(主要用于数字电视和广播)和完全未知的MP1组成。完全不支持旧的MP1和MP2编解码器:我找不到任何耳机,也找不到可以对其进行编码或解码的单个蓝牙堆栈。某些耳机支持MP3解码,但现代操作系统的任何堆栈均不支持编码。如果您手动更改配置文件,则似乎Windows的第三方BlueSoleil堆栈可以编码为MP3,但是我的安装导致Windows 10上的BSoD。结论-编解码器实际上无法用于蓝牙音频。早在2006-2008年,在将A2DP标准发布到设备中之前,人们通过MSI BluePlayer程序在诺基亚BH-501耳机上收听MP3音乐,该程序可在Symbian和Windows Mobile上使用。那时,智能手机操作系统的体系结构允许访问许多低级功能,并且在Windows Mobile上完全可以安装第三方蓝牙堆栈。最新的MP3编解码器专利已过期,自2017年4月23日起,无需支付使用费即可使用编解码器。如果采取上述参考文献中提到的运行时间最长的专利作为衡量标准,那么当Technicolor持有并管理的美国专利6,009,399到期时,MP3技术将在2017年在美国获得免费专利。
: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.htmlLDAC
索尼积极推出的新型高清编解码器,支持高达96 kHz的采样率和24位分辨率,比特率高达990 kbps。宣传为发烧级编解码器,以替代现有的蓝牙编解码器。它具有根据无线电条件自适应调整比特率的功能。LDAC编码器(libldac)包含在标准的Android软件包中,因此从OS版本8开始,任何Android智能手机都支持编码。并非免费提供软件解码器,公众也无法访问编解码器规范,但是乍一看编码器,其内部设备类似于ATRAC9-PlayStation 4和Vita中使用的Sony编解码器:两者均在频率范围内工作,使用改进的离散余弦变换(MDCT)和使用霍夫曼算法进行压缩。LDAC使用划分为12或16个频段:12用于44.1和48 kHz,16用于88.2和96 kHz。LDAC支持几乎完全由Sony耳机代表。有时可以在其他制造商的耳机和DAC上找到解码LDAC的能力,但这种能力很少。将LDAC营销为高分辨率编解码器会损害其技术组件:只要不足以传输CD品质(44.1 / 16)而不会造成损失,就将比特率用于传输人耳无法听到的频率和增加比特深度是愚蠢的。幸运的是,编解码器具有两种操作模式:CD音频传输和高分辨率音频传输。在第一种情况下,仅通过空中传输44.1 kHz / 16位。由于LDAC软件解码器不是免费提供的,因此如果没有其他对LDAC进行解码的设备,则无法测试编解码器。根据SoundGuys.com工程师通过数字输出连接的LDAC DAC测试及其支持,并在测试信号上记录了发出的声音,在CD品质模式下,LDAC 660和990 kbps的信噪比略高于aptX。高画质 这是一个很好的结果。来源:www.soundguys.com/ldac-ultimate-bluetooth-guide-20026 LDAC还支持已建立的配置文件之外的动态比特率-从138 kbps到990 kbps,但是据我所知,Android 303仅使用标准化的配置文件/ 606/909和330/660/990 kbit / s。
其他编解码器
其他A2DP编解码器并未广泛使用。它们的支持要么几乎完全消失,要么仅在某些型号的耳机和智能手机上可用。甚至索尼本身也从未将A2DP中标准化的ATRAC编解码器用作蓝牙编解码器,三星HD,三星可扩展和三星UHQ-BT编解码器对发送和接收设备的支持非常有限,并且HWA LHDC太新了,仅受支持三个(?)设备。音频编解码器支持
并非所有制造商都会发布有关支持某些无线耳机,扬声器,接收器或发射器的编解码器的准确信息。有时候,对某种编解码器的支持仅用于传输,而不是用于接收(与组合的收发器有关),尽管制造商声称只是“受支持”,而没有评论(我认为应该归咎于某些编解码器的编码器和解码器的单独许可) )在最便宜的设备中,可能根本找不到声明的aptX支持。不幸的是,在大多数操作系统的界面中,所使用的编解码器不会显示在任何地方。仅从版本8和macOS开始的Android中提供有关此信息。但是,即使在这些OS中,也只会显示同时支持电话/计算机和耳机的编解码器。如何找出设备支持的编解码器?最可靠的选择是使用A2DP协商参数记录和分析流量转储!这可以在Linux,macOS和Android上完成。在Linux上,您可以使用Wireshark或hcidump,在macOS上可以使用Bluetooth Explorer,在Android上,可以使用开发人员工具中提供的标准Bluetooth HCI转储功能。您将收到一个btsnoop转储,可以将其下载到Wireshark分析器中。注意一下:只有从电话/计算机连接到耳机/扬声器(无论听起来多么有趣),您才能获得正确的转储!耳机可以独立地与电话建立连接,在这种情况下,耳机将向电话请求编解码器列表,反之亦然。为确保记录正确的转储,请首先断开与设备的配对,然后在记录转储的同时将手机与耳机配对。使用以下显示过滤器可以过滤掉无关的流量:btavdtp.signal_id
结果,您应该看到类似的内容:

在GetCapabilities命令的每个点,您都可以单击并查看编解码器的详细特征。

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
要确定您的设备是否支持3 Mbps的EDR速度,可以过滤:
bthci_evt.code==0x0b

为了不手动分析转储,我提供了一项将自动分析所有内容的服务:
btcodecs.valdikss.org.ru对于Windows,有一个简单但有用的
Bluetooth Tweaker实用程序,其中包括当前和受支持的编解码器。
在Linux上,您还可以使用BlueZ附带的avinfo程序。
编解码器比较。 哪种编解码器更好?
每个编解码器都有其优点和缺点。
aptX和aptX HD使用硬编码配置文件,除非修改编码器和解码器,否则无法更改它们。 电话制造商和耳机制造商都不能更改比特率或aptX编码系数。 编解码器的所有者高通公司以库的形式提供了参考编码器。 这些事实是aptX的强项-您预先知道将获得什么质量的声音,而没有任何“ buts”。
相反,SBC具有许多可配置的参数,动态比特率(如果加载了无线电,编码器可以减少比特池参数),并且没有硬编码,只有推荐的“平均质量”和“高质量”,这是2003年添加到A2DP规范中的年。 按照现代标准,“高质量”并不是很高,并且大多数蓝牙协议栈都不允许使用比“高质量”配置文件更好的参数,尽管对此没有技术限制。
蓝牙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编译为WebAssembly和JavaScript,并通过C语言在浏览器中执行。 谁能梦想到这样的未来!
看起来是这样的:
请注意,不同编解码器的噪声水平在20 kHz之后如何变化。 原始MP3文件中没有高于20 kHz的频率。
尝试切换编解码器,并评估一下您是否听到原始,SBC 53联合立体声(标准和最常见配置文件)和aptX / aptX HD之间的差异。
我听到了耳机中编解码器之间的区别!
在通过Web服务进行测试期间没有听到编解码器差异的人们声称,他们在收听无线耳机中的音乐时会听到编解码器的差异。 ,这不是玩笑或安慰剂的效果:差异确实可以听见,但这不是由
编解码器差异引起的。
用于接收无线设备的绝大多数蓝牙音频芯片组都配备了数字信号处理器(DSP),该处理器实现了均衡器,
压缩扩展器 ,立体声扩展器和其他旨在改善(或改变)声音的功能。 蓝牙设备的制造商可以
为每个编解码器分别配置DSP,并且当在编解码器之间切换时,收听者会认为当他实际收听不同的DSP设置时,他会听到编解码器中的差异。
采用CSR / Qualcomm芯片的Kalimba DSP声音处理传送带
激活每个编解码器的各种DSP功能并分别输出某些高级分段设备配备了允许您配置DSP参数的程序,但是大多数便宜的耳机没有此功能,并且用户无法使用常规方式关闭后处理声音。
设备功能
A2DP标准的现代版本具有
“绝对音量控制”功能 -带有AVRCP协议特殊命令的设备音量控制,该音量控制输出级的增益,而不是通过编程方式减小音频流的音量。 如果在更改耳机上的音量时,更改与电话上的音量不同步,则表明您的耳机或电话不支持此功能。 在这种情况下,始终以手机上的最大音量聆听音乐,并使用耳机按钮调整实际音量是有意义的-在这种情况下,信噪比会更好,音频质量也
应该更高。
在现实中,有悲伤的情况。 在用于SBC耳机的RealForce OverDrive D1上打开了一个强大的压缩扩音器,增大音量会增加安静声音的音量,但是响亮声音的音量不会改变(信号已压缩)。 因此,您必须将计算机上的音量设置为大约一半,在这种情况下,几乎没有压缩效果。
根据我的观察,所有带有附加编解码器的耳机都支持绝对音量控制功能,这显然是对编解码器进行认证的要求之一。
有些耳机支持同时
连接两个设备 。 例如,这允许收听来自计算机的音乐并接收来自电话的呼叫。 但是,您应该注意,在此模式下禁用了其他编解码器,并且仅使用SBC。
AVDTP 1.3延迟报告功能允许耳机向实际播放声音的传输设备报告延迟。 这使您可以在观看视频文件时调整音频和视频的同步:如果广播存在问题,音频不会落后于视频,但是相反,视频播放器会放慢视频的播放速度,直到音频和视频再次同步为止。
许多耳机,Android 9+和带有PulseAudio 12.0+的Linux都支持该功能。 我不了解其他平台上的功能支持。
通过蓝牙进行双向通信。 语音传输。
对于蓝牙中的语音传输,使用了面向同步连接(SCO)及其改进版本的面向增强型同步连接(eSCO)-在初步协调连接的情况下进行同步传输。 该模式允许您以对称的发送和接收速度顺序传输声音和语音,而无需等待传输和重新发送数据包的确认。 这减少了在无线信道上传输音频的总延迟,但是对每单位时间传输的数据量施加了严格的限制,并对音频质量产生不利影响。
使用此模式时,来自麦克风的声音和到达耳机的音频均以相同的质量传输。
HSP配置文件对数据本身的传输进行了标准化,该配置文件还描述了其他功能,例如音量按钮,接听和结束呼叫按钮的操作。
不幸的是,截至2019年,蓝牙语音质量仍然很差,并且不清楚为什么蓝牙SIG对此无能为力。
摄录机
CVSD的基本语音
编解码器于2002年实现了标准化,并得到所有双向蓝牙设备的支持。 它以8 kHz的采样频率提供音频传输,这相当于常规有线电话的质量。
此编解码器中记录的示例 。
微信
另外一个mSBC编解码器在2009年实现了标准化,并在2010年出现了使用它传输语音的芯片。 mSBC得到各种设备的广泛支持。
这不是独立的编解码器,而是A2DP标准的常规SBC,具有固定的编码配置文件:16 kHz,单声道,位池26。
此编解码器中记录的示例 。
虽然不发光,但比CVSD更好,但是使用它通过Internet进行通信仍然令人不愉快,尤其是当您在游戏中使用耳机进行通信时-游戏声音也会以16 kHz的采样频率进行传输。
快速流
CSR决定发展重用SBC的想法。 为了规避SCO协议的限制并使用更高的比特率,CSR采取了另一种方式-他们在传输单向音频A2DP,标准化编码配置文件的标准中实现了对两路SBC音频的支持,并将其称为“ FastStream”。
FastStream以212 kbit / s的比特率向扬声器传输44.1或48 kHz立体声,并以72 kbit / s的比特率(比mSBC稍好)传输单声道16 kHz的声音。 这样的参数更适合在在线游戏中进行交流-游戏的声音和对话者将是高质量的。
在此编解码器中录制的示例 (+
麦克风声音,与mSBC相同 )。
该公司提出了一个有趣的拐杖,但是由于它违反了A2DP标准,因此仅在该公司的某些发射器(用作USB音频卡,而不是蓝牙设备)中受支持,但在蓝牙堆栈中没有得到支持,尽管支持FastStream的耳机数量不是那么少。
目前,操作系统中对FastStream的支持仅以开发人员PaliRohár的
Linux PulseAudio补丁形式提供,该补丁未包含在程序的主分支中。
aptX低延迟
令我们惊讶的是,aptX Low Latency还支持双向音频,实现与FastStream相同的原理。
使用编解码器的此功能将不起作用-在我所知道的任何操作系统或任何蓝牙堆栈中均不支持低延迟解码。
蓝牙5,经典且低能耗
由于存在同一品牌下的两个不兼容的标准,因此蓝牙的规格和版本存在很多混乱,这两种标准都被广泛用于不同的目的。
有两种不同的,不兼容的蓝牙协议:蓝牙经典和蓝牙低功耗(LE,又称蓝牙智能)。 还有第三种协议,Bluetooth High Speed,但并不常见,并且不在家用设备中使用。
从蓝牙4.0开始,规范中的更改主要涉及蓝牙低功耗,而经典版本仅获得了较小的改进。
蓝牙4.2和蓝牙5之间的更改列表:
从v4.2到5.0的9变化
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页)只有一项更改影响了Bluetooth 5规范中的Classic版本:它们增加了对插槽可用性屏蔽(SAM)技术的支持,该技术旨在改善空气分离。 所有其他更改仅影响蓝牙LE(以及更高的输出功率)。
所有音频设备仅使用Bluetooth Classic。 耳机和扬声器无法通过低功耗蓝牙连接:使用LE进行音频传输没有标准。 用于传输高质量音频的A2DP标准只能通过Bluetooth Classic使用,而LE中没有任何模拟。
结论-仅因为新版本的协议购买带蓝牙5的音频设备是没有意义的。 蓝牙4.0 / 4.1 / 4.2在音频传输的上下文中将以相同的方式工作。
如果新耳机的发布提到了蓝牙5的双重作用,并降低了功耗,那么您应该知道他们要么不了解自己,要么误导您。 难怪,甚至在公告中的蓝牙芯片制造商也对标准新版本的差异感到困惑,某些蓝牙5芯片仅支持LE的第五版,而Classic使用4.2。
音频延迟
音频的延迟(延迟)量取决于许多因素:音频堆栈,蓝牙堆栈和大多数再现性无线设备中缓冲区的大小,编解码器的算法延迟。
简单编解码器(例如SBC,aptX和aptX HD)的延迟非常小,为3-6毫秒,可以忽略不计,但是复杂编解码器(例如AAC和LDAC)会导致明显的延迟。 44.1 kHz的AAC算法延迟为60 ms。 LDAC-大约30毫秒(根据对源代码的粗略分析。我可能会记错了,但并没有太多。)
产生的延迟高度依赖于播放设备,其芯片组和缓冲区。 在测试期间,我在不同的设备(使用SBC编解码器)上的传播时间为150到250毫秒。 假设支持其他aptX,AAC和LDAC编解码器的设备使用高质量的组件和较小的缓冲区大小,我们将得到以下典型延迟:
SBC:150-250毫秒
aptX:130-180毫秒
AAC:190-240毫秒
LDAC:160-210毫秒
我提醒您:操作系统不支持aptX Low Latency,因为只有一堆发射机+接收机或发射机+耳机/扬声器才能获得较低的延迟,并且所有设备都必须支持此编解码器。
蓝牙设备认证和徽标问题
如何区分高品质音频设备和廉价工艺品? 在外观上,首先!
廉价的中文耳机,扬声器和接收器:
- 包装盒和设备上缺少“蓝牙”一词,最常用的是“无线”和“ BT”
- 缺少蓝牙徽标
盒装或设备上 - 无蓝灯闪烁
缺少这些元素表示该设备未通过认证,这意味着它可能有问题或质量低劣。 例如,Bluedio耳机未经蓝牙认证,并且不完全符合A2DP规范。 他们不会通过认证。
考虑以下几种设备和包装盒:



这些都是未经认证的设备。 这些说明可能包括蓝牙技术的徽标和名称,但最重要的是它们位于包装盒和/或设备本身上。
如果您的耳机或扬声器说“已成功连接Zee蓝牙”,则这也不表示其质量:
结论
蓝牙能够完全取代有线耳机吗? 它具有功能,但以降低通话质量为代价,增加了声音传输的延迟,这在游戏中可能会令人讨厌,并且许多专有编解码器需要支付许可费用并增加智能手机和耳机的最终成本。
替代编解码器的市场营销非常强大:aptX和LDAC被视为人们期待已久的“过时和不良” SBC的替代品,而SBC远没有人们普遍认为的那么糟糕。
事实证明,可以规避蓝牙堆栈对SBC比特率的人为限制,从而使SBC不会逊于aptX HD。 我亲自动手为LineageOS固件制作了补丁:我们
修改了蓝牙堆栈,以改善没有AAC,aptX和LDAC编解码器的耳机上的声音可以在
SoundGuys和
SoundExpert上找到更多信息。
奖励: SBC参考编码器,A2DP比特流信息和测试文件 。 该文件以前曾公开发布在Bluetooth网站上,但现在仅适用于进入Bluetooth SIG的用户。