《嵌入式人工智能技术应用》课件 项目六 基于语音识别实现智能家居控制_第1页
《嵌入式人工智能技术应用》课件 项目六 基于语音识别实现智能家居控制_第2页
《嵌入式人工智能技术应用》课件 项目六 基于语音识别实现智能家居控制_第3页
《嵌入式人工智能技术应用》课件 项目六 基于语音识别实现智能家居控制_第4页
《嵌入式人工智能技术应用》课件 项目六 基于语音识别实现智能家居控制_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六基于语音识别实现智能家居控制边缘智能计算应用项目引导案例智能家居(smarthome,homeautomation)是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。换句话说,智能家居并不是一个单一的产品,而是通过技术手段将家中所有的产品连接成一个有机的系统,主人可随时随地控制该系统。项目引导案例

本项目将带着大家体验基于语音识别实现智能家居控制,主要任务有:语音合成与播报语音识别和语音控制任务一语音合成与播报边缘智能计算应用职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报了解语言合成的相关知识;了解ALSA高级Linux音频架构。掌握音频接口的连接;掌握音频接口的基本控制;掌握语音关键词的播报。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报

此任务的主要内容是查看并选择合适的音频设备,发送相应的控制指令,完成语音命令词识别、合成和播报的功能。任务描述任务要求使用命令查看系统音频设备信息;测试语音合成接口;测试语音播报接口;完成语音合成并播报的应用。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报任务分析如何提取我们所需要的语音?怎样将我们得到的语音进行合成?任务分析与计划03任务计划表项目名称基于语音识别实现智能家居控制任务名称语音合成与播报计划方式自主设计计划要求请用8个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

45678通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报ALSA204知识储备语音合成1subprocess模块简介3

什么是语音合成?语音合成就是让计算机像人那样讲话。人们用语言进行交流时,用声音来表达自己的意向、情感。例如:如某人问你:你愿意和我一起去看电影吗?你的回答可能是:“是的,我很高兴和你一起去看电影”(肯定,高兴)“抱歉,我不能和你一起看电影,因为我要去开会”(无可奈何)“不去,还是你自己去看吧”(否定)这三句话表达了不同的意向和情感,计算机也该像人那样来回答。语音合成是一门跨学科的前沿技术,涉及到下列相关研究领域:自然语言理解、语言学、语音学、信号处理、心理学、声学...它将上述领域的研究成果结合在一起,使计算机具备说话的能力。04语音合成什么是语音合成语音合成技术的研究已有两百多年的历史,但真正具有实用意义的近代语音合成技术是随着计算机技术和数字信号处理技术的发展而发展起来的。主要是让计算机能够产生高清晰度、高自然度的连续语音。在语音合成技术的发展过程中,早期的研究主要是采用参数合成方法,后来随着计算机技术的发展又出现了波形拼接的合成方法。1939年Voder第一个电子合成器。1987年Klatt共振峰合成@蓝光行云。04语音合成语音合成历史

