Эта ошибка возникает, когда приложение не может получить доступ к голосу для использования SpeechSynthesizer.Первой возможной причиной является отсутствие каких-либо установленных голосов в системе.Скорее всего, это не проблема, но вы все равно должны дважды проверить, выполнив что-то вроде следующего бита кода:
SpeechSynthesizer ssTest = new SpeechSynthesizer();
System.Diagnostics.Debug.WriteLine(ssTest.GetInstalledVoices().Count);
Если предположить, что выше возвращает число больше 0, проблема, скорее всего, болеесложная проблема с настройками безопасности вашего приложения.
Несколько методов в классе SpeechSynthesizer, включая SetOutputToWaveFile, требуют, чтобы непосредственный вызывающий объект был полностью доверенным.Это может не вызывать особого беспокойства в случае настольного приложения (для которого, вероятно, был разработан класс SpeechSynthesizer), но оно имеет более серьезные последствия для безопасности в веб-среде.Поэтому настройки IIS по умолчанию только делают приложения частично доверенными.Есть несколько способов изменить это, возможно, самый быстрый и, безусловно, самый грязный способ - это переключение идентификатора пула приложений со стандартного на учетную запись с правами администратора, например учетную запись LocalSystem.
Еще раз, просто для акцента, это серьезно подорвет безопасность вашего приложения и должно быть полностью исследовано перед внедрением.