机器人之树莓派打造对话机器人 Python
小标 2018-09-28 来源 : 阅读 1257 评论 0

摘要:本文主要向大家介绍了机器人之树莓派打造对话机器人 Python,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。

本文主要向大家介绍了机器人之树莓派打造对话机器人 Python,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。

工具列表
 1. **树莓派**(型号不要求,本人使用的是3B)

 2. **usb麦克风**(某宝有卖,我就不打广告了) 用来录音

 3. **音响或者喇叭**(某宝也有卖) 用来播放     

以上就是需要的工具

对话机器人分成5步
1. 第一步:“录音”:录音我用到的是使用了*arecord* 安装arecord: sudo apt-get install arecord
               使用arecord录音:
               `arecord -D "plughw:1" -f S16_LE -r 16000 -d 3 /home/pi/Desktop/voice.wav`

2.第二步:”语音识别”:语音识别自我感觉使用百度的比较不错,识别率也挺高的 下面附上语音识别代码
“`
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 = "//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”)
**识别完成之后呢 我们就要开始第三步了 我们要和机器人对话 那么它一定得回复我们,对吧。为了能够智能点,我们就用到了图灵得接口 图灵真的非常好用 能够 查天气语音\讲故事\讲笑话\ 下面附上第三步的代码 “`**
3.第三步:“图灵回复”
# 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 = "//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
4.第四步:“语音合成” 图灵回复了之后 我们要让它播放出来 就用到了百度的语音合成**
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 = “XX-XX-XX-XX-XX-XX” spd = “4” url = “//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()

 
语音合成之后 我们要播放出来 用到了mpg123 为什么我会用这个呢 因为它可以直接播放网页上的音频 非常的好用 安装mpg123: sudo apt-get install mpg123 安装好了之后 我后面等用到了再说怎么用 现在先不说
现在录音 语音识别 语音合成 播放 所需要的工具 代码都准备好了 下面就开始整合在一起
5.第五步:“整合”
先贴上代码 我再具体说说
# 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 = "//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 = "//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 = "//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)
 

首先我用到了录音工具 先录一段话 然后用语音识别去识别我说了什么 然后用if来判断我说的话里面有没有关键字 如果有关键字的话 例如“关闭”那么就会进入一个无限循环 一直来识别我说的话,一直到识别到了我说 关键字“开启”之后就退出这个循环 回到主循环。为什么我加这个功能,因为我们总不可能一直把机器人开在那 一直识别我们说的话 然后一直回复我们 对吧。为了实现这个功能 我想了很久 虽然这个办法不好 因为它会一直循环识别 但这也是没有办法的办法了。如果各位有更好的办法可以联系我Qq:1281248141。继续往下 识别了我的话之后呢 图灵就会回复我一个信息 然后把这个信息文本提交给语音合成,语音合成就把这段文字给合成好了然后用上面说到的mpg123来播放这段音频 mpg123用法mpg123 “url”这样就能够实现对话了

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能智能机器人频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程