基于语音识别的手机点菜系统的研究与设计

2017-08-08 05:42:17薛辉
微型电脑应用 2017年7期
关键词:鱼香肉丝菜名点菜

薛辉

(商洛学院 教务处,商洛 726000)



基于语音识别的手机点菜系统的研究与设计

薛辉

(商洛学院 教务处,商洛 726000)

为了实现语音点菜,研究了应用语音识别技术进行手机点菜的关键技术,包括语音识别技术的选取、语音点菜的流程、BNF语法的编写以及识别结果检测,并设计了一个手机点菜系统进行验证,测试结果表明该系统识别准确率高、使用方便。

语音识别; 手机; 点菜; 系统

0 引言

近几年,随着智能手机的逐渐普及,手机上的应用越来越多,各种APP极大的丰富了手机的功能,手机已经不仅仅是通讯工具,还逐渐变成了不可或缺的生活用品,在许多方面为人们的生活提供便利。手机点菜也已经成为餐饮行业的发展趋势[1],正以其投入少、回报快、效率高等优势被餐饮界认可[2]。如果能通过语音点菜,就能提供更加良好的用户体验,进一步方便客户,并有效提高餐饮企业形象。

1 语音识别技术简介

语音识别技术是人工智能的重要分支,Google、微软、百度等公司都投入大量的资金和大批优秀的科研人员进行深入的研究。科大讯飞经过多年的积累,语音技术达到了国际领先的水平[3],同时与学术界、产业界合作,共同打造以语音为核心的科大讯飞语音开放平台。讯飞开放平台作为一个综合性的智能人机交互平台,提供世界领先的语音合成、语音识别、语义理解等技术[4],本文应用科大讯飞的语音识别技术实现手机点菜系统的开发。

2 基于语音识别技术的手机点菜

2.1 语音识别技术的选取

讯飞语音技术提供了语音听写、命令词识别、语义理解3种不同的语音识别技术[5],其中语音听写是将一段语音转换成文字内容,能识别常见的词汇、语句、语气并自动断句;命令词识别是指基于指定的语法结构,识别特定的命令词、关键词以及短语组合,来判断用户是否下达了某项命令;语义理解是分析用户语音或文字的意图,给出相应的回答,比如输入“明天西安的天气”,即搜索西安第二天的天气信息并返回给用户。

对于点菜来说,关键是准确识别用户说出的菜名。在以上3种语音识别技术中,命令词识别可以精准识别自定义的词语,可以把不同的菜名看作不同的命令词,从而确定用户点选的菜品,所以选用命令词识别比较合适。命令词识别根据联网状态不同,又分为在线命令词识别和离线命令词识别。离线命令词识别核心计算在本地,减少了网络交互的时间,比在线命令词识别响应快,准确率也相差无几,可以提供更佳的用户体验,所以选用离线命令词识别技术最为合适。

2.2 语音点菜的流程

要使用讯飞语音技术开发手机语音识别系统,先要将SDK中libs目录下的Msc.jar文件和armeabi文件夹复制到Android工程的libs目录中,然后在AndroidManifest.xml文件中添加需要的权限。语音点菜的流程如图1所示。

(1)初始化:初始化即创建语音配置对象,只有创建了语音配置对象才可以使用讯飞语音技术的各项服务。一般需要将初始化放在程序的入口处,比如Activity的onCreate方法里。

图1 语音点菜流程

(2)构建语法:语音识别的语法定义了语音识别所支持的命令词的集合,高效合理的语法是准确进行语音识别的关键。

(3)语音输入:客户依次说出需要点选的菜名和份数,可以只说菜名,也可以说完整的或关键部分的自然语言。

(4)语音识别:调用讯飞语音离线命令词识别技术,基于构建的语法对命令词进行识别,这里的命令词包括菜名、份数和一些辅助词语。

(5)结果检测:检测识别的结果是否正确,如果正确即把所点的菜品加入客户菜单,如果不正确取消该菜品。

(6)继续点菜:客户如果需要继续点菜,接着说出下一句点菜的语句即可。

2.3 BNF语法编写

语音识别的语法定义了语音识别所支持的命令词的集合,讯飞离线命令词识别技术使用巴科斯范式(BNF)描述语音识别的语法。语法文档被编译成识别网络后,将被送往语音识别器。语音识别器提取输入语音的特征信息并在识别网络上进行路径匹配,最终识别出用户说话的内容。因此语法结构是否合理,直接关系到识别的准确率高低,构建高效合理的语法是开发语音识别系统的核心内容。本系统设计的语法文件如下:

