基于NodeMCU的医疗语音呼叫系统设计

2019-07-23 09:27芳,何勇,晏
计算机技术与发展 2019年7期
关键词:终端语音无线

杨 芳,何 勇,晏 平

(贵州大学 计算机科学与技术学院,贵州 贵阳 550025)

0 引 言

随着国内的医疗卫生体制改革及信息化建设的不断深入和医疗事业的飞速发展,人们对于健康的需求日趋加大,同时也期望医疗服务的水平能变得更加便捷和完善。随着信息化进程深入到医院并快速发展,如今,电子病历、护理呼叫系统、网上预约挂号等现代化服务已经在提高医院工作效率、完善医疗服务、节约医疗成本等方面发挥出巨大的作用[1]。

但是,医院呼叫系统的发展却没有真正的实现其信息化,目前医院普遍使用的呼叫系统均是有线的通讯方式,一般分为单/多总线呼叫系统、基于CAN总线呼叫系统等,因此,在通讯线路的选择、现场布线施工、系统更换等方面都出现了非常多的问题[2]。目前的呼叫模式为按键模式和语音对讲模式,当病人需要医护人员帮助时,按键模式下会使得医护人员需要当面与病人沟通后才能了解病人需求再进行后续一系列的处理,沟通会变得非常繁琐。而在语音对讲模式下,医护人员在繁忙的状态下就无法进行应答,这就增加了沟通成本。因此呼叫系统作为连接医护人员和病人的信息桥梁,须从传统的工作方式中解脱出来,提高其智能化、信息化以适应如今快速发展的医疗行业。

文中将语音控制技术、无线通讯方式等现代化技术引入到医疗呼叫系统中,使得医护人员和病人之间的沟通不再繁琐,变得更加智能化,同时省去了布线施工的成本。在物联网技术飞速发展的今天,无线通讯技术才是舞台上的主角,如WiFi、蓝牙、ZigBee等[3],这些无线通信技术都应用广泛且各有所长,在不同的应用场景中发挥着各自的作用和优势。其中WiFi也在无线通信这个大舞台上大放异彩,但是其功耗问题一直受到诟病,而NodeMCU将能有效改善这一缺陷,并在满足物联网设备所需要的各个功能的同时降低其功耗。因此,文中基于NodeMCU设计了一款医疗语音呼叫系统。

1 总体设计

设计的语音呼叫系统的总体结构如图1所示。

图1 系统总体结构

首先由病房语音终端采集语音信号,存储至本地语音库进行识别,获得匹配到的语音信息后,通过自定义通讯协议将语音数据封装发送到NodeMCU,经NodeMCU解析处理之后将语音信息发送到显示终端的医护服务台的显示屏和移动端。这种方式可以直接显示病人的需求,相较于传统的按铃方式,省去了医护人员和病人的沟通之后来回取药品等的繁琐过程。同时当服务台收到病房请求之后可以及时地发送回复信息到病房,病人可以得到及时的反馈。

2 系统硬件设计

文中采用的NodeMCU是一个开源的物联网平台,可使用的编程语言是Lua,因此也可说该平台是基于eLua的一种开源项目,底层使用ESP8266 sdk 0.9.5版本[4]。NodeMCU能够连接外围设备,因为其包含USB接口、扩展接口和串口,并且这些接口在驱动时都是使用的非阻塞的事件驱动,所以使用时不仅方便,而且在降低功耗方面有很大的优势,在实时物联网的应用中也具有一定的优势。NodeMCU是以集成了WiFi的ESP8266片上系统为核心,不需要外接WiFi就可实现无线通信,且由于内部继承了稳定的优化算法,在功耗、体积以及成本方面都具有极大的优势。该系统还设计了语音终端采集病人的呼叫请求,并在显示端进行显示和处理。硬件总体设计如图2所示。

图2 硬件总体设计

2.1 语音终端模块

语音终端模块采用LD3320语音识别芯片[5],该芯片识别率较高且不需要事先训练和录音来进行非特定人的语音识别[6]。此外,电路设计大大简化,不需要外接Flash和RAM,内部集成了可实现语音控制和识别以及人机交互功能的稳定的优化算法。经过测试,该算法的识别率可达到95%左右。

