说明
Universal SSML是Flute统一TTS前端(Universal FrontEnd,简称UFE)采用的与具体语种解耦的SSML框架,能够方便地为不同语种提供SSML能力。
SSML是语音合成标记语言(Speech Synthesis Markup Language)的缩写。它是W3C的语音接口框架的一部分,通过SSML,可以对语音合成的效果进行定制化。
Universal SSML是Flute统一TTS前端(Universal FrontEnd,简称UFE)采用的与具体语种解耦的SSML框架,能够方便地为不同语种提供SSML能力。
说明
如果使用中英混音色,需要注意比较短的英文句子可能被语种识别为中文,部分标签在中文和英文场景下表现不同。例如在中文场景下,如果Verbatim内的文本是有效单词则不会按字母读。
注意
<speak></speak>标签之内标签 | 属性 | 功能 | 备注 |
|---|---|---|---|
<speak> |
| 根元素。 |
|
<phoneme> | alphabet="cmu" | 指定单词发音的音标 | |
alphabet="py" | 指定中文词的发音(拼音) | ||
<say-as> | interpret-as | 指定解析文本的语义类型 | 例如,20可以读作twenty,也可以读作two o |
<sub> | alias | 文本替换 | 等价于将其内部文本替换为alias属性中的文本 |
<break> | time | 控制字词之间的停顿时长 | 只支持time属性,strength 属性不支持 |
<soundEvent> | src | 提示音标签,可以在SSML合成过程中,通过该标签在任意位置插入提示音。 |
|
<speak>作为SSML的根元素出现。不存在该根元素的输入文本不会被认为是SSML。
任意
属性名称 | 属性类型 | 属性值 | 是否必选 | 描述 |
|---|---|---|---|---|
bgm | String | 线上可调用的背景音乐的名称。 | 否 | 豆包语音合成特有标签。 |
backgroundMusicVolume | String | [0,100]之间的整数。默认值为50。
| 否 | 豆包语音合成特有标签。 |
effect | String |
| 否 | 豆包语音合成特有标签。 |
自定义背景音URL |
|---|
您可以根据需求,使用自定义的背景音。需要将背景音存放在火山引擎的TOS上,并且所在的存储空间至少为公共读权限,请参见创建存储空间。使用HTTP/HTTPS协议生成文件访问链接,请参见上传文件。
重要 |
示例
<speak backgroundMusicVolume=\"50\" bgm=\"https://xxx-test.tos-cn-guangzhou.volces.com/SSML-bgm-24k-3s.wav\"> 今天天气真不错 </speak>
支持以下属性值
属性值 | 说明 |
|---|---|
true_robot | 机器人效果 |
dizzy_effect | 眩晕感 |
heartbeat_intimacy | 加背景音 |
ethereal_spirit | spirit |
office_ambiance | 办公氛围 |
storm_scene | 暴风雨场景 |
demon_whisper-silence_duration | 恶魔低语 |
lightsaber_hum-aigc_metadata | 混响 |
ghostly_presence | 变音调 |
memory_filter-icl | 像在梦里说话 |
metallic_resonance | 金属感 |
tavern_live | 酒吧驻唱 |
cafe_ambiance | 加背景音 |
fear_atmosphere | 心跳背景音 |
airy_echo | 空气感回声 |
dreamcore | 长回声+留声机 |
hazy_ambience | 朦胧感 |
folk_reverb | 民族乐混响 |
broken_mic | mdsp_破麦 |
killer_vibe | 杀手 |
parking_lot_reverb | 停车场 |
heartbeat_background | 加背景音 |
school_announcement | 学校广播 |
bathroom_reverb | 加背景音 |
speech_dialogue | 语音通话中 |
示例
<speak effect=\"true_robot\">你喜欢机器人瓦力吗?</speak>
如无特别说明,实例中的音频均由英语UFE前端+DB6音色Tacotron后端生成。
<speak>hello world</speak>
<speak>hello <speak>world</speak></speak>
报错:unrecognized ssml: 1 -- failed to parse child -- failed to parse ssml
<speak>hello</speak> <speak>world</speak>
目前的行为是仅考虑第一个
根元素的内容,暂不报错
hello world
hello <break/> world
<phoneme>用于手动指定部分字词的发音。通常用于纠正TTS为多音字自动生成的不准确发音。
参数 | 类型 | 功能 | 取值 |
|---|---|---|---|
|
| 指定表示发音(音素)的格式 |
|
|
| 指定发音(音素) |
|
纯文本
py) <speak>《茜茜公主》是奥地利拍摄的历史题材的德语三部曲电影。</speak>
<speak> 《 <phoneme alphabet="py" ph="xi1 xi1">茜茜</phoneme> 公主》是奥地利拍摄的历史题材的德语三部曲电影。 </speak>
<speak>要一起去<phoneme alphabet="py" ph="chi1">吃</phoneme>饭吗</speak>
cmu) IY1、UW2。<speak> <!-- 不区分大小写 --> <phoneme alphabet="cmu" ph="w uw1 ch IY1 l Uw n"> Wu Qilong </phoneme> and Wu Qilong </speak>
<speak> <phoneme alphabet="cmu" ph="w uw1 ch IY1 l Uw n"> Wu, Qilong </phoneme> </speak>
报错:
should align with the word groups
ipa) "i", "ɪ", "ɛ/e", "æ", "ɑ/ɑː", "ɔ/ɔ:", "u/u:", "ʊ", "ʌ", "ə", "ɜr/ɜːr", "ər", "aɪ/ai", "eɪ/ei", "ɔɪ/ɔi", "oʊ/ou", "aʊ/au", "ɑr/ɑːr", "ɔr", "ʊr/ur/ʊər", "ɛr/ɛər", "ɪr/ɪər", "p", "b", "t", "d", "k", "g", "f", "v", "θ", "ð", "s", "z", "ʃ", "ʒ", "tʃ", "dʒ", "tr", "dr", "ts", "dz", "l", "r", "m", "n", "ŋ", "w", "j", "h",
"ˈ", "ˌ"
<speak> <phoneme alphabet="ipa" ph="wutʃilun"> Wu Qilong </phoneme> and Wu Qilong </speak>
输入IPA(ssml支持的) | 学术IPA | 教学IPA | CMU | 范例 | ||||
|---|---|---|---|---|---|---|---|---|
单词 | 学术IPA | 教学IPA | CMU | |||||
元音 | /i/ | /i/ | /iː/ | IY | me | /mi/ | /miː/ | M IY |
/ɪ/ | /ɪ/ | /ɪ/ | IH | fit | /fɪt/ | /fɪt/ | F IH T | |
/ɛ/或/e/ | /ɛ/ | /e/ | EH | met | /mɛt/ | /met/ | M EH T | |
/æ/ | /æ/ | /æ/ | AE | act | /ækt/ | /ækt/ | AE K T | |
/ɑː/或/ɑ/ | /ɑ/ | /aː/ | AA | father | /'fɑːðɚ/ | /'fɑːðər/ | F AA DH ER | |
/ɔ:/或/ɔ/ | /ɔ/ | /ɔː/ | AO | claw | /klɔ/ | /klɔː/ | K L AO | |
/ʊ/ | /ʊ/ | /ʊ/ | UH | put | /pʊt/ | /pʊt/ | P UH T | |
/u/或/u:/ | /u/ | /uː/ | UW | too | /tu/ | /tuː/ | T UW | |
/ʌ/ | /ʌ/ | /ʌ/ | AH | fund | /fʌnd/ | /fʌnd/ | F AH N D | |
/ə/ | /ə/ | /ə/ | AH | about | /ə'baʊt/ | /ə'baʊt/ | AH B AW T | |
/ər/ | /ɚ/ | /ər/ | ER | better | /'bɛtɚ/ | /'betər/ | B EH T ER | |
/ɜr/或/ɜːr/ | /ɝ/ | /ɜːr/ | ER | flirt | /'flɝt/ | /'flɜːrt/ | F L ER T | |
/aɪ/ | /aɪ/ | /aɪ/ | AY | cry | /kraɪ/ | /kraɪ/ | K R AY | |
/eɪ/或/ei/ | /eɪ/ | /eɪ/ | EY | train | /treɪn/ | /treɪn/ | T R EY N | |
/ɔɪ/或/ɔi/ | /ɔɪ/ | /ɔɪ/ | OY | boy | /bɔɪ/ | /bɔɪ/ | B OY | |
/aʊ/或/au/ | /aʊ/ | /aʊ/ | AW | out | /aʊt/ | /aʊt/ | AW T | |
/oʊ/或/ou/ | /oʊ/ | /oʊ/ | OW | boat | /boʊt/ | /boʊt/ | B OW T | |
/ɑr/或/ɑːr/ | /ɑ˞/ | /ɑr/ | AA1 R | bark | /bɑ˞k/ | /bɑrk/ | B AA1 R K | |
/ɔr/ | /ɔ˞/ | /ɔr/ | AO1 R | court | /kʰɔ˞t/ | /kɔrt/ | K AO1 R T | |
/ʊr/或/ur/或/ʊər/ | /ʊ˞/ | /ʊr/ | UH1 R | poor | /pʊ˞/ | /pʊr/ | P UH1 R | |
/ɛr/或/ɛər/ | /ɛ˞/ | /ɛr/ | EH1 R | stair | /stɛ˞/ | /stɛr/ | S T EH1 R | |
/ɪr/或/ɪər/ | /ɪ˞/ | /ɪr/ | IH1 R | fear | /fɪ˞/ | /fɪr/ | F IH1 R | |
辅音 | /p/ | /p/ | /p/ | P | pen | /pʰẽn/ | /pen/ | P EH N |
/b/ | /b/ | /b/ | B | bad | /bæd/ | /bæd/ | B AE D | |
/t/ | /t/ | /t/ | T | tea | /ti/ | /tiː/ | T IY | |
/d/ | /d/ | /d/ | D | did | /dɪd/ | /dɪd/ | D IH D | |
/k/ | /k/ | /k/ | K | cat | /kæt/ | /kæt/ | K AE T | |
/ɡ/ | /ɡ/ | /g/ | G | get | /gɛt/ | /get/ | G EH T | |
/tʃ/ | /tʃ/ | /tʃ/ | CH | chain | /tʃeɪn/ | /tʃeɪn/ | CH EY N | |
/dʒ/ | /dʒ/ | /dʒ/ 或 /ʤ/ | JH | jam | /dʒæm/ | /dʒæm/ | JH AE M | |
/f/ | /f/ | /f/ | F | fall | /fɔl/ | /fɔːl/ | F AO L | |
/v/ | /v/ | /v/ | V | van | /væn/ | /væn/ | V AE N | |
/θ/ | /θ/ | /θ/ | TH | thin | /θɪn/ | /θɪn/ | TH IH N | |
/ð/ | /ð/ | /ð/ | DH | this | /ðɪs/ | /ðɪs/ | DH IH S | |
/s/ | /s/ | /s/ | S | see | /si/ | /siː/ | S IY | |
/z/ | /z/ | /z/ | Z | zoo | /zu/ | /zuː/ | Z UW | |
/ʃ/ | /ʃ/ | /ʃ/ | SH | shoe | /ʃu/ | /ʃuː/ | SH UW | |
/ʒ/ | /ʒ/ | /ʒ/ | ZH | vision | /'vɪʒn/ | /'vɪʒn/ | V IH ZH N | |
/h/ | /h/ | /h/ | HH | hat | /hæt/ | /hæt/ | H AE T | |
/m/ | /m/ | /m/ | M | man | /mæn/ | /mæn/ | M AE N | |
/n/ | /n/ | /n/ | N | now | /naʊ/ | /naʊ/ | N AW | |
/ŋ/ | /ŋ/ | /ŋ/ | NG | sing | /sɪŋ/ | /sɪŋ/ | S IH NG | |
/j/ | /j/ | /j/ | Y | yes | /jɛs/ | /jes/ | Y EH S | |
/w/ | /w/ | /w/ | W | wet | /wɛt/ | /wet/ | W EH T | |
/r/ | /ɹ/ | /r/ | R | red | /ɹɛd/ | /red/ | R EH D | |
/l/ | /l/ | /l/ | L | leg | /lɛg/ | /leg/ | L EH G | |
/tr/ | /t̠ɹ̝̊/ | /tr/ | T R | trim | /t̠ɹ̝̊ɪm/ | /trɪm/ | T R IH1 M | |
/dr/ | /d̠ɹ̝/ | /dr/ | D R | dress | /d̠ɹ̝ɛs/ | /drɛs/ | D R EH1 S | |
/ts/ | /t͡s/ | /ts/ | T S | pizza | /ˈpʰiːt͡sə/ | /ˈpiːtsə/ | P IY1 T S AH | |
/dz/ | /d͡z/ | /dz/ | D Z | bonds | /bɑ̃ndz̥/ | /bɑndz/ | B AA1 N D Z | |
<say-as>用于指定解析文本的语义类型。同一文本内容可能有不同的解读,也就有不同的读法。
参数 | 类型 | 功能 | 取值 |
|---|---|---|---|
|
| 指定语义类型 |
|
纯文本
格式 | 示例 | 输出 | 说明 |
|---|---|---|---|
字符串 | dell0101 | D E L L 零 一 零 一 | 大小写英文字符、阿拉伯数字0~9、下划线。 |
myid_1998 | M Y I D 下划线 一 九 九 八 | ||
AiTest | A I T E S T |
<speak> <say-as interpret-as="id">myid_1998</say-as> </speak>
格式 | 示例 | 中文输出 | 说明 |
|---|---|---|---|
字符串 | ISBN 1-001-099098-1 | I S B N 一 杠 零 零 一 杠 零 九 九 零 九 八 杠 一 | 支持中文汉字、大小写英文字符、阿拉伯数字0~9以及部分全角和半角字符。 |
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 三 三 零 | ||
αβγ | 阿尔法 贝塔 伽玛 |
<speak> <say-as interpret-as="characters">希腊字母αβ</say-as> </speak>
格式 | 示例 | 中文输出 | 说明 |
|---|---|---|---|
标点符号 | … | 省略号 | 支持常见中英文标点。输出的空格表示每个字符之间插入停顿,即字符一个一个地读。 |
…… | 省略号 | ||
!"#$%& | 叹号 双引号 井号 dollar 百分号 and | ||
‘()*+ | 单引号 左括号 右括号 星号 加号 | ||
,-./:; | 逗号 杠 点 斜杠 冒号 分号 | ||
<=>?@ | 小于 等号 大于 问号 at |
<speak> 测试<say-as interpret-as="punctuation"> -./:;</say-as> </speak>
<speak> 她的曾用名是<say-as interpret-as="name">曾小凡</say-as> </speak>
<speak>12:30 and <say-as interpret-as="score">12:30</say-as></speak>
<speak>12.30 and <say-as interpret-as="date">12.30</say-as></speak>
<speak> 20 and <say-as interpret-as="ordinal">20</say-as> and <say-as interpret-as="digit">20</say-as> </speak>
<speak>hello and <say-as interpret-as="verbatim">hello</say-as></speak>
<speak> <say-as interpret-as="digit"> 12 <break time="100ms" /> 34 </say-as> </speak>
报错:
can only contain plain text -- failed to parse child -- failed to parse ssml
<sub>等价于将其内部的文本替换为其alias属性中的文本。
参数 | 类型 | 功能 | 取值 |
|---|---|---|---|
|
| 替换文本 |
<speak><sub alias="语音合成标记语言">SSML</sub></speak>
用于在文本中插入停顿,该标签是可选标签。
# 空属性,停顿时长默认为1s <break/> # time属性 <break time="string"/>
参数 | 类型 | 属性值 | 描述 |
|---|---|---|---|
time | string | [number]s | 以秒/毫秒为单位设置停顿时长(如“1s”, "10ms")
|
<speak>测试<break time="1s"/>停顿</speak>
<speak>测试<break time="10ms"/>停顿</speak>
<speak>测试<break/>停顿</speak
比如以下示例: 累加时长超过10秒,则只生成10秒的停顿
<speak>测试<break time="5s"/><break time="5s"/><break time="5s"/>停顿</speak>
比如以下均为错误写法
<speak>测试<break>停顿</speak> <speak>测试<break time="1s">停顿</speak>
提示音标签,可以在SSML合成过程中,通过该标签在任意位置插入提示音。
<soundEvent src="URL"/>
属性名称 | 属性类型 | 属性值 | 是否必选 | 描述 |
|---|---|---|---|---|
src | String | URL提示音资源路径 | 是 | 您可以根据需求,使用自定义的背景音。需要将背景音存放在火山引擎的TOS上,并且所在的存储空间至少为公共读权限,请参见创建存储空间。使用HTTP/HTTPS协议生成文件访问链接,请参见上传文件。
重要 |
<speak> 一匹马受了惊吓<soundEvent src="https://xxx-test.tos-cn-guangzhou.volces.com/SSML-sound-event-1.wav"/>人们四散躲避 </speak>
符号 | 中文读法 | 英文读法 |
|---|---|---|
! | 叹号 | exclamation mark |
“ | 双引号 | double quote |
井号 | pound | |
$ | dollar | dollar |
% | 百分号 | percent |
& | and | and |
‘ | 单引号 | left quote |
( | 左括号 | left parenthesis |
) | 右括号 | right parenthesis |
星 | asterisk | |
加 | plus | |
, | 逗号 | comma |
杠 | dash | |
. | 点 | dot |
/ | 斜杠 | slash |
: | 零冒号 | solon |
; | 分号 | semicolon |
< | 小于 | less than |
= | 等号 | equals |
大于 | greater than | |
? | 问号 | question mark |
@ | at | at |
[ | 左方括号 | left bracket |
\ | 反斜线 | back slash |
] | 右方括号 | right bracket |
^ | 脱字符 | caret |
_ | 下划线 | underscore |
` |反引号 |back quote | | ||
{ | 左花括号 | left brace |
竖线 | ||
} | 右花括号 | right brace |
~ | 波浪线 | tilde |
! | 叹号 | exclamation mark |
“ | 左双引号 | left double quote |
” | 右双引号 | right double qute |
‘ | 左单引号 | left quote |
’ | 右单引号 | right quote |
( | 左括号 | left parenthesis |
) | 右括号 | right parenthesis |
, | 逗号 | comma |
。 | 句号 | full stop |
— | 杠 | em dash |
: | 冒号 | colon |
; | 分号 | semicolon |
? | 问号 | question mark |
、 | 顿号 | enumeration comma |
… | 省略号 | ellipsis |
…… | 省略号 | ellipsis |
《 | 左书名号 | left guillemet |
》 | 右书名号 | right guillemet |
¥ | 人民币符号 | yuan |
≥ | 大于等于 | greater than or equal to |
≤ | 小于等于 | less than or equal to |
≠ | 不等于 | not equal |
≈ | 约等于 | approximately equal |
± | 加减 | plus or minus |
× | 乘 | times |
π | 派 | pi |
Α | 阿尔法 | alpha |
Β | 贝塔 | beta |
Γ | 伽玛 | gamma |
Δ | 德尔塔 | delta |
Ε | 艾普西龙 | epsilon |
Ζ | 捷塔 | zeta |
Θ | 西塔 | theta |
Ι | 艾欧塔 | iota |
Κ | 喀帕 | kappa |
∧ | 拉姆达 | lambda |
Μ | 缪 | mu |
Ν | 拗 | nu |
Ξ | 克西 | ksi |
Ο | 欧麦克轮 | omicron |
∏ | 派 | pi |
Ρ | 柔 | rho |
∑ | 西格玛 | sigma |
Τ | 套 | tau |
Υ | 宇普西龙 | upsilon |
Φ | fai | phi |
Χ | 器 | chi |
Ψ | 普赛 | psi |
Ω | 欧米伽 | omega |
α | 阿尔法 | alpha |
β | 贝塔 | beta |
γ | 伽玛 | gamma |
δ | 德尔塔 | delta |
ε | 艾普西龙 | epsilon |
ζ | 捷塔 | zeta |
η | 依塔 | eta |
θ | 西塔 | theta |
ι | 艾欧塔 | iota |
κ | 喀帕 | kappa |
λ | 拉姆达 | lambda |
μ | 缪 | mu |
ν | 拗 | nu |
ξ | 克西 | ksi |
ο | 欧麦克轮 | omicron |
π | 派 | pi |
ρ | 柔 | rho |
σ | 西格玛 | sigma |
τ | 套 | tau |
υ | 宇普西龙 | upsilon |
φ | fai | phi |
χ | 器 | chi |
ψ | 普赛 | psi |
ω | 欧米伽 | omega |