MRCP 媒体资源控制协议

2023-05-16


媒体资源控制协议(Media Resource Control Protocol, MRCP)是一种通讯协议,用于语音服务器向客户端提供各种语音服务(如语音识别和语音合成)。
    MRCP并不定义会话连接,不关心服务器与客户端是如何连接的,MRCP的消息通常是承载于其它协议之上,如RTSP,SIP等。
  MRCP消息使用类似于HTTP等许多Internet协议一样的文本格式,每个消息包括三部分:首行,消息头,消息体。首行表明消息类型及返回码等信息。消息头包括了若干行内容,每一行都形如 "字段名:数值"。消息体包括了消息的详细内容,长度在消息头中指定。
  类似于HTTP,MRCP使用请求(通常由客户端发起)、响应模式。响应可以简单的确认请求,或者给出关于处理的其它信息。例如,MRCP客户端向服务端请求想要发送一些音频数据以进行处理(比如说语音识别),为此,服务端可以发送一个包含端口号的响应,因为MRCP并未定义音频数据的传输,所以,必须依靠其它的协议,比如说RTP来进行。
  有两个版本的MRCP协议,版本2使用SIP作为控制协议,版本1使用RTSP。
  [1]RFC4463: A Media Resource Control Protocol (MRCP)
1、  MRCP协议概述
     媒体资源控制协议(Media Resource Control Protocol,MRCP)是由Cisco、Nuance等公司联合开发的网络协议,该协议由IETF作为Internet草案发布(draft-shanmugham-mrcp-07)。该协议为那些需要进行语音处理的客户端提供了一种通过网络来控制媒体处理资源(如ASR、TTS引擎等)的机制。该协议在设计之初就考虑了可以在将来得到扩展以支持声纹鉴别和身份识别(Speaker Identification/Speaker Verification)等功能。 
     MRCP协议定义了控制媒体处理资源所必需的请求(Request)、应答(Response)和事件(Event)等消息。MRCP协议也为每一种资源定义了状态机,为每一个请求和服务器事件定义了所需的状态转换。MRCP关注的焦点在于控制那些进行媒体流处理的资源(如ASR、TTS),以及如何与这些资源之间进行通讯。 
     MRCP协议不能独立工作,它依赖于RTSP(Real Time Streaming Protocol)作为载体在客户端与服务器端之间建立会话连接。而语音媒体数据则通过RTP(Real Time Transport Protocol)协议连接传送给语音应用服务器。
    典型的基于MRCP的分布式语音应用系统采用C/S架构,由客户端发出媒体流处理请求,服务器端则利用媒体处理资源(ASR/TTS)来处理或生成媒体流,并将相应的处理结果返回给客户端。这样客户端就可以通过MRCP协议来通过网络分布式地控制服务器端的媒体处理资源。
    随着MRCP协议的不断推广与应用,各语音技术厂商在实践与部署过程中碰到了各种各样的问题。为此,IESG(The Internet Engineering Steering Group)于2002年特许成立了Speechsc工作组,专门负责起草更加完善高效的支持分布式语音资源处理的开放协议。在Speechsc工作组的努力下,改进后的MRCPv2(draft-ietf-speechsc-mrcpv2-09)很快应运而生了。MRCPv2的消息格式和资源状态机等都建立在MRCP协议版本1的基础之上,它完全兼容W3C的SSML、SRGS、NLSML标准。与MRCPv1不同的是MRCPv2消息不再依赖RTSP作为载体,而是作为独立的消息进行传输,但是它仍依赖于会话管理协议,如SIP(Session Initiation Protocol)协议,来在客户端与服务器端之间建立控制会话。 
 
