问题描述
我正在尝试删除综合处理器添加的自动中断,以创建没有任何“语言暂停”的语音文件。
我正在将Microsoft的语音合成引擎与C#中的SpeechSynthesizer
类一起使用。
这是我得到的输出,“这是为什么发生自动中断的一个示例?”用<speak>
包裹在SpeechSynthesizer
标记中:
这是我想要的输出(通过使用Oddcast's TTS Demo实现):
我已通读w3.org's SSML documentation多次,在3.2.3 - break element点,请注意以下几点:
If the element is not present between tokens,the synthesis processor is expected to automatically determine a break based on the linguistic context. In practice,the break element is most often used to override the typical automatic behavior of a synthesis processor.
这是我目前的声音表现。我想以某种方式覆盖/关闭此功能,并使语音完全不间断。我尝试过将一个<break>
和strength="none"
属性的time="0ms"
元素放置在自动中断发生的单词之间,就像他们在上面写的那样覆盖它,以及各种不同的东西,例如包装<s>
标签等中的整个文本字符串,无济于事。
我也不能只删除后处理中的中断,因为添加自动中断后,语音在所讲单词上的音调有所不同。
我已经阅读了几个不同的SSML文档,尽管它们的措辞与w3文档相比常常有所不同,但是却没有解释如何具体覆盖自动中断,这是我的问题。
解决方法
在我的experimenting with SpeechSynthesizer中,如果您将50ms的间隔放在末尾,则它会尊重它-如果小于此间隔,它将被忽略。
但是,它将始终将<speak>
包装的内容视为其自己的子句,因此将其说成是句子/从句,而不是像第二个示例那样带有韵律。您需要将所有文本发送到单个<speak>
元素(和语音)中,以将其视为单个语言。