久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

樹(shù)莓派語(yǔ)音聊天機(jī)器人201802版

 beginnow1 2018-02-26
       最近用樹(shù)莓派實(shí)現(xiàn)了一個(gè)能和人對(duì)話(huà)的機(jī)器人,,簡(jiǎn)要介紹一下。

樹(shù)莓派(Raspberry Pi)是世界上最流行的微型電腦主板,,是開(kāi)源硬件的領(lǐng)導(dǎo)產(chǎn)品,,它為學(xué)生計(jì)算機(jī)編程教育而設(shè)計(jì),只有信用卡大小,,且價(jià)格低廉,。支持linux(debian)等操作系統(tǒng)。最重要的是資料完善,,社區(qū)活躍,。
我用的是樹(shù)莓派B+版本,基本配置是博通BCM2836處理器,,4核900M主頻,,1G RAM。

我的目標(biāo)是做成一個(gè)和人對(duì)話(huà)的機(jī)器人,,這就需要機(jī)器人有輸入設(shè)備和輸出設(shè)備,。輸入設(shè)備是麥克風(fēng),輸出可以是HDMI,、耳機(jī)或音響,,我這里用了音響。下面是我的樹(shù)莓派照片,。4個(gè)USB接口分別連了無(wú)線(xiàn)網(wǎng)卡,、無(wú)線(xiàn)鍵盤(pán),、麥克風(fēng)、音響供電,。


我們可以把機(jī)器人的對(duì)話(huà)分成三個(gè)部分:聽(tīng),、思考、說(shuō),。
“聽(tīng)”,,是把人說(shuō)的話(huà)記錄下來(lái),并轉(zhuǎn)換成文字,。
“思考”,,就是根據(jù)不同的輸入給出不同的輸出。比如,,對(duì)方說(shuō)“現(xiàn)在時(shí)間”,,你就可以回答“現(xiàn)在是北京時(shí)間xx點(diǎn)xx分”。
“說(shuō)”,,是把文字轉(zhuǎn)換成語(yǔ)音,,并播放出來(lái)。

這三個(gè)部分涉及到大量語(yǔ)音識(shí)別,、語(yǔ)音合成,、人工智能等技術(shù),這些都是要花大量時(shí)間精力研究的,,好在有些公司已經(jīng)開(kāi)放了接口給客戶(hù)使用,。這里,我選擇了百度的API,。下面分別說(shuō)明這三個(gè)部分的實(shí)現(xiàn),。

“聽(tīng)”

首先是把人說(shuō)的話(huà)錄制下來(lái),我使用了arecord工具,。命令如下:
  1. arecord -D "plughw:1" -f S16_LE -r 16000 test.wav
其中,,-D參數(shù)后接錄制設(shè)備,連接麥克風(fēng)后,,樹(shù)莓派上有2個(gè)設(shè)備:內(nèi)部設(shè)備和外部usb設(shè)備,,plughw:1代表使用外部設(shè)備。-f表示錄制的格式,,-r表示聲音采樣頻率,。由于后面提到的百度語(yǔ)音識(shí)別對(duì)音頻文件格式是有要求的,我們需要錄制成符合要求的格式,。另外,,在這里我沒(méi)有指定錄制的時(shí)間,它會(huì)一直錄制下去,,直到用戶(hù)按下ctrl-c,。錄制后的音頻文件保存為test.wav,。
接下來(lái),我們要把音頻轉(zhuǎn)換成文字,,即語(yǔ)音識(shí)別(asr),,百度的語(yǔ)音開(kāi)放平臺(tái)提供了免費(fèi)的服務(wù),并支持REST API
文檔見(jiàn): http://yuyin.baidu.com/docs/asr/57
流程基本就是獲取token,,把需要識(shí)別的語(yǔ)音信息,、語(yǔ)音數(shù)據(jù)、token等發(fā)送給百度的語(yǔ)音識(shí)別服務(wù)器,,就能獲取到對(duì)應(yīng)的文字。因?yàn)榉?wù)器支持REST API,,我們可以用任何語(yǔ)言來(lái)實(shí)現(xiàn)客戶(hù)端的代碼,,這里使用的是python



  1. # coding: utf-8

  2. import urllib.request
  3. import json
  4. import base64
  5. import sys

  6. def get_access_token():
  7.     url = "https://openapi.baidu.com/oauth/2.0/token"
  8.     grant_type = "client_credentials"
  9.     client_id = "填寫(xiě)API Key?"
  10.     client_secret = "填寫(xiě)Secret Key"

  11.     url = url + "?" + "grant_type=" + grant_type + "&" + "client_id=" + client_id + "&" + "client_secret=" + client_secret

  12.     resp = urllib.request.urlopen(url).read()
  13.     data = json.loads(resp.decode("utf-8"))
  14.     return data["access_token"]


  15. def baidu_asr(data, id, token):
  16.     speech_data = base64.b64encode(data).decode("utf-8")
  17.     speech_length = len(data)

  18.     post_data = {
  19.             "format" : "wav",
  20.             "rate" : 16000,
  21.             "channel" : 1,
  22.             "cuid" : id,
  23.             "token" : token,
  24.             "speech" : speech_data,
  25.             "len" : speech_length
  26.     }

  27.     url = "http://vop.baidu.com/server_api"
  28.     json_data = json.dumps(post_data).encode("utf-8")
  29.     json_length = len(json_data)
  30.     #print(json_data)

  31.     req = urllib.request.Request(url, data = json_data)
  32.     req.add_header("Content-Type", "application/json")
  33.     req.add_header("Content-Length", json_length)

  34.     print("asr start request\n")
  35.     resp = urllib.request.urlopen(req)
  36.     print("asr finish request\n")
  37.     resp = resp.read()
  38.     resp_data = json.loads(resp.decode("utf-8"))
  39.     if resp_data["err_no"] == 0:
  40.         return resp_data["result"]
  41.     else:
  42.         print(resp_data)
  43.         return None

  44. def asr_main(filename):
  45.     f = open(filename, "rb")
  46.     audio_data = f.read()
  47.     f.close()

  48.     token = get_access_token()
  49. ##    token = "以上獲取token令牌可以保持下來(lái),不用一直獲取,,一個(gè)月有效" 
  50.     uuid = "填寫(xiě)AppID"
  51.     resp = baidu_asr(audio_data, uuid, token)
  52.     print(resp[0])
  53.     return resp[0]


