SSML标记语言
最近更新时间:2023-08-17 16:35:10 前往 Coding 编辑 导出文档
本文为您介绍SSML(Speech Synthesis Markup Language)标记语言的功能、标签使用及示例。
概述
SSML是一种基于XML的语音合成标记语言。与纯文本的合成相比,使用SSML可以充实合成的内容,为最终合成效果带来更多变化。SSML不仅控制语音合成能读什么,更能控制语音合成可以怎么读,包括控制断句分词方式、发音、速度、停顿、声调和音量等特征。
说明 语音合成服务的SSML实现基于W3C的语音合成标记语言版本1.0。但并不支持W3C包含的所有的标记类型,而是从业务角度出发,将支持的标记类型最大程度与业务需求绑定。
使用方式
说明
- 目前仅中文声音支持SSML功能,详情请参考文档下方各标签的介绍和示例。
- 所有文本需放在
<speak></speak>
标签之内,且每个语音合成任务只能包含一个<speak></speak>
标签。长文本任务(包括实时长文本合成和异步长文本合成)可以含多个成对的<speak></speak>
标签。 - 长文本语音合成请求可使用多个
<speak></speak>
标签,及SSML与文本结合的方式,以下示例可以将全文作为一次请求,在长文本语音合成服务中进行合成测试。你好吗?<speak> <say-as interpret-as="telephone">114</say-as>查询号码 <say-as interpret-as="cardinal">123</say-as>开始干。 加起来为<say-as interpret-as="digits">1234</say-as>。 <say-as interpret-as="name">张三</say-as>的快递。 <say-as interpret-as="address">富路国际1号楼3单元304</say-as> <say-as interpret-as="name">李四</say-as> </speak>我很好。<speak> </speak>哈哈哈
- 文本头部
<speak>
之前可以省略XML Header。 - 标签内的文字内容如果包含XML的特殊字符,需要做字符转义,常用的特殊字符对应关系如下。
- "(双引号)对应:"
- ' (撇号或单引号)对应:'
- &(表示和的符号)对应:&
- <(小于号)对应:<
- > (大于号)对应:>
标签
<speak>
- 描述
<speak>
标签是所有待支持SSML标签的根节点。一切需要调用SSML标签的文本都要包含在<speak></speak>
中。 - 语法
<speak>需要调用SSML标签的文本</speak>
- 标签关系
<speak>
标签可以包含文本和以下标签:<break>
<s>
<w>
<phoneme>
<say-as>
示例
- 空属性
<speak> 需要调用SSML标签的文本 </speak>
<break>
- 描述
用于在文本中插入停顿,该标签是可选标签。 - 语法
# 空属性 <break/> # 带time属性 <break time="string"/>
- 属性
说明 使用无属性的标签时,停顿时长为“1s”。 属性名称 属性类型 属性值 是否必选 描述 time String numbers/numberms 否 以秒/毫秒为单位设置停顿的时长 (如“2s“、“50ms”)。
numbers:以秒为单位,number取值范围为1, 10的整数。
numberms:以毫秒为单位,number取值范围为50, 10000的整数。 - 标签关系
<break>
是空标签,不能包含任何标签。如果SSML结构中存在<s>
标签,请把<break>
写在<s>
里面,表示对当前段落或句子设置停顿。 - 示例
<speak> 请闭上眼睛休息一下<break time="500ms"/>好了,请睁开眼睛。 </speak>
<w>
- 描述
用于表示文本的词语结构,该标签是可选标签。<w>
标签内部必须是一个独立的词或短语,这个词或短语不允许混合使用中文和其他外语。 - 语法
<w>文本</w>
- 属性
无 - 标签关系
<w>
标签可以包含文本 - 示例
<speak>南京市长<w>江大桥</w>今天发表了演讲。</speak>
<s>
- 描述
用于表示文本的句子结构,该标签是可选标签。 - 语法
<s>文本</s>
- 属性
无。 - 标签关系
<s>
标签可以包含文本和以下标签:<break>
<w>
<phoneme>
<say-as>
- 示例
<speak><s>这是第一句话</s><s>这是第二句话</s></speak>
<phoneme>
- 描述
用于控制标签内文本的读音,该标签是可选标签。英文文本不支持该标签。 - 语法
<phoneme alphabet="string" ph="string">文本</phoneme>
- 属性
属性名称 | 属性类型 | 属性值 | 是否必选 | 描述 |
---|---|---|---|---|
alphabet | String | py | 是 | “py”表示拼音。 |
ph | String | 标签内文本对应的拼音串 | 是 | 拼音用法的赋值规范:字与字的拼音用空格分隔,拼音的数目必须与字数相等。每个拼音由发音和音调组成,音调为1~5的数字编号,其中”5”表示轻声。 |
- 标签关系
<phoneme>
标签可以包括文本。 - 示例
<speak> 去<phoneme alphabet="py" ph="dian3 dang4 hang2">典当行</phoneme>把这个玩意<phoneme alphabet="py" ph="dang4 diao4">当掉</phoneme> </speak>
<say-as>
- 描述
用于指示出标签内文本的信息类型,进而按照该类型的默认发音方式发音。 - 语法
<say-as interpret-as="string">文本</say-as>
- 属性
属性名称 属性类型 属性值 是否必选 描述 Interpret-as String cardinal/digits/telephone/name/address/id/characters/punctuation/date/time/currency/measure 是
指示出标签内文本的信息类型:- cardinal:按整数或小数发音
- digits:按数字发音。
- telephone:按电话号码常用方式发音。
- name:按人名发音。
- address:按地址发音。
- id:适用于账户名、昵称等
- characters:将标签内的文本按字符一一读出。
- punctuation:将标签内的文本按标点符号的方式读出来。
- date:按日期发音。
- time:按时间发音。
- currency:按金额发音。
- measure:按计量单位发音。
- 各
<say-as>
类型支持范围
cardinal格式 示例 中文输出 说明 数字串 145 一百四十五 负号+数字串 -145 负一百四十五 以逗号分隔3位数字串 10,000 一万 负号+以逗号分隔3位数字串 -10,124 负一万一百二十四 数字串+小数点+2个零 10.00 十 负号+数字串+小数点+2个零 -110.00 负一百一十 数字串+小数点+数字串 79.090 七十九点零九零 负号+数字串+小数点+数字串 -79.001 负七十九点零零一
说明:
整数输入范围:20位以内的正负整数,-99999999999999999999,99999999999999999999。
小数输入范围:对小数点后小数的位数没有特殊限制,建议不超过10位。
digits
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
数字串 | 129090909 | 一二九零九零九零九 |
说明: 对数字串的长度没有特殊限制,建议不超过20位。当数字串超过10位时,每个数字后插入停顿。
telephone
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
座机号 | 4930286 | 四九三 零二八六 | 支持7~8位座机号,支持空格和“-”作为分隔符。其中,7位座机号支持“3-4”的数字分隔方式;8位座机号支持“4-4”的数字分隔方式。 |
493 0286 | 四九三 零二八六 | ||
493-0286 | 四九三 零二八六 | ||
62552560 | 六二五五 二五六零 | ||
6255 2560 | 六二五五 二五六零 | ||
6255-2560 | 六二五五 二五六零 | ||
座机号+分机号 | 4930286-109 | 四九三 零二八六 转幺零九 | 支持1~4位分机号。 |
4930286转109 | 四九三 零二八六 转幺零九 | ||
4930286分机109 | 四九三 零二八六 分机幺零九 | ||
4930286分机号109 | 四九三 零二八六 分机号幺零九 | ||
区号+座机号 | 01062552560 | 零幺零 六二五五 二五六零 | 支持区号:010、02x、03xx、04xx、05xx、07xx、08xx、09xx。 |
010 62552560 | 零幺零 六二五五 二五六零 | ||
010 6255 2560 | 零幺零 六二五五 二五六零 | ||
010 6255-2560 | 零幺零 六二五五 二五六零 | ||
010-62552560 | 零幺零 六二五五 二五六零 | ||
010-6255-2560 | 零幺零 六二五五 二五六零 | ||
(010)62552560 | 零幺零 六二五五 二五六零 | ||
03198907098 | 零三幺九 八九零 七零九八 | ||
0319-8907098 | 三幺九 八九零 七零九八 | ||
区号+座机号+分机号 | 010 62552560-109 | 零幺零 六二五五 二五六零 转幺零九 | 无 |
010-62552560-109 | 零幺零 六二五五 二五六零 转幺零九 | ||
(010)62552560-109 | 零幺零 六二五五 二五六零 转幺零九 | ||
(010)62552560转109 | 零幺零 六二五五 二五六零 转幺零九 | ||
(010)62552560分机109 | 零幺零 六二五五 二五六零 分机幺零九 | ||
(010)62552560分机号109 | 零幺零 六二五五 二五六零 分机号幺零九 | ||
国家代码+区号+座机号 | 86-010-62791627 | 八六 零幺零 六二七九 幺六二七 | 支持国家代码:86、 (86)、+86、(+86)、0086。并统一读为“八六”。 |
(86)10-62791627 | 八六 幺零 六二七九 幺六二七 | ||
+86-010-62791627 | 八六 零幺零 六二七九 幺六二七 | ||
0086-10-62791627 | 八六 幺零 六二七九 幺六二七 | ||
(+86)-10-6279 1627 | 八六 幺零 六二七九 幺六二七 | ||
国家代码+区号+座机号+分机号 | (86)21-58118818-207 | 八六 二幺 五八幺幺 八八幺八 转二零七 | 无 |
(86)021-5811-8818-207 | 八六 零二幺 五八幺幺 八八幺八 转二零七 | ||
(86)021-58118818转207 | 八六 零二幺 五八幺幺 八八幺八 转二零七 | ||
(86)21-5811-8818分机207 | 八六 二幺 五八幺幺 八八幺八 分机二零七 | ||
+86-021-58118818分机号207 | 八六 零二幺 五八幺幺 八八幺八分机号二零七 | ||
手机号 | 139 0000 5678 | 幺三九 零零零零 五六七八 | 支持11位手机号,支持3-3-5、3-4-4两种数字分隔方式 |
139-000-05678 | 幺三九 零零零 零五六七八 | ||
139 000 05678 | 幺三九 零零零 零五六七八 | ||
国家代码+手机号 | +86-13900005678 | 八六 幺三九 零零零零 五六七八 | 无 |
(+86)-139-0000-5678 | 八六 幺三九 零零零零 五六七八 | ||
+8613900005678 | 八六 幺三九 零零零零 五六七八 | ||
0086-139 000 05678 | 八六 幺三九 零零零 零五六七八 | ||
服务号 | 123 | 幺二三 | 支持常用的服务号。支持以400/800开头的10位服务号,支持以“3-3-4”的数字分隔方式。支持以12530/17951/12593开头的16位号码。 |
95678 | 九五六七八 | ||
4008110510 | 四零零 八幺幺 零五幺零 | ||
800-810-8888 | 八零零 八幺零 八八八八 | ||
1253013520638377 | 幺二五三零 幺三五 二零六三 八三七七 | ||
其他 | (86)(21)9899-80800-0909 | 八六 二幺 九八九九 八零八零零 零九零九 | 支持“数字串+分隔符(左右括号、-)”方式。 |
address
格式 | 示例 | 英文输出 | 说明 |
---|---|---|---|
常用地址格式 | 元和镇嘉元30-9 | 元和镇嘉元三十杠九 | 支持常用地址格式。此处地址指标准的邮寄地址。 |
市台路388弄1107-1108号 | 市台路三八八弄幺幺零七杠幺幺零八号 | ||
华润二十四城六期锦云府3-1-3205 | 华润二十四城六期锦云府三杠一杠三二零五 | ||
圣华名都大厦2幢2006室 | 圣华名都大厦二幢二零零六室 | ||
五常街道庭院5幢4单元201 | 五常街道庭院五幢四单元二零幺 | ||
芙蓉江路150弄19号 | 芙蓉江路幺五零弄十九号 |
- 英文文本不支持该标签。
id
格式 | 示例 | 英文输出 | 说明 |
---|---|---|---|
字符串 | dell0101 | D E L L 零 一 零 一 | 大小写英文字符、阿拉伯数字0~9、下划线。输出的空格表示每个字符之间插入停顿,即字符一个一个地读。 |
myid_1998 | M Y I D 下划线 一 九 九 八 | ||
AiTest | A I T E S T |
英文文本该标签功能同标签characters。
characters
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
字符串 | ISBN 1-001-099098-1 | I S B N 一 杠 零 零 一 杠 零 九 九 零 九 八 杠 一 | 支持中文汉字、大小写英文字符、阿拉伯数字0~9以及部分全角和半角字符。输出的空格表示每个字符之间插入停顿,即字符一个一个地读。标签内的文本如果包含XML的特殊字符,需要做字符转义。 |
x10b2345_u | x 一 零 b 二 三 四 五 下划线 u | ||
v1.0.1 | v 一 点 零 点 一 | ||
版本号2.0 | 版本号二 点 零 | ||
苏M MA000 | 苏M M A 零 零 零 | ||
空中客车A330 | 空中客车A 三 三 零 | ||
型号s01 s02和s03 | 型号s 零 一 s 零二 和s 零 三 | ||
空中客车A330 | 空中客车A 三 三 零 | ||
αβγ | 阿尔法 贝塔 伽玛 |
punctuation
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
标点符号 | … | 省略号 | 支持常见中英文标点。输出的空格表示每个字符之间插入停顿,即字符一个一个地读。标签内的文本如果包含XML的特殊字符,需要做字符转义。 |
…… | 省略号 | ||
!"#$%& | 叹号 双引号 井号 dollar 百分号 and | ||
‘()*+ | 单引号 左括号 右括号 星号 加号 | ||
,-./:; | 逗号 杠 点 斜杠 冒号 分号 | ||
<=>?@ | 小于 等号 大于 问号 at | ||
[]^_ | 左方括号 反斜线 右方括号 脱字符 下划线 |
英文文本该标签功能同标签characters。
date
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
xx年 | 71年 | 七一年 | 支持2位和4位年份。其中:2位年份支持60年 |
04年 | 零四年 | ||
19年 | 一九年 | ||
1011年 | 一零一一年 | ||
1998年 | 一九九八年 | ||
2008年 | 二零零八年 | ||
xx年xx月 | 98年4月 | 九八年四月 | 当月份为1到9月时,支持开头带“0”和不带“0”两种写法。例如“1908年4月”和“1908年04月”。 |
1998年04月 | 一九九八年四月 | ||
08年8月 | 零八年八月 | ||
2008年8月 | 二零零八年八月 | ||
xx年xx月xx日或xx年xx月xx号 | 98年4月23日 | 九八年四月二十三日 | 当日期为1到9日时,支持开头带“0”和不带“0”两种写法。例如“1908年4月8日”和“1908年04月08日”。 |
1998年04月23日 | 一九九八年四月二十三日 | ||
08年8月8号 | 零八年八月八号 | ||
2008年08月08号 | 二零零八年八月八号 | ||
xx月xx号 | 3月20日 | 三月二十日 | 无 |
08月07号 | 八月七号 | ||
年月缩写 | 2018/08 | 二零一八年八月 | 支持“/”、“-”、“.”作为缩写的分隔符。 |
2018-08 | 二零一八年八月 | ||
2018.08 | 二零一八年八月 | ||
年月日缩写 | 2018/08/08 | 二零一八年八月八日 | 支持“/”、“-”、“.”作为缩写的分隔符。 |
2018-8-8 | 二零一八年八月八日 | ||
2018.08.08 | 二零一八年八月八日 | ||
xx年xx月xx日 | 04年9月1日~30日 | 零四年九月一日至三十日 | 支持“~”、“-”作为“至”的缩写标志。 |
2004年09月01号-2008年06月08号 | 二零零四年九月一号至二零零八年六月八号 | ||
xx年xx月xx日 | 04年9月1日~30日 | 零四年九月一日至三十日 | 支持“~”、“-”作为“至”的缩写标志。 |
2004年09月01号-2008年06月08号 | 二零零四年九月一号至二零零八年六月八号 | ||
xx年xx月~xx年xx月 | 01年04月~10年04月 | 零一年四月至一零年四月 | 支持“~”、“-”作为“至”的缩写标志。 |
2001年04月~2010年04月 | 二零零一年四月至二零一零年四月 | ||
xx月xx日 | 10月1日~10月7日 | 十月一日至十月七日 | 支持“~”、“-”作为“至”的缩写标志。 |
10月01号~10月07号 | 十月一号至十月七号 | ||
xx月xx日 | 10月1日~7日 | 十月一日至七日 | 支持“~”、“-”作为“至”的缩写标志。 |
10月01号~07号 | 十月一号至七号 | ||
年月日缩写~年月日缩写 | 2018/03/03~2019/01/01 | 二零一八年三月三日至二零一九年一月一日 | 支持“/”、“.”作为缩写的分隔符,支持“~”、“-”作为“至”的缩写标志。 |
1997.9.9~1998.9.9 | 一九九七年九月九日至一九九八年九月九日 | ||
月日缩写~月日缩写 | 10/20~10/31 | 十月二十日至十月三十一日 | 支持“/”、“.”作为缩写的分隔符,支持“~”、“-”作为“至”的缩写标志。 |
xx | 1~10月 | 一至十月 | 支持“/”、“.”作为缩写的分隔符,支持“~”、“-”作为“至”的缩写标志。 |
1月~10月 | 一月至十月 | ||
月日年缩写 | 10/20/2018 | 二零一八年十月二十日 | 仅支持4位的年份,仅支持“/”作为日期的分隔符,仅支持“月/日/年”的书写方式。 |
time
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
时刻 | 12:00 | 十二点 | 支持常用时间和时间范围格式。 |
12:00:00点 | 十二点 | ||
10:20分 | 十点二十分 | ||
10:20:30 | 十点二十分三十秒 | ||
09:18:14 | 九点十八分十四秒 | ||
时刻~时刻 | 11:00~12:00 | 十一点到十二点 | 支持常用时间和时间范围格式。 |
09:00-14:00 | 九点到十四点 | ||
11:00~11:30 | 十一点到十一点三十分 | ||
11:00-12:18 | 十一点到十二点十八分 | ||
10:30~11:00 | 十点三十分到十一点 | ||
09:28-10:00 | 九点二十八分到十点 | ||
10:20~11:20 | 十点二十分到十一点二十分 | ||
06:00~08:00 | 六点到八点 | ||
上午10:20~下午13:30 | 上午十点二十分到下午十三点三十分 | ||
时间缩写 | 5:00 am | 凌晨五点整 | 支持常用时间和时间范围格式。 |
5:30 am | 凌晨五点半 | ||
5:20:12 am | 凌晨五点二十分十二秒 | ||
7:00 am | 上午七点整 | ||
7:30 AM | 上午七点半 | ||
7:20:12 a.m. | 上午七点二十分十二秒 | ||
07:08:12 A.M. | 上午七点零八分十二秒 | ||
5:00 pm | 下午五点整 | ||
5:30 PM | 下午五点半 | ||
5:20:12 p.m. | 下午五点二十分十二秒 | ||
05:09:12 P.M. | 下午五点零九分十二秒 | ||
9:00 pm | 晚上九点整 | ||
9:30 pm | 晚上九点半 | ||
9:20:12 PM | 晚上九点二十分十二秒 | ||
9:02:12 P.M. | 晚上九点零二分十二秒 | ||
12:00 pm | 中午十二点整 | ||
12:30 p.m. | 中午十二点半 | ||
12:20:12 PM | 中午十二点二十分十二秒 |
currency
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
数字+金额标识符 | 12.00 RMB | 十二人民币 | 支持AUD(澳元) 、CAD(加元)、 HKD(港币)、JPY(日元)、USD(美元)、CHF(瑞士法郎)、NOK(挪威克朗)、SEK(瑞典克朗)、GBP(英镑)、 RMB(人民币)、CNY(元)和EUR(欧元)。支持的数字格式包括:整数、小数以及以逗号分隔的国际写法。 |
12.50 RMB | 十二点五零人民币 | ||
12,000,000 RMB | 一千二百万人民币 | ||
12,000,000.00 RMB | 一千二百万人民币 | ||
12,000.35 RMB | 一万两千点三五人民币 | ||
金额标识符+数字 | $12 | 十二美元 | 支持 CAD(加元)、 $(美元)、Fr(法郎)、kr(丹麦克朗)、 £(英镑)、¥(元)和 €(欧元)。支持的数字格式包括:整数、小数以及以逗号分隔的国际写法。 |
$12.00 | 十二美元 | ||
$12.12 | 二点一二美元 | ||
$12,000 | 一万两千美元 | ||
$12,000.00 | 一万两千美元 | ||
$12,000.99 | 一万两千点九九美元 | ||
其他默认读法 | 1213 | 一千二百一十三 | 无 |
1213 KML | 一千二百一十三K M L | ||
1213.00 KML | 一千二百一十三K M L | ||
1213.9 KML | 一千二百一十三点九K M L | ||
1,000 KML | 一千K M L | ||
1,000.00 KML | 一千K M L | ||
1,000.98 KML | 一千点九八K M L | ||
12,000 | 一万两千 |
measure
格式 | 示例 | 中文输出 | 说明 |
---|---|---|---|
数字+中文单位 | 2片 | 两片 | 支持常见中文单位及单位缩写。 |
120公顷 | 一百二十公顷 | ||
100多毫克 | 一百多毫克 | ||
100来米 | 一百来米 | ||
100余人 | 一百余人 | ||
1厘米20毫米 | 一厘米二十毫米 | ||
120.00平方公里 | 一百二十平方公里 | ||
数字+单位缩写 | 120.56 cm² | 一百二十点五六平方厘米 | 支持常见中文单位及单位缩写。 |
120 ㎡ 56 cm² | 一百二十平方米五十六平方厘米 | ||
100 m 12 cm 6 mm | 一百米十二厘米六毫米 | ||
范围 | 10~15 kg | 十至十五千克 | 支持常见中文单位及单位缩写。 |
10.24~789.82亩 | 十点二四至七百八十九点八二亩 | ||
10米~15米 | 十米至十五米 | ||
10.24 cm~19.08 cm | 十点二四厘米至十九点零八厘米 | ||
数字+单位+"/"+单位 | 10元/斤 | 十元每斤 | 支持常见中文单位及单位缩写。 |
199~299元/件 | 一百九十九至二百九十九元每件 | ||
299.99元/g~399.99元/g | 二百九十九点九九元每克至三百九十九点九九元每克 | ||
其他默认读法 | 12扎 | 十二扎 | 支持常见中文单位及单位缩写。 |
30 rm | 三十r m | ||
4万万同胞 | 四万万同胞 | ||
12.897微克 | 十二点八九七微克 |
<say-as>
常见计量单位如下表所示。
格式 | 类别 | 中文示例 |
---|---|---|
缩写 | 长度 | nm(纳米)、μm(微米)、 mm(毫米)、cm(厘米)、m(米)、km(千米)、ft(英尺)、in(英寸) |
面积 | cm²(平方厘米)、㎡(平方米)、km²(平方千米)、SqFt(平方英尺) | |
体积 | cm³(立方厘米)、m³(立方米)、km³(立方千米)、mL(毫升)、L(升)、gallon(加仑) | |
重量 | μg(微克)、mg(毫克)、g(克)、kg(千克) | |
时间 | min(分)、sec(秒)、ms(毫秒) | |
电磁 | μA(微安)、mA(毫安)、Ω(欧姆)、Hz(赫兹)、kHz(千赫兹)、MHz(兆赫兹)、GHz(吉赫兹)、V(伏)、kV(千伏)、kWh(千瓦时) | |
声音 | dB(分贝) | |
气压 | Pa(帕)、kPa(千帕)、Mpa(兆帕) | |
其它常见单位 | 支持不限于上述类别的中文单位,例如“米”、“秒”、“美元”、“毫升每瓶”等。以及中文量词,例如“架”、“场”、“头”、“部”、“盆”等。 |
另外还有<say-as>
常见符号读法,省略。
标签关系
<say-as>
标签可以包括文本
综合示例
- 重要
- 示例样音中旁白发音人使用的是定制声音。
- 语音合成每次合成请求的文本字数不能超过300字符,且只能使用一次
<speak>
标签,以下示例需要按照<speak>
标签分多次进行合成测试。
<speak>
相传北宋年间,
<say-as interpret-as="date">1121-10-10</say-as>,
<say-as interpret-as="address">开封城</say-as>
郊外的早晨笼罩在一片
前买买买的欢乐海洋中。一支运货的骡队刚进入城门
一个肤白貌美
<phoneme alphabet="py" ph="de5">地</phoneme>
姑娘便拦下第一排的小哥<say-as interpret-as="name">阿发。</say-as>
</speak>
<speak>
“亲,本店今日特惠,鞋履全场
<say-as interpret-as="digits">199</say-as>
减
<say-as interpret-as="cardinal">100</say-as>,
走过路过不要错过”。
</speak>
<speak>
“不啦不啦,赶着上货,已经
<say-as interpret-as="time">09:59:59</say-as>
了,再晚就供应链断裂了”。
</speak>
<speak>
<say-as interpret-as="name">阿发</say-as>
擦了擦汗,带着运货队伍,径直穿过闹巷,耳边充斥着各种叫卖声:
</speak>
<speak>
最新花色现染布匹,买两尺送一尺;
</speak>
<speak>
爆款纱帽头盔,7天无理由退货;
</speak>
<speak>
专治大小方脉,调理男人妇人疑难杂症。
</speak>
<speak>
突然,一匹马不知怎么受了惊,在路上嘶鸣狂奔
一个孩子也吓坏了,跌跌撞撞地扑向大人怀里
<break time="50ms"/>大喊道:
</speak>
<speak>
“妈妈,妈妈!”
</speak>
<speak>
这时,
<say-as interpret-as="name">阿发</say-as>
心想
</speak>
<speak>
“吓死宝宝了!”
</speak>
<speak>
于是他赶紧捂住了
<phoneme alphabet="py" ph="he2 bao1">钱包</phoneme>,
继续赶路送货。一路上,
<say-as interpret-as="address">开封城</say-as>
的繁荣景象给
<say-as interpret-as="name">阿发</say-as>
留下了深刻的印象。
</speak>
<speak>
物换星移,繁华落尽,于是他在购物狂欢之余握起画笔,勾勒出一幅长卷,并命名为《清明上河图》。
</speak>