0

我正在尝试删除合成处理器添加的自动中断,以创建没有任何“语言暂停”的语音文件。

我正在使用 Microsoft 的语音合成引擎和SpeechSynthesizerC# 中的类。

这是我通过“这是为什么会发生自动中断的示例?”得到的输出。包裹在<speak>标签中SpeechSynthesizer

https://clyp.it/4nofhh3n

这是我想要的输出(通过使用Oddcast 的 TTS Demo实现):

https://clyp.it/m55wt14u

我已经多次阅读w3.org 的 SSML 文档,在第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 文档相比,这些文档的措辞通常有所不同,但没有解释如何具体覆盖自动中断,这是我的问题。

4

1 回答 1

1

在我对 SpeechSynthesizer 的实验中,如果你在最后休息 50 毫秒,那么它会尊重它 - 如果它更少,那么它将被忽略。但是,它将始终将<speak>包装的内容视为自己的子句,因此将其视为句子/子句,而不是像第二个示例那样带有韵律。您需要在单个<speak>元素(和语音)中发送所有文本,以将其视为单个语言表达。

于 2020-10-13T15:32:53.637 回答