Google, распознавание речи








Как известно, что технологии не стоят на месте и с удивительной скоростью движутся вперед. И одну из этих технологий под названием "Google speech recognition" я предоставляю на обозрение.

Компонента была написана на модуле NativeAPI для 1с8 (//infostart.ru/public/81644/), за основу был взят проект MSpeech http://code.google.com/p/mspeech/ .
Масштаб использования компоненты очень велик, но основными являются — это распознавание голосовых команд и искусственный интеллект. Ну а теперь поговорим о функционале компоненты.
Функций и свойств у нее не много.

Функция Start, Старт, Параметров 0;
Функция GetNameDevice, ПолучитьИмяУстройства, Параметр 1-Индекс устройства ввода;
Функция SetIndexDevice, ПрисвоитьНомерУстройства, Параметр 1-Индекс устройства ввода;
Функция  GetDefaultDevice, ПолучитьНомерУстройстваПоУмолчанию, Параметров 0 ;
Свойство FileName, ИмяФайла, Чтение и Запись;
Свойство RecTime, ВремяЗаписи, Чтение и Запись;
Свойство DeviceCount, ЧислоУстройств, Чтение;
Свойство Recording, Запись, Чтение;

Свойство EnableProxy, ВключитьПрокси, Чтение,Запись;
Свойство ProxyHost’,’ПроксиАдрес, Чтение,Запись;
Свойство ProxyPort’,’ПроксиПорт, Чтение,Запись;
Свойство ProxyUser’,’ПроксиПользователь, Чтение,Запись;
Свойство ProxyPass’,’ПроксиПароль, Чтение,Запись;
Свойство HTTPTimeOut’,’ТаймаутЗапроса, Чтение,Запись;

Способ работы компоненты так же очень прост. При вызове функции «Старт» происходит запись данных с устройства ввода и по истечению таймера с установленным значением «ВремяЗаписи»
данные отправляются на сервер. После этого возвращается ответ сервера с результатом распознавания.
Ну вот в принципе и все. Много писать не люблю да и краткость сестра таланта )))).

PS: Добавил свою прогу для выполнения голосовых команд на компьюторе в качестве примера и возможности этой технологии.

