智能聊天功能——语音聊天篇

如今大部分人都面临着来自生活各方面的压力,时常感到焦虑、孤独,有的甚至患上了抑郁症等心理疾病,他们无法排解,甚至找不到人来诉苦,本系统提供了语音对话功能。
在用户无聊的时候,可以唤醒“依米”,让它陪着聊天,有意思的是,用户不会想到它将会回答什么内容,直到用户对它说出“退出”两个字。此功能旨在希望用户能把“依米”当成一个发泄口,把生活中的烦恼、不快一吐为尽,也希望能帮助用户打发闲暇时光。
语音聊天功能具体设计是,系统被语音唤醒后开始录音,录音完成后进行百度语音识别,如果包含关键词“聊天”两个字,系统则尝试获取图灵机器人的回复。成功获取回复后继续录音,再次尝试获取图灵机器人的回复。不断循环,直到用户说出包含“退出”的语句,系统便回到等待信号状态。具体实现流程如图所示。
在这里插入图片描述
在图灵机器人官网注册账户并申请一个机器人,此时得到一个专属的key,在代码中使用它来调用图灵机器人接口。根据需要,还可以在机器人管理页面设定指定问题的答案,建立自己的语料库。如图4.10所示,左边的问题一栏和右边答案一栏都是设定好的关键词,如果机器人检测到左边问题一栏中的关键词,就会回复右边答案一栏已设定好的关键词给用户。
在这里插入图片描述
调用语音聊天功能的关键代码如下:

1.		if "聊天" in recognition_result:  
2.	    while True:  
3.	        try:  
4.	                       reply_result = turlingAPI.turlingReply(reco_result)     
5.	        except Exception:  
6.	                       url = baiduAPI.voiceSynthesis("对不起,获取回复失败")  
7.	                       voice.playVoice(url)  
8.	        else:  
9.	                       url = baiduAPI.voiceSynthesis(reply_result)  
10.	                       voice.playVoice(url)  
11.	        finally:  
12.	                  voice.recordVoice()  
13.	                    reco_result = baiduAPI.voiceRecognition()             
14.	                     if reco_result and "退出" in reco_result:  
15.	                		         url = baiduAPI.voiceSynthesis("再见我的主人")  
16.	                    			  voice.playVoice(url)  
17.	                                  return False  

由于语音识别以及网络等问题,可能存在着获取回复失败,因此这里在获取图灵回复时加入try-except语句,避免了获取结果失败导致程序终止运行,影响用户体验。

api.py文件
通过百度语音识别和语音合成实现机器对话功能

