首页 > 其他分享 >配置Freeswitch(mod_unimrcp)与百度Mrcp Server实现实时语音识别(ASR)

配置Freeswitch(mod_unimrcp)与百度Mrcp Server实现实时语音识别(ASR)

时间:2023-02-08 09:56:47浏览次数:64  
标签:Mrcp unimrcp .. ASR xml conf freeswitch mod

前面我们已经搭建好了百度Mrcp Server服务器,接下来我们将Freeswitchunimrcp server两者连接起来,配置百度unimrcp server的文章大家去这里看一下:搭建百度Mrcp Server与Freeswitch的mod_unimrcp对接实现智能客服

一、配置freeswitch的mod_unimrcp模块:

1、安装mod_unimrcp模块

  1.   cd /项目源码地址/frerswitch
  2.   vim modules.conf
  3.    
  4.   # 取消掉asr_tts/mod_unimrcp的注释
  5.   asr_tts/mod_unimrcp
  6.    
  7.   # 安装mod_unimrcp模块
  8.   make mod_unimrcp-install
  9.    
  10.   # 编辑/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml,添加或者去掉注释mod_unimrcp,让模块启动默认加载
  11.   vim /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
  12.    
  13.   <load module="mod_unimrcp"/>

2、设置profile文件与conf文件;

mrcp_profiles目录下新建unimrcpserver-mrcp-v2.xml配置文件:

vim /usr/local/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v2.xml

然后输入以下内容:

  1.   <include>
  2.   <!-- UniMRCP Server MRCPv2 -->
  3.   <!-- 后面我们使用该配置文件,均使用 name 作为唯一标识,而不是文件名 -->
  4.   <profile name="unimrcpserver-mrcp2" version="2">
  5.   <!-- MRCP 服务器地址和SIP端口号 -->
  6.   <param name="server-ip" value="192.168.16.4"/>
  7.   <param name="server-port" value="8060"/>
  8.   <param name="resource-location" value=""/>
  9.    
  10.   <!-- FreeSWITCH IP、端口以及 SIP 传输方式 -->
  11.   <param name="client-ip" value="192.168.16.4" />
  12.   <param name="client-port" value="5069"/>
  13.   <param name="sip-transport" value="udp"/>
  14.    
  15.   <param name="speechsynth" value="speechsynthesizer"/>
  16.   <param name="speechrecog" value="speechrecognizer"/>
  17.   <!--param name="rtp-ext-ip" value="auto"/-->
  18.   <param name="rtp-ip" value="192.168.16.4"/>
  19.   <param name="rtp-port-min" value="4000"/>
  20.   <param name="rtp-port-max" value="5000"/>
  21.   <param name="codecs" value="PCMU PCMA L16/96/8000"/>
  22.    
  23.   <!-- Add any default MRCP params for SPEAK requests here -->
  24.   <synthparams>
  25.   </synthparams>
  26.    
  27.   <!-- Add any default MRCP params for RECOGNIZE requests here -->
  28.   <recogparams>
  29.   <!--param name="start-input-timers" value="false"/-->
  30.   </recogparams>
  31.   </profile>
  32.   </include>

注意,server-ip为你上一篇文章你部署的搭建百度Mrcp Server与Freeswitch的mod_unimrcp对接实现智能客服IP地址,你可以使用ifconfig查看内网IP地址。

接下来修改unimrcp默认使用的ASR驱动,可以使用vim /usr/local/freeswitch/conf/autoload_configs/unimrcp.conf.xml编辑修改default-tts-profiledefault-asr-profile为我们新创建的unimrcpserver-mrcp2

  1.   <!-- UniMRCP profile to use for TTS -->
  2.   <param name="default-tts-profile" value="unimrcpserver-mrcp2"/>
  3.   <!-- UniMRCP profile to use for ASR -->
  4.   <param name="default-asr-profile" value="unimrcpserver-mrcp2"/>

三、设置拨号计划

/usr/local/freeswitch/conf/dialplan/default.xml文件中创建拨号计划:

  1.   <extension name="unimrcp">
  2.   <condition field="destination_number" expression="^5001$">
  3.   <action application="answer"/>
  4.   <action application="lua" data="baidu.lua"/>
  5.   </condition>
  6.   </extension>

/usr/local/freeswitch/scripts目录下新增baidu.lua脚本:

