樹莓派制作語音對話機器人

一液茎、材料準備

1、樹莓派一個
2乔妈、免驅(qū)動USB麥克風
3蝙云、耳機

二、教程開始

1.錄音

插上麥克風
我用到的是使用了arecord* 測試是否麥克風能否使用路召。
使用錄音輸入如下命令

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

2.語音識別

建立語音識別文件夾輸入如下程序

sudo nano yuyinshibie.py

去百度語音官網(wǎng)申請語音識別


img

寫代碼進去 將上面申請的ID和secret寫進下面紅色區(qū)域

\# 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, 
 “l(fā)en” : 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”)

代碼圖示根據(jù)圖改縮進


識別完成之后呢我們就要開始第三步了我們要和機器人對話那么它一定得回復我們勃刨,對吧。為了能夠智能點,我們就用到了圖靈得接口圖靈真的非常好用能夠查天氣語音****講故事****講笑話下面附上第三步的代碼

3股淡、“圖靈回復"

(1)去圖靈機器人官網(wǎng)注冊創(chuàng)建一個微信機器人


在這里插入圖片描述

(2)創(chuàng)建圖靈機器人文件輸入代碼

sudo nano Turling.py

(3) 寫入代碼身隐,在紅色處寫自己申請的API KEY

\# 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

根據(jù)圖片改代碼縮進

4、語音合成

圖靈回復了之后 我們要讓它播放出來 就用到了百度的語音合成
(1)創(chuàng)建語音合成文件

sudo nano yuyinhecheng.py

(2)寫代碼

\# 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()

根據(jù)圖片改縮進


5唯灵、播放

語音合成之后我們要播放出來用到了mpg123為什么我會用這個呢因為它可以直接播放網(wǎng)頁上的音頻非常的好用

** 安裝mpg123**:

sudo apt-get install mpg123 

安裝好了之后 我后面等用到了再說怎么用 現(xiàn)在先不說
現(xiàn)在錄音 語音識別 語音合成 播放 所需要的工具 代碼都準備好了 下面就開始整合在一起

6贾铝、整合

創(chuàng)建最終文件

sudo nano yuyin.py

寫代碼

\# 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=暫停結(jié)束&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)

根據(jù)圖改縮進

img

7、運行

最后就可以運行機器人了

輸入代碼

sudo python yuyin.py

就可以和機器人對話啦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埠帕,一起剝皮案震驚了整個濱河市垢揩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敛瓷,老刑警劉巖叁巨,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呐籽,居然都是意外死亡锋勺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門狡蝶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宙刘,“玉大人,你說我怎么就攤上這事牢酵⌒” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵馍乙,是天一觀的道長布近。 經(jīng)常有香客問我垫释,道長,這世上最難降的妖魔是什么撑瞧? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任棵譬,我火速辦了婚禮,結(jié)果婚禮上预伺,老公的妹妹穿的比我還像新娘订咸。我一直安慰自己,他們只是感情好酬诀,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布脏嚷。 她就那樣靜靜地躺著,像睡著了一般瞒御。 火紅的嫁衣襯著肌膚如雪父叙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天肴裙,我揣著相機與錄音趾唱,去河邊找鬼。 笑死蜻懦,一個胖子當著我的面吹牛甜癞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宛乃,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼带欢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烤惊?” 一聲冷哼從身側(cè)響起乔煞,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柒室,沒想到半個月后渡贾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡雄右,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年空骚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擂仍。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡囤屹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逢渔,到底是詐尸還是另有隱情肋坚,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站智厌,受9級特大地震影響诲泌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铣鹏,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一敷扫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诚卸,春花似錦葵第、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辫愉,卻和暖如春栅受,著一層夾襖步出監(jiān)牢的瞬間将硝,已是汗流浹背恭朗。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留依疼,地道東北人痰腮。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像律罢,于是被迫代替她去往敵國和親膀值。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容