低功耗蓝牙LE Audio Profile 详细介绍
Posted HaaS技术社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了低功耗蓝牙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)
基础音频规范,LE Audio的关键规范,定义了各类角色以及每个角色需要支持的能力,以及如何使用如下各服务完成音频应用的传输。LE Audio支持点对点音频模式和广播音频模式,2种模式下,会使用不同的服务。
- 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规范根据支持的点对点音频和广播音频,定义了如下角色
Unicast Role | Unicast Server | 点对点音频从设备 |
Unicast Client | 点对点音频主设备 | |
Broadcast Role | Broadcast Source | 广播音频发射设备 |
Broadcast Sink | 广播音频接收设备 | |
Broadcast Assistant | 广播音频协助设备 | |
Scan Delegator | 广播音频扫描设备 |
每类角色支持的服务如下(注: X代表不支持,M代表必须支持,O代码可选支持)
BAP Role Service Role | Unicast Server | Unicast Client | Broadcast Source | Broadcast Sink | Scan Delegator | Broadcast Assistant |
ASCS Client | X | M | X | X | X | X |
ASCS Server | M | X | X | X | X | X |
PACS Client | X | M | X | X | X | O |
PACS Server | M | X | X | M | X | X |
BASS Client | X | X | X | X | X | M |
BASS Server | X | X | X | X | M | X |
当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服务用于点对点音频,定义了设备的音频能力,其服务定义如下。
Characteristic Name | Requirement | Mandatory Properties | Optional Properties | Security Permissions |
Sink PAC | C.1 | Read | Notify | Encryption required |
Sink Audio Locations | C.2 | Read | Notify, Write | Encryption required |
Source PAC | C.1 | Read | Notify | Encryption required |
Source Audio Locations | C.3 | Read | Notify, Write | Encryption required |
Available Audio Contexts | M | Read, Notify | None | Encryption required |
Supported Audio Contexts | M | Read | Notify | Encryption required |
其中,Source PAC为音频发送能力属性,当设备支持音频发送时才需要定义,其格式如下:
Parameter | Size (Octets) | Description |
Number_of_PAC_records | 1 | Number of PAC records, [i], for this characteristic |
Codec_ID[i] | 5 | Octet 0: Coding_Format value of the [ith] PAC record. Coding_Format values are defined in Bluetooth Assigned Numbers. Octet 1–2: Company _ID value of the [ith] PAC record. Shall be 0x0000 if octet 0 is not 0xFF. Company_ID values are defined in Bluetooth Assigned Numbers. Octet 3–4: Vendor-specific codec_ID value of the [ith] PAC record. Shall be 0x0000 if octet 0 is not 0xFF. |
Codec_Specific_Capabilities_Length[i] | 1 | Length of the Codec_Specific_Capabilities value of the [ith] PAC record. Shall be 0x00 if the Codec_Specific_Capabilities value of the [ith] PAC record is empty. |
Codec_Specific_Capabilities[i] | Varies | Codec_Specific_Capabilities value of the [ith] PAC record. |
Metadata_Length[i] | 1 | Length of the Metadata field of the [ith] PAC record. Shall be 0x00 if the Metadata value of the [ith] PAC record value is empty. |
Metadata[i] | Varies | LTV-formatted Metadata applicable to the [ith] PAC record. Shall exist only if the value of the Metadata_Length field is not 0x00. |
Sink PAC为音频接收能力属性,当设备支持音频接收时才需要定义,其格式如下:
Parameter | Size (Octets) | Description |
Number_of_PAC_records | 1 | Number of PAC records, [i], in this characteristic. |
Codec_ID[i] | 5 | Octet 0: Coding Format of the [ith] PAC record. Coding_Format values are defined in Bluetooth Assigned Numbers Octet 1–2: Company_ID value of the [ith] PAC record. Company_ID values are defined in Bluetooth Assigned Numbers Shall be 0x0000 if octet 0 is not 0xFF. Octet 3–4: Vendor-specific codec_ID value of the [ith] PAC record. Shall be 0x0000 if octet 0 is not 0xFF. |
Codec_Specific_Capabilities_Length[i] | 1 | Length, in octets, of the Codec_Specific_Capabilities value of the [ith] PAC record. Shall be 0x00 if the Codec_Specific_Capabilities value of the [ith] PAC record is empty. |
Codec_Specific_Capabilities[i] | Varies | Codec_Specific_Capabilities value of the [ith] PAC record. |
Metadata_Length[i] | 1 | Length of the Metadata field of the [ith] PAC record. Shall be 0x00 if the Metadata value of the [ith] PAC record value is empty. |
Metadata[i] | Varies | Length-type-value (LTV)-formatted Metadata applicable to the [ith] PAC record. Shall exist only if the value of the Metadata_Length field is not 0x00. |
2.3、ASCS服务
ASCS服务用于音频控制,通过定义的一套操作码作交互,从而达到控制音频状态转移的目的。
ASCS的服务定义如下
Characteristic Name | Requirement | Mandatory Properties | Optional Properties | Security Permissions |
Sink ASE | C.1 | Read, Notify | None | Encryption required |
Source ASE | C.1 | Read, Notify | None | Encryption required |
ASE Control Point | M | Write, WriteWithoutResponse, Notify | None | Encryption required |
2.4、BASS服务
BASS为广播音频扫描服务,用于告知广播音频的一些参数,属于辅助服务,其定义如下。
Characteristic Name | Requirement | Mandatory Properties | Optional Properties | Security Permissions |
Broadcast Audio Scan Control Point | M | Write, Write Without Response | None | Encryption required |
Broadcast Receive State | M | Read, Notify | None | Encryption required |
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要大规模普及可能仍需要时间。
以上是关于低功耗蓝牙LE Audio Profile 详细介绍的主要内容,如果未能解决你的问题,请参考以下文章