我目前正在做一个项目,我想让SpeechSynthesizer说一段文字。我还想要一个文本块来显示他们说的话。这样,如果你不理解语音合成器,你就可以继续阅读。
所以基本上问题是,我找不到一种有效的方法,把每一个字母都附加到文本框中的文本中,就在语音合成器发出的时候。所以看起来,语音合成器和他所说的一样,都在打字。
示例
如果我这么做的话:
SpeechSynthesizer x = new SpeechSynthesizer();
x.SpeakAsync("Hello there");我希望文本框文本在x (SpeechSynthesizer )所说的单词中一起写。就像这样:http://youtu.be/hx6JL7PsLrg?t=1m56s
发布于 2014-02-25 01:26:19
正如Eric提到的,您必须使用SpeechSynthesizer.SpeakProgress事件:
例如:
var ss = new SpeechSynthesizer();
ss.SpeakProgress += (sender, args) => txtBox.Text += args.Text;
ss.Speak("Hello this is " + true);发布于 2014-02-27 17:52:45
这有点麻烦(不能保证逐个字母地进行),但是您可以使用PhonemeReached事件作为一个提示来显示下一个字母(并在单词中断处停止),然后使用SpeakProgress事件生成单词中的其余字母。当然,如果使用SSML,则需要跳过标记。
https://stackoverflow.com/questions/21995820
复制相似问题