在 Windows 上进行文本到语音转换时,是否可以使用 SSML 标签在语音之间切换?

问题描述

我安装了带有多个 Ivona 语音 (harposoftware.com) 的 Windows 7。我有一个从 Sapi 启动 SpVoice 并让它读取文本的应用程序。现在我还有一段文字,我想把它变成多种声音之间的对话。

以前,要在语音之间切换,我的应用必须将文本剪切成短语并单独说出每个短语,并为其选择所需的语音。

我想知道是否有更好的解决方案。

那么,是否可以在我的文本中嵌入一些 SSML 标签以实现语音之间的即时切换?

解决方法

您应该能够使用 <voice> 元素在 SAPI 5.3 上改变声音。

确保对 Speak() 的调用设置了 SPF_PARSE_SSML 标志。

请注意,<voice> 标记中的 name 属性取决于处理器,并且不能嵌入空格。 (例如,<voice required="Name=Microsoft Mark"> 肯定不会做您期望的事情。)

W3C 规范中对此进行了描述,但很容易错过。

Claro Software 对语音标签在 this document 中的工作原理进行了更好的描述。