#BNF+IAT 1.0 UTF-8;

!grammar call;

!slot ;

!slot ;

!slot ;

!start ;

:|;

:[

][][];

:[

][][];

:[][][]|[];

:我|我想|我要|给我|帮我|让我|再;

:点|来|上|订;

:十!id(10);

:一!id(1)|二!id(2)|三!id(3)|四!id(4)|五!id(5)|六!id(6)|七!id(7)|八!id(8)|九!id(9)| 两!id(2)|双!id(2)|俩!id(2)|仨!id(3);

:个|份|盘|碗|条;

:麻婆豆腐|鱼香肉丝|宫保鸡丁|糖醋里脊|酸菜鱼|红烧肉|米饭;

使用该语法文件,客户既可以直接说出菜名,也可以说完整的或关键部分的自然语言。比如客户想点鱼香肉丝,可以使用“来盘鱼香肉丝”,“我要一盘鱼香肉丝”,“鱼香肉丝来一份”,“给我上个鱼香肉丝”等等各种说法,使用非常方便。

该语法文件的编写采用完整语句分析、非关键词可省略的方法。点菜通常有两种说法,一种是份数在前、菜名在后,比如“我要点一盘鱼香肉丝”,另一种是菜名在前、份数在后,比如“鱼香肉丝给我来一盘”,所以设计了两种语法格式,都使用命令词组成完整的句子,并把可有可无的命令词设为可以省略。在点菜时,一般的菜品通常只点一两份,而米饭有可能点十多碗甚至二三十碗,所以需要识别一百以内的数值。该语法文件采用单个数值重复、中间加十的方法,可以识别一到九十九范围内的数值,能够满足点菜的需求,还支持特殊的数值说法,比如两、仨等,并且给数值定义了相应的id,方便在返回的结果中识别数值。为了方便增加或者删除菜品种类,该语法文件把菜名设置成了槽。槽是一种特殊的规则,描述了一系列并列的记号,并且不包含任何子规则,可以在程序运行过程中实时增减槽中的记号,借用此功能,可以通过程序增减菜品种类,而无须修改语法。

2.4 识别结果检测

讯飞语音识别技术可以使用JSON格式或XML格式返回语音识别结果。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于机器解析和生成,也便于人阅读和编写,是一种简单易用的数据交换语言。为了方便对语音识别的结果进行检测,本系统采用JSON格式。

语音识别模块返回JSON格式文本后,通过循环检测ws里的每一个对象找出slot值为的对象,该对象的cw里第零个元素的w值(ws[n].cw[0].w)即客户所点的菜名。对于数值,需要检测slot值为的对象,将几个对象的cw里第零个元素的id值(ws[n].cw[0].id)组合起来即可获得客户所说的数值。

3 系统的设计

3.1 系统的需求分析

该系统主要提供点菜功能,涉及到的用户包括客户、厨师、服务员、财务人员等,客户可以使用该系统进行语音点菜、呼叫服务、手机支付等,厨师可以增加或者修改菜品种类、查看每个餐桌的菜单并负责做好,服务员负责上菜,财务人员可以使用该系统进行财务统计与分析[6]。当有客户呼叫服务时,系统会向服务员发出消息,以便服务员及时提供服务。系统也支持厨师、服务员、财务人员之间的信息传递,以替代对讲机的功能。系统可以完成完整的点菜、上菜、服务、结账等工作环节,满足中小餐厅的一般需求。

3.2 系统的体系结构

系统的体系结构如图2所示。

图2 系统的体系结构

该系统按照轻量级Java EE企业级架构设计[7],基于Android系统和Java EE平台开发,采用Tomcat服务器程序,使用MySQL数据库[8]。用户使用手机上的Android客户端通过网络向服务器发送请求,服务器端程序通过JDBC访问数据库[9],进行浏览、添加、删除、修改等操作,然后把结果返回给客户端,用户通过手机可以查看请求的结果。

3.3 系统的功能模块

基于以上的需求分析,把系统的功能模块划分为菜品种类管理、菜单管理、信息服务、财务管理四大块,如图3所示。

图3 系统的功能模块

