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

05.04.20

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

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

Скачать исходный код

Наименование Файл Версия Размер
Синтез речи из текста с помощью Яндекс SpeechKit:
.epf 13,25Kb
11
.epf 13,25Kb 11 Скачать

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

См. также

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

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

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

36000 руб.

03.08.2020    16220    14    18    

14

Интеграция 1С и Битрикс 24 — модуль синхронизации для обмена задачами

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

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

5040 руб.

04.05.2021    18379    10    15    

16

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

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

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

22656 руб.

25.05.2021    13068    34    8    

13

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

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

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

25200 руб.

28.05.2015    85678    26    51    

50

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

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

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

12000 руб.

02.02.2021    16710    43    49    

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