基于声纹识别的可分配权限智能家居终端设计

2021-08-26 03:29郭子芊陈江涛麦伟健刘佐濂
物联网技术 2021年8期
关键词:声纹识别树莓家居

郭子芊,陈江涛,麦伟健,刘佐濂

(广州大学 电子与通信工程学院,广东 广州 510006)

0 引 言

随着现代科技的不断发展,人们对家居控制的需求不断提高,因此智能家居终端走进大众视野[1]。但是,传统的智能家居终端并没有依据特定使用者提供不同的个性化设置,在造成隐私问题的同时,也会破坏家居终端的使用体验。针对这一现象,本文研究并设计了一种基于声纹识别的可分配权限智能家居终端。该终端以树莓派为开发平台,用户只要录入语音信息,终端就能获取该声音的特征,生成特征数据。管理者可以对录入语音的用户进行权限的分配,每当有人对终端下达语音指令,终端就将输入的声音特征与数据库中的特征数据进行比较,根据身份对使用者开放不同等级的权限。最终判断是否执行说话者的指令,从而保护了用户的人身安全与家庭安全。

1 系统总体设计

本智能家居终端包括各种用户交互界面、树莓派终端管理、服务器的声纹识别算法、百度智能云实时语音识别和各种家居设备。其总体架构如图1所示。

图1 系统总体架构

本智能家居终端运用语音活性检测技术来区别语音与噪声,确保仅对语音信号进行处理。实际操作时,用户先使用唤醒词对终端进行离线唤醒,然后终端将会录下用户发出的操控家居的语音命令。随后,终端会通过调用语音识别API对用户的语音命令进行识别,获取命令信息。同时,终端还将录下的语音信息上传至服务器进行声纹识别,提取特征信息以确定用户身份。最后,终端将结合命令信息和用户身份,判断该用户是否有权限操控对应的家居,若有权限,终端会对ESP8266(WiFi模块)发出相关信号,从而控制家居;若无权限,终端将不对命令做出反应。

2 硬件设计

本智能家居终端组成结构包括树莓派、Respeaker麦克风模块、电容触摸屏、扬声器模块和ESP8266模块。其硬件模块结构如图2所示。

图2 硬件模块结构

2.1 树莓派

本智能家居终端采用树莓派作为核心控制模块,具有适配多种深度学习框架的作用,功能齐全,模块种类众多,并且功耗不高,运算速度适中[2]。树莓派用于进行与电容触摸屏UI交互、接收麦克风的音频输入数据、向扬声器输出音频数据、控制ESP8266等处理。此外,树莓派还作为软件平台,完成对语音信号的处理以及分配权限。

2.2 Respeaker麦克风模块

本智能家居终端采用Respeaker麦克风模块作为音频输入方式,Respeaker麦克风连接树莓派的1~40号引脚。录下的音频文件将保存在树莓派本地,为后续的语音识别、声纹识别做准备。Respeaker麦克风模块相比普通的USB麦克风具有降噪效果好、收音距离远、拾音效果好等特点。

2.3 电容触摸屏

本智能家居终端采用电容触摸屏作为用户图形交互界面的媒介,电容触摸屏利用FPC线与树莓派的DISPLAY端口相连,以获取图像信号。图形交互界面使用Python标准GUI库Tkinter进行开发,用户可通过图形交互界面进行录音、设置家居使用权限等操作,电容触摸屏接收到的信息将会传输给树莓派进行相应处理。

2.4 扬声器

本智能家居终端采用扬声器作为音频放大输出设备。扬声器有2个接线端口,一端连接树莓派的3.5 mm音频输出接口,获取树莓派输出的音频信号,另一端连接树莓派的USB端口为扬声器供电。

2.5 ESP8266

本智能家居终端采用ESP-12F WiFi模块与家居设备进行通信。该模块核心处理器ESP8266在较小尺寸封装中集成了业界领先的Tensilica L106超低功耗32位微型MCU,带有16位精简模式,支持标准的 IEEE 802.11 b/g/n 协议和完整的TCP/IP协议栈,可以使用该模块为现有的设备添加联网功能[3]。当ESP8266模块上电并接入预先设定的局域网后,通过串口反馈当前的IP信息。树莓派可以通过访问IP加上预先编写的命令来控制相关引脚的状态,从而控制智能家居的开关状态。

3 软件设计

