SpeakAsync 和同一个词的多个发音

SpeakAsync and multiple pronunciations for the same word

我正在使用 SpeakAsync 成功,除了当我点击诸如 'record'.

之类的词时

如何标记名词与动词以便 SpeakAsync 输出正确的发音?

是否可以将音标传递给 SpeechSynthesizer

顺便说一句,这些词是孤立地扔在 SpeakAsync 上的,而不是短语。

是的,您可以通过将单词添加为 Prompt(通常通过 PromptBuilder)来标记单词,而不仅仅是将纯字符串发送到合成器。

例如可以直接指定国际音标发音:

var pb = new PromptBuilder();
pb.AppendTextWithPronunciation("record", "ˈɹɛk.ɚd");
pb.AppendTextWithPronunciation("record", "ɹə.ˈkɔɹd");
synth.SpeakAsync(pb);

您也可以使用 AppendSsmlMarkup 直接添加 SSML。您可以在此处查看完整的选项列表:https://msdn.microsoft.com/en-us/library/system.speech.synthesis.promptbuilder(v=vs.110).aspx

您可以使用 SayAs 提示对日期和数字格式做一些有限的事情,但据我所知,没有一种方法可以提供语法提示,例如 "this is a noun" 对于单个单词。