2、  MRCP发展概况
     在传统的语音应用中,各集成商必须针对不同的ASR/TTS厂商提供的API接口进行专门的集成开发,不同ASR/TTS引擎的接口各不相同,从而导致了集成过程的复杂性和局限性。而利用MRCP协议提供的标准接口,语音集成开发商们不必再针对特定的ASR/TTS进行开发,而只需要提供统一的MRCP接口。利用这个特性,他们甚至可以在同一个应用系统中集成不同厂商的ASR/TTS引擎,譬如为了提供多语种语音合成服务,他们可以采用多个不同厂商的TTS。这样就为各种语音应用开发提供了更加灵活的选择,并有效地降低业务开发周期和成本。
    正是由于具有以上优势,MRCP协议在推出以后得到了国外各主流语音技术提供商的广泛支持。作为MRCP协议的合作起草者,Nuance和Cisco公司已经在多个语音应用解决方案中证明了该协议的效力。目前国外几乎所有的主流语音技术供应商都已经宣布推出基于MRCPv1的产品:
● 语音资源供应商:Acapela、BBN、IBM、Loquendo、Nuance(ScanSoft)、Rhetorical、Telisma等;
● 板卡技术供应商:Intel、NMS、Aculab等;
● 语音技术应用集成商:Cisco、Nortel、Lucent、HP、Edify、Genesys、Intervoice、SER、Unisys、Convedia等。 
    随着通信技术的进一步发展,下一代电信网络(NGN)将是以宽带IP、宽带无线网络、光网络、软交换为技术支撑,广泛结合CTI应用的融合网络,原有的电信网络将更加开放化,接口协议趋于标准化。SIP协议和RTP协议将逐步成为VoIP和软交换技术中承载会话控制和媒体传输的核心协议。而基于SIP和RTP协议设计的MRCPv2将会在分布式语音资源解决方案中逐步得到更大规模的应用。 
__________________________________________________________________________________________
 
科大讯飞推出MRCP语音服务器
 
 
  顺应语音应用的趋势,近日,科大讯飞公司推出了国内语音界首款MRCP服务器产品:iFLY MRCP Server 2.0(简称IMS2.0)。该产品基于最新的开放国际标准MRCPv2开发,为科大讯飞公司业界领先的InterPhonic语音合成产品家族提供了新的遵循开放标准的服务接口。这款产品的推出,对科大讯飞公司的新老客户,特别是应用开发商、集成商的意义重大,可以为用户带来很大的灵活性和可选择性,加快开发周期,降低开发成本。
 
什么是MRCP协议
  媒体资源控制协议(Media Resource Control Protocol, MRCP)是一项新兴的标准,用于管理和访问分布式系统架构上的语音资源服务器。该协议已经被语音通信领域的主流供应商所采用,如IBM、CISCO、Nuance、Loquendo、Telisma等,语音行业几乎所有的重要厂商都支持或承诺支持MRCP。
  采用MRCP协议后,独立软件商和应用开发商仅需面向MRCP接口撰写程序,而无需考虑不同语音厂商的语音引擎产品之间的差异,可以真正做到一次开发,多种环境下应用;任何支持MRCP标准的语音引擎都可以被无缝集成和调用。另外,MRCP也与其它新兴的技术兼容,如VoIP,VoiceXML和会话发起协议(Session Initiation Protocol,SIP)等,在电话交互系统等环境下的应用将更加直接方便。
IMS2.0产品
  科大讯飞公司长期以来一直着力于推动和研究语音技术和交互的公共开放标准,在MRCP标准日趋成熟的情况下,即根据最新的MRCPv2草案实现了新一代的语音服务平台。内部集成了科大讯飞的InterPhonic语音合成引擎,对外则按标准规范提供了访问接口,从之前的特定服务方式跨入到业界统一的服务方式,继续保持着语音行业发展的领先潮流。
  IMS2.0产品的网络结构图如下: 
 

图1. IMS2.0网络结构图 
  IMS2.0在功能上完全遵循MRCPv2 draft11的标准,目前支持对合成资源的访问,不远的将来即会全面支持包括识别,声纹认证等各个语音服务,同时它还提供了多种客户端接口以方便集成开发,开发商甚至无需针对MRCPv2协议去开发,只要调用方便的封装接口即可实现语音服务功能,目前提供的客户端接口包括MRCPv1客户端接口、MRCPv2客户端接口和传统科大讯飞接口的客户端,这样无论是重新开发基于MRCP标准的应用还是直接将原有的应用移植到MRCP平台中都将是很轻松的事情。
  同时IMS2.0还具有它独特的特色,包括在不与MRCP标准有冲突和额外需求的情况下透明支持大规模的负载均衡,可以方便的扩展升级语音服务能力;支持基于浏览器的网络管理功能,随时可以轻松管理所有的服务节点;而且还继续保持着科大讯飞合成系统的高效性能和稳定的运行状态。
 
