我尝试制作一个简单的控制台程序,该程序使用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中,因为即使是内置的文本到语音的东西也不起作用。
答案 0 :(得分:1)
终于解决了。
我的SpeechEngine(或者在Windows 7上调用的全部内容)显然已损坏并且正在运行系统文件检查器(SFC)修复它。
要运行SFC,请键入cmd(必须以管理员身份运行)sfc / scannow
答案 1 :(得分:0)
不确定这是否会对你有帮助,但今天早上我遇到了类似的情况。原来,在我的ClickOnce应用程序中,我必须将以下内容添加到我的app.manifest文件中:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
这应该在assembly / security / requestedPrivileges节点中。