本智能家居终端软件组成包括语音活性检测、离线唤醒、语音识别和声纹识别。其软件流程如图3所示。

图3 软件流程

3.1 语音活性检测

在实际使用中,对所有的语音信号进行实时处理显然不合理。因此,为了节省硬件软件资源,需要对语音信号进行活性检测,以确保输入检测的语音信号都是有用信息。当前实现VAD的方法有许多,最简单的为帧幅度,帧幅度的计算方法简单,但如果背景声音较大,则会对效果造成的影响较大。还有帧能量、短时过零率分析或能量检测与滑动窗口结合的方法,并且随着近几年人工智能的火热发展,神经网络的方法也开始出现[4]。

以上几种方法中,神经网络能够带来的效果最好,但是一来在智能家居终端上进行大量的计算时速度缓慢,二来如果选择上传到云端,则浪费了终端自身的计算资源。因此,本项目中采用短时能量以及短时过零率结合双门限的方法。短时能量计算简单,对声音具有较高的对比度,并且短时过零率在没有噪声的位置表现良好,集合两者优点以及双门限的约束特性,不仅能够减少错误率,还能降低计算资源的耗费[5-6]。

3.1.1 语音数据预处理

(1)直流去除。如果需要对语音进行频谱分析,直流的频谱泄露会严重影响低频谱的分析,并且直流一般不随时间变化,不反应信号的趋向性。

(2)加窗处理。为后续的傅里叶变化做准备,使得全局更加连续,避免出现吉布斯效应,并且使得没有周期性的语音信号呈现出周期函数的部分特征。

在这里采用Hammiing窗进行加窗,Hamming的定义如下:

3.1.2 VAD实现

(1) 通 过 提 取 Short Time Energy(STE) 和 Cross Counter(ZCC)与设定阈值对比,从而判断是否为语音信号。

(2)将语音信号分帧时取一帧20 ms,此处输入信号采样率为8 kHz。因此,每一帧长度为160 Samples。然后,计算帧内信号的平方和,得到STE。

(3)同样将步骤(2)中的信号帧内所有Samples平移1,再对应点做乘积,符号为负的说明此处过零,只需将帧内所有负数乘积数目求出,就得到该帧的过零率(ZCC)。

(4)通过训练数据得到2个特征的门限。

(5)分别对短时能量与过零率设置2个门限值,计算每一帧的短时能量与过零率,只有当短时能量与过零率均超过门限值时才判定语音开始。

3.2 离线唤醒

离线唤醒是语音交互的重要入口,主要的难点在于能否平衡快速并且准确地识别与低功耗要求之间的矛盾,此外,离线唤醒的实时性要求唤醒系统需要一直处于运行中。例如专门为行动不便者设计的穿戴类智能设备,这类产品的要点就是需要平衡快速高效的响应和智能设备要求的低功耗与高效之间的平衡。而本智能家居终端为USB供电产品,非电池供电类产品,因此可在牺牲一定功耗的基础上提升离线唤醒词的效率。本智能家居终端使用开源的唤醒词检测引擎Snowboy,并且Snowboy支持自定义唤醒词,可对用户设定的训练词进行模型训练,达到快速准确唤醒的效果。Snowboy具有不需要连接网络、耗费资源少、高度可定制等优点[7]。

构建唤醒词的流程如下:

(1)在终端上录制3份唤醒词的录音。

(2)上传到Snowboy官网进行训练,并按需求调整灵敏度。

(3)将训练好的唤醒词模型下载到终端上。

例如:需要在树莓派终端上构建关键词“小白”,首先在树莓派上安装好Snowboy的相关依赖后,使用make命令编译安装Snowboy。然后在该终端上录制3次关键词“小白”,录制时需要处于相对安静的环境,录制文件保存为wav文件。最后登录Snowboy官网,将3个录音文件上传并等待训练完毕,在该终端上进行测试并根据实际情况调整灵敏度,然后将训练好的pmdl模型文件下载到终端中,并替换原来的模型。至此,唤醒词已被更改为“小白”。

3.3 语音识别

在实际使用中,需要将用户输入的语音命令转换为文字,然后提取关键词,智能家居终端才能匹配到相应的指令[8]。因此,需要做到快速准确地识别和转换用户的语音指令。

本智能家居终端实现语音识别流程如下:

(1)在终端被唤醒时,进行声音录制,使用VAD减少需要处理的声音数据。