注意
其实楼主使用的是python编写的脚本,实现了ttsasr无缝链接,并且支持了一个简单的对话交流,还没有分享出来,先占位;希望大家给星哦!

  1.   session:answer()
  2.    
  3.   --freeswitch.consoleLog("INFO", "Called extension is '".. argv[1]"'\n")
  4.   welcome = "ivr/ivr-welcome_to_freeswitch.wav"
  5.   --
  6.   grammar = "hello"
  7.   no_input_timeout = 80000
  8.   recognition_timeout = 80000
  9.   --
  10.    
  11.   tryagain = 1
  12.   while (tryagain == 1) do
  13.   --
  14.   session:execute("play_and_detect_speech",welcome .. "detect:unimrcp {start-input-timers=false,no-input-timeout=" .. no_input_timeout .. ",recognition-timeout=" .. recognition_timeout .. "}" .. grammar)
  15.   xml = session:getVariable('detect_speech_result')
  16.   --
  17.   if (xml == nil) then
  18.   freeswitch.consoleLog("CRIT","Result is 'nil'\n")
  19.   tryagain = 0
  20.   else
  21.   freeswitch.consoleLog("CRIT","Result is '" .. xml .. "'\n")
  22.   tryagain = 0
  23.   end
  24.   end
  25.   --
  26.   -- put logic to forward call here
  27.   --
  28.   session:sleep(250)
  29.   session:hangup()

我们需要在/usr/local/freeswitch/grammar目录新增hello.gram语法文件,可以为空语法文件须满足语音识别语法规范1.0标准(简称 SRGS1.0),该语法文件ASR引擎在进行识别时可以使用。

  1.   <?xml version="1.0" encoding="utf-8" ?>
  2.   <grammar version="1.0" xml:lang="zh-cn" root="Menu" tag-format="semantics/1.0" xmlns=http://www.w3.org/2001/06/grammar xmlns:sapi="http://schemas.microsoft.com/Speech/2002/06/SRGSExtensions">
  3.    
  4.   </grammar>

接下来用我们的软电话注册freeswitch,然后拨打5001即可看到如下识别结果:

配置Freeswitch(mod_unimrcp)与百度Mrcp Server实现实时语音识别(ASR)

四、如何拨打外网交流

使用如下代码即可,你可以通过ESL链接:

  1.   originate user/1005 &lua(baidu.lua)
  2.    
  3.   # 拨打远程,需要转码和忽略前期声音
  4.   originate {ignore_early_media=true,absolute_codec_string=PCMA}sofia/gateway/sip线路/电话 &lua(baidu.lua)
  5.  

标签:Mrcp,unimrcp,..,ASR,xml,conf,freeswitch,mod
From: https://www.cnblogs.com/kn-zheng/p/17100594.html

相关文章

  • Freeswitch 对接 unimrcpserver ASR调用
    freeswitch部署的系统版本:Centos6.9x64unimrcp部署版本:RedHat6.4x86(32)**对接前提:freeswitch已经编译并且安装了mod_unimrcp模块unimrcp已经部署好**如果以......
  • ASR6601:国产化lora SOC芯片兼容SX1262/SX1268
    ASR6601为目前首颗国产化支持LoRaWAN低功耗广域网无线通信SoC芯片。ASR6601在单芯片上集成了通用微控制器和射频单元(SX1262),包括射频收发器,调制解调器和48MHz主频、Arm......
  • javasript利用jquery发送请求的各种方法
    Jquery发送ajax请求的方法有很多,其中最基本的是$.ajax方法,在其之上封装的方法有$.get,$post,$.put,$.ajaxForm,$fileUpload等。而在这些上层的方法中,后两个为jquery的......
  • ASR6500S SIP射频模块可以替代SX1278/SX1262 RF模块
    ASR6500S是一颗SX1262 SIP模块,集成了RF前端和LoRa无线芯片,支持LoRa和FSK调制。ASR6500S系列最大发射功率可达+22dBm。最高灵敏度为-148dBm,为各种应用场景提供高干扰抗干......
  • ASR技术和TTS技术含义及区别
    1、TTS和ASR的概念区别我们比较熟悉的ASR技术(Automa​​ti​​​cSpeechRecognition,​​语音识别​​),是将声音转化为文字,可类比于人类的耳朵。而TTS技术(Text-To-Speech,语......
  • 如何实现JavaSrcipt页面的跳转
    所谓的JavaSrcipt页面跳转就是利用JavaSrcipt对打开的页面ULR进行跳转,如我们打开的是A页面,通过JavaSrcipt脚本就会跳转到B页面。一、常规的JS页面跳转代码1、在原来的窗体中......
  • a标签属性href中#和javasrcipt:;的区别
    a标签中路径“#”和“javasrcipt:;”的区别​​前言​​​​#的效果​​​​javasrcipt:;的效果​​前言在a标签中如果想要超链接无跳转无反应,我们通常会给标签的href属性......
  • ASR6500S SIP模块与SX1262系列集成替代SX1278 SX1262内核+RF前端
    ASR6500S是一系列LoRaSIP模块,集成了RF前端和LoRa无线电收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种针对LPWAN应用的低数据速率、超远程、超低功耗通信进行优化的......
  • ASR6601:国产M4内核LoRa SoC-ASR6601硬件设计指导
      ASR6601是一款通用的Sub-GHz无线通讯SoC芯片,该芯片集成了Sub-GHz射频收发器和32位的RISCMCU。Sub-GHz射频收发器不仅支持LoRa调制,还支持(G)FSK和G......