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" 对于单个单词。
我正在使用 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" 对于单个单词。