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


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基础教程之Hello World!
Aug 29 Python
python中遍历文件的3个方法
Sep 02 Python
virtualenv实现多个版本Python共存
Aug 21 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
python中open函数的基本用法示例
Sep 07 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
Pytorch 如何实现LSTM时间序列预测
May 17 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
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
JavaScript入门学习书籍推荐
2008/06/12 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
Python struct.unpack
2008/09/06 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python读取几个G的csv文件方法
2019/01/07 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
竞选生活委员演讲稿
2014/04/28 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书