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

26.08.19

Интеграция - WEB-интеграция

Оказалось, что в этом нет ничего сложного.

     Господа! Зная, что здесь сидят мэтры 1С, прошу: не судите строго, это моя первая статья...

     Статья описывает свой небольшой опыт работы с Yandex Speechkit Cloud. Она не претендует на максимально развернутое сообщение об этой системе. Скорее, это даже немного художественная статья, переплетающаяся с технической.

     Однажды я задумал написать для себя проект: телеграм-бота, который помогает вести семейный бюджет. Вроде всего-ничего: арендовал vds на убунте 16.4, развернул postgresql 9.6 и, конечно же, сервер 1С 8.3.12...(не помню по памяти), накидал план-проект и, соответственно, приступил к работе. Во время работы вдруг пришла идея: а почему бы не сделать так: отправлять боту аудиосообщение с командой, скажем, "поступление 5 рублей", после этого речь должна будет преобразовываться в текст и обрабатывать команду? К моменту, когда пришла эта идея, основной модуль по обработке команд из текстовых сообщений был готов.

     Пришла идея и понеслось. Во-первых нужно было решить, какой использовать сервис, который будет преобразовывать речь в текст. Оказалось, что русскую речь преобразовывает только сервис Яндекса.

     Итак, поехали. Буду писать код по частям и комментировать. Код будет содержать также запросы в телеграм.

     Для начала нужно получить файл звукового сообщения с сервера телеграм. Для этого нужно выполнить два GET запроса. У первого запроса метод "getFile", в котором указывается один параметр - "file_id". Значение этого параметра содержится в структуре сообщения (читайте документацию телеграм апи). При выполнении этого запроса сервер телеграм находит нужный нам звуковой файл и дает ему временную уникальную ссылку, которую выдает в ответе. Второй запрос - это получение, непосредственно, самих двоичных данных файла. После получения сохраняем файл.

Звук = СтруктураСообщения.voice;
Запрос = Новый HTTPЗапрос(BotID + "/getFile?file_id=" + Звук.file_id);
Ответ = Соединение.Получить(Запрос);
СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(СтрокаОтвет);
Структура = ПрочитатьJSON(Чтение);
			
Запрос = Новый HTTPЗапрос("/file/" + BotID + "/" + Структура.result.file_path);
Ответ = Соединение.Получить(Запрос);
ДД = Ответ.ПолучитьТелоКакДвоичныеДанные();
			
Файл = ПолучитьИмяВременногоФайла("ogg");
ДД.Записать(Файл);

     На этом останавляваться не будем. Кому интересно - читайте документацию.

     Вот, у нас есть звуковой файл. Такие голосовые сообщения хранятся в формате .ogg, что очень удобно ввиду их небольших размеров, а также того, что Яндекс также по-умолчанию принимает именно этот формат файла. Теперь нам необходимо авторизоваться в Яндекс облаке. Во-первых, нужно похимичить с созданием платежного аккаунта, созданием каталога, назначении ему прав. Обо всём написано здесь. Четвертый пункт в этой инструкции гласит, что нужно получить IAM-токен. Здесь самое интереное: IAM-токен действителен в течение 12 часов. Получается, что его нужно периодически обновлять. Здесь описано, как это сделать. Для обновления IAM-токена нужен постоянный пользовательский OAuth-токен, который можно получить на той же странице, перейдя по ссылке в пункте 2 на вкладке API. Всё, самое сложное позади;)

     Так как IAM-токен действителен в течение 12 часов, то сначала я сделал регламентное задание. Но практика показала, что он действует меньше. Поэтому я сделал, чтобы он обновлялся при получении каждого голосового сообщения. Ничего страшного, пусть пашет;) Итак, для обновления токена создается https соединение с доменом "iam.api.cloud.yandex.net" и стандартными портами и выполняется один простой POST-запрос "/iam/v1/tokens". Заголовок один, который гласит, что мы отправляем данные в формате json. В теле запроса указываем один параметр "yandexPassportOauthToken" и в значение этого параметра указываем наш OAuth-токен. В ответе на такой запрос получаем новенький IAM-токен.

