您当前的位置:首页 > 电脑百科 > 人工智能

CentOS 7 Freeswitch1.10.7 对接百度MrcpServer实现 TTS和ASR

时间:2022-09-28 14:12:36  来源:今日头条  作者:IT界螺丝钉

通过百度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

<include>
  <!-- 后面我们使用该配置文件,均使用 name 作为唯一标识,而不是文件名 -->
  <profile name="baiduserver" version="2">
    <!-- Mrcp Server 地址 -->
    <!-- Mrcp Server 地址和FreeSWITCH如果不在同一个服务器,请酌情修改 -->
    <param name="server-ip" value="127.0.0.1"/>
    <!-- Mrcp Server 端口号 -->
    <param name="server-port" value="6060"/>
    <param name="resource-location" value=""/>

    <!-- FreeSWITCH的Mrcp Clent的ip/port/transfer/rtp-ip/rtp-port等信息 -->
    <!-- Mrcp Server 地址和FreeSWITCH如果不在同一个服务器,请酌情修改client-ip/rtp-ip,以便能连接到Mrcp Server -->
    <param name="client-ip" value="127.0.0.1" />
    <param name="client-port" value="6666"/>
    <param name="sip-transport" value="udp"/>
	<param name="rtp-ip" value="127.0.0.1"/>
    <param name="rtp-port-min" value="21000"/>
    <param name="rtp-port-max" value="22000"/>
    
    <param name="speechsynth" value="speechsynthesizer"/>
    <param name="speechrecog" value="speechrecognizer"/>
    <param name="codecs" value="PCMU PCMA L16/96/8000"/>

    <!-- Add any default MRCP params for SPEAK requests here -->
    <synthparams>
    </synthparams>

    <!-- Add any default MRCP params for RECOGNIZE requests here -->
    <recogparams>
      <!--param name="start-input-timers" value="false"/-->
    </recogparams>
  </profile>
</include>

 

vim /etc/freeswitch/conf/autoload_configs/unimrcp.conf.xml

<configuration name="unimrcp.conf" description="UniMRCP Client">
  <settings>
    <param name="default-tts-profile" value="baiduserver"/>
    <param name="default-asr-profile" value="baiduserver"/>
    <param name="log-level" value="DEBUG"/>
    <param name="enable-profile-events" value="false"/>

    <param name="max-connection-count" value="100"/>
    <param name="offer-new-connection" value="1"/>
    <param name="request-timeout" value="3000"/>
  </settings>

  <profiles>
    <X-PRE-PROCESS cmd="include" data="../mrcp_profiles/*.xml"/>
  </profiles>

</configuration>

七、测试

 

 

   <!-- 百度 unimrcp server asr 测试 Python/ target=_blank class=infotextkey>Python版 -->
   <!-- play_and_detect_speech -->
   <extension name="asr-play-and-detect-speech">
        <condition field="destination_number" expression="^88994$">
            <action application="sleep" data="1000"/>
            <action application="answer" /> 
            <action application="python" data="test"/>
        </condition>
   </extension>
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", "n====================n'" + asr_result + "'====================n")
                #语音转文字
                guest_text = asr2text(asr_result)
                # freeswitch.consoleLog("CRIT", "----------------结果识别-------------------:'" + text + "'n") 
                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 n%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 


