330 likes | 904 Views
CSSML 文本标记语言. 及在 C&E Ver3.0 系统中的实现. 讯飞语音工程师讲座 语音合成( II ). 与时俱进,技术服务应用. 内容提要. CSSML 简介. CSSML 元素介绍. 开发注意事项. 内容提要. CSSML 简介. CSSML 元素介绍. 开发注意事项. CSSML 简介. CSSML :全称是中文语音合成标记语言 CSSML 是由我公司牵头制定的中文语音合成标记规范 ,是对 SSML 语言在中文语音合成上的扩展,目的是规范化文本的合成方式、解决一些语音合成系统难以处理的问题 与 VXML 2.0 中采用的 SSML 标准兼容.
E N D
CSSML文本标记语言 及在C&E Ver3.0系统中的实现 讯飞语音工程师讲座 语音合成(II) 与时俱进,技术服务应用
内容提要 CSSML简介 CSSML元素介绍 开发注意事项
内容提要 CSSML简介 CSSML元素介绍 开发注意事项
CSSML简介 • CSSML:全称是中文语音合成标记语言 • CSSML是由我公司牵头制定的中文语音合成标记规范 ,是对SSML语言在中文语音合成上的扩展,目的是规范化文本的合成方式、解决一些语音合成系统难以处理的问题 • 与VXML 2.0中采用的SSML标准兼容
SSML和VXML • SSML:Speech Synthesis Markup Language(语音合成标记语言),是XML语言的一个扩展,基本任务是在不同的应用平台上为合成文本提供标准的语音输出控制方法; • VXML:Voice Extensible Markup Language(语音扩展标记语言),也是一种基于 XML 的标准,VXML的主要目标是定义平台无关、可共用的语音应用事务逻辑,用于语音应答系统。VXML v2.0规范中使用了SSML作为语音合成的控制标记;
标准制定 • 科大讯飞作为语音合成标准化工作组的组长单位,已经正式向863专家组、国家信标委和技术监督局提交了CSSML中文语音标注语言标准草案; • 从InterPhonic C&E v2.1产品开始,科大讯飞的语音合成系统已经全面支持CSSML标准体系;
意义 • 定义了中文语音合成系统相关输入输出的数据格式标准。它可被用于资源共享、模块互换,以及在分布式应用中的中间数据格式,或者独立系统的输入控制 • CSSML是原有TCCM标记完全替代方案,原有的所有TCCM标记都可以对应到CSSML规范中去,同时CSSML还非常容易扩展
示例文本 • <?xml version="1.0" encoding="gb2312"?> • <speak> • <sentence> • 现在时间是<value name="currentTime"/> • 现在时间是<value name="currentDate"/> • 我已经修正了<sayas type="number:ordinal"> 34</sayas>个错误 • </sentence> • </speak>
CE3.0部分支持CSSML • 在InterPhonic CE Ver3.0系统中,出于系统的功能限制和实用性考虑,CSSML 规范中的标记有少部分没有实现 • lexicon、voice标记没有实现;同时也对个别标记进行了扩展,例如value
内容提要 CSSML简介 CSSML元素介绍 开发注意事项
Speak元素 • 功能:CSSML文档的根元素 • 属性:xml:lang • 指定作用域内文档内容使用的语言类型 • 示例 • <?xml version="1.0"?> • <speak xml:lang=”CN”> • ... 合成内容 ... • </speak>
Sub元素 • 功能:使用指定的文本替换原有文本发音,如果指定文本为空,则不发音 • 属性:alias(必须) • alias:指明替换后的文本,不能超过128个字符 • 示例 • 我的母校是<sub alias=”中国科学技术大学”>USTC</sub> • 中国已是<sub alias="世界贸易组织">WTO</sub>的成员
语法层次元素 • 功能:指定语法层次结构 • paragraph:说明元素内容在语法层次上是段落,内部可以嵌套句子。 • sentence:说明元素内容在语法层次上是句子,内部可以嵌套短语。 • phrase :指明元素内容在语法层次上是短语,内部可以嵌套短语和词组。 • word:说明元素内容在语法层次上是词组,本元素影响分词结果
sayas/say-as元素 • 功能:说明元素内容的合成方式,即决定其读法 • 属性:“type”属性(必须) • type:将被用来指明具体的读法性质 • type的取值如下:
sayas/say-as元素type属性 • acronym:英语缩写形式,字母发音间隔较小 • spell-out:按字母发音,发音间隔较大 • number:指明是数字 • “number:ordinal”:按数值发音 • “number:digits”:按数字串发音 • “number:score”:按比分读法发音 • “number:fraction”:按分数读法发音 • name:指明文本是名称(姓名、公司或地名) • telephone:按电话号码读法发音
sayas/say-as元素type属性 • date:指明日期,可附带“ymd” “mdy” “dmy” “ym” “my” “md” “y”指明顺序。 • time:指明时刻,可附带“hm” “hms” 指明包含内容。 • duration:指明时间段,可带“hm” “hms” “ms”指明内容。 • currency:指明货币金额。 • measure:指明度量值。 • net:email:指明是电子邮件地址 • net:url:指明是URL • address:指明是表述邮政地址
phoneme元素 • 功能:指明发音参数 • 属性: • py:值应取符合中国国家语委拼音方案的拼音序列,强制内容按照拼音序列发音 • lang:对作用域内容按照何种语种发音 • ph :符合(IPA)的音标序列 (不支持) • 示例: • 他姓<phoneme py=”zeng1”>曾</phoneme> • 国家主席<phoneme lang=”en”>Jiang Zeming</phoneme>
break元素 • 功能:在合成语音中插入一个停顿 • 属性包括: • size:指明停顿长短,可取值“none” “small” “medium” “large”,缺省值是medium • time:指明具体停顿时长,以秒或毫秒为单位,如“1s” ,“400ms”,“100ms” 等
prosody元素 • 功能:指明发音的韵律特征 • 属性包括: • pitch:指明基频的高低,可取值绝对频率数值或者是相对变化值 • 绝对值:正整数或者是枚举low, high等 • 相对变化值:浮点值+10.6Hz,-2.0Hz,浮点百分率+5.5%, -7.0% • volume:指明合成音量 • rate:指明合成语速 • range:指明基频范围 (不支持) • contour:指明调型曲线 (不支持) • duration:指明发音持续时长(不支持)
audio元素 • 功能:指明插入一个已有声音样本 • 属性:src • 可以是以URI指定的某个文件或是已约定的对象名称,仅支持位于本机的文件,不支持网络URL,该文件必须为当前使用音库对应采样率的16bit PCM wav格式 • 示例 • 这时听到<audio src=“ding.wav”/>的一声
punctuation元素 • 功能:指明标点的处理方式 • 属性:speak_out • 指明标点符号的读出方式是否为逐一读出,可取值为“yes”, “no” ,默认的读出方式为“no”
value元素 • 功能:指明插入一个内置系统变量值 • 属性包括: • name:变量的名称(包括 “currentTime”,“currentDate”、“ttsVersion”、 “productName”、“companyName” 等) • type(可选):与<sayas>中“type”属性相同 • 示例 • 现在时间是<value name="currentTime"/>
emphasis元素 • 功能:指明包含的文本轻重读/强调程度 • 属性包括: • Level:指明强调等级 • Layer:指明作用层次 • 示例 • 这个苹果可<emphasis>真大</emphasis>
environment元素 • 功能:指明发音时是否带有背景音场环境 • 属性包括: • repeat :指明背景声音是否重复播放 • src :指明背景声音文件的URL • mode :指明声场环境的模式 • azimuth :指明声源的水平方位角 • elevation :指明声源相对于听者的高度 • 示例 • <environment repeat="yes" src="blue_river.wav/">背景音乐为《蓝色多瑙河》</environment>
内容提要 CSSML简介 CSSML元素介绍 开发注意事项
自动文本类型处理 • 不设定文本类型时 • 缺省情况下系统自动判断文本类型 • 如果是CSSML文本必须规范(要有头和根元素) • 例如: • <?xml version="1.0" encoding="gb2312"?> • <speak> • …合成内容… • </speak>
CSSML文本类型 • 设定文本类型为CSSML文本 • 提供新的合成参数TTS_PARAM_TEXTTYPE • 此时不是规范格式的CSSML文本(没有头和根元素) 也会被系统识别 • 例如: • 我修订<sayas type=“number:ordinal”>34</sayas>个错误 • 风<break time="500ms"/>轻轻摇着树梢
标记与句子 • 合成系统在分析文本时会进行分句处理,标记会对分句造成影响,如sub、或者是say-as的“net:url ”、“net:email ”、“address ”等 • 分句也会对标记的功能造成影响,考虑到实用性和处理的复杂程度,prosody元素的rate、pitch和volume属性,punctuation元素等支持跨句子使用,而say-as等元素不支持跨句使用
属性中的数字 • 绝对数值 • 整数或者浮点数,前不能有正负号 • 相对数值 • 整数或者浮点数,前必须有正负号 • 百分数(0-100之间的整数或小数后面带“%”符号),前可以有正负号 • 注意某些属性的数字必须带单位 • prosody元素的pitch属性值后面必须有“Hz” • Break元素的time属性后面必须有“s”或“ms”