APP下载

智能语音机器人前端语音处理系统的设计及实现

2021-03-24刘生

现代计算机 2021年3期
关键词:声源音源波束

刘生

(南京熊猫电子装备有限公司,南京210033)

0 引言

近几年来,人工智能技术的兴起,推动了语音识别技术的发展,涌现出越来越多的智能语音类产品。语音已成为基于云的语音助手和语音物联网设备的主要人机交互接口。这些设备要求在任何给定的环境中都能接收到干净的语音信号,以确保智能扬声器、耳机、移动电话、可穿戴设备、信息娱乐和智能家居系统的语音处理的准确性。

语音前端处理[1]部分会在语音信号进行语音识别之前,对语音原始信号进行处理,实现降噪、回声消除、声源定位[2]及波束形成[3]等功能。讯飞、云知声等相关的语音处理产品供应商提供了麦克风阵列处理模块,市面上大部分模块是使用DSP 或专用芯片来完成前端语音处理的,虽然该方案能保证前端语音处理的性能,但是对于一些产品进行集成并不是特别方便,开放的接口也不是很丰富。同时提高了产品的复杂度,增加了系统的成本。针对该问题,提出基于WebRTC[4]、Snowboy[5]等开源库,设计并开发了语音前端处理系统。

1 语音前端处理

语音前端处理系统的目标是将麦克风接收到的用户发出的声音,进行降噪处理,更加突出语音识别用到的特定语音信号。去除的噪音包括外界的背景噪声,也包括自身设备播放的音频。噪音去除的越干净,语音信号就越接近于声源信号,能提高语音识别的精确度。

语音前端处理主要包括语音活动检测(Voice Ac⁃tivity Detection,VAD)[6]、噪声抑制(Noise Suppression,NS)、回声消除(Acoustic Echo Cancellation,AEC)、关键词识别(Keyword Detection,KWD)声源定位(Direction Of Arrival,DOA)、波束成形(Beamforming,BF)等关键功能。

语音活动检测技术主要用于语音编码和语音识别,目的是检测语音信号是否存在。语音活动检测技术通过识别音频流中的语音片段并对有效语音数据进行处理来简化语音处理。该处理结果也是前端语音处理系统进行流程控制的一项关键信号。噪声抑制技术可以将音源中的噪音部分去除,提高语音信号的信噪比。噪声可以是随机噪声或具有均匀频率分布的白噪声,也可以是由设备的机械装置或收音过程中通过麦克风引入的频率相关噪声。回声消除可以把语音信号中由设备本身播放设备发出的声音剔除,只留下从外界收到的声音。关键词识别技术用来识别声音中是否出现了所关注的关键词,常被用来当作唤醒词,用来激活与设备的交互。在信号处理中,声源定位用来确定波到达信号接收点的方向,通常会使用多个传感器来组成传感器阵列,并进行信号的接收及处理。在前端语音处理中,使用麦克风阵列进行收音,确定音源方向。常用的声源定位技术有波达角(AOA)、时间差定位(TDOA)、到达频率差(FDOA)等。波束成形利用麦克风阵列的多路语音信号,可以对特定方向的音源进行增强,对其他方向的信号进行削减。一般使用声源定位的音源判定结果作为波束成形的语音增强方向。

2 系统设计及实现

2.1 系统结构

整个语音处理系统主要由音源获取、语音前端处理、语音识别及交互三部分构成。在Linux 系统中,音源获取部分通过系统提供的ALSA(Advanced Linux Sound Architecture)接口[7],可以读取麦克风阵列录制的声音以及系统播放的声音。由于使用的是6 麦克风阵列,所以获得的音频为6 通道数据。同时获取1 个通道的系统播放声音,在自动回声消除中使用。语音前端处理模块首先对6 通道的数据进行降噪处理,随后利用获得的1 通道的放音数据进行回声的消除。此时已经获得了比较纯净的声音,对该声音进行语音活动检测。语音活动检测会配合关键词检测使用,当语音活动检测有效后进行关键词检测,关键词有效后会进行声源定位以及波束成形的处理,最终将获得的音源方向以及通过波束成形获得的1 通道最终的处理结果通过库接口的形式提供给语音识别及交互部分。系统结构图见图1。

图1 系统结构图

2.2 处理流程

在音频处理过程中,为了提高处理效率,采用单帧依次处理的方式。对数据帧进行划分,帧的长度为10ms,若采用16Khz 的采样率,单通道有160 组数据。对单帧数据的处理流程图如图2 所示。

图2 单帧数据处理流程图

