Использование Yandex Speechkit для распознавания речи в 1С

0. RomanCrow13 95 26.08.19 10:00 Сейчас в теме
Оказалось, что в этом нет ничего сложного.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. for_sale 802 26.08.19 10:25 Сейчас в теме
Желательно давать ссылку на оригинальный апи от производителя, этот сайт тлгрм, насколько я понимаю, с телеграмом не аффилирован и там могут быть как минимум устаревшие данные а как максимум что-нибудь злонамеренное.
3. RomanCrow13 95 26.08.19 10:32 Сейчас в теме
2. for_sale 802 26.08.19 10:28 Сейчас в теме
Но в целом спасибо за статью, интересно!
4. ltfriend 515 26.08.19 13:29 Сейчас в теме
А зачем в ОбновитьIAMЯндекс используется временный файл?
7. RomanCrow13 95 26.08.19 14:08 Сейчас в теме
(4)На самом деле правда не зачем. Просто хотел показать, что так тоже можно. Исправлю, чтобы глаза не мозолило)
5. AzagTot 39 26.08.19 13:30 Сейчас в теме
Это здорово, что появляются такие работы!

Хочется застать то время, когда появится полноценный голосовой интерфейс в операционной системе и, конечно, в программе 1С (Предприятие и Конфигуратор).

Представьте себе - вы лежите на диване и "плюёте в потолок" а перед вами трёхмерная голограмма конфигуратора 1С и вы голосом даёте команды для написания программы или правки формы).

Интересно, когда настанет это время...
araatt; chebser; CyberCerber; RomanCrow13; +4 Ответить
12. YanTsys 12 26.08.19 20:45 Сейчас в теме
(5) На языке мозоли будут...
13. chebser 4 27.08.19 09:05 Сейчас в теме
(12) а в коде - больше мата
cheburashka; the1; THEBESTolo4b; maxopik2; araatt; YanTsys; tricolor; +7 Ответить
30. the1 585 31.10.19 11:58 Сейчас в теме
(13) Больше? В смысле, он и сейчас у Вас там есть? ))
31. chebser 4 01.11.19 11:17 Сейчас в теме
(30) у меня нет, но в чужом коде попадался
6. skv_79 211 26.08.19 14:05 Сейчас в теме
8. Darklight 22 26.08.19 15:29 Сейчас в теме
Здорово, но, как мне кажется - тут всё упрётся в первую очередь в качество распознавания речи. На мой взгляд, оно должно идти по заранее заданной карте ожиданий ключевых слов (что-то типа карты правил синтаксического разбора, но для звука) - понятно, что внутри сервиса Яндекса есть своя такая карта с кучей вариантов паттернов произношение, но она заточена на отдельные слова и простые фразы, а не на специфику бизнес-логики команд. Вот если бы можно было загружать свою карту лексического разбора (свою семантику команд) и получать ответ уже скомпонованный строгим образом согласно данной семантики - вот это было бы здорово и продвинуло бы применение данного сервиса в реальных задачах голосового управления. А так всё будет сводится к тому, чтобы писать сложные лексические анализаторы той абракадабре, которую пришлёт сервис распознавания - причём без каких-либо вариантов ветвления распознавания - когда получается околесица и хочется получить иные варианты толкования в надежде что они окажутся более подходящими. А значит такое управление будет часто давать сбои - что очень негативно скажется на его практическом применении.

