树莓派python机器人程序_基于树莓派的语音对话机器人

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

第一部分代码

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)

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值