Tags:MrcpServer   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
CentOS 7 Freeswitch1.10.7 对接百度MrcpServer实现 TTS和ASR
通过百度MrcpServer实现简单的呼叫对话机器人。一、参考百度AI接入指南,创建应用,获取AppID、API Key、Secret Key,用于后续配置使用https://ai.baidu.com/ai-doc/REFERENCE/Ck...【详细内容】
2022-09-28  Search: MrcpServer  点击:(681)  评论:(0)  加入收藏
▌简易百科推荐
ChatGPT 应用商店?可能是一个万能应用程序!
OpenAI 在去年 11 月召开了一次开发者大会,首席执行官 Sam Altman 希望软件制造商在 ChatGPT 之上进行进一步的构建。OpenAI 表示,它将很快推出一个市场,开发人员和非技术人员...【详细内容】
2024-04-12  视角先锋队    Tags:ChatGPT   点击:(2)  评论:(0)  加入收藏
Kyligence发布企业级AI解决方案!AI数智助理降低数据使用门槛
智东西作者 | 长颈鹿编辑 | 李水青智东西4月12日报道,昨日大数据分析和指标平台供应商Kyligence(硅智信息)召开了数智论坛暨春季发布会,并分享和探讨Data+AI产品及解决方案在金...【详细内容】
2024-04-12    智东西  Tags:Kyligence   点击:(2)  评论:(0)  加入收藏
百度Create AI剧透:“三大开发神器”升级,模型增至77个,三步即可生成应用
智东西(公众号:zhidxcom)作者| 香草编辑| 李水青智东西4月11日报道,今日,在百度Create AI开发者大会预沟通会上,百度披露了“三大开发神器”AgentBuilder、AppBuilder、ModelBuild...【详细内容】
2024-04-12    智东西  Tags:Create AI   点击:(2)  评论:(0)  加入收藏
李彦宏最新内部讲话:开源大模型不如闭源,后者会持续领先
界面新闻记者 | 李如嘉界面新闻编辑 | 宋佳楠4月11日,界面新闻获悉,百度创始人、董事长兼首席执行官李彦宏在一场内部讲话中首次谈及文心大模型为何不开源,以及对于大模型开源...【详细内容】
2024-04-12    界面  Tags:李彦宏   点击:(1)  评论:(0)  加入收藏
AI未来或超越“最聪明的人”?专家谈发展如何兼顾公平
中新社北京4月11日电 (记者 马帅莎)到明年底或2026年,人工智能(AI)或超越“最聪明的人”,美国知名企业家埃隆&middot;马斯克近日对人工智能的这一大胆猜想引起关注,这比他去年...【详细内容】
2024-04-12    中国新闻网  Tags:AI   点击:(2)  评论:(0)  加入收藏
行业大模型快速落地的一年,如何做?
生成式AI正成为时下科技企业“讲故事”的关键词之一。但从发展上看,无论是“文生文”的大语言模型,还是“文生图”的多模态模型,更多的是辅助人们进行一些简单的办公,或者提供一...【详细内容】
2024-04-10    钛媒体APP  Tags:行业大模型   点击:(3)  评论:(0)  加入收藏
互联网充斥“针对小白的AI课”,能相信吗?普通人不学AI课程会被淘汰?
早前,一位标榜清华大学博士和多家公司AI顾问名头的百万级粉丝量博主,向用户大力推介“所有人都需要学”的AI入门课程。不过,这些课程最终因贩卖焦虑、蒙骗学员而被平台下架。然...【详细内容】
2024-04-10    九派新闻  Tags:AI课   点击:(9)  评论:(0)  加入收藏
藏在AI背后的“吃电狂魔”
人工智能时代的能耗黑洞据估算,到2027年,人工智能行业每年将消耗85~134太瓦时的电力,相当于瑞典或荷兰一年的总用电量。马斯克判断,电力缺口最早可能会在2025年发生,“明年你会看...【详细内容】
2024-04-09    雪豹财经社  Tags:AI   点击:(4)  评论:(0)  加入收藏
OpenAI和谷歌再起纷争:AI的尽头是内容
日前,纽约时报的一篇报道称,人工智能公司 OpenAI为收集高质量训练数据而开发了一个语音转录模型Whisper。该模型主要用于转录 OpenAI 获取的超过 100 万小时的 YouTube 视频,也...【详细内容】
2024-04-09  小编也疯狂  新浪网  Tags:AI   点击:(4)  评论:(0)  加入收藏
AI产业的灰色暗面:OpenAI、谷歌、META如何搞训练语料
财联社4月7日讯(编辑 史正丞)种种迹象显示,目前站在全世界AI领域潮头浪尖的这些公司,早在几年前就已经陷入对训练语料的“绝望”追逐中&mdash;&mdash;为此他们不惜修改政策条款...【详细内容】
2024-04-09    财联社  Tags:AI产业   点击:(4)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条