SAPI. Озвучиваем буфер обмена
raxp@mail.zp.ua
Статья не посвящена непосредственно синтезу и качеству речи, поэтому кто интересуется сим, может дальше и не смотреть…
Иногда возникает необходимость дать передышку глазам, если Вы читаете. Для чего уже существует множество различных речевых синтезаторов текста, качество “русского” конечно страдает. Но тем не менее хотелось-бы чего-нибудь попроще, скопировал в буфер “что нужно и пошел чай пить”. Как это реализовать?
Разработка
Прежде всего нам понадобится сама библиотека Microsoft SAPI [3], но лучше воспользоваться вариантом урезанной версии [4], хотя в конечном итоге работа с той и этой ничем не отличается.
После чего для вашего проекта сделайте Import Type Library ActiveX компонента DirectSS.
... в нашем случае, для работы с ней достаточно подключить модуль ACTIVEVOICEPROJECTLib_TLB и произвести инициализацию вызова CoInitialize(nil), так как мы работаем с невизуальной частью
...
dss.Initialized:= 0;
with dss do begin
pitch:= 270;
speed:= 180;
LanguageID($409);
Speak(‘ваш текст’)
End
...
Обратите внимание!
|
... для синтеза русской речи вам могут понадобятся языковые интерфейсы, к примеру от Lernout TTS3000 <Lhttsrur.exe> |
остается осуществить перехват сообщения буфера обмена WM_DRAWCLIPBOARD и прочитать, что в нем:
...
SendMessage(PrevHWnd, WM_DRAWCLIPBOARD, 0, 0);
if Clipboard.HasFormat(CF_TEXT) then begin
H:= Clipboard.GetAsHandle(CF_TEXT);
s:= pchar(GlobalLock(H));
key(s);
GlobalUnlock(H)
End
...
Создание утилиты на WinAPI опускаем - это не наша цель, при желании взглянуть пожалуйте сюда [1].
Процесс будет висеть себе, отслеживать состояние буфера, а при наличии текста – синтезировать речь. При желании можно добавить обработку типа содержимого, скажем CF_BITMAP и говорить, что это растровое изображение…
Итак, создадим простенький системный сервис, осуществляющий загрузку нашей утилиты и не светящийся ни автозагрузке, ни в реестре.
Возможности
Что еще дает нам контроль над буфером обмена? … к примеру, можно перехватывать наличие в нем скриншотов и сделать простую защиту [2] от различных spy- шпионских программ и т.п.
Ссылки:
Контактная информация:
raxp@mail.zp.ua
16.04.2007
[Переход к списку статей]
|