Синтез речи на базе Yandex SpeechKit Cloud — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
м (Использование компонента)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 20: Строка 20:
 
Начиная с версии Oktell 2.12, в служебных и IVR сценариях появился компонент "Синтез речи". Компонент озвучивает заданную фразу (синтезирует речь) с помощью сервиса Yandex SpeechKit. Позволяет сразу воспроизвести файл в линию, либо сгенерировать файл для последующего использования. В компоненте можно включить кэш, тем самым сохраняя все сгенерированные файлы в папку \Oktell\Server\LocalStorage\SynthesisCache. Так как каждый запрос к сервису Яндекс платный, то включенный кэш позволяет сэкономить ваши средства.
 
Начиная с версии Oktell 2.12, в служебных и IVR сценариях появился компонент "Синтез речи". Компонент озвучивает заданную фразу (синтезирует речь) с помощью сервиса Yandex SpeechKit. Позволяет сразу воспроизвести файл в линию, либо сгенерировать файл для последующего использования. В компоненте можно включить кэш, тем самым сохраняя все сгенерированные файлы в папку \Oktell\Server\LocalStorage\SynthesisCache. Так как каждый запрос к сервису Яндекс платный, то включенный кэш позволяет сэкономить ваши средства.
  
Техническая документация по компоненту: [http://wiki.oktell.ru/Компоненты_сценариев_IVR#.D0.A1.D0.B8.D0.BD.D1.82.D0.B5.D0.B7_.D1.80.D0.B5.D1.87.D0.B8 http://wiki.oktell.ru/Компоненты_сценариев_IVR#Синтез_речи]
+
Техническая документация по компоненту: [[Компоненты_сценариев_IVR#.D0.A1.D0.B8.D0.BD.D1.82.D0.B5.D0.B7_.D1.80.D0.B5.D1.87.D0.B8|Синтез речи]]
  
  
Строка 68: Строка 68:
  
 
Чтобы использовать синтез речи для преднабора необходимо вначале сгенерировать файл с помощью компонента "Синтез речи" и сохранить путь к этому файлу в переменную (в соответствующем свойстве). Далее указать этот файл в компоненте "Воспроизведение с преднабором".
 
Чтобы использовать синтез речи для преднабора необходимо вначале сгенерировать файл с помощью компонента "Синтез речи" и сохранить путь к этому файлу в переменную (в соответствующем свойстве). Далее указать этот файл в компоненте "Воспроизведение с преднабором".
 
==Альтернативный вариант синтеза речи==
 
 
Для версий ниже Oktell 2.12 вы можете использовать компонент веб-запрос для отправки и получения запроса с сервиса Yandex SpeechKit. Сценарий выглядит следующий образом:
 
 
 
[[Файл:Синтез речи Yandex SpeechKit Cloud 007.png|center]]
 
 
 
Компонент "'''Старт'''". Получает переданный текст для озвучки и записывает его в переменную '''text'''.
 
*Параметр запуска - переменная '''text''' (строковая)
 
 
 
Компонент "'''SpeechKit Key'''". Определяет API-ключ для выполнения Web-запроса на сервисы Yandex. Получить API-ключ на использование сервиса можно в [https://developer.tech.yandex.ru/?utm_source=partn&utm_medium=wiki&utm_campaign=oktell кабинете разработчика].
 
*переменной '''key''' (строковая) присваивается значение API-ключа.
 
 
 
Компонент "'''Web запрос'''". Выполняет GET-запрос на сервис Yandex SpeechKit и получает бинарные данные звукового файла.
 
*URL - выражение:
 
<nowiki>'https://tts.voicetech.yandex.net/generate?text='+[text]+'&format=mp3&lang=ru-RU&speaker=zahar&key='+[key]</nowiki>
 
*Метод - GET
 
*Режим работы - Обрыв по таймауту
 
*Таймаут, сек - 30
 
<span style="color:red">ВНИМАНИЕ: Данный режим работы накладывает ограничение на время скачивания звукового файла. Если вы хотите озвучить большой текст, то рекомендуется увеличить время таймаута. Как вариант, установите режим работы - '''Ожидание результата''', но в этом случае время время работы компонента может быть неограниченным, что приведет к тому, что абонент устанет ждать и положит трубку.
 
*Тип ответа - Текст
 
*Ответ в переменную - переменная '''response''' (строковая)
 
*Кодировка ответа - Текущая кодовая страница Windows
 
 
 
[[Файл:Синтез речи Yandex SpeechKit Cloud 004.png|center]]
 
 
 
Компонент "'''Запись'''". Используется для генерации имени файла.
 
*Сохранение файла - Сгенерировать автоматически
 
*Каталог - CustomCategory\Local\Синтез речи YandexSpeechKit Cloud\DefaultCategory
 
*Начинать новую папку - Никогда
 
*Сохранить путь в переменную - Абсолютный путь
 
*Путь в переменную - переменная '''filename''' (строковая)
 
*Макс время, с - 1
 
 
 
Компонент "'''Удаляем файл (если есть)'''". Компонент удаляет запись от предыдущего компонента, так как его целью была генерация названия файла. Сам временный файл записи фактически не нужен, поэтому и происходит его удаление.
 
*Путь - переменная '''filename'''
 
*Тип объекта - Файл
 
*Операция - Удалить
 
 
 
Компонент "'''wav->mp3'''". Меняет название файла путем подмены расширения на mp3. У названия файла удаляются последние три символа (это может быть wav или mp3, информацию мы изначально не знаем), а затем добавляет расширение mp3. Таким образом, название будет гарантированно иметь расширение mp3.
 
* переменной '''filename''' присваивается выражение
 
remove([filename],len([filename])-3,3)+'mp3'
 
 
 
[[Файл:Синтез речи Yandex SpeechKit Cloud 005.png|center]]
 
 
 
Компонент "'''Сохраняем данные в файл'''". Записывает все полученные данные от сервиса Yandex SpeechKit Сloud в файл со сгенерированным названием.
 
*Путь - переменная '''filename'''
 
*Тип объекта - Файл
 
*Операция - Дописать данные в конец
 
*Данные - переменная '''response'''
 
*Кодировка - Текущая кодовая страница Windows
 
 
 
Компонент "'''Воспроизводим файл'''". Воспроизводит звуковой файл в линию абонента.
 
*Режим - Файл полностью
 
*Файл - переменная '''filename'''
 
 
 
Компонент "'''Файловая операция'''". Удаляет полученную запись после воспроизведения для экономии места на диске. Предполагается, что файл с озвученным текстом далее не понадобится.
 
*Путь - переменная '''filename'''
 
*Тип объекта - Файл
 
*Операция - Удалить
 
 
 
[[Файл:Синтез речи Yandex SpeechKit Cloud 006.png|center]]
 
 
 
Компонент "'''Стоп'''". Для возврата в родительский сценарий (из которого запустился сценарий синтеза речи) необходимо указать возврат управления.
 
*Возврат управления - Да.
 
 
 
Для использования сервиса используйте компонент "'''Запуск сценария'''" в IVR сценарии. В свойствах компонента выберите
 
 
*'''Тип запуска''' - Вложенный
 
*'''Сценарий''' - выберите сценарий "'''Синтез речи Yandex SpeechKit Cloud'''"
 
*'''Параметр запуска''' - введите ваш текст для воспроизведения. В примере, строка "''Здравствуйте! Вас приветствует компания Телефонные Системы!''"
 
*'''Возврат управления''' - Да
 
 
 
[[Файл:Синтез речи Yandex SpeechKit Cloud 002.png|center]]
 
 
 
'''Скачать сценарий:''' [http://wiki.oktell.ru/images/5/51/%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_Yandex_SpeechKit_Cloud.oscr Синтез речи Yandex SpeechKit Cloud.oscr] (собран на версии 2.11.141204)
 

Текущая версия на 11:56, 31 марта 2023

Наверх    [Oktell 2.7+]

Введение

Yandex SpeechKit – сервис распознавания и синтеза речи платформы Яндекс.Облако, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про синтез речи.

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

Синтез речи Яндекса позволяет выбрать:

  • мужской или женский голос для озвучивания;
  • эмоции: добрый, злой, нейтральный голос.

Документация по API распознавания и синтеза речи Yandex SpeechKit доступна на сайте https://cloud.yandex.ru/docs/speechkit/


Использование компонента

Начиная с версии Oktell 2.12, в служебных и IVR сценариях появился компонент "Синтез речи". Компонент озвучивает заданную фразу (синтезирует речь) с помощью сервиса Yandex SpeechKit. Позволяет сразу воспроизвести файл в линию, либо сгенерировать файл для последующего использования. В компоненте можно включить кэш, тем самым сохраняя все сгенерированные файлы в папку \Oktell\Server\LocalStorage\SynthesisCache. Так как каждый запрос к сервису Яндекс платный, то включенный кэш позволяет сэкономить ваши средства.

Техническая документация по компоненту: Синтез речи


Для использования системы синтеза речи Yandex SpeechKit выполните следующие действия:


Шаг 1. Получить авторизационные данные на использование сервиса Yandex SpeechKit.

  • Выполните шаги 1-5 инструкции по авторизации в API для получения идентификатора каталога
  • Войдите в ваш аккаунт на Яндексе или Яндекс.Коннекте
  • Получите OAuth-токен в сервисе Яндекс.OAuth. Для этого перейдите по ссылке, нажмите Разрешить и скопируйте полученный OAuth-токен.


Шаг 2. Перейдите в Администрирование / Общие настройки / Распознавание речи Yandex SpeechKit Cloud. Введите полученные значения OAuth-токен и Идентификатор каталога в соответствующие поля


Yandex ASR Cloud 001.png


Нажмите "Сохранить". Теперь вы можете использовать синтез речи в сценариях.


Шаг 3. Рассмотрим пример использования синтеза речи в IVR сценарии.


Синтез речи 001.png


Компонент "Синтез речи". Озвучивает приветствие абоненту и сохраняет выбор абонента в переменную.

  • Режим — Воспроизвести. В этом режиме компонент сразу воспроизводит сгенерированный файл в текущую линию.
  • Текст — строка "Здравствуйте! Вас приветствует компания Телефонные Системы! Для соединения с менеджерами нажмите 1. Для соединения с сотрудниками технической поддержки нажмите 2.". Введенный текст будет передан на сервера Yandex для озвучивания.
  • Голос — Zahar. Настройка отвечает за синтезируемый голос: Zahar - мужской голос, Jane -женский. Возможно указание другого значения, если оно поддерживается сервисом Yandex SpeechKit.
  • Эмоция — По умолчанию. Настройка отвечает за используемую окраску голоса. Возможные варианты: good, neutral, evil, mixed.
  • Кэш — Использовать. Если использовать кэш, то система попытается найти файл с озвученным текстом среди сгенерированных ранее (находятся в папке \Oktell\Server\LocalStorage\SynthesisCache). Рекомендуется всегда включать в целях экономии средств.
  • Таймаут ожидания ответа, с — 5. Максимальное время ожидания ответа от серверов Яндекс.
  • Символы прерывания — строка "1, 2". Если абонент нажмет на указанные символы прерывания, компонент сохранит их в буфер и перейдет к следующему блоку.
  • Буфер для DTMF — переменная ввод (строковая). Переменная, в которую сохранится введенный символ прерывания.
  • Очистить буфер — Да. Указывает на то, что буфер предварительно будет очищен.


Компонент "Меню". Маршрутизирует абонента на выбранную группу операторов.

  • Аргумент — переменная Ввод
  • Значения —
1 — на компонент "Переключение 1"
2, прочее - на компонент "Переключение 2"

Настройка дальнейшей маршрутизации не рассматривается.

Чтобы использовать синтез речи для преднабора необходимо вначале сгенерировать файл с помощью компонента "Синтез речи" и сохранить путь к этому файлу в переменную (в соответствующем свойстве). Далее указать этот файл в компоненте "Воспроизведение с преднабором".