语音合成技术可以大大改善人机交互环境。计算机反馈信息的方式是屏幕显示。这种单调的信息输出方式给用户带来许多不便,特别是长时间地注视显示屏使人疲劳,降低人获取信息和理解信息的能力。网络环境的输出设备多种多样:这种枯燥单一的交互方式影响了计算机的应用。计算机语音输出能提供声文并茂的信息表示方式,可以改变人机交互“默默无闻”的状况,为计算机的普及应用创造更好的条件。将“能看到”、“看不到”的信息变成“可听”的信息。将“非即时获得的信息”变成“即时可听”的信息。04语音合成语音合成的研究意义音频在各行各业都有广泛使用,主要包括音频播放,录音,以及现在广泛用在了语音识别等人工智能方向,我们越来越希望人工智能(AI)解决方案能够接受语音命令并提供语音响应。04语音合成越来越多的家居和汽车系统可以通过讲话来进行控制-发出诸如“关灯”之类的命令,以及希望获得对“今天会下雨吗”之类的问题的口头回答。04语音合成为了实现这种交互,AI系统必须支持两种能力:语音识别-检测和解释语音输入的能力。语音合成-生成语音输出的能力。04语音合成语音合成和语音识别技术是实现人机语音通信,建立一个有听和讲能力的口语系统所必需的两项关键技术。使电脑具有类似于人一样的说话能力,是当今时代信息产业的重要竞争市场。04语音合成和语音识别相比,语音合成的技术相对说来要成熟一些,并已开始向产业化方向成功迈进,大规模应用指日可待。04语音合成语音合成是指将文字转换为声音输出的过程。语音合成是通过机械的、电子的方法产生人造声音的技术。它将计算机自己产生的或外部输入的文字信息转变为人类听得懂的、流利的口语进行输出的技术。04语音合成我们所说的“让机器像人一样开口说话”与传统的声音回放设备(系统)有着本质的区别。传统的声音回放设备(系统),如磁带录音机,是通过预先录制声音然后回放来实现“让机器说话”的。这种方式无论是在内容、存储、传输或者方便性、及时性等方面都存在很大的限制。04语音合成而通过计算机语音合成则可以在任何时候将任意文本转换成具有高自然度的语音,从而真正实现让机器“像人一样开口说话”。04语音合成语音合成在很多方面与语音识别相反。它涉及到让数据发出声音,通常是通过将文本转换为语音来实现。语音合成解决方案通常需要以下信息:要朗读的文本。用于读出语音的声音。04语音合成若要合成语音,系统通常会对文本进行词汇切分,将其分解为单独的字词,并为每个字词指定语声。

接着将语音听录分解为韵律单元(如短语、分句或句子),以创建将被转换为音频格式的音素。

然后通过加上声音(这将确定音调和音色等参数)和生成可以输出到扬声器或写入文件的音频波形,将这些音素合成音频。04语音合成你可以将语音合成的输出用于多种目的,包括:生成对用户输入的语音回答。为电话系统创建语音菜单。在免动手的情形下朗读电子邮件或短信。在公共场所(如火车站或机场)广播通知。04语音合成ALSA204知识储备语音合成1subprocess模块简介3ALSA04

ALSA(AdvancedLinuxSoundArchitecture)是一个软件框架,也是Linux内核的一部分,ALSA为声卡设备驱动程序提供应用程序编程接口(API)。ALSA04ALSA项目的目标是声卡硬件的自动配置和系统中多音频设备的调度优化。ALSA发布在GPL-2.0或更高版本和LGPL-2.1或更高版本。除Linux内核内的软件框架外,ALSA项目还提供了如alsactl、amixer、arecord/aplay、alsamixer等命令行实用工具。ALSA04aplay工具介绍aplay是ALSA声卡驱动程序的命令行音频文件播放器。它支持多种文件格式和多种设备的多种声卡。对于支持的音频格式文件,可以从声音文件头部中自动确定采样率、位深度等。ALSA04arecord命令简要说明:arecord命令主要用于声音录制,通过arecord-h命令,可以查看具体的使用帮助信息。ALSA04amixer命令简要说明:alsamixer是Linux音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数。alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。amixer,是alsamixer的文本模式,即命令行模式,需要用amixer命令的形式去配置你的声卡的各个选项。204知识储备13ALSA语音合成subprocess模块简介subprocess模块简介04subprocess是Python新增的一个模块,它允许生成新的进程,连接到它们的input/output/error管道。并获取它们的返回(状态)码。subprocess模块简介04运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。subprocess模块简介04subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报205任务实施13获取音频设备ID导入依赖库语音合成与播报导入依赖库05importreimportsubprocessre:re模块使Python语言拥有全部的正则表达式功能;subprocess:subprocess模块允许用户启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。205任务实施13获取音频设备ID导入依赖库语音合成与播报42使用aplay工具查看系统音频设备信息1使用Shell命令查看系统音频设备信息3使用subprocess模块在Python中获取命令行输出信息使用re模块提取声卡设备ID5将获取音频设备ID的代码封装为函数获取音频设备ID05获取音频设备ID获取音频设备ID05!cat/proc/asound/cards1.使用Shell命令查看系统音频设备信息在Linux系统中可以使用cat/proc/asound/cards命令查看系统中的音频设备,如下所示:获取音频设备ID05!aplay-l2.使用aplay工具查看系统音频设备信息使用aplay工具查看系统音频设备信息的命令为cat/proc/asound/cards获取音频设备ID05res_content=subprocess.getstatusoutput('aplay-l')3.使用subprocess模块在Python中获取命令行输出信息subprocess模块允许你生成新的进程,连接它们的输入、输出、错误管道,并且获取它们的返回码。subprocess.getstatusoutput(cmd):返回在shell中执行cmd产生的(exitcode,output)。末尾的一个换行符会从输出中被去除。命令的退出码可被解读为子进程的返回码。例如:此函数现在返回(exitcode,output)而不是像Python3.3.3及更早的版本那样返回(status,output)。exitcode的值与returncode相同。获取音频设备ID05ifres_content[0]==0andres_content[1]!='':#用于查找设备ID的正则表达式