主流的语音发展方向
  采用开放的标准对于企业和网络通信的成长是非常必要的。采纳MRCP,为广大的开发商群体增强了信心,不仅仅是简单地生产高质量的产品,更重要的是,为应用开发、集成商的创新提供了更大的灵活性和更多的机会。
  语音处理行业对标准化的需求促生了MRCP。MRCP是标准化组织IETF开发的协议标准。MRCP设计的特定目标很明确,就是为那些采用不同厂商的ASR和TTS产品来构建IVR或消息类应用的开发商提供便利。
  语音行业几乎所有的重要厂商都承诺支持MRCP。这样,开发商在选择每个语音处理构件时,都有很大的灵活性。这种灵活性甚至可扩展到在一个应用内,比如:为了包含多种语言的支持而采用多个ASR或TTS供应商。IMS2.0已经和一系列的语音产品集成测试过,包括: Nuance和Aculab。
  标准化的MRCP带来的益处在于:无需再为不同的或专用的语音产品提供不同的接口。这意味着集成不同语音厂商的语音技术时,可以显著地降低费用,并且确保新语音应用解决方案能快速进入市场。进一步而言,MRCP降低开发商的总拥有成本(TCO),也可以惠及最终用户,从而能在充满竞争的商业环境内确保利润。采用MRCP,在更新一个应用方案时,传统上所产生的额外费用和时间成本消失了。应用系统据此在选用不同的ASR/TTS时可以更加模块化,不必担心互操作的问题。  