# -*- coding: utf-8 -*-import sys
import requests
import json
import urllib2
import base64
import urllibreload(sys)
sys.setdefaultencoding("utf-8")class BaiDuAPI:def __init__(self):self.GRANT_TYPE = "client_credentials"self.CLIENT_ID = '百度应用的 API Key'self.CLIENT_SECRET ='百度应用的 API Secret' self.TOKEN_URL = "https://openapi.baidu.com/oauth/2.0/token"self.RECOGNITION_URL = "http://vop.baidu.com/server_api"self.CUID = "B8-27-EB-BA-24-14"self.RECOGNITION_PATH = r"./record_voice.wav"# self.SYNTHESIS_PATH = r"./play_voice.mp3"def getToken(self): #获取access_tokenbody = {"grant_type":self.GRANT_TYPE,"client_id":self.CLIENT_ID,"client_secret":self.CLIENT_SECRET}r = requests.post(self.TOKEN_URL,data=body,verify=True)self.access_token = json.loads(r.text)["access_token"]return self.access_tokendef voiceRecognition(self): #语音识别erro_dict = {3300:"输入参数不正确",3301:"音频质量过差",3302:"鉴权失败",3303:"语音服务器后端问题",3304:"用户的请求QPS超限",3305:"用户的日pv(日请求量)超限",3307:"语音服务器后端识别出错问题",3308:"音频过长",3309:"音频数据问题",3310:"输入的音频文件过大",3311:"采样率rate参数不在选项里",3312:"音频格式format参数不在选项里"}f = open(self.RECOGNITION_PATH,"rb")voice_data = f.read()f.close()speech_data = base64.b64encode(voice_data).decode("utf-8")speech_length = len(voice_data)post_data = {"format": "wav","rate": 16000,"channel": 1,"cuid": self.CUID,"token": self.access_token,"speech": speech_data,"len": speech_length}json_data = json.dumps(post_data).encode("utf-8")json_length = len(json_data)req = urllib2.Request(self.RECOGNITION_URL, data=json_data)req.add_header("Content-Type", "application/json")req.add_header("Content-Length", json_length)resp = urllib2.urlopen(req)resp = resp.read()resp_data = json.loads(resp.decode("utf-8"))try:recognition_result = resp_data["result"][0]print recognition_resultreturn recognition_resultexcept:print erro_dict[resp_data["err_no"]]return Falsedef voiceSynthesis(self,word): #语音合成token = self.access_tokencuid = self.CUID# word = urllib.quote(word.encode("utf8"))url = "http://tsn.baidu.com/text2audio?tex="+word+"&lan=zh&cuid="+cuid+"&ctp=1&tok="+token+"&per=4"# urllib.urlretrieve(url,self.SYNTHESIS_PATH)return urlclass TurLingAPI:def __init__(self):self.Tuling_API_KEY = "你的图灵KEY"self.URL = "http://www.tuling123.com/openapi/api"def turlingReply(self,word): #图灵获取回复body = {"key": self.Tuling_API_KEY,"info": word.encode("utf-8")}res = requests.post(self.URL, data=body, verify=True)if res:date = json.loads(res.text)print date["text"]return date["text"]else:print "对不起,未获取到回复信息"return False

这里需要去百度申请语音识别api以及去申请一个图灵机器人,将得到的KEY放到代码中,实现调用功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56731.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转【Latex】Texstudio英文拼写错误检查功能出问题的解决方法

【Latex】Texstudio英文拼写错误检查功能出问题的解决方法 2018年03月23日 22:54:49 阅读数:685 问题描述 最近用latex(编辑器为Texstudio)写论文,相比于本科时常用的word,各种方便,唯一不爽的是texstu…

英文论文纠错:

Grammarly:官网下载,拉到底部product的office版本,下载后安装,word中会多一个插件,就像这样 基本上免费的功能就够用了,它会识别全文,然后给出你可能存在的问题

GPT专业应用:生成百度搜索创意

正文共 1017 字,阅读大约需要 4 分钟 数字营销人员必备技巧,您将在4分钟后获得以下超能力: 生成百度搜索创意 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | nanako 编辑者 | Linda…

惊!ChatGPT处理文章仅需一秒钟,提取大纲、重写不在话下!

前言 在上篇文章中,我们实现了批量抓取到微信公众号文章的链接地址,那么这篇文章将继续为大家介绍,如何根据链接爬取到文章内容,并且利用chantGPT对文章进行处理。 爬取文章内容 我们已经有了很多文章的链接,这些链…

程序员做自媒体,到底是怎样一种体验?这几个大佬公众号彻底告诉你

人与人之间的差异,很多时候在于认知,说起大厂的程序员,一般技术是会好些,一方面原因能进大厂的程序员大部分学历、专业都过硬,另一方面也是最主要的,他们也会不断利用大的平台学习总结,触类旁通…

自媒体多平台发布怎么做?2022年高级自媒体人都这么玩

现在许多小伙伴开始做自媒体都是在一些自媒体视频或者博主的介绍下才认识到做自媒体可以给自己带来收益,刚刚做得时候可能只会弄一两个账号,发现收益也不高,便不想去做相关的事情了,的确现在做自媒体的人太多了,无论是…

做自媒体月入几万?博主们都在用的几个自媒体工具

为什么新手做自媒体行业月入只有几十块钱,而那些自由博主做自媒体却月入几万呢?想知道你和他们的差距吗?如果是你做了一个月甚至更久的时间不见效果,那就试试博主们都在用的几个工具和网站,或许就能改变你目前的一个现…

玩转自媒体,你需要这样做

