Синтез речи из текста с помощью Яндекс SpeechKit

05.04.20

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

В статье описан процесс подключения Яндекс SpeechKit API и программная реализация синтеза речи из текста с помощью этого API. Тестировалось на релизе платформы 8.3.16.1224. Может использоваться в любой конфигурации. Синтез речи может использоваться для самых разных целей, в моём случае потребовалось перевести лекции из текстовых файлов в звук

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Синтез речи из текста с помощью Яндекс SpeechKit:
.epf 13,25Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

Disclaimer: на Инфостарте есть статья описывающая распознавание речи в текст:

infostart.ru/public/1113219/

Сервис Яндекс SpeechKit (cloud.yandex.ru/services/speechkit) позволяет перевести текст в звук и сохранить в файле формата .ogg.

Такую операцию можно совершить online на странице сервиса, но при этом есть определённые ограничения.

Во-первых, объём текста не может превышать 5000 символов, во-вторых иногда операция синтезирования речи зависает без видимых причин и приходится дробить текст на ещё более мелкие части.

В результате перевод более-менее объёмного текста в голос может превратиться в весьма нудную работу.

Слава Яндексу, у сервиса есть свой API и можно автоматизировать эту рутину.

Для того, чтобы воспользоваться API, необходимо:

1) иметь логин Яндекс

2) получить OAuth Токен, см. пункт 1 по ссылке: cloud.yandex.ru/docs/cli/quickstart#install

3) имея OAuth Токен, необходимо получить iamToken, этот токен имеет время жизни не более 12 часов, код для получения:

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

4) получить folderId, как это сделать описано тут:

cloud.yandex.ru/docs/resource-manager/operations/folder/get-id

5) пройти на страницу биллинга https://console.cloud.yandex.ru/billing и пройти регистрацию, для этого потребуется указать реквизиты банковской карты, для проверки карты будет списано 2руб.(и сразу же возвращены).

Всё. После выполнение всех регистраций можно синтезировать речь.

Пример кода:

Процедура СинтезироватьИЗаписатьФайл(ИсходныйТекст, ИмяФайла, Голос, ПрерыватьПриОшибке)
	
	ЗащищенноеСоединениеOpenSSL = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС);
	
	HTTPСоединение = Новый HTTPСоединение("tts.api.cloud.yandex.net",443,,,,,ЗащищенноеСоединениеOpenSSL,Ложь);
	
	СтрокаЗапроса = "speech/v1/tts:synthesize";
	
	HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Bearer " + iamToken);
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;");
	
	ТекстЗапроса = 
	"text=" + Экран(ИсходныйТекст) +
	"&lang=ru-RU" +
	"&speed=1" +
	"&voice=" + Голос +
	"&emotion=good" +
	"&folderId=" + folderId
	;
	
	HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса);
	HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	Если HTTPОтвет.КодСостояния = 200 Тогда
		БинарныеДанные = HTTPОтвет.ПолучитьТелоКакДвоичныеДанные();
		БинарныеДанные.Записать(ИмяФайла);
	Иначе
		ТекстОшибки = "Что-то пошло не так! Код состояния = " + СокрЛП(HTTPОтвет.КодСостояния) + "! " + HTTPОтвет.ПолучитьТелоКакСтроку();
		
		Если ПрерыватьПриОшибке Тогда
			Сообщить(ТекстОшибки);
			Сообщить(ИсходныйТекст);
			Сообщить("===");
			Сообщить(Экран(ИсходныйТекст));
			ВызватьИсключение ТекстОшибки;
		Иначе
			Сообщить(ТекстОшибки);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция Экран(ИсходныйТекст)
	
	Возврат КодироватьСтроку(ИсходныйТекст, СпособКодированияСтроки.КодировкаURL);
	
КонецФункции

 

Всё. Спасибо за внимание :-)

синтез речи SpeechKit

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    3224    5    0    

11

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    35360    70    45    

30

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

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

57600 руб.

26.11.2024    2931    2    3    

5

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4970    5    2    

6

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

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

36000 руб.

03.08.2020    19380    24    22    

20

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1175    7    2    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1392870 13.04.20 10:43 Сейчас в теме
Касательно: Использование Yandex Speechkit для распознавания речи в 1С.
Меня интересует простое приложение, написанное на яндекс speechkit, куда можно было бы забросить звуковой файл в нужном формате, а на выходе получить текст. В приложении должна быть возможность оплаты по карте, например. Такого приложения я что-то пока не нашел. Вы не можете в этом помочь?
2. m0zg153 67 13.04.20 18:19 Сейчас в теме
(1) Подобные преобразования речи в текст описаны в публикации https://infostart.ru/public/1113219/
Оставьте свое сообщение