CentOS7Freeswitch1。10。7对接百度MrcpServer实现TTS和ASR
通过百度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
七、测试
import os import freeswitch from freeswitch import * import sys import json import tempfile # import requests import xml.etree.ElementTree as ET import freeswitch as fs from freeswitch import * from xml.dom.minidom import parseString import random import requests ###########百度UNIT3.0聊天########### client_id = "ADIB9GGUGzYNpL**************" client_key = "eOu8qYRU5sogDKMKVkMYheXV**********" user_id = "88888" # 默认user_id都为88888 def handler(session, args): session.answer() session.sleep(1000) session.execute("speak", "unimrcp:baiduserver||" + "我是你的智能小卓子,有什么可以帮助你的?") tryagain = 0 while session.ready(): session.execute("play_and_detect_speech", "silence_stream://1000 detect:unimrcp:baiduserver {start-input-timers=false,no-input-timeout=60000,input-timeout=60000,recognition-timeout=60000}builtin:grammar/baidu") asr_result = session.getVariable("detect_speech_result") if asr_result is None: tryagain = 0 else: try: freeswitch.consoleLog("CRIT", " ==================== "" + asr_result + ""==================== ") #语音转文字 guest_text = asr2text(asr_result) # freeswitch.consoleLog("CRIT", "----------------结果识别-------------------:"" + text + "" ") tryagain = 1 #对接机器人 bot_text=bot_chat(guest_text, user_id, client_id, client_key) session.execute("speak", "unimrcp:baiduserver||" + bot_text) except Exception as e: fs.consoleLog("CRIT", ">>> 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
不同款式的空气消毒机应用有什么区别呢?不同款式不同功能应用不一样即使是不同的空气消毒机都会配备滤网,紫外线,等离子电场的几乎一样的配件,只有风量的区别,但是几乎一样的配件,造就了不同的空气消毒机,有不同的功能和款式,那
uniapp入门到进阶一2基础知识全回顾接下来的内容我们只介绍干货,不扯犊子。一uniapp组件视图组件,用来包裹其他组件1view。使用频率最高的组件(如果使用小程序编译会默认转换为view)templateviewc
快抢!人民日报微信万元现金红包又来正月十三人民日报微信祝您新春快乐福运绵绵从除夕起,到元宵节人民日报微信公众号人民日报客户端人民日报视频客户端视界将送出多轮万元现金红包陪您一起过大年进入支付宝红包页面输入红包口令就
360全视野头盔,还能导航打电话,有了它秒变钢铁侠!想必大家都曾被电影中身着黑色锃亮皮衣,脚踩棱角分明炫酷机车的主角帅了一脸吧!轰鸣的油门,飞溅的沙土都不断调动着人体的肾上腺素,忍不住感叹一句真酷!尤其是搭配上与摩托车风格相近的头盔
为什么说手机是精神鸦片?为什么说手机是精神鸦片?智能设备鸦片大家都知道,是一种让人上瘾的慢性毒药,一旦染上将会严重影响身心健康,而且由于其昂贵的价格,常常使得普通家庭倾家荡产,正是因为鸦片的畅销性和暴利的
高性价比便宜国外VPS服务器推荐如果你想要搭建一个外贸WordPress网站,正常情况下需要准备一个域名和主机空间,我们多数时候会选择共享虚拟主机来作为我们网站的服务器,不仅便宜而且还很容易上手,对于新手来说非常
幼儿睡前故事霸王龙苏苏的黑牙保护牙齿新故事学堂推送的第4篇原创精品儿童睡前故事音频文字版儿童睡前故事霸王龙苏苏丛林故事集文字版霸王龙苏苏丛林故事集霸王龙苏苏的黑牙这一天,霸王龙一家正围坐在一起吃早餐,突然,小霸王龙苏
困难是人生的一种磨炼人只要活着,就会遇到一些不顺心的事,甚至是困难灾难。在灾难面前,有的人可能会自怨自艾,感叹命运的不公,抱怨上帝的自私,有的人则冷静乐观地面对。我们是否想过,一次灾难也许是一种对心灵
如果你是自卑之人,一定好好看看!很不幸,我自己就是自卑之人!近来某天晚上,半睡半醒之际,恍惚间得到克服自卑之良药,希望与君共勉!助大家脱困于苦海,让阳光洒满心田!曾几何时,儿时的快乐已悄无踪迹!不像周围的人,伴随
中国女乒大溃败!乒乓球安曼赛6人参赛仅1人晋级四强2023乒乓球安曼站女单14决赛的比赛已经全部结束,结果谁也没想到,六朵小金花蒯曼韩菲儿纵歌曼覃予萱范姝涵张翔宇参赛,最终只有小将蒯曼闯进四强。其中蒯曼31战胜队友覃予萱(118,
北京冬奥精神宣讲团续写双奥故事光明日报记者董城2月3日,在北京冬奥会成功举办一周年之际,北京冬奥精神宣讲团来到延庆赛区,在中关村(延庆)体育科技前沿技术创新中心举办北京冬奥会一周年专场宣讲会。8位冬奥精神宣讲员