4

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

是什么导致了这个错误?

谢谢

4

3 回答 3

3

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

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

于 2012-09-06T19:53:43.883 回答
0

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

  1. 确保您的 ms Speech sdk 安装良好且配置良好。
  2. d 转到开始 > 控制面板 > 轻松访问 > 语音识别,然后单击文本到语音。
  3. 现在使用完整的 UAC 启动您的应用程序。
  4. 尝试使用“try-catch”块。
  5. 也看看那里;我的搜索在这里结束;https://forums.asp.net/p/1105408/2028838.aspx#2028838

(对于 1> http://msdn.microsoft.com/en-us/library/hh362873.aspx)(对于 2> 测试“语音引擎”,我们确定 sdk 没有失败,您的应用程序有错误) (对于 3> 以管理权限运行应用程序。)

最后也是解决这个问题的重要方法;尝试卸载 sdk,清理 registry-temp 等并重新安装 sdk。并尝试使用 nuget 打包系统将必要的 dll 从 sdk 添加到您的应用程序(如果您找不到 ms 语音 sdk,您可以使用另一个找到类似 sdk 的 nuget)。

于 2012-06-18T14:54:01.497 回答
0

我遇到了类似的问题,并通过下载正确的运行时解决了它。

起初我下载了语音识别文件“MSSpeech_SR_en-CA_TELE.msi”。您需要下载具有 MSSpeech_TTS 启动的语言包,而不是作为语音识别包的 MSSpeech_SR。

希望这可以帮助。

于 2014-11-19T08:17:55.897 回答