Повышение качества синтеза речи TTS

Введение

Язык разметки синтеза речи (Speech Synthesis Markup Language) (SSML) — стандартизированный язык разметки на основе XML для управления синтезом речи. В контакт-центре SSML помогает сделать автоматические голосовые сообщения более естественными, выразительными и профессиональными. Теги позволяют задавать произношение, темп, высоту и громкость голоса, чтобы динамические данные — даты, денежные суммы и номера — звучали четко и правильно.

Предварительные условия

Для использования SSML настройте в контакт-центре учетную запись интеграции синтеза речи Google Cloud или IBM Watson.

Хотя SSML стандартизирован, рекомендуется ознакомиться с документацией вашего поставщика TTS:

Пример SSML в голосовом сценарии

Рассмотрим сценарий, в котором клиент звонит, чтобы подтвердить предстоящую запись на обслуживание. Дату записи и номер для обратного звонка нужно произнести естественно и понятно.

Создайте сценарий

Создайте новый голосовой сценарий или откройте существующий. В рабочем сценарии сведения о предстоящем визите клиента обычно получают с помощью блока Fetch URL, блока DB Executeили интеграции с CRM.

В следующем примере используются два блока Set Variable:

  • Дата записи — «2024-09-10»; она хранится в переменной appointment_date.
  • Номер, который нужно сообщить клиенту, — «18005551212»; он хранится в переменной callback_number.

Используйте SSML в блоке Play Prompt

Добавьте в сценарий блок Воспроизвести голосовое сообщение (Play Prompt) в том месте, где клиенту нужно сообщить сведения о записи. Внутри блока Воспроизвести голосовое сообщение (Play Prompt) используйте переменные в сообщении, добавив сегмент Голосовые вызовы.

Your appointment date of $(appointment_date) is confirmed. If you would like to contact the provider directly, please call $(callback_number).

Блок Play Prompt с исходным текстом без тегов SSML

Задайте формат даты

По умолчанию движок TTS может неправильно произнести дату из переменной. Например, значение «2024-09-10» в $(appointment_date), скорее всего, будет прочитано по символам: «two zero two four dash zero nine dash one zero», то есть «два ноль два четыре дефис ноль девять дефис один ноль».

Чтобы дата звучала естественно, используйте тег <say-as> с interpret-as="date". Он указывает движку произнести значение как дату: «{порядковое число дня} {месяц} {год}». Атрибут format должен соответствовать расположению года (y), месяца (m) и дня (d) в значении переменной. Части даты могут разделяться знаками препинания и/или пробелами; указывать эти разделители в атрибуте format не нужно.

<say-as interpret-as="date" format="yyyymmdd">$(appointment_date)</say-as>

Задайте формат номера телефона

Аналогично номер телефона, записанный непрерывной строкой цифр, может быть произнесен неправильно.

Для правильного чтения номера используйте тег <say-as> с interpret-as="telephone". Движок произнесет номер так, чтобы слушателю было удобно понять и записать его.

<say-as interpret-as="telephone">$(callback_number)</say-as>

Обновите сообщение и выберите голос TTS

Добавьте описанные теги форматирования в текст блока Play Prompt. Чтобы движок TTS обработал разметку, заключите сообщение целиком в теги <speak>.

Итоговый текст должен выглядеть следующим образом:

<speak>
Your appointment date of <say-as interpret-as="date" format="yyyy-mm-dd">$(appointment_date)</say-as> is confirmed. If you would like to contact the provider directly, please call <say-as interpret-as="telephone">$(callback_number)</say-as>.
</speak>

Блок Play Prompt с готовой разметкой SSML

Для работы тегов SSML блок должен использовать совместимый движок TTS. Откройте вкладку Язык в настройках блока. В параметре Default TTS Voice (голос TTS по умолчанию)выберите нужный голос своей интеграции, например Google Cloud TTS или IBM Watson.

Выбор интеграции TTS на вкладке языков

Другие распространенные способы использования SSML

Возможности SSML не ограничиваются форматированием дат и чисел. Полный перечень поддерживаемых тегов приведен в документации вашего поставщика TTS. Следующий пример показывает распространенные задачи контакт-центра: произнесение по символам, смысловое выделение и управление скоростью речи.

<speak>
  <!-- Spelling out Reference Numbers -->
  Your confirmation code is <say-as interpret-as="characters">XYZ09</say-as>.

  <!-- Adding Emphasis -->
  Please be aware that this change is <emphasis level="strong">permanent</emphasis>.
  
  <break time="500ms"/>

  <!-- Adjusting Speech Rate -->
  <prosody rate="slow">Please write down the following security PIN: 5 9 2 1.</prosody>

  <!-- Playing Pre-recorded Audio -->
  <audio src="https://www.example.com/sounds/brand_jingle.mp3">
    (Brand Jingle)
  </audio>

  <!-- Reading Currency Correctly -->
  Your total due is <say-as interpret-as="currency">$45.50</say-as>.

  <!-- Structuring with Paragraphs and Sentences -->
  <p>
    <s>First, verify the green light is on.</s>
    <s>Then, press the reset button.</s>
  </p>
</speak>

|