pattern=r'.*card(.*?):.*,device(.*?):USBAudio.*'#查找USB音频设备

result=re.findall(pattern,res_content[1])#获取得到的首个USB声卡的ID信息

dev_id=result[0]#打印CardID与DeviceIDprint(dev_id)else:print("无法获取语音设备id,请检查设备!!!")4.使用re模块提取声卡设备IDre.findall(pattern,string,flags=0):对string返回一个不重复的pattern的匹配列表,string从左到右进行扫描,匹配按找到的顺序返回。参数说明:pattern:正则表达式;string:搜索的是那些字符串。>>>text="Hewascarefullydisguisedbutcapturedquicklybypolice.">>>re.findall(r"\w+ly",text)['carefully','quickly']获取音频设备ID05defget_device_id():res_content=subprocess.getstatusoutput("aplay-l")#使用'aplay-l'查看系统音频设备信息#若获取到音频设备信息

ifres_content[0]==0andres_content[1]!='':pattern=r'.*card(.*?):.*,device(.*?):USBAudio.*’#用于查找设备ID的正则表达式

result=re.findall(pattern,res_content[1])#查找USB音频设备#获取得到的USB声卡的ID信息

foriinrange(len(result)):dev_id=result[i]print(dev_id)#打印CardID与DeviceIDelse:print("无法获取语音设备id,请检查设备!!!")returnreturnresult[0]get_device_id()#获取设备ID功能测试5.将获取音频设备ID的代码封装为函数subprocess.getstatusoutput(cmd):返回在shell中执行cmd产生的(exitcode,output)。参数说明:cmd:shell命令,以字符串形式输入。205任务实施13获取音频设备ID导入依赖库语音合成与播报42测试语音播报1测试语音合成接口3语音合成并播报将实现语音播报的代码封装为函数语音合成与播报05语音合成与播报获取音频设备ID05!cd./speech/broadcast/bin/&&./tts_offline_sample"小陆,你好"1.测试语音合成接口使用cd命令进入./speech/recognition/bin/目录下,运行tts_offline_sample(传入的文本为“小陆,你好”),测试语音合成接口是否可用。!aplay./speech/broadcast/bin/tts_sample.wav2.测试语音播报(1)使用aplay工具直接播放。(2)使用aplay工具并指定音频设备ID播放。get_device_id()#获取USB声卡的设备ID获取音频设备ID05text="小陆,你好"print('语音合成开始。。。')#调用语音合成接口的指令tts_cmd='cd./speech/broadcast/bin/'+'&&./tts_offline_sample{}'.format(text)res_content=subprocess.getstatusoutput(tts_cmd)#语音合并并获取返回值#如果合并成功ifres_content[0]==0and'合并成功'inres_content[1]:print('语音合并成功,开始播报。。。')#使用aplay播放语音

broadcast_cmd='aplay./speech/broadcast/bin/tts_sample.wav'subprocess.Popen(broadcast_cmd,shell=True)else:print('语音合并失败')3.测试语音合成接口subprocess.getstatusoutput(cmd):返回在shell中执行cmd产生的(exitcode,output)。参数说明:cmd:shell命令,以字符串形式输入。subprocess.Popen(args,shell=False):将Shell命令赋值给args即可在Python中运行Shell命令。参数说明:args:可以是一个字符串,可以是一个包含程序参数的列表。要执行的程序一般就是这个列表的第一项,或者是字符串本身;shell:默认False,在linux下,当shell=True时,如果arg是个字符串,就使用shell来解释执行这个字符串。如果args是个列表,则第一项被视为命令,其余的都视为是给shell本身的参数。获取音频设备ID05defbroadcast(text):print('语音合成开始。。。')#调用语音合成接口的指令

