您当前的位置是:  首页 > 技术 > 企业通信 > 技术 > 开源通信 > 技术动态 >
技术 - 企业通信 - 开源通信技术频道
  首页 > 技术 > 企业通信 > 技术 > 开源通信 > 技术动态 > MRCP协议学习笔记-语音合成标记语言(SSML)-1

MRCP协议学习笔记-语音合成标记语言(SSML)-1

2018-06-20 13:54:58   作者:   来源:CTI论坛   评论:0  点击:


  在前面的几个章节中,我们花费了很多时间在讨论一些关于智能语音机器人开发中的重要协议MRCP, 以及基本框架和基础知识。在以前的讲座中,我们简单介绍了MRCP的背景,技术架构,媒体资源服务器的类型,和其控制协议。笔者通过完整的框架介绍,读者可以已经基本了解了MRCP的大概处理流程。通过前面的热身阶段的介绍,我们才能真正开始深入的其他方面的知识。这些深入的细节能够帮助用户彻底了解MRCP协议。因此,我们仍然还需要了解更多关于MRCP的数据呈现或表达的格式(SSML,NLSML和PLS),媒体资源服务器的处理方式(TTS/SS,ASR,SR和SVI),以及一些关于语音识别的应用。从本章节开始,我们将逐步讨论MRCP的数据格式的具体细节。今天,笔者先和大家分享语音合成标记语言(SSML)的第一部分。
  1、大家知道,媒体资源服务器需要通过讲话人的输入数据来作为处理数据,媒体资源服务器不仅要支持普通的文本格式也可以支持带标识的文本格式。MRCP支持了W3C的语音合成标识语言(SSML)。目前SSML的最新版本是1.1版本。最初,SSML细节是基于升阳公司的JSGF和JSML发展而成。W3C发布了很多关于标识语言的细节,SSML仅是其其中一个部分。
  SSML是一种标准的,基于XML的标识,使用这些标识来命令语音合成服务器把书写格式的语言(输入)转化成可读的输出结果。简单来说,就是把带有一定文字标识格式的文本语言转化成可读的输出结果。SSML设计的最初目的就是为了帮助开发人员提高合成结果的内容,通过其格式化,标准化的标识方式来控制语音输出的各种属性,例如发音,音量等参数设置。因此,设计的几个关键要素我们这里需要说明。以下是SSML的六大设计要求:
  • 一致性:提供可预测的语音输出控制,支持不同的语音合成服务器部署
  • 兼容性:支持W3C细节,包括但不仅限于VoiceXML,aural Cascading Style Sheets 和 SMIL
  • 通用性:支持各种语音内容
  • 国际化:支持各种语言的语音输出
  • 自动化和可读性:支持自动化生成和手写文档格式,支持良好的可读性,使得读者可读
  • 可部署性:此技术细节能够支持目前现有的技术,尽量减少可选功能数量。
  2、因为,SSML是一种标识语言,所以必须具备一定的文件结构。其基本的文件结构如下:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
  http://www.w3.org/TR/speech-synthesis/synthesis.xsd"
  xml:lang="en-GB">
  Hello world!
  所有的SSML文件都需要的root元素标签入口。因为篇幅的关系,更多完整的关于SSML的语法格式,用户可以参考W3C官方文档,我们不做太多说明。这里,我们仅介绍一些常用的语法标识。以下是关于SSML标签和属性设置的比较完整的参数设置,如果读者想了解最新的标识参数设置,读者可以到官方获取。
  3、SSML具有非常强大的功能支持,比较典型的功能就是录音文件播放功能。其具体的实现方式是通过一个<audio>元素标签提供的URL路径对语音文件进行播放。其提供的录音文件的格式支持类型包括:
  在具体的使用场景中,我们可以通过语音合成的形式,提供文本数据以后,通知系统播放一个提前录制的语音文件,这里的beep文件就是提前录制的语音文件。
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-GB">
  Please say your name after the beep. // 听到beep提醒声音后,说出本人名字
  同样,SSML也可以非常灵活地提供一个回退功能,如果某些语音文件路径不正确或者播放失败的话,SSML可以提供一个可选功能,系统可以实现文字合成功能,SSML会自动播放文字合成的语音,这样会提升用户体验。具体示例如下:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-GB">
  Welcome to AJAX, the asynchronous company.
  在上面的示例中,如果company-intro语音文件播放失败的话,SSML会自动合成文字:Welcome to AJAX, the asynchronous company,然后播放。这里提醒用户,在以前的SSML版本中不能支持提取语音文件超时等控制参数。在SSML 1.1中和拓展SSML中获得了支持,这些参数包括:fetchtimeout,fetchhint,maxage和maxstale。这些参数可以用来控制语音提取超时设置。
  4、现在让我们看看SSML是如何实现对语音的发音的控制。首先说明,笔者对语音学方面的知识不是太了解,我们也没有专门针对语音学做更多研究,这里为了配合MRCP协议的研究做了一点简单的补充,某些表达和翻译可能不是太准确,如果读者需要了解更多关于语音学方面的知识,读者可以参考权威的语音学资料。在MRCP协议中,SSML是通过元素标签对发音进行控制,它可以支持插入的文字进行不同的播放形式,支持的播放形式包括:phonemic或phonetic的形式。phonemic 字母组成一个phoneme单元,相对比较微观,它是语言独立的语音单元,表达的所有声音需要区别于其他的单词。phonetic字母则组成了phone单元,它是一种语言相关的语音单元,字符的表达方式和位置都会影响人类语音的发音区域,具体的使用方式例如国际音标。通常情况下,在语音合成部署环境中,SSML会支持 International Phonetic Alphabet (IPA),中文全称是国际音标。国际音标通过可Unicode的方式来实现,Unicode也是国际通用的语言实现标准格式。
  一些商业语音合成解决方案为了体现其解决方案的优势,也可能添加一些特别字母或其他的商业字母支持的格式。元素标签就可以增加对其渲染的支持,例如一些不同于其他语言的专有名词或短语。例如以下示例:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">
  ph="t mei ou ">
  tomato
  这里使用了国际音标来定义tomato。具体关于tomato的发音需要根据ph属性值来获取。用户可以参考 International Phonetic Association来查看如何定义ph属性。语音识别厂家通过"x-organization" 或"x-organization-alphabet"来定义,例如,日本的一家语音合成厂家的定义值为x-JEITA-IT-4002。
  5、SSML在发音处理方面还有两个比较实用的功能,这就是别名替换(使用元素标签)和文本解释功能(使用元素标签)。
  使用的目的在于支持SSML文件同时支持文字书写格式和其可读格式,这样使得文档格式更加具有可读性。讲话发音格式通过一个中的alias来实现。具体示例如下:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">
  MRCP
  语音合成引擎通过别名会对"Media Resource Control Protocol"文字进行语音合成,然后播放。
  另外一种使用元素标签的方式是确保一些短语能够正确使用,例如以下示例:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">
  IPA
  这里,确保这三个IPA字母组合可以读成IPA通用的读音,而不是其他的读音方式。
  另外一个常用的标签就是元素标签。此标签用来表示文本信息的构成格式,用来进一步设定渲染的内容。大家知道,如果文字内容解释使用了不同的方式,可能会导致其内容发音的不同。包含三个不同的属性设置,它们分别是interpret-as,format 和detail。interpret-as用来表示文本结构的类型。例如,date表示一个日期,telephone表示是一个电话号码结构。format是一个可选属性,表示具体的准确的文本结构,例如data的格式:dmy表示读date格式为日期,月份,最后才是年。detail也是一个可选属性,它用来表示读内容的层级,在很多的interpret-as中没有定义此元素标签。具体的示例如下:
  2/3/2016
  01:59:59
  12
  9
  在本讲座中,我们介绍了SSML的基本概念和W3C相关的技术细节,另外解释了关于SSML设计的六大原则,这些原则保证了SSML具有良好的兼容性,可以兼容目前主流的语音合成引擎,然后我们介绍了SSML文件的基本结构和其定义的标签属性,同时介绍了录音文件的格式,和其发音标签的使用方式。另外,重点说明了关于IPA的使用,文本语音别名使用和文本解释功能。通过本章节的介绍,我们相信读者会对智能语音机器人开发中的SSML数据呈现方式有了比较清晰地认识。
  在接下来的章节中,我们将继续介绍SSML数据结构中的Prosody中的音量,语速,标识标记,Metadata等元素标识。
  参考资料:
  https://www.w3.org/TR/speech-synthesis11/
  https://msdn.microsoft.com/en-us/library/dd318693(vs.85)。aspx
        

  unimrcp-MRCP协议学习分享,QQ群号:208136295
  关注微信公众号:asterisk-cn,获得有价值的行业分享
  freepbx 技术论坛:www.ippbx.org.cn
  Asterisk, freepbx技术文档: www.freepbx.org.cn
  欧米(Omni)智能客服解决方案
  融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com

【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题