该语音模块采用的ASR技术[7]是只注重语音数据特征的非特定人语音识别技术,即识别时不关心是谁发出的命令,他的年龄和性别,只要使用的是普通话,都可识别。识别的原理是通过转换然后匹配选取最优的结果。首先,使用数学模型进行建模,然后将收集到的语音数据进行频谱转换,转换为语音特征并提取出来,根据特征生成语音关键词列表,最后选取最优的结果进行输出即可。一般使用LD3320在识别时可以产生4种结果:分别为匹配结果1、匹配结果2、匹配结果3、匹配结果4。将四种匹配结果进行筛选和比对,选取其中最优的且出现次数最多的一个,即为需要的最优结果。该芯片的识别容量为1至50个关键词,每条语音数据的长度不超过10个中文汉字或者不超过79个字节的汉语拼音,当然必须为普通话。为了区别每个字,中间采用空格符作为分隔符,例如换药的转换是:“huan yao”。

语音识别芯片[8]的工作流程是:首先对经过MIC输入的声音流进行频谱分析,接着对语音进行特征提取,然后匹配关键词语列表中的关键词语,并从此关键字列表中匹配得分最高的关键词语作为最终语音识别的结果输出。

2.2 无线通讯模块

文中采用集成WiFi的NodeMCU低功耗平台设计方案,实现物联网设备无线通信低功耗的目标。该模块的Node MCU固件平台采用WiFi SoC ESP8266[9]作为核心,ESP8266是一款超低功耗的UART-WiFi透传模块[10],在这个模块中自身包含可以实现串口和WiFi转换的TCP/IP协议栈。而且模块具有丰富的可实现串口透传的硬件接口,同时可支持PWM调控以及GPIO的控制。在每次启动、复位和唤醒时,GPIO15必须保持低电平,GPIO2必须保持高电平;当GPIO0为高电平时表示处于RUN模式,低电平时表示处于FLASH模式;当需要设置为睡眠模式时,GPIO16和RST需连接在一起,GPIO16将输出低电平去重置系统的唤醒时间[11]。

无线模块在通信时不需要连接外围无线设备,也不需要连接WiFi,原理是通过智能连接技术空中抓包获取无线路由器的ID和password,自动连接路由器并发送数据至硬件部分无线模块。

无线WiFi通信模块ESP8266的工作模式有三种:(1)接入点(Access Point)模式,也可称为AP模式,该模式下允许其他的无线设备接入,提供无线的数据访问服务,一般使用的无线路由和无线网卡即工作在这种模式之下,每一个接入点是被允许互连的,可以把家里使用的无线路由器就作为其中的一个接入点;(2)客户端(Station)模式,也可称为STA模式,这种模式是不接受无线的接入的,和无线终端类似,但是可以连接到接入的AP;(3)接入点+客户端模式,即同时使用AP和STA这两种模式,在该系统中,需要同时发送语音数据,又需要接收服务台的回复消息,因此该系统主要采用的就是这种工作模式。系统主要使用ESP8266无线模块的通信处理函数模块,以此为载体来构建NodeMCU平台,并构建无线通信模块中的WiFi路由的功能,并构建云平台的服务器的数据通信功能。将这些数据链路构建完成之后,就可将ESP8266中的WiFi无线通信模块与路由器进行连接,这样就可实现该系统通过云平台服务器进行远程通信的功能。

2.3 电源模块

电源模块使用SPX3819M5-L-3-3这种噪声低的线性稳压电源,它的优势是线路简单。电源SPX3819M5-L-3-3的额定工作电流为500 mA,可满足NodeMCU启动时对瞬间电流的要求。

2.4 显示终端模块

显示终端模块使用的是NT35510进行驱动的TFT-LCD液晶屏,其主要是采用IIC总线协议方式实现。显示端模块中存储的部分采用SD卡实现,采用SPI总线协议。显示终端还可包含移动端显示,即可使用手机、平板等便携式设备进行呼叫信息显示和处理。

3 软件设计

3.1 语音模块软件设计

语音终端软件设计的核心是语音识别程序设计,在该模块的软件设计部分整个程序主要从以下流程进行实现。首先对芯片进行一系列的通用初始化,主要包括复位、工作模式的设定、设定使用的时钟频率、设定FIFO等相关的初始化操作;完成初始化之后进行LD3320语音识别芯片[12]的工作检查,确认芯片可以进行后续的正常工作。当用户需要进行语音呼叫时按下唤醒按键或者唤醒语音,然后进入语音录入模式,当结束语音的录入之后,将该语音片段写入关键词识别列表。LD3320芯片在写入识别列表的规则是需要一个特定的编号对应一个识别的条目,编号的数量不能超过50个,该编号的数值须小于256且不需要连续,每一个识别的条目为标准的普通话均转换成小写汉语拼音,字与字之间用空格进行分隔。接下来进行语音识别的工作,因为需要等待语音识别的结果,所以此时需要打开中断。当收到回复的反馈信息,将该信息发送到语音终端,最后将该条内容通过语音终端播放并同时显示用户呼叫的内容。

