FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

这篇具有很好参考价值的文章主要介绍了FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近由于有开发智能语音机器人的需求,需要使用语音识别(ASR)和文本语音转换(TTS)技术,老板指定使用科大讯飞的原子能力来提供这两项技术的支持。在语音侧,我们使用开源的软交换系统FreeSwitch来对接科大的接口。在与科大讯飞的技术支撑沟通后,确认ASR和TTS的对接采用mrcp协议,幸好FreeSwitch是支持这个协议的,下面就把整个对接的过程记录下。

首先我们得搞清楚这个mrcp协议的大体交互流程,主要是如下图。FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

mrcp一般是由客户端发起invite请求与服务器协商语音编码和mrcp通道信息,然后进行基于mrcp协议的asr信息和tts信息的交互,最后进行rtp语音流交互并返回识别信息直到挂机为止。

 FreeSwitch内部有一个mod_unimrcp的模块专门用来处理对接mrcp服务器,它的配置文件在conf/autoload_config/unimrcp.conf.xml中,主要的配置如下:

<configuration name="unimrcp.conf" description="UniMRCP Client">
  <settings>
    <!-- UniMRCP profile to use for TTS -->
    <param name="default-tts-profile" value="kdxf-mrcp2"/>
    <!-- UniMRCP profile to use for ASR -->
    <param name="default-asr-profile" value="kdxf-mrcp2"/>
    <!-- UniMRCP logging level to appear in freeswitch.log.  Options are:
         EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG -->
    <param name="log-level" value="DEBUG"/>
    <!-- Enable events for profile creation, open, and close -->
    <param name="enable-profile-events" value="true"/>

    <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>

这其中最主要的是default-tts-profile和default-asr-profile的配置,它对应了ASR和TTS的配置文件,这个配置文件一般在conf/mrcp_profiles/下面,我们来看一下相关的配置:

<include>
  <!-- 科大讯飞 Speech Server 5.0 MRCPv2 -->
  <profile name="bjzk-mrcp2" version="2">
    <param name="client-ip" value="172.28.105.14"/>
    <param name="client-port" value="5191"/>
    <param name="server-ip" value="172.28.105.13"/>
    <param name="server-port" value="7010"/>
    <!--param name="force-destination" value="1"/-->
    <param name="sip-transport" value="udp"/>
    <!--param name="ua-name" value="FreeSWITCH"/-->
    <!--param name="sdp-origin" value="FreeSWITCH"/-->
    <!--<param name="rtp-ext-ip" value="172.28.105.15"/>-->
    <param name="rtp-ip" value="172.28.105.14"/>
    <param name="rtp-port-min" value="4000"/>
    <param name="rtp-port-max" value="5000"/>
    <!-- enable/disable rtcp support -->
    <param name="rtcp" value="1"/>
    <!-- rtcp bye policies (rtcp must be enabled first)
             0 - disable rtcp bye
             1 - send rtcp bye at the end of session
             2 - send rtcp bye also at the end of each talkspurt (input)
    -->
    <param name="rtcp-bye" value="2"/>
    <!-- rtcp transmission interval in msec (set 0 to disable) -->
    <param name="rtcp-tx-interval" value="5000"/>
    <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) -->
    <param name="rtcp-rx-resolution" value="1000"/>
    <!--param name="playout-delay" value="50"/-->
    <!--param name="max-playout-delay" value="200"/-->
    <!--param name="ptime" value="20"/-->
    <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>

这其中server-ip和server-port就是科大讯飞mrcp服务器的地址和端口。

在配置好后,我们就可以启动FreeSwitch进行应用了,我们可以在dialplan或者esl中调用App函数play_and_detect_speech来进行放音并识别的操作,典型的命令如下:

<extension name="play_and_detect_speech example">
  <condition field="destination_number" expression="^(1888)$">
    <action application="set" data="tts_engine=unimrcp"/>
    <action application="set" data="tts_voice=donna"/>
    <action application="play_and_detect_speech" data="say:please say yes or no. please say no or yes. please say something! detect:unimrcp {start-input-timers=false,no-input-timeout=5000,recognition-timeout=5000}builtin:grammar/boolean?language=en-US;y=1;n=2"/> 
    <action application="log" data="CRIT ${detect_speech_result}"/>
  </condition>
</extension>

最终我们可以通过获取SWITCH_EVENT_DETECTED_SPEECH的事件信息得到ASR的文本。

以上是关于语音原子能力引擎的对接,至于智能机器人的对话系统,科大讯飞提供了DCM系统,它是通过http restful接口来交互的,这块比较简单,就不再赘述了。大家有什么问题的话欢迎私信沟通。文章来源地址https://www.toymoban.com/news/detail-512718.html