Жаль, что в статье не приведены примеры тестов и статистика корректности распознавания.
Ну и скоростные замеры были бы тут тоже уместны – ибо, в таком сложносочленённом тандеме потенциально не шустрых цифровых участников (посредников) скорость может заметно снижаться. А для устного разговора с компьютером - скорость реакции не менее важна, как и точность - иначе дальше чем как кратковременное завлечение - это дело не пойдёт. Ну разве что слепым будет ещё интересно - так сказать - от безысходности :-(

Вообще - подобный сервис уже надо бы встраивать в платформу 1С (желательно без необходимости таскать звуковые семплы в web и обратно, хотя как вариант - можно допустить наличие отдельного сервера в сети компании - тот же сервер взаимодействий для этой роли вполне подходит). Конечно в ближайшие годы этого ожидать от компании было бы излишне наивно - но через пару десятилетий - голосовое управление и ввод текста явно должно стать мировым трендом в программном обеспечении!
9. RomanCrow13 95 26.08.19 15:45 Сейчас в теме
(8)
Насчет качества: согласен, что под бизнес-логику механизм не заточен. Конечно, при отправке запроса в параметр "topic" можно указать языковую модель, но самому описать эту модель нельзя. И, думаю, это трудоемкий процесс.
Тесты и статистику привести был бы рад. но дело в том, что я перестал работать над проектом несколько месяцев назад. Всё здорово да, но отдавать 150 р/мес за vds с минималками оказалось менее целесообразно, чем покупку приложения за 300 р насовсем. Конечно, можно провести тесты локально, подумаю. Может, в следующей статье.
Насчет последнего пункта согласен полностью. Ждать от 1С распознавание речи в близжайшие года крайне безумно оптимистично.
15. Darklight 22 27.08.19 09:32 Сейчас в теме
(9)
Конечно, при отправке запроса в параметр "topic" можно указать языковую модель, но самому описать эту модель нельзя

Плохо, что нельзя. Сложно - наверняка, но без этого - это всё просто лишь развлечение - серьёзное применение практически исключено. Но раз Яндекс такой возможности не даёт - то грош цена такому сервису :-( Это говорит лишь о сырости данного сервиса. Видимо тут ещё десятилетия понадобятся, чтобы довести его до ума.
Хм - интересно было бы сравнить возможности с конкурентами, рассмотреть альтернативные API - хоть от того же микрософта (как предложено в соседнем посте) - там, кстати, есть возможности хоть примитивно, но настраивать грамматику фонетического разбора (причём применение фала граматики SRGS даёт уже приемлемую универсальность; жаль только, что у сервиса, вроде как, пока не всё хорошо с поддержкой русского языка).



Ждать от 1С распознавание речи в ближайшие года крайне безумно оптимистично

В ближайшие годы - да. Но если за 20 лет компания так и не анонсирует подобного сервиса - то вот это будет уже глупо с её стороны
Но да - 20 лет срок ого-го как не малый 8-ка столько может и не проживёт...
16. Crazy_Max 63 27.08.19 12:57 Сейчас в теме
(15)Когда вышла 8-ка, самым распространённым анекдотом про неё было: "Судя по изменениям в 8-ке по сравнению с 7.7, можно с уверенностью утверждать, что 9-я версия будет с 3-мерным интерфейсом и голосовым управлением".
Кто ж знал, что это будет не шутка?
Мысли имеют свойство материализовываться...
17. Darklight 22 27.08.19 17:20 Сейчас в теме
(16)Вначале нулевых многие грёзили киберфантастикой (в на основе литературных и кинематографических образов, созданных в третьей четверти XX века) - мол ещё несколько десятилетий и ПО преобразится - уйдёт в виртуальное пространство, где управление будет голосовое или через манипулирование 3D структурами). Десятилетия шли - а воз и ныне там. Но, правда с голосовым управлением всё-таки ситуация сейчас активно начала двигаться в практическом применении. В MS Office голосового интеллектуального ассистента встроят уже в следующем поколении, ну а в смартфонах и умных колонках он уже появился, и относительно активно используется потребителями (а ещё в смарт телевизорах - но тут меньше).

Голосовой сервис можно встроить в 8-е поколение платформы - как я упомянул выше - центр взаимодействий для этого очень хорошо подходит. Но просто встроить голосовой сервис мало - нужно встраивать голосового интеллектуального ассистента - который смог бы относительно осмыслено взаимодействовать с голосовым сервисом на пользовательском уровне (а на программном уровне имел бы относительно не очень сложный API своего конфигурирования).

Хотя я, за пределами, смартфонов, пока не вижу в голосовых ассистентах большого смысла - на мой взгляд постоянно управлять голосом - не самое удобное занятие (хотя, тут дело в правильном маркетинге, ну и от качества таких сервисов много зависит - пока качество так себе, особенно вне английского языка). Поигрался я как-то с голосовым управлением на современных смарт-тв - и бросил это дело - с пульта быстрее и удобнее выходит - ну кроме набора текста для выполнения поиска - но я редко этим пользуюсь на ТВ, даже на смартфоне (где это приходится делать часто) мне проще текст вбить на мелких экранных клавишах, чем вводить его голосом - ошибок меньше, понимания больше, ну или, может, я просто не хочу выглядеть со стороны сумасшедшим - болтая со смартфоном - хотя идущие и говорящие в пустоту люди - уже не вызывают подобных ассоциаций - люди привыкли к наличию беспроводной малозаметной гарнитуры и общении на ходу - привыкнут со временем и к разговорам со смартфоном/телевизором/компьютером.... но если рядом так несколько людей заведут активную беседу - шум и гам будет ещё тот....

Но всё равно - будущее за голосовыми смарт ассистентами - да может фиг с ними с голосовыми - вообще за интеллектуальными смарт ассистентами, способными предугадывать дальнейшие действия и будущие желания пользователей - быстро предлагая им то, в чём они сейчас нуждаются и ответы на вопросы, которые их беспокоят - пусть даже общение будет вне звуковой формы.

Да и программистам в IDE такие ассистенты, помогающие быстро создавать код и проводить его анализ и рефакторинг - были бы весьма полезны - вот это уже наверное да - задел для 9-го поколения платформы 1С: Предприятие - лет так через 30-50 - и вряд ли раньше :-(
28. Crazy_Max 63 03.09.19 11:17 Сейчас в теме
(17)
многие грёзили киберфантастикой

Честно говоря, я очень надеюсь на какие-то нейроинтерфейсы вместо классических органов чувств и методов воздействия. Они то же имеют неплохое развитие сейчас, и в перспективе должны быть гораздо комфортнее в использовании: они не должны перекрывать естественных каналов взаимодействия с реальностью. 3Д, дополненная реальность - вообще плохо приживается, отнимая основной наш канал получения информации. Голос то же не очень хорош тем, что требуется со стороны информационной системы постоянно усложнять логику для повышения результативности взаимодействия. А вот нейроинтерфейс вместо этого должен позволять нашему мозгу неограниченно развивать скилл взаимодействия с компьютером.
29. Darklight 22 03.09.19 11:47 Сейчас в теме
(28)Дополненная реальность как раз имеет высокие перспективы развития и основные каналы связи с окружающим миром она как раз не отнимает. Нейроинтерфейсы - это пока вообще за гранью научного прогресса - всё что существует на практике- полная чушь, пригодная разве что как помощь инвалидам - просто от безисходности.
Полное погружение в VR - вещь перспективная - но ещё более далёкая, чем простые нейроинтерфейсы. А ограниченное погружение в 3D - вещь "сама в себе" - определённые перспективы имеет - но лишь в узких кругах - поэтому реально не получит распространения.
Ещё есть управление жестами (в т.ч. через камеры) - штука тоже очень ограниченная по применению, но её не стоит совсем сбрасывать со счетов - у неё тоже есть свои перспективы применения и реальная нынешняя практика использования.
Голосовое управление - конечно же тоже очень ограничено - но у него есть реальная практика применения - она будет расширяться, но вряд ли до конца века сможет занять весомую долю рынка систем взаимодействия человека и компьютера (а в следующем веке - уже возможности AR должны с лихвой перекрывать все другие способы взаимодействия, а к концу XXII может и нейроинтерфейсы подтянутся - но я бы не стал расссчитывать на их более ранее применение).

Другое дело - это то, что вторая половина XXI века теъхнологически будет нацелена на рост возможностей AI и глубины его применения при взаимодействии с пользователями. Что приведёт к тому, что, к концу века, количество информации, требующей ввода от человека и количество поступающих от него команд (как и вообще количество профессиональных операторов ПК) существенно сократится - на порядки сократится. Компьютеры буквально всё будут понимать с полуслова - и выполнять огромное число операций, не требующих прямого управления сто стороны человека. Поэтому, то как человек будет взаимодействовать с компьютером - будет, скорее всего, не так важно - и простого жестового и голосового управления может быть вполне достаточно (+ широкие возможности визуализации AR).

Более того, эра XXII века - будет царством предсказания - когда AI будет предсказывать то, что нужно будет людям и предоставлять результат заранее - ещё до того,как будет отдана команда. К концу XXII века должна наступить тотальная эра телепатических систем - это следующее поколение развития компьютеров - предсказано, что оно настанет после широкого распространнения квантовых компьютеров (предыдущее поколение), правда технологии квантовых вычислений пока сильно буксуют - и скорее всего ситуация будет медленно меняться на протяжении XXI века - но в XXII всё должно перемениться (с квантовыми компьютерами или без них - эпоха телепатических систем должна будет настать). Вот тогда нейроинтерфейсы бубут очень востребованы - только начинаешь складывать мысль, что тебе хочется - а AI уже всё предугадал и подал тебе на "блюдечке с голубой каёмочкой".

Поэтому AI ассистентов нужно начинать развивать уже сейчас - они важнее - чем голосовое управление!
11. blackhole321 1177 26.08.19 18:20 Сейчас в теме
(8)
Вообще - подобный сервис уже надо бы встраивать в платформу 1С (желательно без необходимости таскать звуковые семплы в web и обратно, хотя как вариант - можно допустить наличие отдельного сервера в сети компании - тот же сервер взаимодействий для этой роли вполне подходит).


Тогда можно использовать что-то типа: https://developer.microsoft.com/ru-ru/windows/speech
14. Darklight 22 27.08.19 09:27 Сейчас в теме
(11)Да, тут скорее всего нужно партнёрство. Разрабатывать голосовой сервис с нуля дело хлопотное (но возможное, если бы, скажем, компания 1С захотела распространить сервис не только на одну линейку своих продуктов, а как, Микрософт или Яндекс внедряла бы сервис в диверсифицированную линеку своих продуктов, и предлагала свой API для использования сторонним партнёрам и частным лицам; но компания 1С не ведёт такую политику - её бизнес унитарно сосредоточен в нескольких областях, которые мало между собой пересекаются).

Значит, нужно выбирать иного вендора, который смог бы предоставить свой сервис для встройки. Причём не только через облачные технологии, но и смог бы лицензировать сам движок.

Компании 1С проще договориться с отечственными вендорами, чем с западными, причём гораздо проще договориться с Яндексом, чем с Микрософтом (у которого на 1С есть "зуб" за отказ в продаже 1С: Предприяте мелкомягним).

Да и на фоне указания "партии" на импортозамещение - вероятность партнёрства с любым западным вендором вообще очень мала! А отечественных, предоставляющих, голосовые сервисы - по пальцам одной руки пересчитать можно - и, по большей части, все они очень слабы. Но если в них вложиться (а деньги, компания 1С, наверняка найти смогла бы) - то не одним Яндексом можно было бы обойтись. Именно так бы я на месте Нураливых и сделал бы - это классический мировой подход - приобретение небольших компаний с перспективными технологиями, нуждающихся в финансировании.

Так или иначе - через 10-20 лет потребность в голосовых ассистентах будет куда выше, чем сейчас - а это уже не просто голосовое управление, это и встроенный интеллектуальный разбор команд и их математически осмысленное (по заложенной модели) исполнение. Я ведь не зря выше написал про карту ожидаемых ключевых слов - карту лексико-фонетического разбора - это ключевой элемент функционирования голосовых ассистентов.

Так что, уже в ближайшем будущем серьёзному ПО без таких голосовых сервисов не обойтись. Но на их разработку нужно время - даже на доведение до ума полуготовых разработок - скорее сего потребуется не менее 5-10 лет. Так что, таким проектом правильно было бы начинать уже сейчас. Чтобы через 10 лет предложить хотя бы примитивное голосовое решение внутри платформы 1С Предприятие 8.5, а к 8.6 создать уже вполне удобного и практичного голосового ассистента, который на голову должен превосходить то, что сейчас есть на рынке - чтобы иметь реальное практическое повседневное и серьёзное применение в бизнес приложениях
10. hasp_x 154 26.08.19 16:56 Сейчас в теме
Наглядный пример того, что лентяи двигают прогресс:))
18. Lion_LexXx 1 28.08.19 06:22 Сейчас в теме
Добрый день! Подскажите пожалуйста как сделать запрос на синтез речи. По аналогии с распознаванием речи делаю, распознавание речи работает, а синтез речи возвращает ошибку "404 page not found".

