Источник:
http://www.axaptapedia.com/Speech_Engine
==============
Summary:
== Дополнение пользовательского интерфейса Axapta функциями SAPI. ==
Для реализации последовательного синтеза речи на основании указанного текста необходимо разработать класс. Назовем его '''SpeechEngine'''.
Используем паттерн Singleton.
1) В Class Declaration укажем переменную типа COM - spVoice.
2) Перекроем метод new():
private void new()
{
this.parmSPVoice(new com("{96749377-3391-11D2-9EE3-00C04F797396}"));
this.parmSPVoice().Rate(10); // Устанавливаем необходимую скорость воспроизведения синтезируемого голоса
}
3) Создаем параметровый метод parmSPVoice():
com parmSPVoice(com _spVoice = spVoice)
{
spVoice = _spVoice;
return spVoice;
}
4) Для реализации Singleton реализуем метод instance:
static SpeechEngine instance()
{
SpeechEngine ret;
SysGlobalCache globalCache = infolog.objectOnServer() ? appl.globalCache() : infolog.globalCache();
;
if (globalCache.isSet(ClassStr(SpeechEngine), 0))
ret = globalCache.get(ClassStr(SpeechEngine), 0);
else
{
ret = new SpeechEngine();
infoLog.globalCache().set(ClassStr(SpeechEngine), 0, ret);
appl.globalCache().set(ClassStr(SpeechEngine), 0, ret);
}
return ret;
}
5) Метод отвечающий за синтез голоса может выглядить следующим образом:
static client void speak(str _text)
{
SpeechEngine self = SpeechEngine::instance();
com status;
int flag;
com spVoice;
;
if (!SysUserInfo::find().enabledSpeechEngine)
return;
spVoice = self.parmSPVoice();
if (!spVoice)
return;
spVoice.speak(_text, 1);
}
6) Иногда приходится остановить синтез речи, делается это следующим образом:
static client void dontSpeak()
{
SpeechEngine self = SpeechEngine::instance();
com spVoice;
;
if (!SysUserInfo::find().enabledSpeechEngine)
return;
spVoice = self.parmSPVoice();
if (!spVoice)
return;
spVoice.skip("Sentence", 1);
}
Вот, в итоге, у нас и получился класс SpeechEngine, отвечающий за синтез речи на основании текста в Axapta.
Дополнительные рекомендации:
1) Для качественного воспроизведения речи необходимо установить голосовой движок из серии RealSpeak.
2) Выбирается текущий движок в Панель управления\Речь.
Источник:
http://www.axaptapedia.com/Speech_Engine