AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.06.2008, 10:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
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 Blog bot DAX Blogs 1 09.01.2009 18:05
axaptapedia: Load Web Documents Blog bot DAX Blogs 1 03.01.2009 23:50
axaptapedia: Tutorial Form Dynalink Blog bot DAX Blogs 0 22.08.2007 23:00
axcoder: AxPath is supported by axaptapedia Blog bot DAX Blogs 0 11.05.2007 10:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:27.