mrcp协议图解流程
最近很多小伙伴在询问想了解mrcp协议的具体流程和细节问题。
抽空我就梳理一下,做个介绍。
mrcp协议,目前业界使用的是v2版本,即基于sip信令的mrcp协议。
mrcp协议和sip、rtp、密不可分的协议。 以下是mrcpV2协议,大家有空可以详细研读协议本事。https://www.rfc-editor.org/rfc/rfc6787
如果你不想看枯燥的文档,可以继续看我的文章,希望对你有个深入浅出的理解。
![](https://lowbibi.com/content/images/2023/07/image.png)
上图是mrcp协议的处理流程图。
mrcp-client-和server之间,首先先进行的是 sip协商。 实际抓包流程如下图所示
![](https://lowbibi.com/content/images/2023/07/image-1.png)
sip协议的invite会携带 resource:speechrecog 代表client需求是asr识别。 server返回200会携带mrcp-v2的tcp端口和new channel 信息给到client。
当client和server处理完sip-200-ack之后,就到了mrcp 处理asr、tts协议了。收到200后返回ack,client既可以进行 MRCP-RECONIZE
client根据sip--200协商到的mrcp 协议端口,向server发送 MRCP-RECONIZE。
mrcp-channle流程
mrcp交互过程,可以选择自定义DEFINE-GRAMMAR, 也可以选择不需要,直接进行MRCP RECOGNIZ。当然 DEFINE-GRAMMAR 必须要在 DEFINE-RECOGNIZ 之前进行。
MRCP DEFINE-GRAMMAR
先进行DEFINE-GRAMMAR 初始化asr参数等,发送DEFINE-GRAMMAR 至server
收到MRCP-COMPLETE之后,可以向server发起asr识别MRCP RECOGNIZ。
MRCP RECOGNIZ
client 向server发送
Sending request: MRCP/2.0 -1 RECOGNIZE 3
Channel-Identifier:923f34202d1711ee@speechrecog
Content-Type:text/uri-list
Content-Length:27
builtin:speech/transcribe
server收到回复:
MRCP/2.0 83 3 200 IN-PROGRESS
Channel-Identifier:923f34202d1711ee@speechrecog
接收和发送rtp-媒体
MRCP RECOGNITION COMPLETE
此次asr结果返回,server发送给client,event同时携带了asr结果等。
MRCP/2.0 562 RECOGNITION-COMPLETE 2 COMPLETE
Channel-Identifier:923f34202d1711ee@speechrecog
Completion-Cause:000 success
Content-Type:application/x-nlsml
Content-Length:377
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<interpretation confidence="0.97">
<instance>卓卓卓卓卓卓卓卓卓</instance>
<input mode="speech">卓卓卓卓卓卓卓卓卓</input>
<detail>
<sessionId>bj1690528986127707_7lT7O6Ogaqu6F</sessionId>
<cost>251928</cost>
</detail>
</interpretation>
</result>
plus:如果对mrcp有特定需求的,请联系站长。