- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章基于树莓派的语音对话机器人由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例为大家分享了基于树莓派的语音对话机器人,供大家参考,具体内容如下 。
第一部分代码 。
1
|
arecord
-
d
"plughw:1"
-
f s16_le
-
r
16000
-
d
3
/
home
/
pi
/
desktop
/
voice.wav
|
第二部分代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# 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
”)
|
第三部分代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 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
|
第四部分代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 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()
|
第五部分代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# 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
)
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://blog.csdn.net/Won9yIFan/article/details/84939364 。
最后此篇关于基于树莓派的语音对话机器人的文章就讲到这里了,如果你想了解更多关于基于树莓派的语音对话机器人的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
(“ donut 派”)是否有最大切片数?我使用了 highchart(“ donut 派”)示例,但无法超过 10 个切片。请注意,内部切片“F”丢失了。下面是示例代码。 http://jsfidd
有谁知道如何找到 Samsung Galaxy 手机等同于 Settings.ACTION_ZEN_MODE_PRIORITY_SETTINGS 的常量?我有一个应用程序在三星用户单击应该将他们带到“
所以我很难弄清楚如何设置饼图/图例位置的布局。我希望图例左对齐,饼图右对齐。 40/60 百分比 -ish。 像这样: chart = new Highcharts.Chart({ c
我试图创建一种带有 4 个切片的圆形旋转木马,通过单击一个切片,它会扩展到约 2/3 的饼图,显示它的内容(另一个切片同样会收缩)基本上我是从 raphael “growing pie” 演示开始的
我尝试了所有可能的方式来提供 PIE.js 的路径,我使用的是 asp.net,这与在 java+tomcat 中的工作方式相同。我试过这样给 1)文件:css/home.css,css/pie/PI
cmds = ['time'] while True: inp = input('::> ') sinp = inp.split() if str(sinp[0]) in cm
我已经在 Raphael Google Groups 上看到过这个问题,但经过数小时的搜索后,在这里以及 Google 上,我似乎找不到解决方案。 我只是希望能够使用 jQuery 定位我的饼图(sv
这个问题在这里已经有了答案: Permission Denial: startForeground requires android.permission.FOREGROUND_SERVICE (5
我是一名优秀的程序员,十分优秀!