#c# #sapi #blind
Вопрос:
Поэтому для этого давайте просто воспользуемся тестовой программой, предоставленной Microsoft, чтобы все было просто. Перед запуском вам нужно будет перейти к управлению пакетом nuget для проекта и добавить speech.synthesis. Но после этого это сработает.
using System;
using System.Speech.Synthesis;
namespace SampleSynthesis
{
class Program
{
static void Main(string[] args)
{
// Initialize a new instance of the SpeechSynthesizer.
SpeechSynthesizer synth = new SpeechSynthesizer();
// Configure the audio output.
synth.SetOutputToDefaultAudioDevice();
// Speak a string.
synth.Speak("This example demonstrates a basic use of Speech Synthesizer");
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
Итак, вот в чем проблема, он будет говорить голосом по умолчанию. Но он не использует обычный голос по умолчанию. Если вы перейдете в панель управления — измените настройки текста на речь, эти настройки не повлияют на используемый здесь голос.
Но если вы зайдете сюда: %windir%SysWOW64речьSpeechUXSAPI.cpl
И измените настройки там, это повлияет на программу.
Я создаю программу, ориентированную на доступность для слепых, и мне бы очень хотелось, чтобы она использовала фактические значения по умолчанию, а не значения по умолчанию из этого меню, которые трудно найти.
Я попытался посмотреть, можно ли прочитать ключ reg, а затем выбрать его из списка после прочтения ключа, но тот, который я нашел:
КомпьютерHKEY_CURRENT_USERПРОГРАММНОЕ обеспечениеMicrosoftРечьГолоса
Отображается значение по умолчанию для меню SAPI, а не для меню панели управления.
Я прочитал всю документацию по командам, но не вижу способа заставить ее обратить внимание на фактическое значение по умолчанию для пользователя. Использование голоса, который они не выбрали с помощью обычных опций, кажется странным, так как изменение голоса для моей программы потребовало бы, чтобы они перешли в это странное меню.
Как бы я заставил SAPI обратить внимание на меню панели управления?
ПРАВКА: Для уточнения также не менее важно получить фактическую скорость и громкость текста, которые были настроены.
Ответ №1:
Это верно. SAPI-это очень, очень старый API, и Windows 8 (и не только) перешла на API WinRT TTS.
В частности, параметры TTS панели управления Windows устанавливают значения по умолчанию для API WinRT TTS в Windows.Медиафайлы.Пространство имен для синтеза речи.
К счастью для вас, однако, изменение кода C# для использования API WinRT довольно просто; большая часть работы должна заключаться в изменении пространства имен и ссылки на сборку.