基于树莓派的语音对话机器人


Posted in Python onJune 17, 2019

本文实例为大家分享了基于树莓派的语音对话机器人,供大家参考,具体内容如下

第一部分代码

arecord -D "plughw:1" -f S16_LE -r 16000 -d 3 /home/pi/Desktop/voice.wav

第二部分代码

# coding: utf-8
import sys 
import json 
import urllib2 
import base64 
import requests
reload(sys) 
sys.setdefaultencoding(“utf-8”)
def get_access_token(): 
url = “https://openapi.baidu.com/oauth/2.0/token” 
body = { 
“grant_type”:”client_credentials”, 
“client_id” :”此处填写自己的client_id”, 
“client_secret”:”此处填写自己的client_secret”, 
}
r = requests.post(url,data=body,verify=True)
respond = json.loads(r.text)
return respond["access_token"]
def yuyinshibie_api(audio_data,token): 
speech_data = base64.b64encode(audio_data).decode(“utf-8”) 
speech_length = len(audio_data) 
post_data = { 
“format” : “wav”, 
“rate” : 16000, 
“channel” : 1, 
“cuid” : “B8-27-EB-BA-24-14”, 
“token” : token, 
“speech” : speech_data, 
“len” : speech_length 
}
url = "http://vop.baidu.com/server_api"
json_data = json.dumps(post_data).encode("utf-8")
json_length = len(json_data)
#print(json_data)
 
req = urllib2.Request(url, data=json_data)
req.add_header("Content-Type", "application/json")
req.add_header("Content-Length", json_length)
 
#print("asr start request\n")
resp = urllib2.urlopen(req)
#print("asr finish request\n")
resp = resp.read()
resp_data = json.loads(resp.decode("utf-8"))
if resp_data["err_no"] == 0:
  return resp_data["result"]
else:
  print(resp_data)
  return None
def asr_main(filename,tok): 
try: 
f = open(filename, “rb”) 
audio_data = f.read() 
f.close() 
resp = yuyinshibie_api(audio_data,tok) 
return resp[0] 
except Exception,e: 
print “e:”,e 
return “识别失败”.encode(“utf-8”)

第三部分代码

# coding: utf-8
 
import requests
import json
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
 
 
def Tuling(words):
  Tuling_API_KEY = "此处填写自己的Turling KEY"
 
  body = {"key":Tuling_API_KEY,"info":words.encode("utf-8")}
 
  url = "http://www.tuling123.com/openapi/api"
  r = requests.post(url,data=body,verify=True)
 
  if r:
    date = json.loads(r.text)
    print date["text"]
    return date["text"]
  else:
    return None

第四部分代码

# coding: utf-8
import sys 
import urllib2 
import json 
import os 
import yuyinshibie
reload(sys) 
sys.setdefaultencoding("utf-8")
def yuyinhecheng_api(tok,tex): 
  cuid = "B8-27-EB-BA-24-14" 
  spd = "4" 
  url = "http://tsn.baidu.com/text2audio?tex="+tex+"&lan=zh&cuid="+cuid+"&ctp=1&tok="+tok+"&per=3" 
  #print url 
  #response = requests.get(url) 
  #date = response.read() 
  return url
  def tts_main(filename,words,tok): 
    voice_date = yuyinhecheng_api(tok,words)
    f = open(filename,"wb")
    f.write(voice_date)
    f.close()

第五部分代码

# coding: utf-8
 
import os
import time
import yuyinhecheng
import Turling
import yuyinshibie
 
 
tok = yuyinshibie.get_access_token()
 
switch = True
while switch:
  os.system('sudo arecord -D "plughw:1" -f S16_LE -r 16000 -d 3 /home/pi/Desktop/voice.wav')
  time.sleep(0.5)
  info = yuyinshibie.asr_main("/home/pi/Desktop/voice.wav",tok)
  if '关闭'.encode("utf-8") in info:
    while True:
      os.system('sudo arecord -D "plughw:1" -f S16_LE -r 16000 -d 10 /home/pi/Desktop/voice.wav')
      time.sleep(10)
 
      info = yuyinshibie.asr_main("/home/pi/Desktop/voice.wav",tok)
      if '开启'.encode("utf-8") in info:
        break
 
    url = "http://tsn.baidu.com/text2audio?tex=开启成功&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3"
    os.system('mpg123 "%s"'%url)
 
 
  elif '暂停'.encode("utf-8") in info:
    url = "http://tsn.baidu.com/text2audio?tex=开始暂停&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3"
    os.system('mpg123 "%s"'%url)
    time.sleep(10)
 
    url = "http://tsn.baidu.com/text2audio?tex=暂停结束&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3"
    os.system('mpg123 "%s"'%url)
    continue
 
 
  else:
    tex = Turling.Tuling(info)
    url = yuyinhecheng.yuyinhecheng_api(tok,tex)
    os.system('mpg123 "%s"'%url)
    time.sleep(0.5)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python采用django框架实现支付宝即时到帐接口
May 17 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
使用Python的turtle模块画图的方法
Nov 15 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
python requests使用socks5的例子
Jul 25 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python3 元组tuple入门基础
Feb 09 Python
在python3中实现更新界面
Feb 21 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 #Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 #Python
使用python进行波形及频谱绘制的方法
Jun 17 #Python
PyQt5图形界面播放音乐的实例
Jun 17 #Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 #Python
PyQt5显示GIF图片的方法
Jun 17 #Python
详解pytorch 0.4.0迁移指南
Jun 16 #Python
You might like
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
Python set集合类型操作总结
2014/11/07 Python
Python使用turtule画五角星的方法
2015/07/09 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
python实现连续图文识别
2018/12/18 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
《小熊住山洞》教学反思
2014/02/21 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
群众路线个人整改方案
2014/10/25 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
亮剑观后感
2015/06/05 职场文书