我有一个问题,就是我对这个问题的理解是暗示我,而不是回避这个问题的过程。我想知道是否有人能进一步解释我为什么要得到这个问题?
我用本地计算机安装的声音填充ComboBox:
private void getSystemVoices()
{
foreach (InstalledVoice voiceName in synthesizer.GetInstalledVoices())
{
this.voiceComboBox.Items.Add(voiceName.VoiceInfo.Name);
}
}我的应用程序是在x86 CPU下运行的,所以所有已安装的声音都在这个ComboBox中填充。我有一些Acapela的声音安装,我相信他们是符合SAPI 5.1。露西希瑟和莱恩。
我正在测试这个代码以使用声音:
// Initialize a new instance of the SpeechSynthesizer...
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
// Config the audio output...
synthesizer.SetOutputToDefaultAudioDevice();
// Initialize a new instance of the PromptBuilder...
PromptBuilder promptBuilder = new PromptBuilder();
// Config SSML...
promptBuilder.AppendSsmlMarkup("<voice xml:lang=\"en-AU\">");
promptBuilder.StartVoice(this.voiceComboBox.SelectedItem.ToString());
promptBuilder.AppendText("The quick brown fox jumps over the lazy dog.");
promptBuilder.EndVoice();
promptBuilder.AppendSsmlMarkup("</voice>");
// Speak the prompt...
synthesizer.Speak(promptBuilder);我的问题是:如果我选择了除"Microsoft Anna“之外的任何声音,我的应用程序就会退出。即使我使用Try/Catch语句。我没有得到错误,也没有调试信息,说一个错误已经发生。如果不更改默认语音,则不会发生此问题。
据我理解,Microsoft语音API是向后兼容的吗?
微软演讲
我使用的是.net4.5,引用了System.Speech.dll V4.0.0.0。
有人能解释这种行为吗?
编辑请注意: SPVoice的代码工作:
using SpeechLib;
// SAPI 5.1 Speech Config...
SpVoice voice = new SpVoice();
voice.Rate = speechRate.Value;
voice.Volume = speechVolume.Value;
voice.Voice = voice.GetVoices("", "").Item(voiceComboBox.SelectedIndex);
voice.Speak(readerTextBox.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync);只有微软的SpeechSynthesizer才会出现问题。
发布于 2014-03-18 19:56:47
当.Net应用程序像那样崩溃时,通常会在计算机应用程序事件日志中看到一个事件。通过执行以下操作可以找到事件日志(Windows 7):
computer或my computerEvent ViewerWindows LogsApplication您应该在日志中看到一个错误图标,并提供有关崩溃的详细信息。
如果您想让一个应用程序崩溃,防止任何试图捕获块捕获异常,则可以通过调用Environment.FailFast(); (不建议这样做)或通常这样做(除了一些常见的内存损坏或篡改被检测到的情况外),您可以故意这样做。它将产生与一些本地代码的错误行为相同的效果,如雨后春笋般出现的超级马里奥在异常抛出者中的表现:-)。虽然这并不能直接回答您的问题,但它通过捕获的方式表明,它可能是一个类似的错误(损坏的内存,或声音检测到无许可证使用等)。
https://stackoverflow.com/questions/22057049
复制相似问题