![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() В своей программе я использую слегка модифицированную "стандартную" процедуру для анализа установленных в системе голосовых движков и заполнения комбобокса (в моем случае - комбобоксов) их выбора:
Код:
procedure LEARN_ENGINES; var NumFound : DWord; ModeInfo : TTSModeInfo; begin try {Инициализация аудиоустройства} CoCreateInstance(CLSID_MMAudioDest, Nil, CLSCTX_ALL, IID_IAudioMultiMediaDevice, fIAMM); except end; {Создание перечисляемого объекта для перебора всех движков в системе с помощью интерфейса ITTSEnum} CoCreateInstance(CLSID_TTSEnumerator, Nil, CLSCTX_ALL, IID_ITTSEnum, aTTSEnum); aTTSEnum.Reset;//Сбрасываем на первый aTTSEnum.Next(1, ModeInfo, @NumFound); {Получаем первый движок} While NumFound > 0 do begin s:=String(ModeInfo.szModeName); if pos('RUS',UpperCase(s))>0 then COMBO_VOICE_RUS.Items.Add(s) else COMBO_VOICE_ENG.Items.Add(s); aTTSEnum.Next(1, ModeInfo, @NumFound); {Получаем остальные} end; end; PS То, что в неполном закрытии программы виноват именно этот код, убедился точно. PPS Код брал отсюда. Последний раз редактировалось alexingor, 07.02.2013 в 01:43. |
#2
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() Цитата:
|
#4
|
||||
|
||||
![]() А вот это (http://drkb3.narod.ru/daaioa_n_micro...peech_api_.htm) не поможет?Там код рабочий, несколько лет назад его пробовал, без нареканий.
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
||||
|
||||
![]() Ты не полностью прочитал свою же ссылку, вот продолжение на эту тему. У тебя не очищается "движок". Про это тебе Alegun уже говорил.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
![]() Цитата:
![]() Вот ссылка на этот мой проект: https://www.dropbox.com/sh/86pboo1lv...t/SAPITest.zip. |
#7
|
|||
|
|||
![]() Цитата:
|