tts_cmd='cd./speech/broadcast/bin/'+'&&./tts_offline_sample{}'.format(text)#语音合并并获取返回值

res_content=subprocess.getstatusoutput(tts_cmd)#如果合并成功

ifres_content[0]==0and'合并成功'inres_content[1]:print('语音合并成功,开始播报。。。')#使用aplay播放语音

broadcast_cmd='aplay./speech/broadcast/bin/tts_sample.wav'subprocess.Popen(broadcast_cmd,shell=True)else:print('语音合并失败')#语音播报功能测试broadcast("小陆,你好!")4.将实现语音播报的代码封装为函数职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报任务检查与评价06序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,理解本次任务要求,制定详细计划,计划条理清晰,逻辑正确(20分)20分

理解相关理论知识,能根据本次任务要求、制定合理计划(15分)了解相关理论知识,有制定计划(10分)无制定计划(0分)2专业技能(40%)很好的完成依赖库的导入,获取音频设备ID,语音合成与播报。(40分)40分

大体完成依赖库的导入,获取音频设备ID,语音合成与播报。(30分)只完成依赖库的导入,获取音频设备ID。(20分)只完成依赖库的导入。(10分)没有完成依赖库的导入。(0分)3核心素养(20%)具有良好的自主学习能力、分析解决问题的能力、整个任务过程中有指导他人(20分)20分

具有较好的学习能力和分析解决问题的能力,任务过程中无指导他人(15分)能够主动学习并收集信息,有请教他人进行解决问题的能力(10分)不主动学习(0分)4课堂纪律(20%)设备无损坏、设备摆放整齐、工位区域内保持整洁、无干扰课堂秩序(20分)20分

设备无损坏、无干扰课堂秩序(15分)无干扰课堂秩序(10分)干扰课堂秩序(0分)总得分1、请参照评价标准完成自评和对其他小组的互评。2、各组请代表分析本组任务实施经验。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报任务小结07职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一语音合成与播报任务拓展08尝试将你的收到的消息转化为语音1将自己在qq或者微信收到的消息,通过语音合成,进行播报;根据上述内容完成拓展。解题

思路提示任务要求2完整叙述出操作流程。谢谢大家学习项目六基于语音识别实现智能家居控制边缘智能计算应用任务二语音识别和语音控制边缘智能计算应用职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二语音识别和语音控制了解语音识别的基本概念;了解巴科斯范式的内容。掌握语音识别词配置文件的编写方法;掌握语音识别与播报的功能编写;能够通过语音识别控制设备。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二语音识别和语音控制

此任务的主要内容是使用语音识别功能完成设备的开关控制。任务描述任务要求完成语音识别功能的调试;播报通过识别输入的语音;自定义语音关键词;根据识别内容完成控制设备。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二语音识别和语音控制任务分析如何对关键词进行识别?遇到同音词,语音识别又是怎样进行筛选和识别的呢?任务分析与计划03任务计划表项目名称基于语音识别实现智能家居控制任务名称语音识别和语音控制计划方式自主设计计划要求请用8个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

45678通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二语音识别和语音控制巴科斯范式204知识储备语音识别1call.bnf语音识别词配置文件3与机器进行语音交流,让机器明白你说什么,这是人们长期以来梦寐以求的事情。中国物联网校企联盟形象得把语音识别比做为“机器的听觉系统”。04语音识别语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。04语音识别语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。04语音识别特征提取技术模式匹配准则模型训练技术04语音识别

