通过百度MrcpServer实现简单的呼叫对话机器人。
一、参考百度AI接入指南,创建应用,获取AppID、API Key、Secret Key,用于后续配置使用
https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3
二、下载MrcpServer安装包 sdk_asr_MRCPServer-20200609.tar.gz
https://ai.baidu.com/ai-doc/SPEECH/7kaxz0h2z
https://ai.baidu.com/download?sdkId=111
wget https://platform.bj.bcebos.com/sdk%2FasMRCPServer-20200609.tar.gz
三、解压sdk_asr_MRCPServer-20200609.tar.gz文件。会生成个MRCPServer文件夹。
tar -xvf sdk%2Fasr%2FMRCPServer-20200609.tar.gz
四、.安装百度MrcpServer
cd MRCPServer/
sh ./bootstrap.sh
ll /opt/compiler/
total 4
drwxrwxr-x 3 3308 3308 4096 Jun 9 2020 gcc-8.2
五、配置Mrcp
1>配置ASR,为FreeSWITCH提供语音识别服务。
mrcp-server/conf/mrcp-asr.conf
更改AUTH_APPID和AUTH_APPKEY为从百度官方获取的APPID和API Key的值
2>配置TTS,为FreeSWITCH提供语音合成服务。
配置文件为:mrcp-server/conf/mrcp-proxy.conf
更改AUTH_APPID和AUTH_APPKEY为从百度官方获取的APPID和API Key的值
3>配置MrcpServer的SIP服务端,为FreeSWITCH的MrcpClient提供SIP服务。
mrcp-server/conf/unimrcpserver.xml
4>启动MrcpServer,无报错即正常。
cd mrcp-server/
./bin/unimrcpserver -r . &
5>FreeSWITCH使用百度的MrcpServer需要用到grammar.xml这个语法文件。
cp /MRCPServer/mrcp-server/data/grammar.xml /etc/freeswitch/grammar/baidu.gram
六、FreeSWITCH配置
vim /etc/freeswitch/conf/mrcp_profiles/baiduserver.xml
vim /etc/freeswitch/conf/autoload_configs/unimrcp.conf.xml
七、测试
>> ASR result parse failed
%s' % e)
continue
session.sleep(1000)
session.hangup()
def asr2text(text):
xml_dom = parseString(text)
collection = xml_dom.documentElement
returnInfo = collection.getElementsByTagName("input")
guest_text =returnInfo[0].firstChild.data
return guest_text
def bot_chat(chat_input, user_id, client_id, client_secret):
# 设置默认回复
chat_reply = "不好意思,我正在学习中,随后回复你"
# 固定的url格式
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s" % (
client_id, client_secret)
res = requests.post(url)
access_token = json.loads(res.text)["access_token"]
unit_chatbot_url = "https://aip.baidubce.com/rpc/2.0/unit/service/v3/chat?access_token=" + access_token
# 拼装聊天接口对应请求
post_data = {
"version": "3.0",
"service_id": "S75157",
"session_id": "",
"log_id": str(random.random()),
"skill_ids":["1237888","1237895"],
"request":
{
"terminal_id": user_id,
"query": chat_input
}
}
# 将聊天接口对应请求数据转为json数据
res = requests.post(url=unit_chatbot_url, json=post_data)
# 获取聊天接口返回数据
unit_chat_obj = json.loads(res.text)
if unit_chat_obj["error_code"] != 0:
return chat_reply+'('+unit_chat_obj["error_msg"]+')'
unit_chat_response_reply = unit_chat_obj['result']['responses'][0]['actions'][0]['say']
return unit_chat_response_reply
页面更新:2024-03-12
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号