我正在使用Microsoft.Speech SDK(11.0)将文本转换为语音。我有一个Windows窗体应用程序,我使用一个非常基本的代码来说出输入的文本,但它失败了。这是我点击按钮的代码:
SpeechSynthesizer syn = new SpeechSynthesizer();
PromptBuilder pb = new PromptBuilder();
pb.AppendText("Welcome, everyone");
syn.Speak(pb);
错误发生在上面代码的最后一行:
FileNotFoundException was unhandled
Exception from HRESULT: 0x8004503A
这是完整的堆栈跟踪:
at Microsoft.Speech.Synthesis.SpeechSynthesizer.SpeakPrompt(Prompt prompt, Boolean async)
at Microsoft.Speech.Synthesis.SpeechSynthesizer.Speak(Prompt prompt)
at Microsoft.Speech.Synthesis.SpeechSynthesizer.Speak(PromptBuilder promptBuilder)
at MSSpeechSynth.Form1.btnSpeak_Click(Object sender, EventArgs e) in C:\Users\prashant.k\Desktop\MSSpeechSynth\MSSpeechSynth\Form1.cs:line 30
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at MSSpeechSynth.Program.Main() in C:\Users\prashant.k\Desktop\MSSpeechSynth\MSSpeechSynth\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(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()
造成此错误的原因是什么?
由于
答案 0 :(得分:3)
正如微软推荐的那样:“语音平台运行时11和语音平台SDK 11不包括用于语音识别或语音合成(TTS或文本到语音转换)的运行时语言。您必须单独安装它们。”
我通过从这里安装一种运行时语言解决了同样的问题: http://www.microsoft.com/en-us/download/details.aspx?id=27224
答案 1 :(得分:0)
我使用sdk 5.1所以我不是专家......但我会尽力帮助。
(对于1> http://msdn.microsoft.com/en-us/library/hh362873.aspx) (对于2>测试“语音引擎”,我们确定sdk没有失败,你的应用有错误) (对于3>使用管理权限运行应用程序。)
最后和解决这个问题的重要方法;尝试卸载sdk,清理registry-temp等,然后重新安装sdk。并尝试使用nuget打包系统将sdk中必要的dll添加到您的应用程序中(如果您找不到ms语音sdk并且您可以使用另一个人找到与nuget类似的sdk)。
答案 2 :(得分:0)
我遇到了类似的问题,并通过下载正确的运行时间解决了这个问题。
首先我下载了“MSSpeech_SR_en-CA_TELE.msi”,这是语音识别文件。您需要下载启动了MSSpeech_TTS的语言包,而不是下载语音识别包MSSpeech_SR。
希望这有帮助。