Реферат: Голосовое воспроизведение текста
Но при подключении только SpeechAPIпрограмма будет говорить только на английском.
Эту проблему решаем следующим образом: подключаем библиотеку SAPI_DLL.
Для начала необходимо подключить нужное пространство имен:
using System.Runtime.InteropServices;
Далее импортировать нужные функции. Для этого создадим отдельный класс SAPIDLL:
class SAPIDLL
Функция CreateSpeech:
[DllImport("SAPIDLL.DLL")]
public static extern Int32 CreateSpeech();
реализует проверку работоспособности SAPI и, если это так, инициализирует этот COM интерфейс. Эта функция вызывается первой, перед началом работы с остальными процедурами и функциями экспортируемыми SAPI_DLL.DLL.
Вызов этой функции сделан автоматическим, при загрузке SAPI_DLL.DLL:
private void Form1_Load(object sender, EventArgs e)
{
SAPIDLL.CreateSpeech();
for (int i = 1; i <= SAPIDLL.GetEnginesCount(); i++) comboBoxLang.Items.Add(SAPIDLL.PGetEngines(i));
}
Функция PSelectEngineNumber:
[DllImport("SAPIDLL.DLL")]
public static extern Int32 PSelectEngineNumber(Int32 EngineNumber);
осуществляет выбор Engina (синтезатора речи). Указывает, какой именно синтезатор речи необходимо задействовать для синтеза речи. Параметр EngineName должен содержать одно из имен доступных синтезаторов речи. Имена всех доступных синтезаторов можно получить, вызвав функцией GetEngines. Либо, нужно быть уверенным в том, что указывается правильное(существующее) имя синтезатора.
ФункцияGetEnginesCount:
[DllImport("SAPIDLL.DLL")]
public static extern Int32 GetEnginesCount();
нужна для того, чтобы узнать количество дикторов установленных на компьютер.
Функция PSpeak:
[DllImport("SAPIDLL.DLL")]
public static extern Int32 PSpeak(string Text);
функция для произнесения текста
private void button1_Click(object sender, EventArgs e)