低功耗蓝牙LE Audio Profile 详细介绍
1、LE Audio介绍
1.1、LE Audio传输协议
2019年底,蓝牙官方组织SIG发布了蓝牙5.2版本的核心协议,其中增加了一个重要的特性---LE Audio。蓝牙的应用协议都是从应用层到物理层完整包含的协议,LE Audio也不例外。但蓝牙5.2核心协议仅仅定义了蓝牙LE的链路层传输Audio的方式,上层协议以及完整的LE Audio规范迟迟未出,近日,蓝牙官方组织释放了LE Audio较为完整的规范文档。
1.2、LE Audio完整应用
本次Sig组织定义了如下规范和协议,这些规范协议连同核心协议组成了LE Audio的完整应用- Basic Audio Profile(BAP)
- Published Audio Capabilities Service(PACS)
- Audio Stream Control Service(ASCS)
- Broadcast Audio Scan Service(BASS)
- Low Complexity Comunication Codec(LC3)
用于LE Audio的音频编解码器,顾名思义,此编码器属于低复杂度的音频编码器。LC3编码器可选参数范围很大,应用范围从8KHz单声道语音到48KHZ多声道音乐均支持,同时相比经典蓝牙音频规范使用的编码器SBC,同码率下音质有很大的提升。
2、LE Audio详解
2.1、BAP规范
BAP规范作为LE Audio的基础音频规范,其位于如下蓝牙协议层。
BAP规范根据支持的点对点音频和广播音频,定义了如下角色
每类角色支持的服务如下(注: X代表不支持,M代表必须支持,O代码可选支持)
当2个设备处于对应角色时,即可通过BAP定义的操作步骤完成服务的连接以及音频传输服务。
以Unicast Server和Unicast Client为例,其步骤如下
- Unicast Client通过GATT服务发现操作发现Unicast Server的PACS服务并得知音频参数。
- Unicast Client通过GATT服务发现操作发现Unicast Server的ASCS服务并得知当前状态。
- Unicast Client如发现其音频参数匹配且Server的状态处于IDLE状态,即可连接音频服务。
- Unicast Client通过ASCS定义的操作码,配置音频编解码参数和音频传输参数,然后开启音频。
- Unicast Client通过核心协议5.2定义的方式,根据配置参数,在链路层开启CIS音频传输流。
- Unicast Sink通过ASCS操作码,通知Unicast Source已可接收音频。
- Unicast Source开启LC3编解码器,并将编码后的音频流通过CIS传输到Unicast Sink。
- Unicast Sink接收音频流,解码并播放。
2.2、PACS服务
PACS服务用于点对点音频,定义了设备的音频能力,其服务定义如下。
其中,Source PAC为音频发送能力属性,当设备支持音频发送时才需要定义,其格式如下:
Sink PAC为音频接收能力属性,当设备支持音频接收时才需要定义,其格式如下:
2.3、ASCS服务
ASCS服务用于音频控制,通过定义的一套操作码作交互,从而达到控制音频状态转移的目的。
ASCS的服务定义如下
2.4、BASS服务
BASS为广播音频扫描服务,用于告知广播音频的一些参数,属于辅助服务,其定义如下。
2.5、LC3编解码器
LC3编解码器用于LE Audio的音频编解码,与MP3,AAC类似,属于频域编码,编码效率远高于SBC子带编码,而10毫秒和7.5毫秒的短帧结构,对于音频延迟有较大改善。
LC3在频域上引入了SNS频域噪声整形,TNS时域噪声整形以及熵编码等技术,其中TNS等技术已用于AAC,这些技术对于音质有提升,整个编码过程如下:
解码是编码的逆过程,如下:
3、LE Audio支持展望
LE Audio作为一个非常重要的特性,发布至今除少量demo仍未见应用。大规模普及仍依赖于操作系统厂商是否支持,诸如苹果的IOS以及谷歌的Android,从目前的进展(IOS14以及Android11)来看,仍未看到有支持LE Audio。
但翻看AOSP的代码,在Android12(android-s-beta版)上,已能发现LE Audio的痕迹,如下
从目前的代码完整度来看,仍不算完整功能支持,预计在Android12上会完善并开始应用,等手机支持后,相信会有厂商推出支持LE Audio的耳机。
但音频应用属于一个通用应用,苹果以及其他操作系统诸如微软的windows的支持也极其重要,从这个角度讲,LE Audio要大规模普及可能仍需要时间。
————————————————
参考来源
HaaS技术社区: https://blog.csdn.net/HaaSTech/article/details/119565156