到了这里,关于FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FreeSWITCH 电话机器人 VAD 打断 ASR集成 全功能开源代码

    gitcode地址: https://gitcode.net/iyaosan/FreeSWITCH-ASR github地址: https://github.com/cdevelop/FreeSWITCH-ASR 最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商

    2024年02月05日
    浏览(38)
  • 科大讯飞版ChatGPT开始内测《讯飞星火》

    科大讯飞版ChatGPT产品,提前交卷了! 就在昨夜,讯飞骤然向开发者提供了内测通道,取名为 讯飞星火认知大模型 对外开启内测。 还有个神奇的英文名字Spark Desk,据说有“火花桌面智能助手”的意思。 申请的过程很简单。用电脑或者手机打开这个网址:https://xinghuo.xfyun.c

    2024年02月05日
    浏览(62)
  • FreeSWITCH对接vosk实现实时语音识别

    环境:CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.2 vosk是一个开源语音识别工具,可识别中文,之前介绍过python使用vosk进行中文语音识别,今天记录下FreeSWITCH对接vosk实现实时语音识别。 vosk离线语音识别可参考我之前写的文章: python使用vosk进行中文语音识别 可直接使用

    2024年02月02日
    浏览(43)
  • 科大讯飞日常实习面试

    提问的问题 面试30min,基本就是介绍自己做过的一些项目 其中提问了java八股文: java保证线程安全的方法 需要根据具体场景选择合适的方法来保证线程安全。 java中的异步请求如何实现 你的SpringBoot项目怎么匹配在线人数 请说出spring springMVC springboot之间的关系和区别 SpringBoo

    2023年04月09日
    浏览(48)
  • 【面试】-科大讯飞日常实习面试

    面试30min,基本就是介绍项目以及提问java八股文,没有算法题 java保证线程安全的方法 需要根据具体场景选择合适的方法来保证线程安全。 java中的异步请求如何实现 你的SpringBoot项目怎么匹配在线人数 请说出spring springMVC springboot之间的关系和区别 SpringBoot 约定大于配置什么意思

    2024年01月21日
    浏览(41)
  • Android 9.0 设置讯飞语音引擎为默认tts语音播报引擎

    在9.0的系统rom定制化开发中,在产品开发中,一些内置的app需要用到tts语音播报功能,所以需要用到讯飞语音引擎作为默认的系统tts语音引擎功能,所以就需要 了解系统关于tts语音引擎默认的设置方法,然后在设置讯飞语音引擎为默认的tts语音引擎来实现tts语音播报功能的实

    2024年02月07日
    浏览(72)
  • 科大讯飞交卷,实测星火大模型

    作者 | 辰纹 来源 | 洞见新研社 星星之火,可以燎原。 5月6日,讯飞星火认知大模型揭开神秘面纱。 发布会上,科大讯飞董事长刘庆峰、研究院院长刘聪现场实测了星火大模型七大核心能力,并发布基于该大模型的教育、办公、汽车和数字员工等多个领域的相关产品。 与此

    2024年02月03日
    浏览(67)
  • 科大讯飞语音离线命令识别

    准备工作 注册讯飞账号,做相关的认证,只有认证通过才能下载部分免费的资源。官网地址:https://console.xfyun.cn/ 创建我的应用后再在离线命令识别 操作前先查看一下这个官方文档Android 语音识别(Recognizer) | 讯飞开放平台文档中心 (xfyun.cn) 1、必要文件包复制到自己的项目目录

    2023年04月08日
    浏览(60)
  • 科大讯飞语音SDK下载及测试

    一、SDK 下载 进入讯飞开发平台官网http://www.xfyun.cn/,右上角进行注册登录,登录后点击进入SDK下载。            2.创建新应用               3.填入相关信息         4.创建完后提交后回到SDK下载页面,刷新页面,应用选择前面创建的应用,平台选择Linux,SDK选择

    2024年02月08日
    浏览(74)
  • 科大讯飞一季度净亏损同比扩大418%,讯飞星火大模型不灵了?

    近日,科大讯飞公布截至2024年3月31日的一季度业绩报告及2023年年报。财报显示,科大讯飞一季度总营收同比增长26.27%,为36.46亿元;一季度净亏损3亿元,上年同期净亏损5789.5万元,同比扩大418.17%。 科大讯飞2023年总营收为196.5亿元,归母净利润6.57亿元,同比增长17.12%。 营收

    2024年04月25日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包