我正在创建一个小型 silverlight 小部件,它可以发音一个单词,并在发音时突出显示每个音节。

作为其中的一部分,我正在使用 SpeechSynthesizer.PhonemeReached 事件 确定每个音素的开始和结束时间(作为计算每个音节的开始和结束时间的步骤)。

奇怪的是, PhonemeReachedEventArgs.Phoneme 属性 有时是一个控制字符,至少(但可能不排他) U+0004 传输结束, ,包括不是传输结束的地方(比如开始)。

我找不到任何文档说明这是什么意思,有人知道吗?

编辑: :澄清一下,我不是在 Silverlight 中进行语音合成(因为它不受支持),而是在服务器上进行,并在音频响应的 HTTP 标头中返回单词的音节边界时间和 IPA 转录。我可能根本不应该提及 silverlight 部分,因为它并不真正相关,我只是没有真正考虑解释上下文。哎呀。:)

有帮助吗?

解决方案

如果您想找出每个音素的开始和结束时间(这确实是一个不同的问题)......尝试使用 PhonemeReachedEventArgs.Duration 属性。开始时间将是“短语的开始时间”+所有先前发音的音素的累积持续时间。结束时间为“当前音素的开始时间”+当前音素的持续时间。

至于回答您的“发布”问题,我假设您使用英语作为综合语言。在这种情况下,您看到的“字符”很可能实际上是 美式英语音素表. 。您可能还会看到同样的情况 汉语音素, , 然而 日语音素 有 unicode 表示形式,它们都在“控制字符”范围之外。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top