SpeechSynthezier.PhonemeReached事件和控制字符

时间:2008-11-11 22:13:38

标签: .net speechsynthesizer speech-synthesis

我正在创建一个小银色小部件,它发出一个单词并突出显示每个音节。

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

奇怪的是,PhonemeReachedEventArgs.Phoneme property有时是一个控制角色,至少(但可能不是唯一的)U+0004 END OF TRANSMISSION,包括那些不是,传播结束的地方(如,比如,开头)。

我找不到任何关于这应该是什么意思的文件,有人知道吗?

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

1 个答案:

答案 0 :(得分:1)

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

至于回答你的“发布”问题,我假设你使用英语作为综合语言。在这种情况下,您看到的“字符”可能实际上是American English Phoneme Table的索引值。您可能也会看到与Chinese phonemes相同的内容,但Japanese phonemes具有unicode表示,这些表示都在“控制字符”范围之外。