“思考”
這里我使用了圖靈機(jī)器人,。其文檔見(jiàn):http://www./help/h_cent_webapi.jhtml?nav=doc
它的使用非常簡(jiǎn)單,這里不再贅述,,代碼如下:
# coding: utf-8

import requests
import json
import sys

def Tuling(words):
    Tuling_API_KEY = "此處填寫(xiě)自己的Turling KEY"

    body = {"key":Tuling_API_KEY,"info":words.encode("utf-8")}

    url = "http://www./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

“說(shuō)”
先需要把文字轉(zhuǎn)換成語(yǔ)音,,即語(yǔ)音合成(tts)。然后把聲音播放出來(lái),。
百度的語(yǔ)音開(kāi)放平臺(tái)提供了tts的接口,,并可配置男女聲、語(yǔ)調(diào),、語(yǔ)速,、音量。服務(wù)器返回mp3格式的音頻數(shù)據(jù),。我們把數(shù)據(jù)以二進(jìn)制方式寫(xiě)入文件中,。
詳見(jiàn)http://yuyin.baidu.com/docs/tts/136
代碼如下:
  1. # coding: utf-8

  2. import urllib.request
  3. import json
  4. import sys

  5. def baidu_tts_by_post(data, id, token):
  6.     post_data = {
  7.             "tex" : data,
  8.             "lan" : "zh",
  9.             "ctp" : 1,
  10.             "cuid" : id,
  11.             "tok" : token,
  12.     }

  13.     url = "http://tsn.baidu.com/text2audio"
  14.     post_data = urllib.parse.urlencode(post_data).encode('utf-8')
  15.     #print(post_data)
  16.     req = urllib.request.Request(url, data = post_data)

  17.     print("tts start request")
  18.     resp = urllib.request.urlopen(req)
  19.     print("tts finish request")
  20.     resp = resp.read()
  21.     return resp

  22. def tts_main(filename, words):
  23.     token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  24.     text = urllib.parse.quote(words)
  25.     uuid = "填寫(xiě)AppID"
  26.     resp = baidu_tts_by_post(text, uuid, token)

  27.     f = open("test.mp3", "wb")
  28.     f.write(resp)
  29.     f.close()

得到音頻文件后,安裝mpg123: sudo apt-get install mpg123 ,,可以使用mpg123播放器播放,。
  1. mpg123 test.mp3

整合
最后,把這三個(gè)部分組合起來(lái),。
可以先把python相關(guān)的代碼整合成main.py,,如下:
  1. import asr
  2. import tts
  3. import robot

  4. words = asr.asr_main("test.wav")
  5. new_words = robot.Tuling(words)
  6. tts.tts_main("test.mp3", new_words)

再使用腳本,調(diào)用相關(guān)工具:
  1. #! /bin/bash
  2. arecord -"plughw:1" -f S16_LE -r 16000 test.wav
  3. python3 main.py
  4. mpg123 test.mp3

好了,,現(xiàn)在你可以和機(jī)器人對(duì)話(huà)了,。運(yùn)行腳本,對(duì)著麥克風(fēng)說(shuō)句話(huà),,然后按ctrl-c,,機(jī)器人就會(huì)回你話(huà)了,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多