转载:http://blog.sina.com.cn/s/blog_4e8b57db0100pajh.html  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MRCP 媒体资源控制协议 的相关文章

  • Java实现快速排序算法

    原作者 xff1a 老铁123 出处 xff1a https blog csdn net qewgd article details 85949755 本文归作者 老铁123 和博客园共有 xff0c 欢迎转载 xff0c 但未经作者同意必
  • 手写ArrayBlockingQueue

    个人分类 xff1a 算法 编辑 原作者 xff1a 老铁123 出处 xff1a https blog csdn net qewgd article details 88363745 本文归作者 老铁123 和博客园共有 xff0c 欢迎
  • 手写LinkedBlockingQueue

    原作者 xff1a 老铁123 出处 xff1a https blog csdn net qewgd article details 88364742 本文归作者 老铁123 和博客园共有 xff0c 欢迎转载 xff0c 但未经作者同意必
  • Viewbinding自动生成XML的一个对应绑定类

    当你在项目 Module 的build gradle中的android 中设置 buildFeatures viewBinding true 设置完sync一下 xff0c 然后会在项目中看到对应的XML文件的一个继承了ViewBindin
  • AE制作Json动画教程

    本文将从为什么要做动画 xff0c 到动画实现方式 xff0c 再到用AE 43 Bodymovin制作动画 xff0c 结合实际案例行分享 xff0c 希望给新手带来一些启发 首先我们来聊聊 xff0c 我们为什么要做动效 xff1f 1
  • zabbix proxy 表分区

    zabbix server进行表分区的话 xff0c zabbix的内部管家会失效 xff0c 这个时候 xff0c 如果有proxy的话 xff0c 也要进行表分区 xff0c proxy表分区比较简单 xff0c 也不用每天更换分区 步
  • pycharm中unresolved reference怎么解决(配置问题)

    iunresolved reference怎么解决 解决方法 xff1a xff08 本人使用方法二解决的 xff09 方法1 进入PyCharm gt Settings gt Build Excution Deployment gt Co
  • ModuleNotFoundError: No module named ‘_ssl‘

    如果openssl是自己编译安装的 xff0c 安装python时需要注意以下问题 xff1a 从python官网下载的tar gz包或者tgz解压 xff1a 更改 xff1a Python 3 6 6 Modules Setup dis
  • Can I become a good programmer without math and algorithms knowledge?

    Knowledge of algorithms has very little to do with programming skill As some random dude on the internet once said 34 Wh
  • 线程进阶:生产者消费者模式和线程池

    一 生产者消费者模式 这是一种不属于GOF23的设计者模式 这种模式分为三个对象 xff1a 一个生产者 xff0c 一个消费者 xff0c 一个缓存区 生产者 某些程序 进程 线程负责生产数据就属于生产者 消费者 某些程序 进程 线程负责
  • Java异常

    目录 一 什么是异常 xff1f 二 什么是异常处理 三 Java中如何进行异常处理 1 try catah块捕获异常 xff0c 分为三种情况 2 多重catch块 3 finally块 4 声明异常 throws 5 抛出异常 thro
  • Linux系统安装mysql(rpm版)

    目录 Linux系统安装mysql xff08 rpm版 xff09 1 检测当前系统中是否安装MySQL数据库 2 将mysql安装包上传到Linux并解压 3 按照顺序安装rpm软件包 4 启动mysql 5 设置开机自启 6 查看已启
  • ffmpeg 花屏的问题

    ffmpeg 首先说明 xff0c ffmpeg并非做得毫无破绽 1 网络丢包 udp 改成tcp传输并非一定不会丢包 xff0c 这个一定要清楚 xff0c 除此之外 xff0c 如果使用udp xff0c 一定要把udp的接收缓存加得合
  • 通过使用 Byte Buddy,便捷地创建 Java Agent

    Java agent 是在另外一个 Java 应用 xff08 目标 应用 xff09 启动之前要执行的 Java 程序 xff0c 这样 agent 就有机会修改目标应用或者应用所运行的环境 在本文中 xff0c 我们将会从基础内容开始
  • Electron在windows下打linux包

    在原来打包windows包的配置的基础上做一些改动即可 参考我之前的博客 Vue cli 3 x使用electron打包配置 1 修改package json配置 xff0c 下面三个字段必填 xff0c 且author要按照下面格式填写
  • python3.7.1 提示 ModuleNotFoundError: No module named ‘_ssl‘ 模块问题 ;

    gt gt gt import ssl Traceback most recent call last File 34 lt stdin gt 34 line 1 in lt module gt File 34 usr local pyth
  • CentOS安装图形桌面GNOME

    CentOS安装图形桌面GNOME 购买了阿里云服务器 xff0c 是CentOS8系统 xff0c 一直只能通过终端命令来操作 xff0c 不太方便 xff0c 所以想要安装图形桌面 xff0c 试了两种方法 xff0c 这里记录一下尝试
  • SpringBoot启动机制(starter机制)核心原理详解

    一 前言 使用过springboot的同学应该已经知道 xff0c springboot通过默认配置了很多框架的使用方式帮我们大大简化了项目初始搭建以及开发过程 本文的目的就是一步步分析springboot的启动过程 xff0c 这次主要是
  • 解决前端做excel下载的文件打不开

    常用的excel对应得mine type类型 xff1a 1 34 application vnd ms excel 34 2 34 application vnd openxmlformats officedocument spreads
  • What do software developers age 30 and over know now that they wish they had known in their 20s?

    Here are a few thoughts I 39 d also recommend a thorough read of Joe Wezorek 39 s answer to this question Life is long I