流程如图3所示。

图3 语音识别流程

3.2 通讯协议

语音终端与NodeMCU通信的数据帧采用自定义的通信协议,主要由帧头、帧长、数据、校验和帧尾五个部分构成,其中每个部分的定义和占用字节数可根据实际使用来自定义。该系统将帧头定义为0x0A,可占用长度为1 Byte;帧尾定义为0x2A,可占用长度为1 Byte;校验和占一个字节,将有效数据相加取余;帧长为数据的有效长度,可占用长度为1 Byte;数据可占用长度为3~256 Byte。

采用以下的帧格式:

帧头(Header)+帧长(Length)+数据(Date)+校验和(FCS(Check))、帧尾(Footer)

3.3 无线通讯模块软件设计

系统在无线通信时可以生成一个包含寻找到的无线局域网的列表,选中列表中包含的模块便可直接进行连接,采用的控制协议是TCP可靠协议[13],发出或接收的所有指令都将以GET和POST函数传送给嵌入在NodeMCU中的无线模块。该模块也是基于TCP协议的HTTP服务,那么模块在接收到指令请求之后就会对该指令进行解析,此时需调用解析器解析出具体的指令含义,在完成解析之后,可根据解析出来的结果进行一系列操作,同时将返回执行的结果。系统中使用Lua脚本语言编写WiFi的路由连接程序以实现ESP8266无线通信模块与无线路由的连接,该程序中的实现首先需要设置WiFi的工作模式,由于系统使用的是STA+AP的工作模式,那么需要设置station模式中所需要的ssid和password,以及设置开启定时器并进行在station模式下打开AP模式,同意路由的AP连接,当连接WiFi路由成功后,便可直接从路由中获取客户端的IP地址,以此进行无线通信。

具体通信流程如图4所示[14]。

图4 无线连接流程

3.4 显示终端软件设计

显示端主要包括病人呼叫信息的显示和信息报警提示,首先进行初始化和启动NodeMCU无线接收模式,将识别后的语音信息解析完成发送到显示端,显示端就会发出报警提示音并在显示屏上将语音内容显示出来,医护人员看到呼叫信息后确认处理,NodeMCU再将处理回复返回到呼叫端。

4 系统测试

系统测试时主要采用两种方式来进行语音终端的唤醒,一种是按键唤醒的方式,另一种是特定语音唤醒的方式。通过测试,特定语音唤醒方式由于容易受到环境的影响,识别率较低,且误识别情况发生较频繁,因此在该系统中主要采用按键触发的方式,并针对该方式下的识别率进行了测试。测试环境为1~10 m的范围内,每间隔1 m对语音终端发出50~100次的语音请求,具体的测试数据如图5所示。通过本次测试可以得出,可将麦克风灵敏度设置为18、麦克风增益设置为21,系统的语音前端在1~5 m时语音识别率较高。

图5 语音识别率测试结果

通过测试NodeMCU,无线通信模块通信稳定,传输数据至云端发送时延低,错误率低,能很好地满足系统功能需求。

在测试信号强度和丢包率时使用的是Smart RF Studio软件,分别对系统的每个节点的这两个测试项进行了测试,将接收与发送节点之间的信道设置为0X0B,它们之间的频率设置为2 430 Hz,测试环境分别为有、无障碍,其中无障碍环境下节点相距1 m和5 m,有障碍环境设置为穿墙障碍节点相距12 m,测试出信号强度的结果如图6所示。

图6 信号强度测试结果

5 结束语

文中设计的无线语音呼叫系统,使用WiFi无线通讯与语音呼叫相结合的方式,区别于传统呼叫系统单一的控制方式,改善了当前有线呼叫系统的局限性,大大简化了医护人员和病人之间的沟通过程,同时针对语音识别芯片解决了外部存储器数据修改困难的问题,并突破了WiFi通讯方式存在的功耗问题。从测试和使用情况上看,该系统运行稳定,性能良好,具有不错的市场前景和应用价值。

猜你喜欢
终端语音无线
从电话到自媒体终端——信息的力量
复杂线束在双BCI耦合下的终端响应机理
大师操刀,通勤首选 KEF Mu3真无线降噪耳机
《无线互联科技》征稿词(2021)
X美术馆首届三年展:“终端〉_How Do We Begin?”
魔力语音
基于MQ3与MP3的价廉物美的酒驾语音提醒器
无线追踪3
数字滤波在语音信号降噪中的应用
对方正在输入……