2

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

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

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

我找不到任何关于这应该意味着什么的文档,有人知道吗?

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

4

1 回答 1

1

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

至于回答您的“已发布”问题,我假设您使用英语作为您的综合语言。在这种情况下,您看到的“字符”很可能实际上是美式英语音素表的索引值。您也可能会看到中文音素相同,但是日语音素具有 unicode 表示,它们都在“控制字符”范围之外。

于 2008-11-18T01:27:42.763 回答