1

长期读者,第一次海报。

我正在 C# .Net 3.5 中开发一个 Windows 服务来执行文本到语音的操作。

我正在使用 System.Speech (Microsoft Speech API 3.x)。

我将该服务部署到 Win2008 x64 服务器,现在它抛出以下异常:

System.InvalidOperationException: No voice installed on the system or none available with the current security setting.
   at System.Speech.Internal.Synthesis.VoiceSynthesis.Speak(Prompt prompt)
   at System.Speech.Synthesis.SpeechSynthesizer.Speak(Prompt prompt)
   at System.Speech.Synthesis.SpeechSynthesizer.Speak(String textToSpeak)

该服务在域帐户下运行。如果我将服务更改为在我自己的个人域帐户(具有相当高的权限)下运行,一切正常(因此肯定安装了语音 [Anna])。所以我很确定这是一个安全问题。

我需要对其他域帐户进行哪些权限/修改才能使其正常工作?

它需要是这个特定的用户,因为它用于 MSSQL 数据库的 Windows 身份验证。

提前致谢。

4

4 回答 4

1

C:\windows\system32\config\systemprofile\appdata\roaming简单修复:为运行服务的同一用户授予读/写访问权限。

更多信息:在 Windows 10 Framework 4.6.2 上测试:Microsoft Speech 需要对“roaming”文件夹的文件读/写访问权限,以便创建 ...\roaming\Microsoft\Speech 文件夹以在其中存储文件。

如果您的服务用户不是对以下注册表项具有读/写访问权限的组的成员,您可能还需要添加这些权限:

对于以下内容,包括 WOW6432Node 用于 32 位应用程序,将其保留用于 64 位应用程序

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens(语音名称)

示例:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0

和:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens(VOICE NAME)\Attributes

示例:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0\Attributes

您可能需要将这些注册表项的所有者从 TrustedInstaller 切换到您的用户或管理员组,以进行这些更改

如果您的应用程序在 IIS 下运行,请为应用程序池用户添加上述权限。

于 2014-02-20T14:52:17.310 回答
0

在 x64 操作系统中,这是由 AnyCPU 构建配置引起的。切换到 x86 构建配置,它应该可以工作。

于 2015-10-22T19:32:11.983 回答
0

我退出Visual Studio并在保存后重新打开它,问题就解决了。

于 2017-02-25T17:13:17.530 回答
-1

Simply, run the app as "administrator". ;)

error run as administrator

于 2015-02-19T10:00:20.357 回答