C#SpeechSynthesizer - "系统上没有语音安装"

时间:2015-11-14 02:47:11

标签: c# .net windows-7 64-bit text-to-speech

我尝试制作一个简单的控制台程序,该程序使用SpeechSynthesizer中的System.Speech.Synthesis将文本转换为语音,但它无法正常工作。

我使用的是64位Windows 7和Visual Studio 2010(我认为使用.NET Framework 4.0?)

该计划:

using System.Speech.Synthesis;
// *skip*
SpeechSynthesizer speech = new SpeechSynthesizer();
speech.SetOutputToDefaultAudioDevice();
speech.Speak("Hello world");

InvalidOperationException发生在speech.Speak(...)行,消息系统上未安装任何语音,或者当前安全设置均未提供语音。

speech.GetInstalledVoices()表示已安装Microsoft Anna,其Enabled也设置为true

我尝试用System.Speech.Synthesis替换Microsoft.Speech.Synthesis(在C:\ Program Files(x86)\ Microsoft Speech Platform SDK \ Assembly \ Microsoft.Speech.dll中找到dll),但同样的事情发生了。

导航到控制面板>演讲>文本到语音和点击"预览语音"也失败并显示消息此语音无法播放。请尝试选择其他语音或选择其他音频输出设备。 Microsoft Anna - 英语(美国)是唯一的选择。

(如果有任何帮助,Windows'语音识别有效。)

某些解决方案建议导航到注册表编辑器,HKEY_LOCAL_MACHINE>软件>微软>演讲>声音>令牌和修复破坏的语言密钥。令牌下是MS-Anna-1033-20-DSK>属性和语言键应该是409。

另一个解决方案建议从Visual Studio的配置管理器更改Active解决方案平台,但我已经使用Any CPU,x86和x64测试了该程序,但没有工作。

我的发言权有什么问题? :(

修改

安装Visual Studio 2012以防万一它是.NET Framework 4.0的问题,因为VS2012支持4.5,但它也没有工作。

我认为问题出在我的Windows 7中,因为即使是内置的文本到语音的东西也不起作用。

2 个答案:

答案 0 :(得分:1)

终于解决了。

我的SpeechEngine(或者在Windows 7上调用的全部内容)显然已损坏并且正在运行系统文件检查器(SFC)修复它。

要运行SFC,请键入cmd(必须以管理员身份运行)sfc / scannow

答案 1 :(得分:0)

不确定这是否会对你有帮助,但今天早上我遇到了类似的情况。原来,在我的ClickOnce应用程序中,我必须将以下内容添加到我的app.manifest文件中:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

这应该在assembly / security / requestedPrivileges节点中。