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