问题描述
我安装了带有多个 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 中的工作原理进行了更好的描述。