首先语音信号进行噪声抑制以及回声消除处理。在进行KWD 检测前,需要对音频流进行VAD 的标记及划分,以获得有效数据。及当关键词结束之后,才对缓存的数据进行KWD 的处理。具体实现方法为当VAD 有效时,对当前处理的帧做缓存并对当前有效数据的长度做计时。当VAD 无效时,即出现了语音间隔,对VAD 有效数据进行长度判定。如果大于500ms,则认为收音长度是足够的,进行KWD 处理,如果小于500ms,则重新统计时间。在KWD 处理之后,如果KWD 识别成功,则对关键词部分进行DOA 处理,获得音源方向,并以此为定向波束形成的参数,进行BF 的处理,最后将BF 的处理结果传递给上层应用。当进入BF 的处理流程后,由于DOA_Flag 会持续有效,后续的数据流会直接进入BF 处理,不需要再次进行KWD 以及DOA 的检测。当外界的语义停止后,如果持续时间大于10 秒,需要将系DOA_Flag 置为无效,重新进行VAD、KWD 以及DOA 的检测。即如果用户如果持续10 秒不进行对话,则认为对话终止,需要重新通过关键词唤醒。

前端语音模块的主处理函数对数据帧逐帧处理,关键代码如下:

2.3 各功能组件的实现

对于前端语音各个功能组件,主要使用了We⁃bRTC、Snowboy 等开源库,DOA 部分基于SRP-PHAT实现。WebRTC(Web Real-Time Communication)是基于网页浏览器进行实时语音或视频对话的开源库。主要使用了其中的语音引擎部分。Snowboy 是一款高度可定制的唤醒词检测引擎,可以用于实时嵌入式系统,并且始终监听(即使离线)。使用Snowboy 提供的关键词训练方法,在线训练了定制的关键词。DOA 部分使用了基于相位变换加权可控响应功率(SRP-PHAT:Steered Response Power-Phase Transform)[8]的声源定位算法,基于Xtensor、Xtl、OpenBLAS 等库实现。关键代码如下:

3 实验验证

本文使用ReSpeaker Core v2.0 作为实验平台。Re⁃Speaker Core v2.0 基于四核ARM Cortex A7 的Rock⁃chip RK3229,运行频率为1.5GHz,具有1GB RAM,集成六个麦克风阵列,如图3 所示。软件环境为Linux Debian-9。通过使用alsa-lib 库读取麦克风采集到的音频信号。采集到的音频信号如图4 所示。实验中,从麦克风阵列的mic1 方向说出“小贝小贝,天气”,重复两次。其中关键词为小贝小贝,指令词为天气。使用ReSpeaker 连接喇叭在同样的方向播放音乐。在偏移90°方向利用放音装置播放一段语音。在靠近时长约为6 秒,音频波形图见图4。

图3 ReSpeaker Core v2.0麦克风阵列板

图4 测试音频波形图

图4 中自上而下依次为:从麦克风采集到的数据6个通道中的一路数据;经过降噪以及回声消除之后的数据;经过关键词检测、声源定位以及波束形成处理后的音频数据。可以看到,经过降噪处理,数据的背景噪音得到了较好的抑制,同时对音频中干扰比较大的通过喇叭播放的音乐数据,基本以及过滤干净,主要留下发音人以及外界放音装置播放的一段语音。由于在最初的约200ms 时间,系统降噪功能需进行采样初始化,所以最初约200ms 时间并未得到有效的降噪处理,但这对系统整体功能,并无太大影响。

对比中间以及最下面的音频波形图,观察3 秒附近以及5 秒之后的数据,可以明显看到通过波束形成处理,将干扰源方向的数据进行了有效过滤,最后只剩下关注方向的音源数据。但是同时,经过波束成形处理之后,音频整体的增益有所下降,如果有必要,可以实时自动增益控制(AGC)的处理。

波形图中的第一段为关键词(约1 秒到2 秒间数据),在进行声源定位及波束形成前,音频数据并不输出,所以关键词部分的音频数据并不会通过调用接口传给上层应用。当语音活动检测以及关键词检测都有效之后,会进行声源定位以及波束形成的处理,同时将输出的数据发送到上层应用。所以在最后的音频数据中,是将首次进行关键词唤醒的音频去除了的。第二次关键词数据(约3.3 秒到4.3 秒间数据),由于系统未达到VAD 无效时间大于10 秒的条件,所以不会重启关键词识别功能,会利用上次关键词唤醒阶段获得的音源定位方向进行波束成形的处理。

需要指出的是,在实验中,如果偏移90°方向的放音装置播放的语音声音太大,或者在和关键词数据重合的时候,容易造成关键词识别无效。对于该问题可以通过进一步训练关键词识别库,提高关键词的识别能力,另外需要尽量加大音源与干扰源间的功率差来提高声源定位的精度。

4 结语

本文结合智能语音机器人对语音前端处理的功能需求,对语音前端处理系统做了系统设计,利用开源的库进行了实现。通过实现结果验证,系统的降噪、回声消除、声源定位以及波束形成等功能可以正常运行,该语音前端处理系统能满足语音机器人的基本要求。由于整个系统都是使用C 及C++语言实现,对于基于嵌入式ARM 系统来实现智能语义对话机器人的实现,具有重要意义。

猜你喜欢

声源音源波束
虚拟声源定位的等效源近场声全息算法
基于时空特征融合的水下目标波束形成方法
一种基于麦克风阵列用于分离单极子和偶极子声源的方法
5G网络扫描波束规划方案探讨
60 GHz无线通信系统中临近波束搜索算法研究
室内声音导航系统
均匀线阵阵元缺损对波束方向图影响的分析
双耳效应