EasyMrcp的Mrcp协议解析

结合网络抓包简要分析Mrcp在EasyMrcp中的应用,明确协议流程的核心点。

EasyMrcp是由Java编写的mrcp服务器,提供多种ast和tts集成。项目地址:https://github.com/chenliangrui/EasyMrcp

什么是MRCP协议

  媒体资源控制协议(Media Resource Control Protocol, MRCP)是一项新兴的标准,用于管理和访问分布式系统架构上的语音资源服务器。该协议已经被语音通信领域的主流供应商所采用,如IBM、CISCO、Nuance、Loquendo、Telisma等,语音行业几乎所有的重要厂商都支持或承诺支持MRCP。

  采用MRCP协议后,独立软件商和应用开发商仅需面向MRCP接口撰写程序,而无需考虑不同语音厂商的语音引擎产品之间的差异,可以真正做到一次开发,多种环境下应用;任何支持MRCP标准的语音引擎都可以被无缝集成和调用。另外,MRCP也与其它新兴的技术兼容,如VoIP,VoiceXML和会话发起协议(Session Initiation Protocol,SIP)等,在电话交互系统等环境下的应用将更加直接方便。

服务器与客户端

除了sip协议外相对的uas和uac的概念外,mrcp分为服务端和客户端。EasyMrcp作为mrcp服务端实现了mrcp服务,freeswtich作为mrcp客户端用于与EasyMrcp通信。

交互流程

简单解释mrcp的整套asr和tts逻辑

使用sip的INVITE、BYE等报文完成整个asr和tts的开始和停止控制操作。此时与正常voip通话逻辑类似。与asr和tts交互部分是由mrcp完成,mrcp通过tcp传输一系列EventRrequestResponse报文完成asr和tts的控制逻辑。

抓包分析

以下抓包来自EasyMrcp与freeswitch之间的交互。

语音识别

下图可以看到通过sip开启了asr,关注点除了sip的header外,核心是sdp部分携带的mrcp相关的信息,后续EasyMrcp会完成整个asr流程。

下图是mrcp协议部分,抓包时需要找出相关tcp部分再解析为MRCPv2协议,此时可以看到mrcp交互流程。此处是在电话中说完话实时识别出的文字。

语音合成

下图是sip INVITE中携带的tts信息,可以看到同样开启了tts。

下图是通过mrcp发送给EasyMrcp的需要合成的语音文字。服务器在接收到后会进行tts的调用等操作。

整体流程

运行EasyMrcp默认提供的freeswitch脚本,该脚本是一个重复用户对话的demo。

抓包可以结合报文看到红色是asr相关部分,粉色和淡黄色是两次tts部分,分别是:1、拨通电话后的欢迎语句(tts)。2、用户说话进行识别(asr)。3、将用户说的话再合成(tts)。

下图是sip流程。

下图是mrcp流程

协议文档

更加详细的文档解释参考官方的Mrcpv2和sip的rfc文档,欢迎加群分享共同学习~

QQ群号:1021521372

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值