Использование 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    15745    10    17    

11

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

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

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

5040 руб.

04.05.2021    17548    6    15    

13

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

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

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

12000 руб.

02.02.2021    16358    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25739    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88579    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. for_sale 971 26.08.19 10:25 Сейчас в теме
Желательно давать ссылку на оригинальный апи от производителя, этот сайт тлгрм, насколько я понимаю, с телеграмом не аффилирован и там могут быть как минимум устаревшие данные а как максимум что-нибудь злонамеренное.
3. RomanCrow13 111 26.08.19 10:32 Сейчас в теме
2. for_sale 971 26.08.19 10:28 Сейчас в теме
Но в целом спасибо за статью, интересно!
4. ltfriend 954 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 1775 31.10.19 11:58 Сейчас в теме
(13) Больше? В смысле, он и сейчас у Вас там есть? ))
31. chebser 4 01.11.19 11:17 Сейчас в теме
(30) у меня нет, но в чужом коде попадался
6. skv_79 353 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 1303 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, куда можно было бы забросить звуковой файл в нужном формате, а на выходе получить текст. В приложении должна быть возможность оплаты по карте, например. Такого приложения я что-то пока не нашел. Вы не можете в этом помочь?
Оставьте свое сообщение