在文章开始之前笔者先带大家了解一下MRCP VS UniMRCP。 - UniMRCP - UniMRCP是一个开源的、跨平台的MRCP协议实现,由C/C++语言编写,包含了MRCP客户端和服务端两部分,其封装了SIP、RTSP、SDP、MRCPv1、MRCPv2、RTP MRCP和UniMRCP的关系有点像SIP和Sofia-SIP的关系。 学习完以上内容,我们给大家实操一下在XSwitch中使用MRCP: XSwitch中使用mod_unimrcp模块来和MRCP Server进行交互,mod_unimrcp模块集成了UniMRCP库, ref=lowbibi.com UniMRCP:https://www.unimrcp.org/ MRCP:http://en.wikipedia.org/wiki/Media_Resource_Control_Protocol
UniMRCP(https://www.unimrcp.org/)是一个开源的实现。FreeSWITCH中有一个mod_unimrcp模块就是使用了这个库和开源的协议。 为什么移除呢? 但是,随着时代的发展,当人们想升级UniMRCP时,发现问题了,那就是,FreeSWITCH用的APR库比较旧,而新版UniMRCP需要的库又比较新,升级不了了…… 为什么FreeSWITCH不更新APR 这样,就可以把mod_unimrcp移出FreeSWITCH代码树,放到独立的仓库中(https://github.com/freeswitch/mod_unimrcp/pull/1)。 那mod_unimrcp是不是转为二等公民了?是,也不是。 比如: 之前: asr_tts/mod_unimrcp 现在: mod_unimrcp|https://github.com/freeswitch/mod_unimrcp -b master 你甚至可以把你自己写的模块也放一条记录到
部署环节分位以下几步: 解压 unimrcp.tar.gz 到部署路径 修改配置文件,运行 change.sh分发配置文件 启动&测试验证 下载&解压 点击 MRCP-Server部署包 下载部署包,传输到干净的 linux环境 指定一个安装目录,这里使用 $project_path 来代表安装目录 执行解压命令: tar -xzvf unimrcp.tar.gz -C $project_path 修改配置 执行以下命令 cd $project_path/unimrcp/admin sh change.sh 服务启动 运行以下命令启动服务: cd $project_path/unimrcp/admin sh start_server.sh 对于返回的合成音频,可以检查$project_path/unimrcp/var/synth中的相应的音频,确认音频是否正常。 MRCP Server如何修改识别结果样式 默认的返回结果为如下样式: 如果想改下对应的返回结构,可以修改 cd $project_path/unimrcp/data vim result.tpl.xml
本篇文章中,我们不详细讲解每种方式的实现原理,只介绍解决方法,有兴趣的同学可以自行学习FS和OpenSIPs的相关功能点,这里给出几个链接: mod_unimrcp mod_distributor mod_dptools Server Profile名称执行ASR命令:play_and_detect_speech /usr/local/freeswitch/sounds/ivr_prompt_voice.wav detect:unimrcp start-input-timers=false,no-input-timeout=10000,recognition-timeout=10000}ahlt_ats 其他FS相关命令: reload mod_unimrcp 可是由于FS的mod_unimrcp模块的限制,FS执行ASR命令时,发送的SIP INVITE里不支持增加自定义SIP消息头,所以只能从标准 SIP 消息头中进行挖掘。
freeswitch.spec Build-System mrcp: cleanup freeswitch.spec Build-System Windows: Fix APR build dependency in unimrcp