使用 SSML 说话时如何跳过部分文本
Posted
技术标签:
【中文标题】使用 SSML 说话时如何跳过部分文本【英文标题】:How to skip some section of text while speaking using SSML 【发布时间】:2010-10-05 06:13:57 【问题描述】:是否有一些 SSML 标签等,以从说话中删除特定的文本行。是的,我知道我可以使用字符串函数将其删除,然后再将其发送到语音合成器。但我的问题是,有没有办法标记或标记某些文本,使其无法播放。我正在为这个问题寻找一些基于 XML 的解决方案。
【问题讨论】:
【参考方案1】:方法有很多,你应该弄清楚你想要完成什么。
也许其中之一会对您有所帮助:
1. standard XML comment <!-- -->
2. <sub alias=" "> your text </sub>
3. <audio src='short_silence.wav'> your text </audio>
4. <prosody volume='silent'> your text </prosody>
【讨论】:
谢谢,我终于通过字符串操作函数完成了,因为删除未使用的文本更加容易和有效。但是您的答案是正确且可接受的解决方案。感谢您的回答,由于赏金已过期,无法标记为已接受。【参考方案2】:我想知道 XML 注释是否是您想要完成的有效解决方案:
<!-- <say-as interpret-as="telephone" format="39">+39.347.7577577</say-as> -->
或者:
<say-as interpret-as="telephone" format="39"><!-- +39.347.7577577 --></say-as>
希望这会有所帮助。
【讨论】:
不评论,我需要其他方式跳过该部分【参考方案3】:快速查看SSML Documentation from W3C,我找到了prosody 元素。
您可以通过将音量设置为 0 并将持续时间设置为非常小的值来跳过该部分。
将音量设置为零应该会抑制音频输出,但“阅读”该部分可能需要与大声朗读一样的时间。如果您还设置了持续时间,您应该能够基本上“跳过”该部分(快速默读)。
你必须尝试看看这是否有效。
【讨论】:
总有一个您可以为朗读文本设置的最大速率,也不是所有的声音都会自己处理音量。 是的,但我认为您没有其他选择。如果您可以在 XML 和合成器之间插入预解析器,则可以定义一个使用元标记可能会提供一些解决方案。
<speak>This is spoken <meta content="this is not spoken"/> </speak>
【讨论】:
以上是关于使用 SSML 说话时如何跳过部分文本的主要内容,如果未能解决你的问题,请参考以下文章