Я использую систему .Speech.Synthesis из .NET 4.5.1 для создания файла WAV из строки в Службе, запущенной «конкретным пользователем» (созданным при настройке продуктов) без прав, но с запущенными службами и доступом для чтения / записи папка, содержащая сгенерированный файл WAV.
На новом win7sp1 x64 со всеми обновлениями вызов таких методов, как System.Speech.Synthesis.SelectVoice или System.Speech.Synthesis.Speak не работает с InvalidOperationException
и сообщением" Голосовой голос не установлен в системе или недоступен с текущими настройками безопасности ".
Единственный доступный голос в системе - голос по умолчанию Microsoft Anna - English (United States)
.
Если я запускаю службу как LocalSystem
или Administrator
, она работает нормально.
Если я добавлю «конкретного пользователя» в группу Administrators
, он тоже будет работать, но не если я добавлю его в любую другую «хорошо известную группу».
Но запуск службы с «конкретным пользователем» является обязательным (для других целей), и добавление его в группу Administrators
исключено из соображений безопасности.
Конечно, MSDN очень неуловимо об этом и даже не упоминает об исключении ...
Некоторое время погуглил, и я был удивлен, увидев очень мало информации об этом. Фактически, я нашел только одну важную подсказку в вопросе Stackoverflow об ASP.NET, предполагающем, что есть некоторые минимальные права пользователя на использование этой библиотеки: Создание приложения ASP.NET для преобразования текста в речь
По умолчанию приложения ASP.Net не запускаются с достаточными разрешениями для доступа к синтезу речи.
Я также мог найти несколько вопросов, связанных с той же проблемой, но без приемлемых ответов:
C # SpeechSynthesizer - в системе не установлен голосовой помощник
Кто-нибудь знает, какие разрешения необходимы для использования System.Speech.Synthesis
?