mrcp协议图解流程

最近很多小伙伴在询问想了解mrcp协议的具体流程和细节问题。

抽空我就梳理一下,做个介绍。

mrcp协议,目前业界使用的是v2版本,即基于sip信令的mrcp协议。

mrcp协议和sip、rtp、密不可分的协议。 以下是mrcpV2协议,大家有空可以详细研读协议本事。https://www.rfc-editor.org/rfc/rfc6787

如果你不想看枯燥的文档,可以继续看我的文章,希望对你有个深入浅出的理解。

上图是mrcp协议的处理流程图。

mrcp-client-和server之间,首先先进行的是 sip协商。  实际抓包流程如下图所示

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有特定需求的,请联系站长