АдресСервера = "tts.api.cloud.yandex.net";
	iamToken = "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХ";
	folderId = "ХХХХХХХХХХХХХХХ";
	ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows( СпособВыбораСертификатаWindows.Выбирать), Новый СертификатыУдостоверяющихЦентровWindows()); 
	
	СоединениеЯндекс = Новый HTTPСоединение(АдресСервера, 443, , , , 20, ssl, Неопределено);
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Authorization", "Bearer " + iamToken);
Запрос = Новый HTTPЗапрос("/speech/v1/tts:synthesize/?text=Hello" + "&lang=en-US" + "&folderId=" + folderId ,Заголовки);
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);
	Сообщить("Ответ.КодСостояния " + Ответ.КодСостояния);
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();

	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаОтвет);
	СтруктураОтвета = ПрочитатьJSON(Чтение);			
	result = СтруктураОтвета.result;
Показать


В соответствии с инструкцией из заголовков убрал:
Заголовки.Вставить("Content-Type", "application/json");

Инструкция генерации речи:
https://cloud.yandex.ru/docs/speechkit/tts/request
19. RomanCrow13 95 28.08.19 06:30 Сейчас в теме
(18)
Привет! Столкнулся с этой же проблемой. Хотел сделать синтезирование речи, чтобы потом сообщали об остатках аудиосообщением. Хотя в Curl всё отлично срабатывает.
Но, во-первых, вижу, что ты отправляешь запрос не правильно. Нужно вписывать параметры в тело запроса, а не в сам запрос. Так запрос должен быть просто "/speech/v1/tts:synthesize/". Тело пишешь строкой (по аналогии получения iam-токена), далее отправляешь для обработки.
Но и это у меня не срабатывает. Я грешу на то, что текст сообщения нужно перекодировать в url, но и даже это у меня не сработало. Скорее всего нужно правильно написать строку параметров запроса...
20. RomanCrow13 95 28.08.19 07:20 Сейчас в теме
(19)
Добавка (только что проверил): Если убрать content-type=application/jsob, то по-умолчанию встанет application/octet-stream
22. Lion_LexXx 1 28.08.19 11:05 Сейчас в теме
(20)
octet-stream


