На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> Описание API вызова библиотеки GoogleSpeechRecognizeAPI3.DLL , библиотека для работы с Google Speech Recognize API
    Данная библиотека (далее 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):
    ExpandedWrap disabled
      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качать
    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0180 ]   [ 14 queries used ]   [ Generated: 20.05.24, 09:39 GMT ]