99 Comments

  1. Ibrogim

    Ну всё. Эра «хочу кнопочку которая будет делать то что я хочу» ушала в прошлое. Теперь бухгалтерши будут желать непосредственного общения с 1С ) «ОСВ по счёту 41.1 сформируйся»

    Reply ↓
  2. SerG_121

    (1)Так это же хорошо ))

    Reply ↓
  3. Ibrogim

    (2)

    Так это же хорошо

    А я и не спорю. Иногда лучше чтобы с бухгалтером говорила 1С а не программист.

    Reply ↓
  4. SerG_121

    (3)))))

    Reply ↓
  5. yukon

    (1) Ibrogim,

    А будет как обычно:

    Voice recognition technology? In a 1C? In Russia? You ever tried voice recognition technology?

    ELEVEN!

    🙂

    Reply ↓
  6. script

    Вот интересно, а если повесить эту обработку на постоянное ожидание через фоновое задание ? Справится?

    Reply ↓
  7. SerG_121

    (6)Попробуй ))

    Reply ↓
  8. NazarovV

    (3) Ibrogim, а у нашего отдела была идея научить попугая простым казалось бы фразам: «Перезагрузите компьютер»,»Восстановите последовательность по партиям»,»Это к сисадминам».)

    Reply ↓
  9. NazarovV

    (2) спасибо за идею. Сразу много разных мыслей по прикручиванию к Рознице.

    Reply ↓
  10. mzelensky

    Очень интересная штука. НА данный момент смущает лишь то, что нужно устанавливать «время записи». Было бы интересно посадить на «постоянное прослушивание» и оперативный анализ

    Reply ↓
  11. mzelensky

    Начал тестить — и ничего!

    Нажимаю кнопку «Стар», она становится «не активной» и все….индикатор не идет, ничего не выводится. Обработчит ожидания только крутится и все:

    Процедура ОбработчикОжидания()

    Если Об.Запись=Ложь тогда

    ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ОсновныеДействияФормыВыполнить.Доступность=Истина;

    КонецЕсли;

    КонецПроцедуры

    ???

    Reply ↓
  12. MyPuK_OLD

    Кто скачал, поделитесь впечатлениями!!!)) Как все это дело работает? Реально ли запускать обмен между базами?))

    Возможно ли создание реализации и подбор номенклатуры голосовой командой и т.п.?))

    Требуются ли какие-либо вмешательства в код для корректной работы???

    Reply ↓
  13. OldthiefXXX

    В тему http://infostart.ru/public/126505/ попробуй ей сказать (открыть справочник контрагенты)

    Reply ↓
  14. SerG_121

    (9)Не за что, скоро обновленную версию компоненты выложу с постоянной записью и с прокси настройками!

    Reply ↓
  15. SerG_121

    (11)Там небольшой глюк, комп должен быть подключен к инету, скоро выложу обновленную версию

    Reply ↓
  16. NazarovV

    (14) ждём!

    Reply ↓
  17. mzelensky

    (15) так он у меня и так подключен! Причем без всяких прокси.

    Reply ↓
  18. SerG_121

    (10)(16)Все обновил! Смотрим и коментим!

    Reply ↓
  19. mzelensky

    (18) Что-то оно как не работало, так и не работает. Нажимаю «Старт» и все — ноль эмоций.

    ПРОКСИ НЕТ!

    Что не так делаю?!

    Reply ↓
  20. SerG_121

    (19)Давай в личку, будем разбираться

    Reply ↓
  21. _HakerAlex_

    Интересная разработка, ставлю плюс… Попробовал очень даже ничего, но сделать что-то сложное пока не представляю как.

    Reply ↓
  22. SerG_121

    Блин, еще одну ошибку у себя нашел кнопка Стоп не срабатывает. Уже исправил но пока не выложил

    Reply ↓
  23. Mudrii_Gankster

    Приколько, главное чтобы мои Юзьвери не наткнулись на данную статью, а то точно попросят что то вроде «Анализ доступности товаров на складе по сезону Весна-Лето, тапочки женские». Ну а в целом, зачетная компонента, я думаю можно найти ей применение.

    P.S. не хотите расширить функционал для программиста, а то пальци писать устали, я бы поговорил на языке 1с с платформой.

    Reply ↓
  24. SerG_121

    (23)чуть попозже планирую добавить функционал SpeechAPI5(синтез речи только движок устанавливай а управление из компоненты), плюс поиск слова в интернете( в WIKI) что оно означает.

    Reply ↓
  25. verter.me

    Не работает. Выбираю устройство ввода. Нажимаю «Старт». Говорю «Раз, два, три». И ничего не происходит

    Reply ↓
  26. SerG_121

    (25)Я вот как раз по этому поводу с mzelensky и разбираюсь. У него тоже не работает. У тебя в виндовс имя учетки случайно не на русском языке?

    Reply ↓
  27. SerG_121

    (25)Я вот как раз по этому поводу с mzelensky и разбираюсь. У него тоже не работает. У тебя в виндовс имя учетки случайно не на русском языке? А индикатор работает когда раз два три говоришь?

    Reply ↓
  28. verter.me

    (27) Имя учетки на английском. Win 7. Индикатор не работает. Кнопка «старт» залипает. Кнопка «Стоп» — не действует

    Reply ↓
  29. SerG_121

    (28)64 битная винда?

    Reply ↓
  30. verter.me

    (29) 32 бита

    Reply ↓
  31. mzelensky

    у меня 64

    Reply ↓
  32. SerG_121

    (30)(31)Все решил проблему для Win7x32 файлы libeay32.dll,libFLAC.dll,ssleay32.dll кидаем в system32 и подчищаем старое место их сохранения. Для Win7x64 если в system32 не заработает то кидаем WOW64 и отписываемся получилось или нет!

    Reply ↓
  33. verter.me

    (32) Надо по новой скачивать или код самому подправлять?

    Reply ↓
  34. SerG_121

    (33)Скачай по новой я там процедуру стоп доработал там небольшая ошибочка была и подправь в ручную пути этих 3 длл которые перечислил выше, потом отпешись!

    Reply ↓
  35. verter.me

    (34) Скачал. изменил код:

    Процедура ВыгрузитьDllФайлыИзМекета()
    ФайлGoogleRcn=ПолучитьМакет(«GoogleRcn»);
    ФайлLibeay32=ПолучитьМакет(«libeay32»);
    ФайлLibFLAC=ПолучитьМакет(«libFLAC»);
    ФайлSsleay32=ПолучитьМакет(«ssleay32″);
    
    ВремКаталог=КаталогВременныхФайлов();
    
    ФайлGoogleRcn.Записать(ВремКаталог+»GoogleRcn.dll»);
    ФайлLibeay32.Записать(«C:WindowsSystem32libeay32.dll»);
    ФайлLibFLAC.Записать(«C:WindowsSystem32libFLAC.dll»);
    ФайлSsleay32.Записать(«C:WindowsSystem32ssleay32.dll»);
    ПодключитьВнешнююКомпоненту(ВремКаталог+»GoogleRcn.dll»,»DemoLib»,AddInType.Native);
    Об = Новый(«AddIn.DemoLib.GoogleRcn»);
    КонецПроцедуры

    Показать

    Запустил.

    Нажал «Старт». Говорю «рад, два, три» — работает индикатор.

    Нажимаю «Стоп» — и ничего.

    и еще при закрытии обработки, конфигурация подвисает. приходится ее перезапускать

    Reply ↓
  36. SerG_121

    (35)Ставишь Время записи 2500 мили сек. Нажимаешь старт и говоришь «раз дв…..», потом по истечению 2500 мили сек. компонента отправляет запрос на Google server. После прихода ответа на запрос кнопка старт становится активной. кнопку стоп не надо жать. После нажатия кнопки стоп распознавание не произойдет, она просто останавливает запись файла.

    Reply ↓
  37. lamer19

    Интересна информация о технологии. Интересна в контексте наличия незрячих друзей.

    Reply ↓
  38. verter.me

    (36) Заработало. Спасибо за идею и реализацию.

    Reply ↓
  39. ineshyk

    при запуске 1С падает

    Reply ↓
  40. ineshyk

    падает на: ПодключитьВнешнююКомпоненту(ВремКаталог+»GoogleRcn.dll»,»DemoLib»,AddInType.Native);

    Reply ↓
  41. SerG_121

    (40)кАКАЯ система(Windows)? XP? x32 x64?

    Reply ↓
  42. ineshyk

    (41) win 7 x64

    Reply ↓
  43. SerG_121

    (42)Пробовал это-Все решил проблему для Win7x32 файлы libeay32.dll,libFLAC.dll,ssleay32.dll кидаем в system32 и подчищаем старое место их сохранения. Для Win7x64 если в system32 не заработает то кидаем WOW64 и отписываемся получилось или нет!

    Reply ↓
  44. mzelensky

    Win7x64. Закинул в папку system32 — заработало!

    Теперь возникает вопрос. При обработке «речи» идет некая пауза, на то чтобы записать файл, отправить на сервер и дождаться ответа. Можно ли уменьшить эту паузу?!

    Побочный вопрос — можно ли уйти от интернет-сервиса и юзать какую-нибудь локальную библиотеку?! Тем самым ускорить обработку.

    Reply ↓
  45. SerG_121

    (44)нет нельзя!

    Reply ↓
  46. mzelensky

    Плохо 🙁

    Пауза мешает оперативной работе

    Reply ↓
  47. Milokko

    Интересная идея!

    Reply ↓
  48. verter.me

    (45) Сделал адаптацию под управляемую форму.

    Поменял алгоритм.

    Теперь пауза не так сильно влияет.

    Улучшил внешний вид.

    1. Открываете обработку

    2. Нажимаете кнопку «Подключить» — должна появиться строка с выбором микрофона. Для этого необходимо, чтобы соблюдались правила (43)

    3. Выбираем микрофон

    4. При необходимости настраиваем прокси через кнопку «Настройка»

    5. Нажимаем кнопку «Начать запись» — в поле «Длительность записи» будет видно уменьшающееся время на разговор, надо успеть пока цифры уменьшаются. После этого идет отправка файла и ожидание ответа распознавания. Затем можно опять говорить, когда цифры будут уменьшаться. Цикл записи можно настроить в кнопке «Настройка»

    6. Когда надоест говорить. Нажмите кнопку «Остановить запись»

    есть нерешенная проблема: После закрытия обработки — подвисает конфигурация — ее необходимо перезагружать. Возможно это связано с процедурой подключения библиотеки

    Reply ↓
  49. ranger

    {Форма.Форма.Форма(65)}: Тип не определен (AddIn.DemoLib.GoogleRcn)

    по причине:

    {Форма.Форма.Форма(65)}: Тип не определен (AddIn.DemoLib.GoogleRcn)

    В обработке так

    ВремКаталог=»C:WindowsSystem32″;

    ПодключитьВнешнююКомпоненту(ВремКаталог+»GoogleRcn.dll»,»DemoLib»,AddInType.Native);

    Об = Новый(«AddIn.DemoLib.GoogleRcn»);

    Ошибка при создании объекта

    Win7x64. Закинул в папку system32 — не заработало

    «кидаем WOW64» -это где?

    Reply ↓
  50. ranger

    (48) verter.me,

    попробуй переменную с объектом убивать при закрытии

    Об=Неопределено;

    Reply ↓
  51. SerG_121

    (49)в категории WindowsSysWOW64

    Reply ↓
  52. SerG_121

    (50)Объект создается при создании обработки, и уничтожается автоматически при уничтожении обработки. А уничтожение обработки происходит при закрытии формы.

    Reply ↓
  53. SerG_121

    (48)

    есть нерешенная проблема: После закрытия обработки — подвисает конфигурация — ее необходимо перезагружать. Возможно это связано с процедурой подключения библиотеки

    Там поток висит в ожидании на закрытие. попробуй вот ети обработки.Попробуй GoogleRcn и GoogleRcn2. В GoogleRcn2 там поток должен разрушаться без ожидания окончания

    Reply ↓
  54. ranger

    (51)

    переместил в эту папку,при открытии обработки падает 1с

    Reply ↓
  55. SerG_121

    (54)Может у тебя какие-то права ограничены на запись файлов или еще на что нибудь?

    Reply ↓
  56. verter.me

    (50) ranger, (53) Попробую. О результатах сообщу.

    Reply ↓
  57. SerG_121

    (56)ок

    Reply ↓
  58. ranger

    (55)

    не могу понять.

    Я в процедуре ВыгрузитьDllФайлыИзМекета()

    оставил только

    ПодключитьВнешнююКомпоненту(ВремКаталог+»GoogleRcn.dll»,»DemoLib»,AddInType.Native);

    Об = Новый(«AddIn.DemoLib.GoogleRcn»);

    где ВремКаталог пробовал ставить и «C:WindowsSysWOW64»,и C:WindowsSystem32

    Reply ↓
  59. TitanLuchs

    А что, прикольно, надо прикрутить ее к системе учета задач. «Новая задача» -> «Не забыть раздать звиздюлей» -> «Записать»

    Reply ↓
  60. Andreyyy

    При открытии обработки, 1С падает.

    WIN7 32

    Reply ↓
  61. ineshyk

    (59) прикольно к прикрутить к БСП подсистемы напоминаний пользователю)

    Reply ↓
  62. SerG_121

    (58)Ну так правильно она и будет падать, все файлы и компоненту (GoogleRcn.dll) кинул в C:WindowsSystem32, а пытаешься подключить с этого пути ВремКаталог+»GoogleRcn.dll»

    Reply ↓
  63. SerG_121

    (60)Смотри комментарии выше!

    Reply ↓
  64. verter.me

    (50) ranger, Не работает.

    Reply ↓
  65. verter.me

    (53) Не нашел отличий. И что понимается под потоком?

    Reply ↓
  66. ineshyk

    переместил в sysWow, вот такая ошибка

    Reply ↓
  67. ranger

    (62)

    что правильно?

    Я сначала кинул,как ты посоветовал,в C:WindowsSystem32-не работает,возникла Ошибка при создании объекта(из временного каталога 1с удалил),потом перекинул в «C:WindowsSysWOW64″(из System32 удалил)-падает при открытии обработки

    Reply ↓
  68. SerG_121

    (65)Значит в system32 кидай

    Reply ↓
  69. SerG_121

    (66) Это внутри компоненты запускается поток

    Reply ↓
  70. ineshyk

    (68) такая же ошибка

    Reply ↓
  71. SerG_121

    (67)В прикрепленном файле лежит обработка и три dll файла. Три dll файла кидаем в C:WindowsSystem32 и запускаем обработку. Ну если это не получится я тогда не знаю почему у тебя вылетает. С виндозовскими правами поковыряйся!

    Reply ↓
  72. SerG_121

    (70)Смотри (71)

    Reply ↓
  73. ineshyk

    (71) вылетает в дамп

    Reply ↓
  74. SerG_121

    (73)Не знаю тоды, может dll не хватает, проверь в system32 есть такой файл msvcrt.dll если нету то закинь.

    Reply ↓
  75. Andreyyy

    (63) Копирование файлов в систем32 не помогает. При открытии обработки валится 1С.

    Reply ↓
  76. ineshyk

    (74) такой файл есть.

    Reply ↓
  77. SerG_121

    (75)(76)У verter.me пошло норм на Win7

    Reply ↓
  78. SerG_121

    (75)(76)А платформа 1С у вас какая? и Конфа какая?

    Reply ↓
  79. Andreyyy

    (78) 8.2.17.153, конфа бухгалтерия 2.0

    Добавлю, что после копирования файла libeay32.dll в систем32 перестал работать клиент-банк(не проходила проверка сертификата и ругался эксплорер на этот файл), после удаления его клиент-банк заработал.

    Reply ↓
  80. verter.me

    (77) Я, на всякий случай все dll закинул в system32 и попытался зарегистрировать GoogleRcn.dll. Не уверен, что получилось — но программа заработала

    Reply ↓
  81. SerG_121

    (79)За основу брал проект MSpeech, там были все эти длл. ssleay32.dll отвечает за шифрование а тот файл новерное привязка к нему. Я удалил его из обработки чтоб проверить. Работает!

    Reply ↓
  82. TitanLuchs

    (61) ineshyk, не, это не наш вариант, у нас своя клевая система управления задачами )

    Reply ↓
  83. serg1983

    инструкцию можно чтоб работало

    Reply ↓
  84. serg1983

    теперь я понял проблему 1с и нас в общем мы мало придаем значение справки или воопще её игнорируем

    Reply ↓
  85. SerG_121

    (83)Уточните именно, какую справку? Если у вас Win7 читайте коменты там все написано!

    Reply ↓
  86. Uejova

    А у меня пишет, что работа 1С прекращена. Windows пытается решить этот вопрос (((

    Reply ↓
  87. SerG_121

    (86)Попробуй зарегистрировать GoogleRcn.dll . Читайте коменты

    Reply ↓
  88. LaNaite

    Автор, дай я тебя обниму!)))

    Reply ↓
  89. verter.me

    (88) LaNaite, Вообще то. Тут и другие кой-какую лепту внесли. Мы тоже требуем поощрения

    Reply ↓
  90. Aleks1973

    У этого направления большое будущее…но не в бухгалтерии. В торговле, может быть.

    Говорить по времени дольше, чем набивать. Разве что хохлушек (или просто тех, кто умеет трещать) будут брать.

    Reply ↓
  91. serg1983

    У меня ХР и не понятно о какой GoogleRcn.dll идет речь. Где её брать из макетов??

    Reply ↓
  92. verter.me

    (90) Aleks1973, Соглашусь. Распознавание пока не очень. Баловство одно. НО!!! Отдельные-то слова распознает замечательно. Значит, на первое время к каждому объекту в 1С (справочник, документ) прикручиваем теги (приходник, ПКО, Приходно-кассовой ордер). Вешаем в фон прослушку, там же анализируем. Поймав например текст «Система ПКО», где Система ключевое слово, а за ним название объекта — можно открывать документ и далее пользователь работает с ним как обычно.

    Надо только решить проблему с подвисанием конфигурации.

    Reply ↓
  93. SerG_121

    (88) ))

    Reply ↓
  94. SeiOkami

    Интересненько… Сразу фантазия заиграла и идеи появились)

    Как будет время — погляжу.

    Заранее спасибо!

    Reply ↓
  95. Ponommax

    На Win7 работает, а на XP нет.

    Что не хватает XP что есть в 7-ке, что бы эта обработка заработала?

    Reply ↓
  96. SerG_121

    (95)может .net!

    Reply ↓
  97. maverick76

    Ставлю + за идею

    Reply ↓
  98. echo77

    У кого-нибудь эта херня работает?

    Reply ↓
  99. SerG_121

    (98)Да, эта хреня работает!

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *