Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.84.18.52] |
|
Сообщ.
#1
,
|
|
|
Данная библиотека (далее DLL) для работы с сервисом GoogleSpeech RecognizeAPI через POST-запросы в ОС NT/2000/2003/XP/7 предназначена для распознавания речи OFFTIME и REALTIME в автоматическом режиме, по задаваемому пользователем пороговому уровню, языку и задержке отслеживания окончания фразы (триггера "тишины").
http://www.youtube.com/watch?v=aRRvXOOlxmI Cистемные требования и зависимости: 1. Win32 (NT/2003/XP/7) 2. Требуется наличие Интернет-канала 3. ssleay32.dll + libeay32.dll для работы с OpenSSL DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32 (64-bit не тестировалось). Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции. Прикладное применение: Скрытый текст Голосовое управление нагрузками HID гаджета "Описание API вызова библиотеки VoiceControlHid.DLL": http://www.youtube.com/watch?v=aqzYZov_L1o...406101042#54114 Голосовое управление плеером AIMP "Описание API вызова библиотеки AIMP_VoiceControl.DLL": http://www.youtube.com/watch?v=eIqKQcD7FEg...406101042#54115 Интерактивный голосовой переводчик: http://www.youtube.com/watch?v=Etch0Qj1R7Y...406101042#54116 Расшифровки: Скрытый текст Таблица расшифровок параметров экспортируемой процедуры OFFTIME-распознавания Recognize_Flac() библиотеки <GoogleSpeechRecognizeAPI3.DLL>: Цитата Параметр Функционал Тип переменной ============================================================ ================== filename имя FLAC-файла для распознавания PAnsiChar ruen исходный язык записи ru/en PAnsiChar full_answer_google полная строка ответа от сервиса PAnsiChar recognize_flag признак распознавания PAnsiChar recognize_text распознанный текст PAnsiChar recognize_accuracy достоверность распознавания, % Integer Таблица расшифровок параметров экспортируемой процедуры REALTIME-распознавания Recognize() библиотеки <GoogleSpeechRecognizeAPI3.DLL>: Цитата Параметр Функционал Тип переменной ============================================================ ================== full_answer_google полная строка ответа от сервиса PAnsiChar recognize_flag признак распознавания PAnsiChar recognize_text распознанный текст PAnsiChar recognize_accuracy достоверность распознавания, % Integer Таблица расшифровок параметров экспортируемой процедуры Start() библиотеки <GoogleSpeechRecognizeAPI3.DLL>: Цитата Параметр Функционал Тип переменной ============================================================ ================== threshold_level уровень порога срабатывания, % Integer delay_off задержка отсл-я окончания фразы, мс Integer ruen язык распознавания ru/en PAnsiChar Таблица расшифровок параметров экспортируемой процедуры Set_Thresholdlevel_Delayoff_Ruen() библиотеки <GoogleSpeechRecognizeAPI3.DLL>: Цитата Параметр Функционал Тип переменной ============================================================ ================== threshold_level уровень порога срабатывания, % Integer delay_off задержка отсл-я окончания фразы, мс Integer ruen язык распознавания ru/en PAnsiChar Таблица расшифровок параметров экспортируемой функции Get_SoundLevel() библиотеки <GoogleSpeechRecognizeAPI3.DLL>: Цитата Параметр Функционал Тип переменной ============================================================ ================== result текущий уровень сигнала Integer Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL): var get_soundlevel: function: integer; stdcall; // текущий уровень громкости recognize : procedure(var full_answer_google, // полная строка ответа от сервиса recognize_flag, // признак распознавания recognize_text: pansichar; // распознанный текст var recognize_accuracy: integer // достоверность распознавания, % ); stdcall; recognize_flac: procedure(var filename, // путь-имя файла для распознавания ruen, // язык распознавания full_answer_google, // полная строка ответа от сервиса recognize_flag, // признак распознавания recognize_text: pansichar; // распознанный текст var recognize_accuracy: integer // достоверность распознавания, % ); stdcall; start : procedure(threshold_level, // уровень порога срабатывания, % delay_off: // задержка отключения, мс integer; ruen: // язык распознавания pansichar); stdcall; stop : procedure; stdcall; set_thresholdlevel_delayoff_ruen: procedure(threshold_level, // уровень порога срабатывания, % delay_off: // задержка отключения, мс integer; ruen: // язык распознавания pansichar); stdcall; LibHandle: THandle; function LinkProc(ProcName: string):Pointer; begin result:= GetProcAddress(LibHandle, PChar(ProcName)) end; { инициализация } begin LibHandle:= LoadLibrary('test\GoogleSpeechRecognizeAPI3.dll'); if LibHandle<>0 then begin // старт модуля start:= LinkProc('start'); // стоп модуля stop := LinkProc('stop'); // задание порога, времени задержки и языка распознавания REALTIME set_thresholdlevel_delayoff_ruen:= LinkProc('set_thresholdlevel_delayoff_ruen'); // получение уровня сигнала REALTIME get_soundlevel:= LinkProc('get_soundlevel'); // получение результатов распознавания REALTIME recognize := LinkProc('recognize'); // получение результатов распознавания OFFTIME (из файла) recognize_flac:= LinkProc('recognize_flac'); end; start(100 - tr.Position, 1000, 'ru'); ... { деинициализация } begin stop; FreeLibrary(LibHandle) ... { примеры вызова } // распознать OFFTIME из файла FLAC var full_answer_google, // полная строка ответа от сервиса recognize_flag, // признак распознавания recognize_text: pansichar; // распознанный текст recognize_accuracy: integer; // достоверность распознавания, % // ruen, text: pansichar; begin memo1.Clear; if checkbox1.Checked then ruen:= 'ru' else ruen:= 'en'; text:= pansichar(edit1.text); recognize_flac(text, ruen, full_answer_google, recognize_flag, recognize_text, recognize_accuracy); // результаты memo1.Lines.Add(format('%s', [full_answer_google])); memo1.Lines.Add(''); memo1.Lines.Add(format('%s', [recognize_flag])); memo1.Lines.Add(format('Текст: %s', [recognize_text])); memo1.Lines.Add(format('Достоверность: %d', [recognize_accuracy]) + '%'); ... // визуализация текущего уровня REALTIME (по таймеру или в потоке) var temp: integer; // full_answer_google, // полная строка ответа от сервиса recognize_flag, // признак распознавания recognize_text: pansichar; // распознанный текст recognize_accuracy: integer; // достоверность распознавания, % begin temp:= get_soundlevel; panel2.Height:= panel1.Height * temp div 100; label1.Caption:= format('%d', [temp]) + '%'; // распознать REALTIME по превышению порога с задержкой inc(gl_inc); if gl_inc > 1000 div timer1.Interval then begin gl_inc:= 0; memo1.Clear; full_answer_google:= ''; recognize(full_answer_google, recognize_flag, recognize_text, recognize_accuracy); // результаты memo1.Lines.Add(format('%s', [full_answer_google])); memo1.Lines.Add(''); memo1.Lines.Add(format('%s', [recognize_flag])); memo1.Lines.Add(format('Текст: %s', [recognize_text])); memo1.Lines.Add(format('Достоверность: %d', [recognize_accuracy]) + '%'); end; ... // задание параметров задержки и порога REALTIME set_thresholdlevel_delayoff_ruen(20 {%}, 1000 {мс}, 'ru') ... ПОРЯДОК ИСПОЛЬЗОВАНИЯ 1. Для распознавания OFFTIME речевого фрагмента в формате FLAC используйте процедуру Recognize_Flac(). 2. Процедуры инициализации потока Start() и завершения Stop(без параметров) вызываются однократно при начале и окончании отслеживания. 3. Процедура Set_Thresholdlevel_Delayoff_Ruen() предназначена для изменения параметров (порогового уровня срабатывания триггера тишины, интервала отслеживания окончания фразы и языка) REALTIME. 4. Процедура Recognize() вернет результаты распознавания отслеживаемой фразы по срабатыванию триггера тишины. cкачать |