语音识别方法主要是模式匹配法。在训练阶段,用户将词汇表中的每一词依次说一遍,并且将其特征矢量作为模板存入模板库。在识别阶段,将输入语音的特征矢量依次与模板库中的每个模板进行相似度比较,将相似度最高者作为识别结果输出。04语音识别04语音识别语音识别主要有以下五个问题:⒈对自然语言的识别和理解。首先必须将连续的讲话分解为词、音素等单位,其次要建立一个理解语义的规则。⒉语音信息量大。语音模式不仅对不同的说话人不同,对同一说话人也是不同的,例如,一个说话人在随意说话和认真说话时的语音信息是不同的。一个人的说话方式随着时间变化。⒊语音的模糊性。说话者在讲话时,不同的词可能听起来是相似的。这在英语和汉语中常见。⒋单个字母或词、字的语音特性受上下文的影响,以致改变了重音、音调、音量和发音速度等。⒌环境噪声和干扰对语音识别有严重影响,致使识别率低。04语音识别目前比较成熟的应用,包括语音输入法。通过语音识别输入文字,最高速度能够达到1分钟400字,比普通键盘输入更加高效。04语音识别家居场景中,智能电视、智能冰箱甚至智能镜子等设备都可搭载语音助手,实现语音控制,串联起从厨房、客厅到起居室、卫生间的智慧家居物联网。04语音识别随着语音识别、自然语音理解等技术的发展,在车内场景中通过语音交互控制车载导航、娱乐、空调等系统成为可能。语音控制系统将驾驶者的注意力从屏幕和按钮中解放出来,一定程度上增强了行车安全性。204知识储备13巴科斯范式语音识别call.bnf语音识别词配置文件04巴科斯范式是以美国人巴科斯(Backus)和丹麦人诺尔(Naur)的名字命名的一种形式化的语法表示方法,用来描述语法的一种形式体系,是一种典型的元语言。又称巴科斯-诺尔形式(Backus-Naurform)。巴科斯范式04约翰·巴科斯首次在ALGOL58中实现巴科斯范式。彼得·诺尔在ALGOL60之中,进一步发展它的概念并将它的符号加以简化,称其为巴科斯范式(BackusNormalForm)。但高德纳主张应称为巴科斯-诺尔范式(Backus–NaurForm),因为它不算是一种正规形式(Normalform)。巴科斯范式04

巴科斯范式不仅能严格地表示语法规则,而且所描述的语法是与上下文无关的。它具有语法简单,表示明确,便于语法分析和编译的特点。巴科斯范式04BNF表示语法规则的方式为:非终结符用尖括号括起。每条规则的左部是一个非终结符,右部是由非终结符和终结符组成的一个符号串,中间一般以“::=”分开。具有相同左部的规则可以共用一个左部,各右部之间以直竖“|”隔开。巴科斯范式04在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。在双引号外的字(有可能有下划线)代表着语法部分。尖括号(<>)内包含的为必选项。方括号([])内包含的为可选项。大括号({})内包含的为可重复0至无数次的项。竖线(|)表示在其左右两边任选一项,相当于"OR"的意思。::=是“被定义为”的意思。巴科斯范式04RFC2234定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进,比如说,在ABNF中,尖括号不再需要。巴科斯范式204知识储备13巴科斯范式语音识别call.bnf语音识别词配置文件call.bnf语音识别词配置文件04当我们执行完make.sh编译脚本后,就可以在bin目录下生成可执行文件asr_offline_record_sample。但是在执行之前,我们需要认识一下这个巴科斯范式格式的语法文件,因为这个语法文件就是我们后面要离线识别的命令词了。call.bnf语音识别词配置文件04call.bnf是使用巴科斯范式实现的语法文件,这个语法文件提供离线识别的命令词。call.bnf语音识别词配置文件04最终上述语法文件将检测的是[]这样的语音。也就是说规则中的:我想、我要、请、帮我...,这些可以说也可以不说。但是这个规则必须要说,而规则是由[]组成的。call.bnf语音识别词配置文件04更新语法规则的APIcall.bnf语音识别词配置文件04语音识别的语法定义了语音识别所支持的命令词的集合,Aitalk4.0产品利用巴科斯范式(BNF)描述语音识别的语法。call.bnf语音识别词配置文件04语法文档被编译成识别网络后,将被送往语音识别器。语音识别器提取输入语音的特征信息并在识别网络上进行路径匹配,最终识别出用户说话的内容。因此语法是语音识别系统的输入之一,它是现阶段语音识别得以应用的必要条件。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二语音识别和语音控制205任务实施13播报通过识别输入的语音语音识别控制设备4自定义语音关键词42测试语音识别接口1语音识别词配置文件3获取语音识别后返回信息提取识别词语音识别05语音识别语音识别051.语音识别词配置文件语音识别词的配置文件位于./speech/recognition/bin/call.bnf,打开该配置文件,就可以看到包括唤醒、控制、硬件设备等识别词,如右图所示:语音识别05!cd./speech/recognition/bin/&&./asr_offline_record_sample2.测试语音识别接口使用cd命令进入./speech/recognition/bin/目录下,运行asr_offline_record_sample,对着USB音频设备说出“小陆小陆”,即可测试语音识别接口是否可用。importsubprocessprint('正在监听。。。')#调用语音识别接口的命令recognition_cmd=<1>#获取语音识别后的返回值res_content=subprocess.getstatusoutput(recognition_cmd)3.获取语音识别后返回信息使用cd命令进入./speech/recognition/bin/目录下,运行asr_offline_record_sample,对着USB音频设备说出“小陆小陆”,即可测试语音识别接口是否可用。05defrecognition():print('正在监听。。。')#调用语音识别接口的命令

