我正在使用.NET 4.5.1 中的System.Speech.Synthesis从“特定用户”(由产品设置创建)运行的服务中的字符串生成 WAV 文件,该用户没有权限但正在运行服务和 R/W 访问包含生成的 WAV 文件的文件夹。
在具有所有升级的全新 win7sp1 x64 上,调用System.Speech.Synthesis.SelectVoice或System.Speech.Synthesis.Speak等方法失败InvalidOperationException
并显示“系统上未安装语音或当前安全设置没有可用语音”。
系统中唯一可用的语音是默认语音Microsoft Anna - English (United States)
。
如果我运行该服务,LocalSystem
或者Administrator
它运行良好。
如果我将“特定用户”添加到Administrators
组中,它也可以工作,但如果我将它添加到任何其他“知名组”中则不会。
Administrators
但是使用“特定用户”运行服务是强制性的(用于其他用途),出于安全原因,将其添加到组中被排除在外。
当然 MSDN 对此非常难以捉摸,甚至没有提到例外......
谷歌搜索了一段时间,我对关于它的极少信息感到惊讶。事实上,我在关于 ASP.NET 的 Stackoverflow 问题中只发现了一个相关线索,这表明使用这个库需要一些最低限度的用户权限: 创建将文本转换为语音的 ASP.NET 应用程序
默认情况下,ASP.Net 应用程序运行时没有足够的权限来访问语音合成
我还可以找到一些与同一问题相关的问题,但没有可接受的答案:
System.Speech 在 Windows 服务中引发“系统上未安装语音或当前安全设置不可用”异常
C# SpeechSynthesizer - “系统上没有安装语音”
那么有人知道使用需要什么权限System.Speech.Synthesis
吗?