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

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

第一部分代码

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)

相关推荐

  • 基于树莓派的语音机器人

    近年来语音识别发展迅速也带动了人工智能的发展.曾经渴望自己做一个机器人,但是无奈,心有余而力不足,经过多年的积累,小白的我也能用站着巨人的肩膀上玩下机器人了. 准备工作:树莓派,音频模块,stm32单片机,百度语音识别接口,喇叭. 整体思路: 1. 由于树莓派没有ADC模块,所以这里借助于stm32的ADC模块来实现将语音信号转换成数字信号,然后通过串口传 输 到树莓派你中,树莓派你将数据组装成wave文件,便于语音识别. 2. 通过http协议将组装的语音文件上传到百度语音识别平台进行识别.文

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

    本文实例为大家分享了基于树莓派的语音对话机器人,供大家参考,具体内容如下 第一部分代码 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(&q

  • Python3从零开始搭建一个语音对话机器人的实现

    01-初心缘由 最近在研究语音识别方向,看了很多的语音识别的资料和文章,了解了一下语音识别的前世今生,其中包含了很多算法的演变,目前来说最流行的语音识别算法主要是依赖于深度学习的神经网络算法,其中RNN扮演了非常重要的作用,深度学习的应用真正让语音识别达到了商用级别.然后我想动手自己做一个语音识别系统,从GitHub上下载了两个流行的开源项目MASR和ASRT来进行复现,发现语音识别的效果没有写的那么好,其中如果要从零来训练自己的语言模型势必会非常耗时. 因此,就有了一个新的想法,借助一些开源的

  • python 实现语音聊天机器人的示例代码

    前言 在不远的将来,实现一定程度上的语音支持将成为日常科技的基本要求,整合了语音识别的python程序提供了其他技术无法比拟的交互性和可访问性.最重要的是,在python程序中实现语音识别非常简单.整个代码实现下来还不到150行. 原理简介 许多现代语音识别系统会在HMM识别之前使用神经网络,通过特征变换和降维技术来简化语音信号,也可以使用语音活动检测器将音频信号减少到可能包含语音的部分. 幸运的是,对于python来讲,一些语音识别的服务可通过API在线使用,且其中大部分也提供了Python

  • 易语言制作语音聊天机器人的代码

    常量数据表 .版本 2 .常量 对话前, "<文本长度: 7>", , text":" .常量 对话后, "<文本长度: 2>", , "} .常量 token前, "<文本长度: 16>", , "access_token":" .常量 双撇号, "<文本长度: 1>", , " .常量 apikey, &q

  • Python人工智能实战之对话机器人的实现

    目录 背景 用到的技术 主要流程 代码模块 Joke对象 爬虫抓取笑话 代码实现 保存到sqlite数据库 抓取笑话并保存到数据库 背景 当我慢慢的开在高速公路上,宽敞的马路非常的拥挤!这时候我喜欢让百度导航的小度给我讲笑话,但她有点弱,每次只能讲一个. 百度号称要发力人工智能,成为国内人工智能的领军企业.但从小度的智商和理解能力上,我对此非常怀疑. 所以我们干脆用Python来开发一个可以讲笑话的机器人,可以自由定制功能,想讲几个笑话就讲几个笑话. 用到的技术 本文用到以下技术: 爬虫 - 抓

  • 基于java使用钉钉机器人向钉钉群推送消息

    这篇文章主要介绍了基于java使用钉钉机器人向钉钉群推送消息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一步.登录钉钉电脑版,获得钉钉机器人的webhook; 第二步,用java发送post请求给钉钉完成消息推送 package com.thinkgem.wlw.modules.lhjh.DingTalk; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import

  • Android studio开发小型对话机器人app(实例代码)

    前言 偶然在网上看到一个免费机器人接口,所以生此想法,接口地址:http://api.qingyunke.com/,Android开发比爬虫要繁琐得多,所以本文我将细说接口的调用方法,读者可根据思路去网上找一些免费接口拿来玩,其他代码一带而过,详细源码见文末. 成品展示: 开发步骤 1)新建项目empty,必要可github托管. 2)先写页面在res->layout目录下新建两个layout xml file activity_main作为主页面,msg_item为附在其上的消息页面.(具体代

  • 基于Python 的语音重采样函数解析

    因为工作中会经常遇到不同采样率的声音文件的问题,特意写了一下重采样的程序. 原理就是把采样点转换到时间刻度之后再进行插值,经过测试,是没有问题的. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 17-7-21 下午2:32 # @Author : Lei.Jinggui # @Site : http://blog.csdn.net/lccever # @File : Resample.py # @Software: PyCharm

  • 30行Python代码打造一款简单的人工语音对话

    @Author:Runsen 1876年,亚历山大·格雷厄姆·贝尔(Alexander Graham Bell)发明了一种电报机,可以通过电线传输音频.托马斯·爱迪生(Thomas Edison)于1877年发明了留声机,这是第一台记录声音并播放声音的机器. 最早的语音识别软件之一是由Bells Labs在1952年编写的,只能识别数字.1985年,IBM发布了使用"隐马尔可夫模型"的软件,该软件可识别1000多个单词. 几年前,一个replace("?",&quo

随机推荐