![]() |
#1 |
Участник
|
axaptapedia: Speech Engine
Источник: 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
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
![]() |
||||
Тема | Ответов | |||
axcoder: PowerShell + Ax | 1 | |||
axaptapedia: Load Web Documents | 1 | |||
axaptapedia: Tutorial Form Dynalink | 0 | |||
axcoder: AxPath is supported by axaptapedia | 0 |
|