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.