system.speech.synthesis中的访问冲突异常

本文关键字:访问冲突 异常 speech synthesis system | 更新日期: 2023-09-27 18:09:41

当像这样使用system.speech.synthesis时:

using (_speech)
{
    _speech.SelectVoice("Anne");
    _speech.SpeakCompleted += OnSpeakCompleted;
    _speech.Rate = Convert.ToInt32(Rate);
    _speech.Volume = Convert.ToInt32(Volume);
    _speech.SpeakAsync(text);
}

我得到这个错误:

System.AccessViolationException was unhandled
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source=System.Speech
StackTrace:
       at System.Speech.Internal.ObjectTokens.ObjectToken.ISpObjectWithToken.SetObjectToken(ISpObjectToken pToken)
       at System.Speech.Internal.ObjectTokens.ObjectToken.CreateObjectFromToken[T](String name)
       at System.Speech.Internal.Synthesis.VoiceSynthesis.GetComEngine(VoiceInfo voiceInfo)
       at System.Speech.Internal.Synthesis.VoiceSynthesis.GetProxyEngine(VoiceInfo voiceInfo)
       at System.Speech.Internal.Synthesis.VoiceSynthesis.ThreadProc()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.runTryCode(Object userData)
       at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
InnerException: 

在创建语音合成器的对象时不会发生错误,但在使用它时发生错误。外汇。更改速率、音量等

谁有解决这种问题的办法?解决方案吗?提示?有什么可以帮助解决这个恼人的问题吗?

system.speech.synthesis中的访问冲突异常

只是猜测,你正在调用_speech.SpeakAsync(text);这意味着您正在使用语音异步,在下一行中您通过关闭using来处理_speech对象。我可以想象这可能会导致问题。您应该在获得处理结果后处理_speech对象。