recognition_cmd='cd./speech/recognition/bin/&&./asr_offline_record_sample'#获取语音识别后的返回值

res_content=subprocess.getstatusoutput(recognition_cmd)#若识别失败,返回空值退出

ifres_content[0]!=0or'Result'notinres_content[1]:print("语音识别失败")returnNone#提取识别后的文本信息并返回

pattern=r'<rawtext>(.*?)</rawtext>'result=re.findall(pattern,res_content[1])returnresult[0]#语音识别功能测试recognition()4.提取识别词封装语音识别函数,并进行语音识别功能测试。subprocess.getstatusoutput(cmd):获得shell命令返回结果。参数说明:cmd:shell命令,以字符串形式输入。语音识别205任务实施13播报通过识别输入的语音语音识别控制设备4自定义语音关键词播报通过识别输入的语音05importreimportsubprocess#语音合成与播报defbroadcast(text):print('语音合成开始。。。')#调用语音合成接口的指令

tts_cmd='cd./speech/broadcast/bin/'+'&&./tts_offline_sample{}'.format(text)#语音合并并获取返回值

res_content=subprocess.getstatusoutput(tts_cmd)#如果合并成功

ifres_content[0]==0and'合并成功'inres_content[1]:print('语音合并成功,开始播报。。。')#使用aplay播放语音

broadcast_cmd='aplay./speech/broadcast/bin/tts_sample.wav'subprocess.Popen(broadcast_cmd,shell=True)else:print('语音合并失败’)broadcast(recognition())封装语音识别函数,并进行语音识别功能测试。subprocess.getstatusoutput(cmd):获得shell命令返回结果。参数说明:cmd:shell命令,以字符串形式输入。205任务实施13播报通过识别输入的语音语音识别控制设备4自定义语音关键词2测试自定义关键词1自定义关键词自定义语音关键词05自定义语音关键词051.自定义关键词在任务1中,我们了解到了语音识别词的配置文件位于./speech/recognition/bin/call.bnf,打开该配置文件,就可以看到包括唤醒、控制、硬件设备等识别词。现在,我们需要根据需求,对这个配置文件作相应的修改,增加我们所需要的关键词,例如:“打开黄灯”和“关闭黄灯”。请查阅call.bnf,在//灯光类<lightCat>栏中,添加“黄灯”、“红灯”和“绿灯”的指令。。自定义语音关键词defrecognition():print('正在监听。。。')#调用语音识别接口的命令

recognition_cmd='cd./speech/recognition/bin/&&./asr_offline_record_sample'

res_content=subprocess.getstatusoutput(recognition_cmd)#获取语音识别后的返回值#若识别失败,返回空值退出

ifres_content[0]!=0or'Result'notinres_content[1]:print("语音识别失败")returnNone#提取识别后的文本信息并返回

pattern=r'<rawtext>(.*?)</rawtext>'result=re.findall(pattern,res_content[1])returnresult[0]recognition()2.测试自定义关键词通过任务1,我们可以使用以下代码来测试新添加的关键词能否被正确识别出来。205任务实施13播报通过识别输入的语音语音识别控制设备4自定义语音关键词2根据关键词控制设备1分离关键词控制设备05控制设备05控制设备importreimportsubprocessimportthreadingfromutils.portControlimportNewQue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论