使用Microsoft.Speech SDK抛出FileNotFoundException的文本转语音?

时间:2012-06-18 12:52:34

标签: c# speech-synthesis

我正在使用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()

造成此错误的原因是什么?

由于

3 个答案:

答案 0 :(得分:3)

正如微软推荐的那样:“语音平台运行时11和语音平台SDK 11不包括用于语音识别或语音合成(TTS或文本到语音转换)的运行时语言。您必须单独安装它们。”

我通过从这里安装一种运行时语言解决了同样的问题: http://www.microsoft.com/en-us/download/details.aspx?id=27224

答案 1 :(得分:0)

我使用sdk 5.1所以我不是专家......但我会尽力帮助。

  1. 确保你的ms语音sdk安装得很好并且配置得很好。
  2. dGo开始>控制面板>容易访问>语音识别并单击“文本到语音”。
  3. 现在使用完整的UAC启动您的应用。
  4. 尝试使用“try-catch”块。
  5. 还要看看那里;我的搜索结束了; https://forums.asp.net/p/1105408/2028838.aspx#2028838
  6. (对于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。

希望这有帮助。