C# SpeechSynthesizer - "В системе не установлен голос"

Я попытался сделать простую консольную программу, которая использует 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 Microsoft установлена ​​и Enabled это также установлено в true,

Я пробовал заменить System.Speech.Synthesis с Microsoft.Speech.Synthesis (dll находится в C:\Program Files (x86)\Microsoft Speech Platform SDK\Assembly\Microsoft.Speech.dll), но происходит то же самое.

Переход к панели управления> "Речь"> "Текст в речь" и нажатие кнопки "Просмотр голоса" также не удаются с сообщением. Этот голос не может быть воспроизведен. Пожалуйста, попробуйте выбрать другой голос или выбрать другое устройство вывода звука. Microsoft Anna - английский (США) - там единственный вариант.

(Однако распознавание речи в Windows работает, если это поможет.)

В одном решении предлагалось перейти к редактору реестра, HKEY_LOCAL_MACHINE > ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ> Microsoft > Речь> Голоса> Токены и исправить неисправный языковой ключ. Под токеном находится MS-Anna-1033-20-DSK > Атрибуты, а языковой ключ - 409, как и должно быть.

В другом решении предлагалось заменить платформу Active Solution на Visual Studio Configuration Manager, но я протестировал программу с любым процессором, x86 и x64, и ни одна из них не работает.

Что не так с моим текстом в речь?:(

РЕДАКТИРОВАТЬ:

Установил Visual Studio 2012 на тот случай, если возникла проблема с.NET Framework 4.0, поскольку VS2012 поддерживает 4.5, но он также не работал.

Я полагаю, что проблема в моем Windows 7, поскольку даже встроенная функция преобразования текста в речь не работает.

2 ответа

Решение

Наконец-то все решено.

Мой SpeechEngine (или как все это называется в Windows 7), очевидно, был поврежден, и исправление выполнялось с помощью проверки системных файлов (SFC).

Чтобы запустить SFC, введите cmd (должен запускаться от имени администратора) sfc /scannow

Не уверен, поможет ли это вам, но я столкнулся с подобной ситуацией сегодня утром. Оказалось, что в моем приложении ClickOnce мне нужно было добавить следующее в мой файл app.manifest:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

Это должно идти в узле сборки /security/requiredPrivileges.

Другие вопросы по тегам