gpt4 book ai didi

基于树莓派的语音对话机器人

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 29 4
gpt4 key购买 nike

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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com