application/octet-stream стандарт пересылки, подразумевающий бинарное содержимое файлов?
21. Lion_LexXx 1 28.08.19 11:02 Сейчас в теме
(19)
Ответ техподдержки Яндекс:

Служба поддержки

Здравствуйте!

Вероятнее всего в вашем запросе генерируется некорректный URL, который приводит к ошибке 404 NOT FOUND.
Рекомендуем вам проверить работу с использованием cURL по примеру из документации: https://cloud.yandex.ru/docs/speechkit/tts/request#wav

Примеры использования 1С для работы с API вы можете найти в интернете, например:
https://ediweb.com/ru-ru/support/kb/403
https://helpme1c.ru/rabota-s-http-zaprosami-get-i-post-v-yazyke-1s-8-3-8-2-v-primerax#ref_c_6
23. RomanCrow13 95 28.08.19 11:05 Сейчас в теме
(21)
В общем я написал запрос к Curl и выполнил в 1С помощью ЗапуститьПриложение()
24. Lion_LexXx 1 28.08.19 12:48 Сейчас в теме
(19) Получилось!
В заголовок вставил:
	Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;");


Рабочий код:

	АдресСервера = "tts.api.cloud.yandex.net";	
	iamToken = "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХ";
	folderId = "ХХХХХХХХХХХХХХХ";
	
	ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows( СпособВыбораСертификатаWindows.Выбирать), Новый СертификатыУдостоверяющихЦентровWindows()); 
	
	СоединениеЯндекс = Новый HTTPСоединение(АдресСервера, 443, , , , 20, ssl, Неопределено);
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Authorization", "Bearer " + iamToken);
	Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;");
	
	СтрокаТела = 
	"text=Привет мир!" + 
	"&lang=ru-RU" + 
	"&folderId=" + folderId 
	;
	
	Запрос = Новый HTTPЗапрос("/speech/v1/tts:synthesize", Заголовки);
	
	Запрос.УстановитьТелоИзСтроки(СтрокаТела,КодировкаТекста.UTF8);
	ТелоКакСтрока = Запрос.ПолучитьТелоКакСтроку();
	
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);
	Сообщить("Ответ.КодСостояния " + Ответ.КодСостояния);
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
	ДвоичныеДанныеОтвет = Ответ.ПолучитьТелоКакДвоичныеДанные();
	ИмяФайла = "C:\yandex\speechYandex.ogg";
	ДвоичныеДанныеОтвет.Записать(ИмяФайла);
