本文同步发布在个人博客 SSML(语音合成标记语言)初学者指南 - 码微
SSML 代表语音合成标记语言。它使你能够对AI合成语音(称为文本到语音或 TTS)进行微调和调整,以使它们听起来更自然或纠正常见的错误发音。可以把它想象成 网页中的CSS,但用于语音应用程序和语音系统。
你不仅可以使用 SSML 使语音合成系统以不同的方式发音,还可以添加诸如中断和暂停之类的内容,以及加快、减慢或调整语音的音高等,以改变节奏和使讲话听起来更自然。
当你通过 TTS 系统收听书面对话时,听起来并不总是你想象的或你想要的。有时听起来可能不够人性化或不够自然。有时听起来很刺耳。SSML 是帮助你解决此问题的重要工具。
例如:
这就是 SSML 有用的地方。
要在对话系统中使用 SSML,只需像使用任何其他代码一样标记对话
例如,在网页设计中,要创建一段文本,你可以使用如下所示的“p”标签来标记你的代码:
这是一段文字。
对于对话系统,同样的原则也适用。
从文本到语音系统中读取的所有口语对话都必须包含
嗨,我叫 VUX。
将对话包装在语音标签中后,你可以在
可用于操作 TTS 系统的常见 SSML 标签有:
一些语音助手和语音合成系统具有其平台独有的特定标签。不过,从广义上讲,大多数系统都允许使用标准标签,但你应该始终与你的供应商核实,以确保这一点。
在对话中插入特定的 SSML 标签很简单。
假设你希望合成语音在句子结尾暂停片刻。只需输入句号. 将自行完成此操作,无需任何特定标记。一个 . 将插入 500 毫秒到 1 秒之间的暂停,具体取决于系统。
但是,假设你想进行调整以增加停顿的长度以创造戏剧效果。在这里,你将在对话中你希望系统暂停的位置插入一个 标记:
嗨,我叫 VUX,这是今天的新闻。< break time= "2s" />
天气预备...
或者你可能想放慢对话的速度。你可以试试:
< prosody rate = "x-slow" >嗨,我叫 VUX。
就像使用 HTML 一样,你可以将 SSML 标签相互嵌套,以将许多对话操作拼接在一起。
这有点像在 Web 开发中在
标记中插入 标记:
世界震撼人心。在这里查看。
假设你想提高单个单词的音高,并让该单词以法国口音发音,你可以使用以下内容:
< prosody pitch = "high" > < lang xml:lang = "fr-FR" > Bonjour!
这些操作适用于标准 TTS 语音,但不适用于神经网络语音。
创建这些SSML代码后,需要验证更改是否达到要求,有许多工具可执行此操作,包括:
有关所有标签类型的代码示例的完整 SSML 参考指南,请尝试:
(亚马逊)[https://developer.amazon.com/en-US/docs/alexa/custom-skills/speech-synthesis-markup-language-ssml-reference.html]
(谷歌)[https://cloud.google.com/text-to-speech/docs/ssml]
(微软)[https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-synthesis-markup?tabs=csharp]
请注意,这些都是基于各自的系统下编写的。这意味着你可能会发现某些标签在你选择的 TTS 系统中不起作用
尽管 SSML 很棒,但它并不完美:调整音素以完美地发音品牌名称。以适当的停顿水平来微调节奏,使声音听起来更自然。这一切都需要工作。
通用语音使 TTS 系统难以针对某些用例进行更改。例如,假设你正在设计一个语音应用程序,并且你希望你的声音听起来超级生动和快乐,这有点像试图将吉他变成钢琴,因为 通用 TTS 声音是为通用目的而构建的。
使用 SSML 时,你实际上所做的是向 TTS 系统提供有关它应该如何操作其产生的音频的说明。你不是在“调整声音”。
例如,如果你使用
CD(光盘,还记得吗?)可以以每秒 44,100 位的速度播放音频文件。即 44,100 个单独的数据位在一秒钟内连续击中你的耳朵。
自然,对于人耳,你无法区分每个单独的位,因此听起来像是稳定的音频流。
它的工作方式与视频相同。每秒 24 帧的视频只是连续 24 张静止图像。你的眼睛无法处理足够快的图像变化,所以它看起来像一个视频。音频也是如此。
TTS 系统的“比特率”可以低至每秒 200 比特,或高达 1,200。低比特率很有帮助,因为它有助于将音频快速返回到语音应用程序,并且尽可能少地使用互联网带宽。
这样做的一个原因是确保系统在互联网连接下降时仍然可以说话,另一个原因是它可以足够快地提供音频以模拟与用户的真实对话。人类往往会在 200 毫秒内做出回应。如果语音应用程序的响应时间比响应时间长得多,那么用户体验就会受到影响,就好像系统没有听到你的声音,无法回答你或者不够聪明,无法快速思考。
由于 TTS 系统通常会生成低比特率(低“质量”)音频文件以在语音用户界面中为用户提供服务,因此应用 SSML 标记(音频操作)最终会导致质量更低的音频。
这就是为什么你的 SSML 听起来并不总是很好的原因。
在使用 SSML 标签来减慢语音的速率(速度)的示例中;当你放慢音频速度时,你会将低比特率音频文件的时间拉伸到断点。它听起来很扭曲,因为它被 扭曲了。它极大地拉伸了音频,以至于在这些“位”之间产生了很小的沉默间隙。然后,它将音频向下移动几个键,因此听起来“更深”(如果不降低音高,你无法减慢一段音频)。
这只是 SSML 的一部分。那是一个标签。许多 SSML 标签或多或少都存在这种限制,这就是为什么 SSML 不能用于大型语音操作的原因。
SSML 适于对语音进行微调,如果试图过多地操纵声音,很可能你始终无法让它听起来正常
留言与评论(共有 0 条评论) “” |