вторник, 31 марта 2015 г.

Голосовой контроль Wi-Fi розетки Kankun KK-SP3

Данная библиотека (далее DLL) предназначена для голосового контроля Wi-Fi розетки KANKUN KK-SP3 по протоколу SSH (порт 22) в сети Интранет/Интернет, используя сервис распознавания Google Speech Recognition API. DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win ALL.
















Cистемные требования и зависимости
  1. Windows XP/Vista/7/8/8.1.
  2. Подключенная к сети Интранет/Интернет Wi-Fi розетка KANKUN KK-SP3.
  3. Требуется наличие Интернет-канала.
  4. Качественный микрофон или гарнитура/блютуз-гарнитура.
  5. Авторская библиотека Kankun_KK_SP3.DLL.
 Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

 Таблица расшифровок параметров экспортируемой процедуры 'StartStop()' библиотеки:
 Параметр Функционал Тип переменной
 P [in] включить-выключить Integer
 result [out] отчет PansiChar 
Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL/XE5):
var startstop:function(p: integer): pansichar;stdcall;
    LibHandle: THandle;

function LinkProc(ProcName: string):Pointer;
begin
 result:= GetProcAddress(LibHandle, PChar(ProcName))
end;

{ инициализация }
LibHandle:= LoadLibrary('VoiceControlKankun.dll');
 if LibHandle<>0 then begin
  startstop:= LinkProc('startstop');
  startstop(1)
end
...

{ деинициализация }
if LibHandle<>0 then startstop(0)
... 
Пример активации голосового контроля розетки из скрипта VBS:
' НАСТРОЙКИ
speakon = true ' разрешаем голосовое сопровождение, при надоедливости голоса speakon = false
' подключаем голосовое сопровождение
Dim Speak
Set Speak = CreateObject("sapi.spvoice")
' Информируем пользователя о начале работы
if (speakon = true) then
Speak.Speak "Ready to voice control socket."
End if

' создаем объект DynamicWrapperX
Set Wrap = CreateObject("DynamicWrapperX.2")

Wrap.Register "user32.dll", "GetAsyncKeyState", "i=l", "f=s", "r=l"
Wrap.Register "VoiceControlKankun.dll", "startstop", "i=l", "f=s", "r=l"
res = Wrap.startstop(1)

' запускаем бесконечный цикл по условию нажатия 'Escape' с задержкой
Do While Wrap.GetAsyncKeyState(27) = "0"
 'задержка на кол-во миллисекунд
 WScript.Sleep 1000
Loop ' завершение цикла

res = Wrap.startstop(0)
' озвучиваем
if (speakon = true) then
 Speak.Speak "Program closed."
End if 
ПОРЯДОК ИСПОЛЬЗОВАНИЯ и ОГРАНИЧЕНИЯ
  1. Подключите ваш микрофон или гарнитуру/блютуз-гарнитуру (используя аудио-шлюз) и убедитесь в его/ее работоспособности.
  2. Извлеките содержимое архива в каталог по вашему выбору.
  3. Проведите регистрацию COM-сервера 'DynamicWrapperX.2' с помощью 'regdynwrapx.bat', если вы хотите работать через VBS. При этом все файлы текущего каталога вместе с файлом настроек скопируются в соответствующую системную директорию.
  4. Запустите командный файл 'VoiceControlKankun.cmd' (на Windows Vista/7/8/8.1 запускать правой кнопкой мыши от имени Администратора).
  5. В момент запуска командного файла рядом с библиотекой появится (автосоздание) файл настроек 'VoiceControlKankun.ini' или используйте текущий для редактирования настроек библиотеки.
  6. Доступны следующие настройки: 
 IP=192.168.1.102 - IP адрес Wi-Fi розетки в вашей сети
 Login= - логин для подключения (default = root), допустимо не заполнять
 Pass= - пароль для подключения (default = admin), допустимо не заполнять
 Threshold_Level=20 - пороговый уровень срабатывания "триггера тишины" отслеживания начала фразы, %
 Delay_Off=1000 - величина задержки отключения "триггера тишины" отслеживания конца фразы, мс
 Lang=RU - язык распознавания
 on=включить - командная фраза/слово/цифра любым регистром для активации розетки
 off=выключить - командная фраза/слово/цифра любым регистром для деактивации розетки
 Recognition= - результат распознавания (лог плагина) 
Внимание! Для улучшения четкости срабатывания и распознавания перед назначенными командами используйте короткое слово (маркер). Пример, допустим вы назначили следующие команды:

 on=включить
 off=выключить 
Перед произношением слова 'включить' скажите, скажем, 'розетка включить' или 'розетка выключить'. Алгоритм поиска команды основан на обнаружении командного слова в общем результате от сервиса Google Speech Recognition API.

Видеотестирование контроля со смарта через Zello:


Время реакции определяется:
  1. Временем на отправку и получением результата от гугла (от силы полсекунды)
  2. Временем реакции роутера (это можно увидеть по прямому управлению по сети по SSH, время нерегулируемо) ...т.е. если взять Putty и послать команду, то щелчок будет ориентировочно через полсекунды, субъективно, не промерял специально.
  3. Интервалом ожидания = по дефолту 1000 мс (триггера тишины), который определяет время ожидания появления или отсутствия звука. Если в течении этого интервала появляется звук - запись продолжается, если нет - запись отправляется на распознавание. Этот интервал ожидания голосового ввода можно задавать при конфигурации плагина. 
cкачать
 

1 комментарий:

  1. В связи с нововведениями Google архив обновлен.

    ОтветитьУдалить

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.