如今大部分人都面临着来自生活各方面的压力,时常感到焦虑、孤独,有的甚至患上了抑郁症等心理疾病,他们无法排解,甚至找不到人来诉苦,本系统提供了语音对话功能。
在用户无聊的时候,可以唤醒“依米”,让它陪着聊天,有意思的是,用户不会想到它将会回答什么内容,直到用户对它说出“退出”两个字。此功能旨在希望用户能把“依米”当成一个发泄口,把生活中的烦恼、不快一吐为尽,也希望能帮助用户打发闲暇时光。
语音聊天功能具体设计是,系统被语音唤醒后开始录音,录音完成后进行百度语音识别,如果包含关键词“聊天”两个字,系统则尝试获取图灵机器人的回复。成功获取回复后继续录音,再次尝试获取图灵机器人的回复。不断循环,直到用户说出包含“退出”的语句,系统便回到等待信号状态。具体实现流程如图所示。

在图灵机器人官网注册账户并申请一个机器人,此时得到一个专属的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放到代码中,实现调用功能。

智能聊天功能——语音聊天篇相关推荐

  1. 智能聊天功能——天气情况篇

    天气预报已然成为人们生活中不可缺少的一部分,实时了解气象的优劣,做到第一时间预防是至关重要的.所以,当我们需要外出时,如果能提前知道天气的变化情况,做好预防准备措施,就能让出行变得更加顺利. 本系统为 ...

  2. html仿微信语音功能案例,html5聊天案例|趣聊h5|仿微信界面聊天|红包|语音聊天|地图...

    之前有开发过一个h5微直播项目,当时里面也用到过聊天模块部分,今天就在之前聊天部分的基础上重新抽离模块,开发了这个h5趣聊项目,功能效果比较类似微信聊天界面.采用html5+css3+Zepto+sw ...

  3. java实现语音聊天_java 语音聊天核心代码

    import java.io.*; import javax.sound.sampled.*; import java.net.*; class Playback implements Runnabl ...

  4. 抓住语音社交风口,1天快速搭建语音聊天室

    语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...

  5. 音视频---速搭建语音聊天室技术分析

    语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...

  6. iPhone蓝牙编程之实现语音聊天 .

    感谢原创人.致敬!! [IT168技术]在我之前的iPhone文章中,我们已经介绍过使用GameKit框架在两个设备之间通过蓝牙通信,在这篇文章中,我将为大家介绍GameKit框架另一个很酷的功能 - ...

  7. cocos creator麻将教程系列(八)—— 达达麻将语音聊天源码分析

    达达麻将语音聊天源码分析 达达麻将版图 语音聊天 1:语音聊天只支持Native平台,iOS与android; 2: 语音聊天的音频格式为amr; 3: native平台实现了语音的录制和播放,可以移 ...

  8. 融云 php sdk下载,Android 即时语音聊天工具 开发

    使用融云SDKphp 1. 功能需求分析html 1.1 核心功能需求:java * 即时通信android * 文字聊天git * 语音聊天github 1.2 辅助功能需求:数据库 * 注册.登陆 ...

  9. 远程语音 开源_通过开源语音聊天简化远程会议

    远程语音 开源 对于科幻小说迷来说,视频聊天似乎已经是很长一段时间了,但是现在可以肯定地说,视频通话确实是一种远程通信的好方法. 正如< 星际迷航>和不计其数的菲利普·迪克(Philip ...

  10. 用python实现语音的传输功能_用Python打造一款智能语音聊天小软件!

    最近小编与中科院的同学吃饭的时候,偶然讲起来他最近的一个项目就是利用语音识别的技术和聊天机器人来实现人机交互,简而言之就是我们说话,程序识别出来我们讲的是什么,然后通过聊天机器人跟我们实现交流.我感到 ...

最新文章

  1. Nginx流量拦截算法
  2. cmd锁定计算机病毒,反病毒常用CMD命令大全
  3. NYOJ-523 亡命逃窜(三维立体的BFS)
  4. C++继承同名静态成员处理
  5. 漫步数理统计三十三——采样与统计量
  6. android js 开屏动画,利用Flutter实现“孔雀开屏”的动画效果
  7. 【Linux】Linux的关机和虚拟机克隆、快照
  8. 承接各类软件开发项目
  9. 雷林鹏分享:使用Yaf Codes Generator工具构建YAF测试环境
  10. java队列 双队列_Java队列– Java队列
  11. opensips1.6.4+freeradius2.1.10+radiusclient0.5.6 problem do accounting
  12. Word基础(八)带圈字符
  13. 新手淘客你必须知道的秘密
  14. Snipaste 截图工具快捷键大全
  15. 加权平均数的例子_什么是加权平均数(加权平均数公式例子)
  16. OpenDDS和RTI DDS内置数据类型的互联互通测试
  17. c语言程序设计题目湖南大学,湖南大学C语言期末考试样卷
  18. 使用 patchrom 移植 MIUI
  19. Docker容器化开发流程(一)介绍
  20. 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录

热门文章

  1. 参心坐标系与地心坐标系
  2. 网站域名被微信/QQ红了(被封锁、被屏蔽、被和谐)后最好的解决方法
  3. 清理注册表 php,怎样清理注册表?
  4. 如何下载股票的历史收盘价 股票历史收盘价下载方法
  5. 计算机网络——tcpdump/Wireshark抓包实战
  6. QQ互赞助手pro【每天免费互shua名片赞】2.0系统版本
  7. linux平台MSG_OOB选项测试
  8. 明日书苑:史上书法字体分类最全(收藏版)
  9. Crate 数据库安装与使用
  10. 千古兴亡多少事,一江春水向东流--转任总文章