单成桐,唐渊,欧阳洪波,郭庆堃,邹博胜,刘文涛,吴琼发
(湖南工业大学电气与信息工程学院,湖南株洲,412000)
智能备忘录以STM32 为核心,对其他各模块进行控制,手机传输语音到服务器,服务器提供语音解析和关键字存贮。最后实现智能备忘录在脱离手机的情况下,能够给使用者进行事项提醒的功能。
该系统由STM32、蓝牙传输模块、震动马达、显示模块、双麦克风阵列模块和LED 模块构成。用户可对智能备忘录进行语音输入,在设备与手机通过蓝牙连接后,将语音传输给手机,再由手机将语音上传服务器解析,最后将解析结果通过手机与智能备忘录进行交互,由STM32 对返回的参数进行判断后,控制马达、显示器、功放对用户进行提醒。
硬件部分的连接组成如图1 所示。
图1 单片机控制系统
2.1.1 麦克风阵列模块
语音采集模块采用麦克风双阵列。能更好地实现声音的定位、录入,以及智能唤醒功。麦克风单元在小空间中进行有规则的排列即可形成麦克风阵列,在噪声环境下有良好的信号采集性,具有对远场干扰噪声很强的抑制作用,因此把它应用于强噪声环境。
2.1.2 BL04 蓝牙传输模块
蓝牙双模包含经典蓝牙和低功耗蓝牙两个部分。经典蓝牙与低功耗蓝牙的结合即可实现快速连接与断开连接、音频的传输、高链接范围,并且所有连接使用高级低耗电监听模式,从而实现超低工作周期、低功耗、高稳定性、智能化的控制、强大的网络安全。
2.1.3 其他常见模块
考虑到载体的集成度,单片机采用STM32F4 系列,主要实现输入信息数据的分析和处理,并输出相应的指令,实现多模块指令协调与多模块控制。显示模块采用OLED 屏,通过I2C 协议与STM32 进行连接,实现关键字的显示。震动马达采用微型贴片震动马达BRE-3728,LED 模块采用贴片LED。
2.2.1 麦克风模块
麦克风双阵列算法应用于语音采集模块。
麦克风阵列组合成的麦克风,拥有形成“波束”的强指向特性。经由特殊电路或程序算法软件可以控制麦克风阵列的波束,使其指向声源方向,获得对采集目标的采集增强效果。处理后的指向性波束能精确形成一个锥状窄波束,在接受说话人的声音同时抑制环境中的噪音与干扰。
当我们把一对麦克风同步采集到的信号进行互相关联,寻找互相关信号的最大值时,若两信号之间延时为τ,将此值乘以声波传播速度C0 可以得到这对麦克风的相对位置间距,如公式1 所示。
测量一对麦克风同步采集信号相位差ΔΦ,根据频率和声传播速度可知一对麦克风的位置间隔,如公式2 所示。
公式中d 是阵列中两个麦克风元件的间距。宽边麦克风阵列是指一系列麦克风的排列方向与要拾取的声波方向垂直。
经过计算及试验验证,相位法分析麦克风相对位置差的精度要比互相关法分析的精度高。
2.2.2 蓝牙模块
蓝牙的核心协议由基带,链路管理,逻辑链路控制与适应协议和服务搜索协议等4 部分组成。基带层与射频层一起构成蓝牙的物理层,作为一个链接控制器,描述了基带链路控制器的数字信号处理规范,并与链路管理器协同工作,负责执行像连接建立和功率控制等链路层。蓝牙数据传输通过数据分组来防止数据丢失和传输拥堵。还通过白化和纠错,来确保分组包数据正确传输。
2.2.3 其他硬件模块
其他硬件模块包括STM32 模块、OLED 显示模块、微型贴片震动马达BRE-3728、贴片LED。
STM32 作为核心控制器,通过USART 连接蓝牙模块,通过I2C 连接OLED 显示模块。STM32 通过高低电平控制马达和贴片LED。
OLED 显示模块为自发光材料制作,为一种固态半导体设备。当来自阴极的电子冲击发光层的聚芴聚合物时,聚合物发光,OLED 开始显示。
震动马达和贴片LED 作为提示模块,当接通电源后,马达震动,LED 常亮,起到提示作用。
软件设计泳道图如图2 所示。
图2 软件设计泳道图
3.2 语音识别
整体语音识别采用百度语音识别,通过在官网注册成为百度开发者,创建应用,得到API Key 和 Secret Key,然后开通语音识别服务。中文分词系统采用NLPIR 系统。中文分词简单理解就是使用空格或其它边界标记把中文文本中的词和词之间分隔开。NLPIR 是中国科学院计算技术研究研制出的汉语词法分析系统,该系统采用基于HMM的层叠隐马尔可夫模型(cascaded hidden Markov model,CHMM)将中文分词、词性标注、歧义切分以及未登录词识别等功能集成到一个理论模型中。
图3 基于CHMM的汉语词分框架
关键词通过TextRank 算法提取。TextRank 算法基本思想来源于谷歌的PageRank 算法,其一般模型可以表示为一个有向有权图G=(V,E),由点集合V 和边集合E 组成,E 是V×V的子集。图中任两点Vi,Vj 之间边的权重为Wji,对于一个给定的点Vi,In(Vi)为指向该点的点集合,Out(Vi)为点Vi 指向的点集合。点Vi的得分定义如下:
其中,d 为阻尼系数,d ∈[0,1],表示从图中某一特定点都有 1-d的概率指向其他任意点。
简单来说,TextRank 算法的取词方式,就是将一段已知文本进行分割,再从中抽取若干有义词语。然后根据共现关系对后续的词语进行排序,从文本中进行抽取词语,以其作为顶点,进行一个随机游走。最后根据词语的投票得分高低,筛选出应得到的关键词。其步骤如下:
通过接口获取的录音集合文本T,分割成完整的句子,即:
对于每个句子Qi ∈T,先对文本进行分词、确定词性,剩下指定词性的单词作为关键词的候选词,即:
其中Wi,j ∈Qj 则是保留后的候选关键词,构建候选关键词图G=(V,E),其中V 为节点集,生成的候选关键词组成,由共现关系构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,直至收敛。倒序排序各节点权重,得到最重要的T个单词便是关键词提取的结果。
根据词库已识别的关键词,再通过自定义,即可实现自定义词库的关键词提取,筛选出相关度最高的样本。其算法概念和步骤已在上文进行了阐述。
最终在app 中只显示关键字作为备忘录。
APP的集成开发环境为Android Studio3.0,数据库采用SQLite 数据库,使用Java 语言和C 语言进行编码。备忘录采用模块化设计,由新建备忘界面、查看备忘界面、单独备忘界面等界面构成,其中查看界面由ListView 视图构建,其主要功能有新建、查看、修改、删除、个性化设置等功能。
APP 端功能简介如图4 所示。
图4 app 端功能简介
图5 各模块的连接原理图
智能备忘录可获取用户的语音输入,当连接到Android时,在Android 端存储为本地文件。由Android 向服务器发送语音识别请求。服务器对语义、关键字等解析完成后,获得时间、地点、事件等关键字,传回Android 端。Android端在自身APP 显示的同时,可通过蓝牙更改智能备忘录中的参数,以此设定智能备忘录的提醒时间以及关键字显示。
至此,用户可在智能备忘录单机工作的情况下,在设定时间获得提醒,得到提取到的关键字信息。
图6 硬件运行测试结果
硬件部分,STM32 在通过蓝牙与Android 连接后,获得时间、地点、日期、关键字等重要数据,通过贴片LED 亮灯提示,震动马达震动提示,并且在OLED 屏上显示获取的关键字。
软件部分,智能备忘录与Android 建立蓝牙连接后,语音输入可获得文本形式的输入内容,并且自动提取关键字添加到行程安排,可新建、删改、可查看、可第三方分享。
本文对智能化语音识别系统进行研究,基于语音识别、提取技术,通过NLPIR 系统、TextRank 算法,由STM32 系列单片机、蓝牙模组、麦克风阵列等设备,提取关键字进行智能化的语音转文本处理;基于已普及的移动端Android系统,通过硬件设备、APP、应用服务器的结合设计出可以语音识别的智能备忘录。在对象输入语音时,可判断对象语义并自动添加行程安排或备忘录,设备可以单机工作,在不方便携带手机的时候,获得提醒,不会错过重要行程。
图7 软件运行测试结果