来自 澳门金莎娱乐手机版 2019-11-21 05:06 的文章
当前位置: 金沙澳门官网网址 > 澳门金莎娱乐手机版 > 正文

用高脚菠派达成对电话机器人

用地仙泡派完成对电话机器人

近期用复盆子派完毕了三个能和人对话的机器人,简介一下。

高脚菠派(Raspberry Pi卡塔尔国是社会风气上最流行的小型Computer主板,是开源硬件的官员成品,它为学员计算机编程教育而设计,只有信用卡大小,且价格低廉。援助linux(debian)等操作系统。最要害的是质地康健,社区活泼。
笔者用的是沙窝窝派B+版本,基本配备是博通BCM2836Computer,4核900M主频,1G RAM。

本身的靶子是做成多少个和人对话的机器人,这就需求机器人有输入设备和输出设备。输入设备是迈克风,输出能够是HDMI、动铁耳机或音响,小编这里用了声音。上边是自家的高脚菠派照片。4个USB接口分别连了有线网卡、有线键盘、迈克风、音响供电。
图片 1

小编们能够把机器人的对话分成多少个部分:听、思索、说。
“听”,是把人说的话记录下来,并转变来文字。
“构思”,正是依附分歧的输入给出不一样的出口。比方,对方说“以后时间”,你就可以回复“以后是新加坡时间xx点xx分”。
“说”,是把文字转变到语音,并播放出来。

那七个部分涉及到大方口音识别、语音合成、人工智能等技艺,这么些都是要花大量日子精力研究的,幸好微微厂商曾经开放了接口给客商利用。这里,小编选拔了百度的API。下边分别证实那多个部分的落实。

“听”

先是是把人说的话摄像下来,笔者动用了arecord工具。命令如下:

  1. arecord -D "plughw:1" -f S16_LE -r 16000 test.wav

中间,-D参数后接摄像设备,连接迈克风后,沙窝窝派上有2个器材:内部设备和表面usb设备,plughw:1象征选用外部设备。-f代表摄像的格式,-r代表声音采集样品频率。由于前边提到的百度语音识别对音频文件格式是有必要的,大家必要录像成契合须要的格式。别的,在这里边本身未有一些名录像的小时,它会平昔录像下来,直到顾客按下ctrl-c。摄像后的音频文件保存为test.wav。
接下去,大家要把拍子转换来文字,即语音识别(asr卡塔 尔(阿拉伯语:قطر‎,百度的语音开放平台提供了免费的劳务,并帮衬REST API
文档见:
流程基本正是收获token,把供给识别的语音讯息、语音数据、token等发送给百度的话音识别服务器,就会拿到到对应的文字。因为服务器协助REST API,大家可以用别的语言来完成顾客端的代码,这里运用的是python

# coding: utf-8

import urllib.request
import json
import base64
import sys

def get_access_token():
url = "https://openapi.baidu.com/oauth/2.0/token"
grant_type = "client_credentials"
client_id = "xxxxxxxxxxxxxxxxxx"
client_secret = "xxxxxxxxxxxxxxxxxxxxxx"

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

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


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

post_data = {
"format" : "wav",
"rate" : 16000,
"channel" : 1,
"cuid" : id,
"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 = urllib.request.Request(url, data = json_data)
req.add_header("Content-Type", "application/json")
req.add_header("Content-Length", json_length)

print("asr start requestn")
resp = urllib.request.urlopen(req)
print("asr finish requestn")
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):
f = open(filename, "rb")
audio_data = f.read()
f.close()

#token = get_access_token()
token = "xxxxxxxxxxxxxxxxxx"
uuid = "xxxx"
resp = baidu_asr(audio_data, uuid, token)
print(resp[0])
return resp[0] 

“思考”
此间自个儿利用了百度api store的图灵机器人。其文书档案见:
它的利用超轻松,这里不再赘言,代码如下:

import urllib.request
 import sys
import json

def robot_main(words):
url = "http://apis.baidu.com/turing/turing/turing?"

key = "879a6cb3afb84dbf4fc84a1df2ab7319"
userid = "1000"

words = urllib.parse.quote(words)
url = url + "key=" + key + "&info=" + words + "&userid=" + userid

req = urllib.request.Request(url)
req.add_header("apikey", "xxxxxxxxxxxxxxxxxxxxxxxxxx")

print("robot start request")
resp = urllib.request.urlopen(req)
print("robot stop request")
content = resp.read()
if content:
data = json.loads(content.decode("utf-8"))
print(data["text"])
return data["text"]
else:
return None

“说”
先供给把文字转变到语音,即语音合成(tts卡塔 尔(阿拉伯语:قطر‎。然后把声音播放出来。
百度的口音开放平台提供了tts的接口,并可计划男女声、语调、语速、音量。服务器重返DVD格式的旋律数据。大家把数量以二进制格局写入文件中。
详见
代码如下:

# coding: utf-8

import urllib.request
import json
import sys

def baidu_tts_by_post(data, id, token):
post_data = {
"tex" : data,
"lan" : "zh",
"ctp" : 1,
"cuid" : id,
"tok" : token,
}

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

print("tts start request")
resp = urllib.request.urlopen(req)
print("tts finish request")
resp = resp.read()
return resp

def tts_main(filename, words):
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
text = urllib.parse.quote(words)
uuid = "xxxx"
resp = baidu_tts_by_post(text, uuid, token)

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

获得音频文件后,能够采纳mpg123播放器播放。

  1. mpg123 test.mp3

整合
最后,把那四个部分构成起来。
能够先把python相关的代码整合成main.py,如下:

import asr
 import tts
import robot

words = asr.asr_main("test.wav")
new_words = robot.robot_main(words)
tts.tts_main("test.mp3", new_words) 

再接收脚本,调用相关工具:

  1. #! /bin/bash
  2. arecord -D "plughw:1" -f S16_LE -r 16000 test.wav
  3. python3 main.py
  4. mpg123 test.mp3

好了,以后您能够和机器人对话了。运转脚本,对着迈克风说句话,然后按ctrl-c,机器人就能够回你话了。

近日用木莓派完毕了七个能和人对话的机器人,简单介绍一下。 木莓派(Raspberry Pi卡塔 尔(阿拉伯语:قطر‎是社会风气上最风靡的Mini计算机...

本文由金沙澳门官网网址发布于澳门金莎娱乐手机版,转载请注明出处:用高脚菠派达成对电话机器人

关键词: