低功耗蓝牙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 详细介绍的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙低功耗profile:ATT和GATT(转载)

低功耗蓝牙双模

低功耗蓝牙Ble的详细使用流程

深入理解低功耗蓝牙的配对过程- Part 3 LE legacy Pairing Passkey Entry

iOS蓝牙(BLE4.0低功耗)详细渗透讲解

低功耗蓝牙通知间隔