(2)对声音进行噪声去除。

(3)调用百度智能云的快速语音识别端口,上传录音数据,并接收返回结果。

(4)判断是否有命令词在返回结果中,并执行指令。

例如:在用“小白”唤醒词唤醒智能终端,终端发出响应音后,终端开始录音。说出命令“开客厅灯”,终端将录音数据进行VAD与降噪处理,上传到百度云语音识别API端口,并接收返回结果,得到语音识别返回结果“开客厅灯”,查询功能插件“灯”,并查询到“开”“客厅”两个关键词。

3.4 声纹识别

为实现判断不同的说话人,需要对声音进行身份识别。考虑到安全性以及识别速度,本智能家居终端使用梅尔倒谱系数(MFCC)对语音信息进行特征提取。由于MFCC与线性的倒谱分析相比,突出优点是不依赖语音产生模型,即能够更好地提取与文本无关的声纹特征,更加符合本智能家居终端不受特定命令约束,从而实现进行声纹识别的需求[9]。终端在进行特征提取后再根据相关的特征匹配算法对数据库里的身份进行匹配验证。

特征提取就是要尽可能取出或减少语音信号中与识别无关的信息的影响,减少后续识别阶段需要处理的数据量,并且从语音信号中提取能够表征人的基本特征之外,该特征必须能够有效地区分不同的说话人,且对相同说话人的变化保持相对稳定[10]。

语音特征参数(MFCC)提取过程包括:

(1)预加重。将语音信号通过一个高通滤波器,用于减少语音信号中与识别无关的信息,减少后续识别阶段的数据量,通过提升高频部分,信号的频谱变得平坦。同时,消除发声过程中嘴唇和声带的影响,补偿语音信号受到发音系统所抑制的高频部分。

(2)分帧。先将256个采样点集合成一个观测单位,称为帧。由于傅里叶变换要求的输入是平稳的,通过帧处理,声音信号变为一帧一帧的平稳信号,从而在进行傅里叶变换时得到各个频率成分的分布。

(3)加窗。将每一帧乘以汉明窗,增加帧左端和右端的连续性,减少吉布斯效应,使得全局更为连续。

(4)快速傅里叶变换。每一帧经过快速傅里叶变换,得到在频谱上的能量分布。

语音信号的DFT可由以下公式得到:

能量分布公式为:

包含噪声的语音信号的频谱如图4所示。

图4 包含噪声的语音信号的频谱

(5)三角带通滤波。其可以使频谱平滑化,消除谐波的作用,突显语音的共振峰,并且降低运算量。

(6)离散余弦变换(DCT)。计算每个滤波器组输出的对数能量,然后代入离散余弦变换,求出L阶的Mel-scale Cepstrum参数。

线性频率转换到MFCC公式:

(7)动态查分参数的提取。标准的倒谱参数MFCC只反映了语音参数的静态特性,语音的动态特性可以用这些静态特征的差分谱来描述。语音特征提取效果图如图5所示。

图5 语音特征提取效果图

本智能家居终端实现声纹识别流程如下:

(1)终端被唤醒时,进行声音录制,使用VAD减少需要处理的声音数据。

(2)对声音进行噪声去除。

(3)调用服务器的声纹识别端口,上传录音数据,并接收返回结果。

(4)判断是否为声纹识别库中已录入身份,并判断该人物身份是否有权限执行该指令。

4 系统测试

本文利用2个不同权限的用户对智能家居终端进行测试,测试结果见表1所列。

表1 测试结果

5 结 语

本文使用声纹识别技术开发了一种可分配家居使用权限的智能家居终端。用户可以通过终端录入语音信息,提取声纹特征信息,然后为不同的声纹特征信息分配家居的控制权限,只有拥有该家居使用权限的其他用户才能通过语音操控家居。经过实际测试,本智能家居终端功能符合要求,对智能家居使用安全有重要意义。

猜你喜欢
声纹识别树莓家居
打造日常家居“氛围感”
基于树莓派的骑行智能头盔设计
声纹识别中的区分性训练
基于树莓派的远程家居控制系统的设计
基于i—vector声纹识别上课点名系统的设计与实现
面向移动终端的语音签到系统
响应面法优化红树莓酒发酵工艺
欧盟:速冻树莓比鲜食树莓市场更好
《数码家居》2009年下半年推荐榜