Показать
25. script 221 28.08.19 21:48 Сейчас в теме
Да ничего здесь сложного нет.

Посмотрите какие функции чаще всего выполняют пользователи:
1. Найти и открыть какой то документ.
2. Создать новый/справочник документ и заполнить его.
3. Сформировать отчет за период и с отборами.

Даже, описанная в этой статье, технология уже позволяет это реализовать.
Представьте это в виде расширения типа:
Бухгалтер говорит: Эй 1С, Найди и открой расходную номер 123 от 27.08.

Уже от этого бухи просто поплывут от изумления.
К 8-марта можно ради прикола сделать или 1-апреля
Lion_LexXx; RomanCrow13; acanta; +3 Ответить
26. RomanCrow13 95 29.08.19 02:15 Сейчас в теме
(25)
Хах)
В принципе интересно. Нужно придумать только, как в 1С захватить звук. Скорее всего надо писать внешнюю компоненту с использованием OpenAl. Попробую что-нибудь такое сделать)
Lion_LexXx; +1 Ответить
27. DO_WHILE_LOOP 340 29.08.19 10:52 Сейчас в теме
32. user1392870 13.04.20 10:42 Сейчас в теме
Касательно: Использование Yandex Speechkit для распознавания речи в 1С.
Меня интересует простое приложение, написанное на яндекс speechkit, куда можно было бы забросить звуковой файл в нужном формате, а на выходе получить текст. В приложении должна быть возможность оплаты по карте, например. Такого приложения я что-то пока не нашел. Вы не можете в этом помочь?
Оставьте свое сообщение
Вопросы с вознаграждением