我正在尝试删除合成处理器添加的自动中断,以创建没有任何"语言停顿";。
我使用微软的语音合成引擎和C#中的SpeechSynthesizer
类。
这是我用";这是一个为什么会发生自动中断的例子"包裹在带有SpeechSynthesizer
:的<speak>
标签中
https://clyp.it/4nofhh3n
这是我想要的输出(通过使用Oddcast的TTS Demo实现(:
https://clyp.it/m55wt14u
我已经阅读了w3.org的SSML文档好几次了,在第3.2.3点-break元素中,请注意以下内容:
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.
这就是我的声音目前的表现。我想以某种方式覆盖/关闭此功能,并使语音完全不受干扰。我尝试过在出现这种自动中断的单词之间放置一个属性为strength="none"
和time="0ms"
的<break>
元素,就像他们在上面写的那样来覆盖它,以及各种不同的事情,比如用<s>
标签包装整个文本字符串等等,都没有用。
我也不能在后期处理中删除中断,因为当添加自动中断时,语音在所说的单词上有不同的音调。
我已经阅读了几个不同的SSML文档,虽然与w3文档相比,这些文档的措辞通常有点不同,但没有解释如何具体覆盖自动中断,这是我的问题。
在我对SpeechSynthesizer的实验中,如果你在最后中断50ms,它会尊重它——如果它小于50ms,就会被忽略。然而,它总是将<speak>
包装的内容视为自己的从句,所以会把它当作一个句子/从句来说话,而不是像第二个例子那样带有韵律。您需要在单个<speak>
元素(和语音(中发送所有文本,才能将其视为单个语言话语。