Процедура ОбновитьIAMЯндекс()
	
	СоединениеЯндекс = Новый HTTPСоединение("iam.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type","application/json");
	Запрос = Новый HTTPЗапрос("/iam/v1/tokens",Заголовки);
	СтрокаТела = "{""yandexPassportOauthToken"": """ + Константы.OAUTHТокен.Получить() + """}";
	Запрос.УстановитьТелоИзСтроки(СтрокаТела,КодировкаТекста.UTF8);
	
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);	
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаОтвет);
	СтруктураОтвета = ПрочитатьJSON(Чтение);
	
	Константы.IAMТокенЯндекс.Установить(СтруктураОтвета.iamToken);
	
КонецПроцедуры

     Итак, ещё одна часть завершена. Теперь, наконец, самое интересное - отравить яндексу запрос на распознавание речи. Ах да, ещё нюанс... Помните, что нужно было создать каталог в Яндекс облаке? Нам нужен ID этого каталога. Это совсем не сложно - смотрите здесь.

     И финишная прямая. Создаем новое https соединение с доменом "stt.api.cloud.yandex.net"и стандартными портами. Создаем POST-запрос "/speech/v1/stt:recognize/". В заголовках указываем стандартный "Content-Type=application/json", А также наш IAM-токен. Имя заголовка "Authorization", значение - "Bearer " + наш токен. В параметрах запроса только один обязательный - "folderId", в значение которого вписываем ID нашего каталога. О других параметрах читайте в документации. В тело запроса вставляем наши двоичные данные, полученные с сервера телеграм.

СоединениеЯндекс = Новый HTTPСоединение("stt.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
Заголовки = Новый Соответствие();
Заголовки.Вставить("Authorization", "Bearer " + Константы.IAMТокенЯндекс.Получить());
Заголовки.Вставить("Content-Type", "application/json");
Запрос = Новый HTTPЗапрос("/speech/v1/stt:recognize/?topic=general&folderId=" + Константы.ИДПапкиЯндекс.Получить() + "&lang=ru-RU",Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДД);
Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);					
СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
			
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(СтрокаОтвет);
СтруктураОтвета = ПрочитатьJSON(Чтение);
ТекстСообщения = СтруктураОтвета.result;

     Всё. В ответе на последний запрос будет результат - строка. После этого делаем с этой строкой всё, что душе угодно;)

     Итак, организовать распознавание речи в текст сделать не так уж сложно. Конечно, не во всяком бизнесе это пригодится. Но зато мне очень круто говорить своему боту, а он делает всё, что я ему скажу;)

     Полный листинг того, что получилось, прилагаю внизу. Если вам оказалась эта статья полезной и интересной, или же у вас есть объективные отзывы и комментарии, буду рад о них узнать. Если статья окажется полезной, то в дальнейшем напишу про прочие фишки, которые я использовал при создании бота, а, может, даже и про то, как этот бот создается. И ещё раз прошу: не судите строго.. Всем спасибо за внимание!

Функция ПолучитьТекстИзГолосовогоСообщения(СтруктураСообщения)
	Если СтруктураСообщения.Свойство("voice") Тогда
		// получаем уникальный код звукового файла
		Звук = СтруктураСообщения.voice;
		Запрос = Новый HTTPЗапрос(BotID + "/getFile?file_id=" + Звук.file_id);
		Ответ = Соединение.Получить(Запрос);
		СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
		Чтение = Новый ЧтениеJSON;
		Чтение.УстановитьСтроку(СтрокаОтвет);
		Структура = ПрочитатьJSON(Чтение);
		
		// получаем двоичные данные 
		Запрос = Новый HTTPЗапрос("/file/" + BotID + "/" + Структура.result.file_path);
		Ответ = Соединение.Получить(Запрос);
		ДД = Ответ.ПолучитьТелоКакДвоичныеДанные();	
		
		// обновляем IAM-токен
		ОбновитьIAMЯндекс();

		// получаем готовый результат
		СоединениеЯндекс = Новый HTTPСоединение("stt.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
		Заголовки = Новый Соответствие();
		Заголовки.Вставить("Authorization", "Bearer " + Константы.IAMТокенЯндекс.Получить());
		Заголовки.Вставить("Content-Type", "application/json");
		Запрос = Новый HTTPЗапрос("/speech/v1/stt:recognize/?topic=general&folderId=" + Константы.ИДПапкиЯндекс.Получить() + "&lang=ru-RU",Заголовки);
		Запрос.УстановитьТелоИзДвоичныхДанных(ДД);
		Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);						
		СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
			
		Чтение = Новый ЧтениеJSON;
		Чтение.УстановитьСтроку(СтрокаОтвет);
		СтруктураОтвета = ПрочитатьJSON(Чтение);			
		Возврат СтруктураОтвета.result;	
	Иначе
		Возврат Неопределено;	
	КонецЕсли;
КонецФункции

Процедура ОбновитьIAMЯндекс()
	
	СоединениеЯндекс = Новый HTTPСоединение("iam.api.cloud.yandex.net", 443, , , , 20, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type","application/json");
	Запрос = Новый HTTPЗапрос("/iam/v1/tokens",Заголовки);
	СтрокаТела = "{""yandexPassportOauthToken"": """ + Константы.OAUTHТокен.Получить() + """}";
	Запрос.УстановитьТелоИзСтроки(СтрокаТела,КодировкаТекста.UTF8);
	
	Ответ = СоединениеЯндекс.ОтправитьДляОбработки(Запрос);	
	СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку();
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(СтрокаОтвет);
	СтруктураОтвета = ПрочитатьJSON(Чтение);
	
	Константы.IAMТокенЯндекс.Установить(СтруктураОтвета.iamToken);
	
КонецПроцедуры

26.08.2019 обновлено. В процедуре обновления IAM-токена изменил метод получения ответа. Теперь вместо создания временного файла использую объект HTTPОтвет.

https json YandexSpeechKitCloud

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16176    14    18    

14

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18285    10    15    

16

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13035    34    8    

13

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    85560    26    51    

50

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16677    43    49    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. for_sale 974 26.08.19 10:25 Сейчас в теме
Желательно давать ссылку на оригинальный апи от производителя, этот сайт тлгрм, насколько я понимаю, с телеграмом не аффилирован и там могут быть как минимум устаревшие данные а как максимум что-нибудь злонамеренное.
3. RomanCrow13 111 26.08.19 10:32 Сейчас в теме
2. for_sale 974 26.08.19 10:28 Сейчас в теме
Но в целом спасибо за статью, интересно!
4. ltfriend 964 26.08.19 13:29 Сейчас в теме
А зачем в ОбновитьIAMЯндекс используется временный файл?
7. RomanCrow13 111 26.08.19 14:08 Сейчас в теме
(4)На самом деле правда не зачем. Просто хотел показать, что так тоже можно. Исправлю, чтобы глаза не мозолило)
5. AzagTot 40 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; ixijixi; THEBESTolo4b; maxopik2; araatt; YanTsys; tricolor; +7 Ответить
30. ixijixi 1810 31.10.19 11:58 Сейчас в теме
(13) Больше? В смысле, он и сейчас у Вас там есть? ))
31. chebser 4 01.11.19 11:17 Сейчас в теме
(30) у меня нет, но в чужом коде попадался
6. skv_79 362 26.08.19 14:05 Сейчас в теме
8. Darklight 32 26.08.19 15:29 Сейчас в теме
Здорово, но, как мне кажется - тут всё упрётся в первую очередь в качество распознавания речи. На мой взгляд, оно должно идти по заранее заданной карте ожиданий ключевых слов (что-то типа карты правил синтаксического разбора, но для звука) - понятно, что внутри сервиса Яндекса есть своя такая карта с кучей вариантов паттернов произношение, но она заточена на отдельные слова и простые фразы, а не на специфику бизнес-логики команд. Вот если бы можно было загружать свою карту лексического разбора (свою семантику команд) и получать ответ уже скомпонованный строгим образом согласно данной семантики - вот это было бы здорово и продвинуло бы применение данного сервиса в реальных задачах голосового управления. А так всё будет сводится к тому, чтобы писать сложные лексические анализаторы той абракадабре, которую пришлёт сервис распознавания - причём без каких-либо вариантов ветвления распознавания - когда получается околесица и хочется получить иные варианты толкования в надежде что они окажутся более подходящими. А значит такое управление будет часто давать сбои - что очень негативно скажется на его практическом применении.

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

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

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



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

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

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

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

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

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

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

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

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

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


Тогда можно использовать что-то типа: https://developer.microsoft.com/ru-ru/windows/speech
14. Darklight 32 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 156 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 111 28.08.19 06:30 Сейчас в теме
(18)
Привет! Столкнулся с этой же проблемой. Хотел сделать синтезирование речи, чтобы потом сообщали об остатках аудиосообщением. Хотя в Curl всё отлично срабатывает.
Но, во-первых, вижу, что ты отправляешь запрос не правильно. Нужно вписывать параметры в тело запроса, а не в сам запрос. Так запрос должен быть просто "/speech/v1/tts:synthesize/". Тело пишешь строкой (по аналогии получения iam-токена), далее отправляешь для обработки.
Но и это у меня не срабатывает. Я грешу на то, что текст сообщения нужно перекодировать в url, но и даже это у меня не сработало. Скорее всего нужно правильно написать строку параметров запроса...
20. RomanCrow13 111 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 111 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 128 28.08.19 21:48 Сейчас в теме
Да ничего здесь сложного нет.

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

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

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