菜品种类管理模块主要供厨师浏览、添加、修改或者删除餐厅所提供的菜品种类;菜单管理模块主要用来进行语音点菜,还提供了浏览菜单、修改菜品和删除菜品功能,以辅助进行点菜操作;信息服务模块用来传递信息,客户可以使用该模块呼叫服务员进行服务,厨师、服务员和财务人员之间可以相互发送语音;财务管理模块提供手机支付和财务统计功能。

4 系统测试

笔者把该系统的语音点菜功能分别在某餐厅安静的包间(低噪音)和嘈杂的大厅(中等噪音)进行了测试,结果如表1所示:

表1 语音识别正确率测试结果

从表1可见,该系统在低噪音环境下语音识别的正确率达到94.3%,中等噪音环境下也能达到84.7%,正确率是比较高的。当识别结果有误时,如果是菜品的名称有误,可以使用“删除菜品”功能直接删掉重新说;如果是份数有误,可以使用“修改菜品”功能点击加减号稍加修改,也可以直接删掉重新说。结合这两项功能,本系统可以达到实用的程度。

5 总结

语音交互是最方便的人机交互方式之一。随着人工智能的发展,语音识别技术已经发展到了很高的阶段,把语音技术应用到各种系统中,能为用户提供更加良好的操作体验[10]。本文所设计的基于语音识别技术的手机点菜系统,是应用语音技术的一次有益尝试,识别准确率高,使用方便,在餐饮企业有着广泛的应用前景,希望能为更多的系统应用语音技术提供参考和启示。

[1] 周洪艳,林超,丁颂. 基于Android的点餐系统APP设计[J]. 长春师范大学学报,2016,(12):34-38.

[2] 许朝辉. 基于Android手机的智能点餐系统设计[J]. 机械设计与制造工程,2016,(12):42-45.

[3] 李慧. 基于讯飞语音的安卓手机应用开发步骤的研究[J]. 无线互联科技,2015,(14):123-124.

[4] 王海洋,郭星. 基于语音识别的智慧旅游系统研究[J]. 计算机技术与发展,2015,(05):143-147.

[5] 讯飞语音提升停车场管理系统智能化水平[J]. 计算机与信息技术,2011,(04):78.

[6] 张璘,李明明,冯陈伟. 基于Android的无线打印点餐系统[J]. 厦门理工学院学报,2016,(05):74-78.

[7] 谢娜. Android平板电脑的电子菜单优化设计[J]. 自动化与仪器仪表,2016,(11):189-190.

[8] 陈松. 基于Android平台的家居远程语音控制系统研究[J]. 赤峰学院学报(自然科学版),2016,(21):25-26.

[9] 李小俊,肖佳,刘振宇. Android平台下基于动态加载的点餐APP的设计与实现[J]. 软件产业与工程,2016,(06):25-26.

[10] 郭海宾,王艳秋,燕孝飞. 基于Android平台的手机语音记录器的设计与实现[J]. 福建电脑,2015,(10):24-25.

Research and Design of a Mobile Phone Ordering System Based on Speech Recognition

Xue Hui

(The Teaching Affairs Service, Shangluo University, Shangluo 726000, China)

In order to realize ordering dish by speech, this paper studied the key technologies of using speech recognition to order dish by mobile phone. The key technologies include the selection of speech recognition technology, the speech ordering processing, the preparation of BNF grammar, and the detection of speech recognition results. This paper also designed a mobile phone ordering system to verify the key technologies. The test results showed that the system has high recognition accuracy and is easy to use.

Speech recognition; Mobile phone; Ordering dish; System

薛 辉(1983-),男,商洛人,硕士,工程师,研究方向:计算机教育教学改革、应用软件开发。

1007-757X(2017)07-0059-03

TP311

A

2017.02.27)

猜你喜欢
鱼香肉丝菜名点菜
点菜接龙
意林(2023年14期)2023-09-01 12:30:36
做菜
意林(2022年8期)2022-04-19 22:05:12
会点菜的人,混得不会太差
好日子(2021年8期)2021-11-04 09:02:50
鱼香肉丝和爱情
套路玩得深,点完餐的我泪流满面
疯狂编辑部之点菜风波
看清楚菜名:认真审题
鱼香肉丝风味蛋糕制作工艺的研究
农学学报(2015年5期)2015-05-30 01:09:52
网友盘点最萌最“坑爹”菜名
16道中国菜名翻译你知道多少?