随机推荐

  • 树莓派安装系统之无显示器(最新版)

    之前我写过一篇安装树莓派系统的文章 xff0c 但不太详细 xff0c 也需要显示屏 xff0c 我在网上找了大量资料 xff0c 发现镜像是旧版 xff0c 于是在我一次次的实验中总结出了以下方法 xff1a 首先 xff0c 我们先安装
  • Centos7安装新版本Vscode异常解决

    sudo rpm import https packages microsoft com keys microsoft asc sudo sh c 39 echo e 34 code nname 61 Visual Studio Code
  • Ubuntu14.04上Gitlab搭建及配置

    sudo apt get install openssh server postfix 填写mail name 下载gitlab ce 10 0 1 ce 0 amd64 deb xff1a https mirrors tuna tsing
  • sftp文件上传功能实现

    参考博客 https blog csdn net u011937566 article details 81666347 方式一 使用jsch 0 1 53 jar 0 gt 添加jsch 0 1 52 jar依赖 1 gt 创建JSch对
  • 安装IDEA出现Missing essential plugins: com.intellij (platform prefix: null)如何解决

    这里写自定义目录标题 这是一个重装IDEA新版本引发的悲剧 这是一个重装IDEA新版本引发的悲剧 如果你在重装IDEA后打不开出现以下报错 com intellij ide plugins PluginManagerCore Essenti
  • Android在getString()中添加参数

    转载 xff1a http blog chinaunix net uid 20771867 id 2990700 html 转载只是给自己留一个笔记 xff0c 向原作者致敬 Android中String一般都是定义在res string
  • ftp上传,下载,删除文件

    ftp上传 xff0c 下载 xff0c 删除文件 直接看最下面的main 方法中的代码 xff0c 复制全部代码 xff0c 输入自己的ftp路径和用户信息 package com sinosoft lis ybt bl import i
  • powershell 压缩和解压zip

    项目场景 xff1a 前端项目发布到windows环境需要需要先压缩传输后再解压 问题描述 简单的压缩和解压zip在windows下 xff0c 视窗情况下 xff0c 右键就可以实现 xff0c 但是如果是在命令下 xff0c windo
  • vscode 搜索插件报 提取扩展时出错。XHR failed

    项目场景 xff1a 有一段时间没有打开vscode的插件市场了 问题描述 今天打开vscode插件管理 xff0c 搜索插件 xff0c 报了一个错误 提取扩展时出错 XHR failed xff0c 一时看不出错误原因 原因分析 xff
  • mybatis报“Invalid value for getInt()“

    使用mybatis遇到一个非常奇葩的问题 xff0c 错误如下 xff1a Cause org apache ibatis executor result ResultMapException Error attempting to get
  • 5 essential skills every Web Developer should have?

    The idea here is that most of us should already know most of what is on this list But there just might be one or two ite
  • slf4j下log.info()无法输出到控制台&重复打印

    在logback xml中添加如下 lt logger name 61 34 你要在哪个类或者包下使用log的全限定名 34 level 61 34 日志输出等级 这里要用log info 所以级别是INFO 34 additivity 6
  • 在php中使用redis cluster 集群

    目前我们用到的 php 的 redis 扩展 主要有2个 xff0c 第一个是最常用的 phpredis 它是用c写的php的高效扩展 xff1a https github com phpredis phpredis xff0c 还有1个是
  • csdn markdown帮助文档

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用 StackEdit 6 修改而来 xff0c 用它写博客 xff0c 将会带来全新的体验哦 xff1a Markdown和扩展Markdown简洁的语法 代码块高亮 图片链
  • Springboot+Thymeleaf配置与使用

    Springboot 43 Thymeleaf配置与使用 前言 Springboot默认是不支持JSP的 xff0c 默认使用thymeleaf模板引擎 所以这里介绍一下springboot使用Thymeleaf的实例以及遇到的问题 配置与
  • git 解决pull origin 错误 error: The following untracked working tree files would be overwritten by merge

    error The following untracked working tree files would be overwritten by merge bin AndroidManifest xml Please move or re
  • SpringBootTest单元测试组件

    SpringBootTest单元测试组件 一 SpringbootTest 使用Junit4开发 1 添加依赖 span class token tag span class token tag span class token punct
  • ICE C++ Hello World

    ICE C 43 43 Hello World实例教程 1 概述 本文演示了如何编写一个最简单的C 43 43 ICE Internet Communications Engine 应用程序 xff0c 包括必要环境的安装 该应用程序包含客
  • 华为工作的感悟

    参考 xff1a http www openlab net cn forums thread 1002986 1 p10035795 北邮北 xff0c 清华硕 xff0c 一年两个月的华为生活总结 xff0c 算了 xff0c 贴出来了
  • MRCP 媒体资源控制协议

    媒体资源控制协议 xff08 Media Resource Control Protocol MRCP xff09 是一种通讯协议 xff0c 用于语音服务器向客户端提供各种语音服务 如语音识别和语音合成 MRCP并不定义会话连接 xff0