Skip to content

Latest commit

 

History

History
22 lines (12 loc) · 2.96 KB

3.md

File metadata and controls

22 lines (12 loc) · 2.96 KB

背景介绍

1.什么是mrcp?

mrcp即,媒体资源控制协议(Media Resource Control Protocol, MRCP)是一种通讯协议,用于语音服务器向客户端提供各种语音服务(如:语音识别,语音合成,声纹识别,录音服务等)。MRCP并不定义会话连接,不关心服务器与客户端是如何连接的,MRCP的消息通常是承载于其它协议之上,如:RTSP,SIP等。 MRCP消息使用类似于 HTTP 等许多Internet协议类似的明文信令文本格式,每个消息包括三部分:首行,消息头,消息体。首行表明消息类型及返回码等信息。消息头包括了若干行内容,每一行都形如 "字段名:数值"。消息体包括了消息的详细内容,长度在消息头中指定。 类似于 HTTP,MRCP使用请求(通常由客户端发起)、响应模式。响应可以简单的确认请求,或者给出关于处理的其它信息。

2.什么是unimrcp?

UniMRCP 是一个开源的、跨平台的 MRCP 协议实现,由 C / C ++语言 编写,包括了 MRCP 客户端和服务端两个部分,每个组件可以自由的分拆出来单独使用。 其封装了 SIP、RTSP、SDP、MRCPv1、MRCPv2、RTP/RTCP 堆栈,并为语音服务集成商提供了一致的 API。

3.mrcp能做什么?

MRCP客户端向服务端请求想要发送一些音频数据以进行处理(比如说语音识别,语音合成等等),为此,服务端可以发送一个包含端口号的响应,因为MRCP并未定义音频数据的传输,所以,必须依靠其它的协议,比如说 RTP 来进行。有两个版本的MRCP协议,版本2使用SIP作为会话控制,版本1使用RTSP。

4.常见业务场景

智能语音机器人,智能呼叫中心等等(百度,讯飞都有自己的实现~)。举个简单的例子就是打客服电话,当我拨号以后我的电话会被连接到呼叫中心(常见的呼叫中心是开源的freeswitch简称fs),我说了一句:“喂,你好,请问是xx公司吗?”。这句语音会被fs传给mrcp(即unimrcp),并且在请求中要求了调用语音识别的处理,当mrcp收到这句语音就会把他转成文字,并且根据文字去匹配下一句该说的话(不同公司会根据不同的业务实现不同的话术流程即你说了这句下一句该回什么,现在比较流行的做法是直接把这句话的文本传给ai接口,由ai来返回应该说的话,更加智能,灵活。),拿到下一句该说的话了,此时调用语音合成处理(假如这句话是“是的,这里是xx公司客服热线”)把这句话转成语音,通过协议把语音返给fs再由fs返给我,这样我就能听到这句话了。然后我继续说话,对面一直给我回话,直到结束这个流程挂断电话。(这只是一个简单的过程介绍,实际过程中还要牵扯到语音降噪,语音打断,多音字识别等多个过程,在这里就不详细说明了。在这个过程中fs即是mrcp的客户端)。