文/Fdaxiong大熊 (分享个人经验,帮助新人快速了解自媒体平台) 自媒体平台有那些?1.微信公众号,2.今日头条,3.一点资讯,4.企鹅平台,6.百家号,7.大鱼号,8.搜狐号…

怎么做自媒体?从这几步做起

新手怎么做自媒体,自媒体新手要从这几步做起,新手怎么做自媒体,现在互联网的发展越来越迅速,做自媒体的人越来越多,走在路上随手可见拍视频的人,身边靠写文章挣钱的人,一大把。小到几岁的小孩&a…

批改网作文提交时分析不出来_小学生作文写作从哪些方面提高呢?

小学生在写作学习的前期就会对优秀的和满分作文进行借鉴和赏析从而就会模仿他们的写作方法还有个别的描写语句段落了,其实这是小学生作文学习的一种方法,学生们应该利用好引用抄作文的方法还有就是要明白其中的道理还有意义了。我也是老师,作…

批改网作文素材

句型:too…to

韩语暑假作文批改(蓝书完结)

积累好句 ㄹ 수 있도록 하는 것이 중요하다 ....를 통해 어제보다 진보한 내일을 만들 수 있는 힘이 생기기 때문이다: 使能。。很重要,因为通过。。是力量 66届 填空: 别人对别人说-->动词라고..:命令句间接引语 小作文:…

批改网作文提交时分析不出来_人物专访 I 苗晋:我的生活都为“批改作文”而让路...

提起新东方名师,我们往往想到的是那些亢奋激情、金句不断,在讲台上引发学生爆笑的老师们。但你可能不知道,英联邦还有这样的一支“学术范儿”队伍。他们是德高望重的知识分子,在教学上刻苦钻研,精益求精,在…

计算机专业的考研英语作文,2019计算机考研英语作文复习得分攻略

►常下手、要批改 这里我所谓的常下手,是因为很多同学复习过程中注重积累而忽视真正动手演习。同样还是因为写作是输出活动,它要求我们呈现给考官的不是一个结果而是一个过程,仅仅看到知道并理解是不够的,还要会运用那些词汇、句法…

无敌了,用Python给英语老师开发了个英语作文批改的神器(支持小学到雅思)

除了老师和家长,它也可以批改作业 最近一个家长退群的故事在某博上了热搜。故事中老师和家长的矛盾由批改作业集中爆发,至于孰是孰非,还是交给吃瓜群众去评价吧,作为一个技术工作者,我突发奇想,是否以后能…

计算机批改程序,计算机能批改作文吗?

在现代学校,使用计算机阅卷,并非是什么新鲜事物,目前还大多只限于选择题。但是大家有否想过,计算机阅卷可否用于作文或者填空题等类型呢?在美国,哈佛和麻省理工合办的EdX在线学习平台,向全球提供…

批改网作文提交时分析不出来_考研英语作文免费批改工具

马上就要十一月了,同学们应该都将英语作文的学习和练习提上了日程了。但是随之而来的问题就是练习的作文不知道自己到底写得好不好。在校的学生还好,可以找到英语老师帮忙进行批改,但这也有点麻烦,更不用说其他考研人了。所以&…

【TCP专题】TCP连接断开

当TCP的连接建立完成后,我们就可以尽情的通过TCP连接所创立的会话来进行数据的传输了。当然,再有意思的话题也有说完的时候,所以,当数据传输完之后,TCP该如何善后呢? TCP的四次挥手 TCP的连接断开需要经历4…

解决TCP通信客户端断开连接服务器自动关闭

服务器会断开主要是 客户端断开后产生了 SIGPIPE信号 在对的位置忽略掉该信号就可以了! 蓝色框体为我自己测试结果!框体左边的是查的大牛们的讲解。 哈哈!第一次写博客 还请多包涵!都不会用这玩意儿 ...... 囧

初识 vxe-table (一)

对于 vxe-table 的介绍这里就不说了,常规用法也不多累赘,应该按文档撸就可以了。这里主要讲下关于自定义渲染的一些方式 1、先看看部分自定义的效果 熟悉 Element 的朋友可能已经发现了,这个表格里面用了相关组件,比如&#xff1…