摘要
低能耗蓝牙被业界广泛认为是实现物联网(IoT)应用愿景的关键技术。事实上,极低的功耗使其成为电池供电的物联网产品最理想的无线通信解决方案,尽管目前低能耗蓝牙技术规范还是局限于几种特定应用,但是,创新的解决方案可促使这项技术拓展到不同的应用领域,例如,多媒体流。按照这个发展方向,本文介绍一个叫做BlueVoice的低能耗蓝牙设备语音流应用。
本文从支持语音流服务所需的扩展服务集开始介绍BlueVoice应用,然后在实际硬件设备上评估BlueVoice的性能。在所选的硬件平台上,BlueVoice应用完全支持语音流服务,同时避免能源浪费。
I. 前言
经历过去几十年的快速增长,互联网几乎渗透到人类社会日常生活的方方面面。未来互联网将扩展到万物互联,数十亿甚至数百亿个有唯一身份的“物品”通过无线通信与人类和周围环境交互,执行高级任务。在这一构想中,“物品”可能是传感器、致动器、家电、玩具,总之,可以是任何能够被识别的虚拟或实体物品,这种互联网演进构想被称为物联网(IoT)。
物联网概念是通过标准协议解决方案(即互联网协议)和无线通信接口,把所有产品设备连接在一起,组成一个全球网络。实现万物互联,虽然可以使用现有的大量的射频通信技术,但是当物联网产品是部署在现场的自主型电池供电装置时,低功耗无线通信技术才会是最适合的通信解决方案。在这个方面,低能耗蓝牙(Bluetooth LE)技术被视为最有效的物联网通信解决方案,同时正在融入互联网世界。
在今天的物联网应用中,低能耗蓝牙解决方案主要用于生命参数监视用途。除传统的监视服务外,近几年业界开始探索基于其它技术的先进应用。例如,有文献提出并分析了基于IEEE802.15.4的网络语音通信。在这个方面,通过低能耗蓝牙传输多媒体数据还是处于起步阶段,缺少可用的解决方案主要是因为最初设想时未考虑到这些应用(例如,最初主要考虑的是医疗、健身等应用)。本文以在低能耗蓝牙设备上支持语音流服务的BlueVoice应用为例,探讨如何解决这些技术限制问题。我们先了解一下低能耗蓝牙技术,然后详细介绍支持该新应用概念所需的扩展服务集,再介绍应用设计,最后在STM32 Nucleo L476板上测试实际性能。
本文的有要内容安排如下:第二章介绍低能耗蓝牙工作原理,先描述整个工作栈;然后介绍配置文件(Profiles)概念。第三章介绍应用方案设计,描述其低能耗蓝牙配置文件,然后介绍其设计原则、设计实现及实际性能。第四章是结论。
II. 低能耗蓝牙技术概述
BLE低能耗蓝牙规范于2010年写入蓝牙4.0核心规范,尽管与基本蓝牙相似,但是低能耗蓝牙规范主要是为超低功耗应用设计开发。通过低能耗蓝牙技术连接电池供电设备的潜在应用非常少,医疗、健身和智慧家居是其中仅有的几例。
图1.低能耗蓝牙协议栈
如图1所示,低能耗蓝牙协议栈总体结构主要由两个部分组成:控制器和主机。应用软件使用协议栈主机层的协议提供的服务。主机层分为五层:逻辑链路控制和适配协议(L2CAP)、属性协议(ATT)、通用属性配置文件(GATT)、安全管理协议(SM)、通用访问配置文件(GAP)。控制器部分只有两层:物理层(PHY)和链路层(LL)。如图1所示,主机-控制器(HCI)接口是控制器与主机的通信通道。
物理层负责比特调制,通过无线通道收发数据。最高数据速率是1 Mb/s,典型通信距离是几十米。
链路层规定两个设备之间双向通信的功能。低能耗蓝牙节点有两个角色:主设备和从设备。通常是主设备(例如,笔记本电脑、智能手机)搜索从设备(例如,体感设备);必要时,从设备向主设备发送数据。从设备通常处于睡眠状态,并在固定间隔内唤醒,以便被主设备搜到。
在链路层之上,逻辑链路控制和适配协议(L2CAP)有两个主要功能。该协议的主要作用是提供多路传输功能,按照标准低能耗蓝牙分组数据格式,封装转换顶层多协议数据。安全管理协议(SM)和通用访问配置文件(GAP)分别提供数据安全和服务管理功能。详细的说,安全管理协议定义密钥的生成方式,以及如何在两个设备(主从设备)之间交换密钥,建立安全加密通信通道,而通用访问配置文件则规定两个设备如何在底层交互操作。
属性协议(ATT)和通用属性配置文件是开发新应用时需要重点考虑的两个协议组件。属性协议是一个无状态的客户机/服务器协议:不考虑设备的底层角色是主设备还是从设备,每个设备都可以设为服务器、客户机或是客户机兼服务器。客户机请求服务器数据发送数据,服务器向客户机发送数据,数据以属性的形式保存在服务器内,每个属性都含有GATT管理的数据,而且该数据被分配一个通用唯一标识符(UUID)。通过一个L2CAP专用通道,属性协议在服务器属性与客户机之间建立一条通信通道。通用属性配置文件(GATT)在属性协议层添加一个数据抽象模型,负责搜索属性协议保存的数据,在两个设备之间交换特征。每个低能耗蓝牙设备都有一套可能属性(存储服务)和特征(与存储服务相关的属性)。如果在低能耗蓝牙栈上建立一个新应用,则必须定义属性和特征。某一特定应用的特征、属性和底层规范合称配置文件,标准配置文件可保证不同品牌的产品能够互联互通。
III. BLUEVOICE应用
下面我们介绍BlueVoice应用,首先定义语音通信低能耗蓝牙配置文件,然后讨论所涉及设备的通信角色、音频处理和压缩选择、数据分组问题和带宽要求。我们提出两个在音频采集和功耗方面不同的系统配置,以满足不同的应用要求。本章最后一部分介绍在一个实际硬件设备上实现的BlueVoice应用,然后比较并讨论实际测量到的应用性能,例如,功耗、存储器占用、处理性能要求和自动语音识别(ASR)性能。
A. 服务定义
考虑到音频流用例不属于低能耗蓝牙标准配置文件,为实现语音流服务,BlueVoice应用在低能耗蓝牙协议栈上,定义了一个叫做BlueVoice Service(BVS)的“厂商专用配置文件”,指定了服务器与客户机之间交换语音数据的方式。此外,考虑到半双工通信需要特别的设计选择,本章稍后详细讨论这个问题。
如前文所述,属性协议ATT是通用属性配置文件GATT在不同设备之间交换数据的传输协议,属性是ATT定义的最小的实体,是可寻址的信息段(内置UUID标识码),可能含有用户数据或关于属性本身架构的元信息,例如,权限、加密和授权属性。GATT服务器属性按特定顺序组成一个服务序列,序列开始部分是服务声明属性,后面跟一个或多个特征和可能的描述符。每个特征都是一个被披露的属性。除标准配置文件UUID外,在定制应用中,开发人员可使用独有的和厂商专用的UUID开发有自己特征的新服务,BlueVoice应用就是这种情况。考虑到单向音频流系统不对称性,服务器通过BVS配置文件向客户机披露数据类型和格式以及访问方式。BVS服务包含下列属性,如图2所示。
服务声明(Handle 0x0010)
– UUID: 标准16位UUID,用于主服务声明(0x2800).
– 权限:读
– 数值: 独有128位BVS UUID.
特征声明 (Handle 0x0011)
– UUID: 标准16位UUID,用于特征声明 (0x2803).
– 权限: 读
– 数值: 独有128位音频UUID, 仅用于通知, Handle: 0x012.
特征数据 (Handle 0x0012)
– UUID: 独有128位音频UUID.
– 权限: 无
– 数值: 实际音频数据
特征声明 (Handle 0x0014)
– UUID: 标准16位UUID,用于特征声明 (0x2803).
– 权限:读
– 数值: 独有128位同步UUID,仅用于通知,Handle: 0x0015.
特征数据 (Handle 0x0015)
– UUID: 独有128位同步UUID.
– 权限: 无
– 数值: 实际同步数据
根据该标准,主服务声明是服务的第一个属性,其数值域包含该声明引入的UUID定义。BlueVoice应用声明使用一个128位独有的UUID(BVS UUID)。BVS包含两个特征,分别叫做音频(Audio)和同步(Sync) 特征。在低能耗蓝牙规范中,每个特征至少包含两个属性,分别是特征声明和特征数值。特征声明以元数据的形式定义其属性,特征数值则是包含实际特征数据。在BlueVoice情况中,音频和同步特征都包含一个单一的由独有128位UUID定义 (AudioData和SyncData UUID) 的属性,分别含有实际音频数据和边信息同步数值。音频和同步特征声明将AudioData和SyncData属性定义为”仅通知”,未取得客户机的读写权限,表示音频数据和同步数据只以通知的形式传输,服务器不答复客户机。为与低能耗蓝牙服务的分层架构一致,其它特征可能会增加到未来发布的BlueVoice应用。
图2. BlueVoice服务(BVS)定义
B. 应用设计
本章主要介绍BlueVoice应用设计的(i)低能耗蓝牙通信(ii)音频处理。
1) 低能耗蓝牙通信
按照低能耗蓝牙协议,通信可以是多点广播,也可以是点对点连接。BlueVoice应用链路层使用连接通信模式,在两个设备之间建立永久性的点对点连接,这两个设备扮演两个不同的角色:中央设备和周边设备。中央设备又称主设备,支持与周边设备(从设备)相关的复杂功能。中央设备是发起通信连接,执行自适应跳频,数据加密,管理通信时序,定义设备间数据交换方式。该角色分配符合低能耗蓝牙的非对称设计概,为能效要求高的设备分配更少的工作任务。电池供电的便携设备通常是从设备,不过,必须说明的是,根据规范,每个设备在每个连接事件发生时可单独发送数据,且角色不在数据吞吐量上强加限制或优先权。考虑到半双工通信情况,BlueVoice应用可运行在自主的电池供电无线传感设备上,且这些设备配备麦克风(和最终标量传感器,如典型物联网概念中无处不在的监视应用), 因此,角色分配不再与收发功能有关。
在链路层之上,GATT层定义互动设备的客户机和服务器角色,与前文描述的主设备和从设备无关。服务器是提供信息的设备,而客户机是请求或接收最新信息的设备。考虑到单向音频流是非对称系统,装备麦克风的设备是唯一有语音信息的设备,因此可将其视为通信服务器,另一个设备是客户机,向服务器发送信息请求,并接收服务器发起的含有语音数据的更新信息。在双向通信系统中,语音数据是双向传输,架构是对称的,中央设备和周边设备都配备麦克风,都可以充当服务器,输出任何属性格式的音频数据。同时,服务器也能充当客户机,发送信息请求,并接受另一个设备发送的更新信息。
双向语音数据流是基于服务器以固定间隔向客户机发送通知,不需要接收设备发送请求或回复信号。从设备在上电阶段进入广播模式,以低频发送广播数据包,主设备进入搜索模式,扫描是否有其它设备存在,反之亦然。收到广播数据包代表主设备发现了相关从设备,然后,主设备发送一个连接请求。在连接建立过程结束后,按照所选的通信传输方向:中央设备至周边设备或周围设备-中央设备,以固定间隔从服务器向客户机发送含有音频数据的异步通知数据包。图3所示是BlueVoice在GATT 层的角色分配。
图3:BlueVoice配置文件角色分配
2)音频处理
BlueVoice的音频处理目的是在根据应用所选的接收端上,取得8kHz 或16 kHz的目标音频采样。事实上,对于低功耗要求极其严格但是对音质要求不高的应用场景,例如,无需人耳听清楚的自动语音识别服务输入音频,8kHz采样率可能是一个不错的选择。
使用自适应差分脉冲码调制算法压缩低能耗蓝牙音频传输信号,可使音频信号适用于现有的数据传输速率,同时最大限度缩减射频传输时间以及功耗。我们使用数字MEMS麦克风设计一个全数字解决方案,尺寸和音质等特性使其适用于无线传感器设备。图4所示是16 kHz采样率的完整语音处理链。该解决方案首先采集数字MEMS麦克风生成的1 MHz 的1位脉冲密度调制(PDM)信号,并将其转换成16 kHz 的16位脉冲编码调制(PCM)采样,然后以16000个采样/秒的采样率,再将其压缩成4位ADPCM采样信号,并准备发送。
此外,以较低的频率发送边信息同步数据集合,所需带宽是64 kbps音频数据与300 bps同步信息数据之和,总计64.3 kbps。对于8kHz采样率,最终ADPCM采样率是8000个采样/秒,导致31.3 kbps带宽需求,包括边信息。下面章节深入介绍上述模块。
图4:16kHz 配置的BlueVoice数据传输链
MEMS麦克风的容性传感器生成的模拟信号经放大和高速率采样后,交由整合量化和噪声修整操作的内部sigma-delta调制器处理,输出的数据是一个单一的高采样率的PDM格式比特,PCM转换是从PDM到无线通道发送压缩音频数据的整个处理链的中间环节。为了把PDM流转换成PCM数据,需要使用一个抽取滤波器和两个可单独配置的滤波器(低通滤波器和高通滤波器。该处理模块输出16位PCM格式采样流。按照所选采样频率,采用一个不同配置的抽取滤波器,以取得16位PCM数据采样。
ADPCM编码模块压缩PCM采样,通过减少数据包传输量,节省传输带宽,降低能耗,如前文所述,ADPCM 是一个用于损耗波形编码的压缩算法,其基本原理是根据上一个数值预测当前数值,只传输自适应量化步骤量化的实际值与预测值的差值。存在诸多可选压缩标准,却单单选用ADPCM标准,这是因为它是基于波形编码方法,与基于声码器的复杂解决方案相比,更适用于传感器网络设备(通常基于微控制器)。在BlueVoice应用中,每个16位PCM采样都压缩成4位ADPCM数据,这样所需的应用传输带宽是32 kbps或64 kbps,至于具体速率取决于采样频率,而且兼容低能耗蓝牙流媒体功能。
如前文所述,BlueVoice应用的总体带宽实际需求高于32 kbps或64 kbps的理论值,这是因为BlueVoice为提高通信稳健性,在通过通道发送数据时增加了附加信息。16 kHz 配置采用10 ms连接间隔,而8 kHz 配置采用25 ms连接间隔。事实上,如果被传输的数据量较少,可提高连接间隔数值,从而节省能源。为尽可能地利用每个数据包现有有效载荷,语音数据包发送20个字节。
因此,在16 kHz配置中,语音数据每10 ms发送4个数据包,而在8 kHz配置中,语音数据每20 ms发送4个数据包,结果传输带宽分别是64 kbps和32 kbps。发送器的边信息发送频率较低,每160 ms发送一个6字节的附加包,对应16个或8个连接间隔。图5描述了低能耗蓝牙协议栈上的数据分组总体策略。通过音频特征,每10ms或20 ms连接间隔,发送4个语音数据包(每包20字节),而发送器边信息的发送是,通过同步特征,每160ms间隔发送一个附加数据包。
图5:BlueVoice数据分组机制
C. 在实际硬件上实现应用
为了在支持低能耗蓝牙通信的不是十分复杂的实际硬件无线传感器网络平台上评估BlueVoice的可行性,我们在实际硬件设备上实现了第三章B部分所描述的应用软件的全部功能。所选硬件平台是意法半导体的STM32 Nucleo L476开发板,这是一个基于STM32L476 80 MHz 32位ARM Cortex-M4微控制器的开放式开发平台。我们选择STM32 Nucleo开发板的原因是,板载微控制器的性能高于普通无线传感器网络平台,同时还具备很高的灵活性和多功能性。该开发板配备很多接口和扩展排针,插接专用扩展板扩大板子功能简单容易,方便设计人员研究、开发和验证新创意。特别值得一提的是,STM32L4微控制器具有市场领先的低功耗特性,其内置数字滤波器配合Sigma-Delta调制器(DFSDM)外设,可实现图4的PDM至PCM的格式转换,这些特性使其特别适合BlueVoice应用。通过在STM32Nucleo开发板上接插一块低能耗蓝牙连接板和一块麦克风扩展板,BlueVoice中央模块和周边模块可以组成一个基于STM32Nucleo的对称硬件配置,展示一个半双工通信通道。低能耗蓝牙连接板基于意法半导体的BlueNRG,BlueNRG是一个超低功耗的低能耗蓝牙单模网络处理器,兼容蓝牙规范4.0版,可设为主设备和从设备模式,当低能耗蓝牙协议栈启动时,数据传输最大电流8.2 mA,可降至1.7 uA。附加的麦克风扩展板用于采集语音信号,基于意法半导体的MP34DT01数字万向MEMS 麦克风,声学过载点120 dBSPL, 信噪比63 dB,灵敏度-26 dBFS。MP34DT01采用一个容式传感器和一个内置sigma-delta调制器和噪声修整机制的集成电路,提供1-3.25 MHz的PDM输出。
图6是实际硬件设备的框图:STM32微控制器通过与外设模块DMA相连的DFSDM模块采集麦克风的PDM采样输出,同时通过一套专用应用程序界面(API)和串行外设接口(SPI)与BlueNRG模块通信,对于中央模块和周边模块,模块化架构是对称的。框图中还有一个USB音频接口,用于向PC机提供重构的音频信号。图7是硬件设备的实际原型。
图6. BlueVoice框图
图7:发送器和接收器原型
1) 功耗、存储器占用和性能需求
如前文所述,我们把BlueVoice应用实现在一个硬件设备上,该硬件设备使用意法半导体的 STM32 Nucleo开发板充当主机,并使用低能耗蓝牙网络模块充当控制设备。表1列出了在BlueVoice的广播、连接和传输三个不同状态下,主机和控制设备(STM32和BlueNRG)的功耗值。这些数据是在3.3 V工作电压时的测量值,对8 kHz和16 kHz配置的功耗进行了比较。必须强调的是,微控制器功耗完全取决于硬件特征和低功耗配置,因此,微控制器功率是在计算总功耗时加在总功耗中与平台相关的数值。
本表所列数值可以视为一个指示性参考值,可能会随实际应用情况而发生变化。
表I:BLUEVOICE功耗
按照低能耗蓝牙标准,在两个节点之间建立连接前,从设备是处于广播模式,而主设备则是进入扫描模式。当主设备收到广播数据包,发现从设备存在时,就立即建立连接。在BlueVoice解决方案中,考虑到一个外设模块对中央模块的通信,外设节点是发送器(服务器),而中央节点是接收器(客户机):服务器以固定周期向客户机发送通知。对于8 kHz配置中,在广播阶段,发送器外设模块(STM32 + BlueNRG)总平均功耗极低,只有3.50mW,当建立连接时,功耗是3.98 mW。对于16 kHz配置,广播阶段功耗是8.22 mW,而连接阶段是9.48 mW。这里应着重指出的是,连接阶段的功耗与连接间隔选择关系密切,这也是8 kHz和16 kHz配置(分别是20 ms和10 ms)的主要区别。在这两情况中,连接间隔设为接近标准规定的最小值(7.5 ms),以确保传输延迟最小。一旦连接建立, BlueVoice应用立即进入传输状态,8 kHz配置的平均功耗是10.07 mW,16 kHz配置的平均功耗是19.84 mW,因此,基于STM32 + BlueNRG的物联网节点,假设电池容量是200 mAh,在连续传送数据流时,两种配置的理论续航时间分别是约65小时和33小时。这些功耗值表明BlueVoice方法的适用于以低能耗蓝牙为载体的音频流,特别是8 kHz配置,可大幅降低功耗。
除分析功耗外,通过考虑存储器占用情况,我们还评估了应用的可行性。如表II所示,BlueVoice应用软件两种配置占用闪存空间相同(21.85 kB),但是,8 kHz配置占用13.32 kB的RAM空间,而16 kHz配置只占用7.86 kB的RAM空间。两种配置占用RAM空间不同的原因是,为降低该解决方案的额外开销和功耗,8 kHz和16 kHz分别每20 ms 和10 ms执行音频处理步骤(PDM转PCM和ADPCM压缩),从而导致8 kHz配置在两个连续步骤之间存储的数据变大。在这两种情况中,这些数值十分符合资源受限的系统要求。
表II 发送端BLUEVOICE存储器占用
2) ASR性能
BlueVoice在功耗、处理性能和存储器占用方面表现出的可行性并不能保证语音信号质量在接收端达到可以接受的水平,在BlueVoice解决方案性能评估最后,我们利用一个网络ASR服务进行了大量的传输测试,在接收端测量ASR 性能。16 kHz USB麦克风和8 kHz/16 kHz BlueVoice系统以并行方式记录若干个包含已知英文单词的音频采样(作为参考),并将其传输到ASR引擎,表III列出了不同解决方案的单词识别率比较测试结果。测试结果证明,ADPCM压缩没有降低信号质量,因此适合ASR应用:BlueVoice 16 kHz配置的性能十分接近USB麦克风,而 8 kHz系统的性能稍有降低(18 %),适用于低功耗要求极严的应用。事实上,8 kHz系统以16 kHz配置50%的功耗取得了相同的ASR性能。
表III BLUEVOICE ASR性能
IV. 结论
本文介绍一个以低能耗蓝牙为载体传送音频流的解决方案,首先介绍一个厂商专用的半双工通信低能耗蓝牙配置文件,然后介绍BlueVoice应用设计,并讨论了虑涉及设备的通信角色、音频处理和压缩编码选择、数据分组和带宽需求。BlueVoice应用由一个中央节点和一个外设节点组成,按照所选通信方向,分别充当低能耗蓝牙的服务器和客户机。在连接建立后,服务器按固定周期向客户机发送通知。我们对8 kHz和16 kHz两个没配置进行了比较,在发送器节点上,MEMS麦克风的数字PDM格式输出信号被采集并转换成PCM格式,然后压缩成ADPCM数据,最终在低能耗蓝牙链接上产生32或64 kbps的蓝牙带宽。该配置文件还定义一个低频边信息机制,虽然需要一些额外的带宽,但是提高了错误抑制功能。为评估解决方案的性能, BlueVoice被实现在实际硬件设备上。该设备是由MEMS麦克风和STM32微控制器组成与网络模块组成的全数字系统,前者充当主机,后者充当低能耗蓝牙控制器。本文的性能评估表明,我们提出的解决方案在功耗、处理性能和存储器占用方面适用于低功耗语音流应用。特别是,在8 kHz和16 kHz音频流传输过程中,传感器设备的功耗测量值分别为10.07 mW和19.84 mW,存储器占用和性能需求完全可接受。此外,我们还测量了音频质量指标ASR性能,8 kHz配置和816kHz配置的单词识别率分别达到67%和82%,而16 kHz USB麦克风的识别率达到85%,这表明BlueVoice应用能够在接收端达到非常高的音质,并具有极低的功耗。