Налаштування Azure Neural TTS: голоси, SSML, потоковий синтез

Синтез мовлення в продукті часто звучить роботом на живих фразах — клієнт кидає слухавку, а бот втрачає сенс. Ми налаштовуємо нейромережеві голоси під ваш сценарій: інтонації, паузи, правила вимови, потокову видачу звуку. На виході — природне мовлення й передбачувана поведінка на будь-яких фразах.
Часті запитання

Чому Azure Neural TTS звучить роботом на живих фразах

На тестовій фразі Azure Neural TTS звучить чисто, а на живій репліці — ламається: наголос з'їжджає, пауза стає посеред словосполучення, до кінця довгого абзацу темп пливе.

Замовник чує це в першому ж ролику, а команда потім переозвучує фрагменти вручну, тому що правити готову доріжку дорожче, ніж переробити розмітку.

Перше джерело дефектів — наголоси в омографах, іменах і абревіатурах. Синтезатор вибирає варіант за частотною моделлю, а не за змістом фрази, тому в тексті про нерухомість «замок» прочитається як будівля, а назва компанії — по літерах.

Це лікується не правкою сценарію, а словником вимов і розміткою наголосів на етапі підготовки тексту.

Друге — просодія: точки й коми дають однакові паузи там, де потрібна смислова, переліки та вставні слова читаються на одному подиху. У діалозі додається втрата темпу: репліки синтезуються окремо, і інтонація питання не стикується з відповіддю.

Третє — обриви на довгих репліках: якщо різати текст по межі запиту, інтонаційний контур рветься посередині, і слухач чує склейку.

Усі три дефекти проявляються тільки на живому матеріалі — на сценарних фразах їх не зловити. Далі розбираємо, як це закривається: підбір голосу під завдання, словники й просодична розмітка, потоковий синтез без розривів фрази.

Що дає налаштований синтез мовлення: тон, темп, природність

Налаштований синтез перевіряємо не на одній гарній фразі, а на контрольній вибірці реплік: службових, довгих, з числами й абревіатурами. Природність синтезу тут — вимірювана величина: частка реплік, зрозумілих слухачем з першого разу, без перепитування.

До налаштування вона просідає саме на довгих фрагментах, де втрачається інтонаційний контур і людина просить повторити.

Рівний темп і паузи в озвученні — другий пункт перевірки. Розмітка пауз іде за смисловими межами, а не за формальними знаками: репліка з кількох речень звучить як одне висловлювання, і слухач встигає обробити думку до наступної. Паузи перестають бути випадковими і стають там, де справді закінчується смисл, а не речення.

Третій пункт — єдине звучання голосу на всіх каналах. Один і той самий голос в автовідповідачі, додатку й навчальному записі має збігатися за висотою, швидкістю й манерою вимови термінів.

Якщо абонент чує двох різних дикторів, він перестає впізнавати сервіс, і все налаштування втрачає сенс.

Четвертий — розуміння мовлення на слух у шумному середовищі та в записі. Прослуховування на одній і тій самій вибірці показують, скільки разів просять повторити і скільки команд виконують після першого озвучення.

На виході отримуємо не «більш живий голос», а передбачуваний результат: рівний темп у довгих репліках, єдине звучання на всіх каналах і меншу частку перепитувань у діалозі.

Способи синтезу мовлення: порівняння режимів і обмежень

Режим синтезу вибирають не за красою звучання, а за профілем навантаження. Один і той самий голос у реальному часі віддає аудіо частинами, пакетний синтез ставить завдання в чергу, а заздалегідь підготовлені репліки йдуть миттєво. Нижче — робочі варіанти й те, де кожен упирається в обмеження.

Варіант Коли підходить Обмеження
Потоковий синтез у реальному часі Діалог з користувачем, озвучення відповідей в інтерфейсі, підказки Аудіо надходить фрагментами — потрібен буфер і коректне дозбирання на клієнті; частина елементів розмітки недоступна; кількість одночасних сесій обмежена квотою сервісу
Пакетний синтез довгих текстів Озвучення курсів, документів, подкастів Асинхронний: результат забирається за ідентифікатором завдання, потрібен контроль статусів і повтор при збої
Предсинтез і сховище готових фраз Привітання, меню, статичні репліки, повторювані сценарії Застаріває при зміні голосу або правці тексту — потрібна інвалідація за версією репліки
Локальний синтез на пристрої Робота без мережі, сценарії з чутливими даними Набір голосів вужчий, якість нижча за серверні нейронні, розмітка урізана

Розмітка — другий шар обмежень. Паузи, темп, наголоси, вимова абревіатур і чисел підтримуються не скрізь: повний набір дають серверні нейронні голоси, потокові та локальні сценарії — частково.

Тому підготовку тексту до озвучення ведемо до синтезу: нормалізуємо числа й скорочення, розставляємо паузи, і тільки потім вибираємо голос — інакше правка заднім числом ламає вже зібраний предсинтез.

Перед запуском проганяємо навантажувальний тест на профілі, близькому до бойового: скільки одночасних сесій тримає потоковий режим, як поводиться черга при піку, що відбувається з готовими фразами при зміні голосу.

Обмеження квот і довжини запиту в Azure Neural TTS задаються на рівні сервісу й різняться за режимами — це фіксуємо в схемі заздалегідь, разом із буферами, повторами й правилами інвалідації.

Як проходить налаштування Neural TTS під ваш сценарій

Налаштування синтезу — це не вибір голосу з каталогу. Neural TTS рівно звучить на нейтральних фразах і ламається на довгих числах, абревіатурах, латиниці й назвах — а саме вони найчастіше й потрапляють у репліки.

Тому починаємо з аудиту того, що система буде вимовляти в реальності, а не з демонстраційних прикладів.

  1. Аудит сценаріїв озвучення. Вивантажуємо реальні тексти: репліки діалогу, номери замовлень, адреси, одиниці вимірювання, терміни. Позначаємо типи фраз, які звучать неправильно, — це карта робіт.
  2. Підбір голосу й стилю. Порівнюємо кандидатів на одних і тих самих фразах з вашої вибірки, а не на еталонних прикладах постачальника: слухаємо найгірші випадки, а не найкращі.
  3. Словник вимов. Заводимо правила для абревіатур, дат, чисел, телефонів і назв: де читати по літерах, де за складами, де змінювати наголос.
  4. Розмітка SSML. Налаштовуємо паузи, темп, інтонацію питання й твердження, зміну голосу всередині репліки — там, де смисл важливіший за рівність звучання.
  5. Потоковий синтез. Розбиваємо відповідь на фрагменти й віддаємо перший у звук, не чекаючи кінця тексту: голосовий бот починає говорити одразу, а не після повної генерації.
  6. Перевірка озвучення на реальних фразах. Проганяємо еталонну вибірку, слухаємо й фіксуємо регресійний набір — після кожної правки словника він перевіряється заново.
  7. Передача налаштувань. Віддаємо словники, шаблони розмітки, довідник голосів і тестовий набір: ваша команда додає нові фрази, не перезбираючи все заново.

Профілі голосів, правила вимови й регламенти

Кожне впровадження синтезу мовлення закінчується не показом голосу, а комплектом артефактів, якими команда замовника користується далі без нас. Нижче — мінімальний набір, який передаємо разом із працюючою інтеграцією на Azure Neural TTS.

  • Набори голосів під сценарії. Для кожного каналу — телефония, озвучення відео, короткі повідомлення — зафіксовано диктора, темп і манеру; зміна голосу в одному каналі не зачіпає інші.
  • Словники вимови термінів. Бренди, абревіатури, артикули й одиниці вимірювання винесено з коду в окремий файл: правка вимови не потребує нової збірки додатка.
  • Правила нормалізації тексту. Описано, як числа, дати, латиниця й дефіси перетворюються на вимовний рядок, — щоб артикул «А-1024» не читався як віднімання.
  • Схема підключення синтезу. Куди звертається сервіс-споживач, як передаються ключі, де буферизується звук і що відбувається при обриві зв'язку або затримці відповіді.
  • Регламент експлуатації. Ліміти за обсягом символів, порядок ротації ключів, поведінка при деградації сервісу й відповідальний за зміни голосового складу.
  • Набір еталонних фраз. Три-чотири десятки записів з очікуваним результатом: після правки словника або голосу прогін показує, що саме змінилося.

Конфігурації, словники й схему передаємо в репозиторії, а не описом у листуванні: зміни голосового складу проходять рев'ю й відкочуються так само, як код.

Кейс: як прибрали обриви й роботизовану інтонацію

Голосовий асистент у підтримці озвучував статуси заявок і підказки операторам прямо в момент розмови. Синтез ішов через Azure Neural TTS, але на потоковій видачі довгі фрази рвалися: людина чула початок і тишу. Частка реплік, які абонент не розбирав з першого разу, сягала 13%.

Третина звернень у підтримку була про обриви мовлення. Час до першого звуку в діалозі сягав двох секунд — абонент встигав повторити питання, і сценарій втрачав нить.

Що змінили

  • Тексти перевели в SSML: розставили паузи між смисловими блоками, обмежили темп на довгих номерах заявок, додали словник вимов для абревіатур і артикулів.
  • Видачу перевели на потоковий синтез із передзавантаженням першого фрагмента — звук стартує, не чекаючи розбору всієї фрази.
  • Часті репліки винесли в локальний буфер готових фраз, голос синхронізували з брендом за тембром і темпом.
  • Додали телеметрію: час до першого фрагмента, частка переривань і перепитувань за кожною фразою, з автоматичним відкатом на попередній профіль голосу при деградації.

Після доопрацювання обриви в потоці — 0,4% проти 12%, перепитування — 4%, час до першого звуку — 0,3–0,4 с. Звернення в підтримку щодо якості озвучення скоротилися втричі, і діалог став відповідати в темпі розмови, а не після паузи.

Чим потоковий синтез відрізняється від пакетного

Пакетний синтез працює з текстом, який відомий цілком: движок отримує весь блок і повертає готовий аудіофайл. Затримка до першого звуку тут складається з часу генерації всього фрагмента, зате відтворення йде без розривів, а результат можна прослухати й забракувати до публікації.

Потоковий синтез віддає звук частинами в міру надходження тексту — движок починає говорити, поки решта відповіді ще тільки формується. Azure Neural TTS підтримує обидва режими, і різниця між ними не в якості голосу, а в тому, у який момент надходить звук.

Саме потік дає озвучення в реальному часі: затримка відповіді голосом падає до десятих часток секунди замість секунд.

Варіант Коли підходить Обмеження
Пакетний Текст відомий заздалегідь: статті, інструкції, меню, навчальні матеріали Відповідь починається тільки після генерації цілого блоку
Потоковий Діалог, де людина чекає реакції: асистент, голосова навігація, читання відповіді моделі Немає готового файлу для прослуховування до запуску, потрібен буфер на стиках фраз
Гібрид Часті репліки («не зрозумів», «секунду») готуються заздалегідь, решта синтезується на ходу Потребує реєстру заготовок і логіки вибору між двома шляхами

Вибір визначається тим, хто чекає звуку. Якщо аудіо йде у файл, у подкаст або в запис розмови — пакетний режим дешевший за ресурсами й простіший у налагодженні, там затримка не видна отримувачу.

Якщо людина слухає відповідь у момент розмови, пакетна генерація чутна як пауза: користувач сприймає її як «система зависла» і перепитує, що ламає сценарій цілком.

На практиці гібрид закриває майже всі завдання: короткі службові фрази й привітання синтезуються заздалегідь і лежать готовими, а змістова частина — відповідь на питання, фрагмент документа, ім'я — йде потоком.

Так основний сценарій відповідає миттєво, а довгі рідкісні репліки не займають пам'ять заздалегідь підготовленими файлами.

Питання, які задають перед налаштуванням синтезу

Перед налаштуванням синтезу на Azure Neural TTS спливають одні й ті самі питання — про ризики, а не про технологію: що доведеться переробляти, як це позначиться на випущеному контенті й хто відповідає за результат.

Чи можна замінити голос, не переозвучуючи весь архів?

Так. Голос — параметр запиту до синтезу, а не властивість готового файлу. Опубліковані записи залишаються робочими, перезбираються тільки ті, де заміна справді потрібна.

Що буде з уже налаштованим синтезом при міграції?

Переносимо словник вимов, шаблони розмітки й логіку реплік, потім звіряємо старий і новий голос на еталонних фразах. Перемикання йде частинами, відкат на попередній сервіс доступний до кінця звірки.

Де буде звучати озвучення — на всіх пристроях?

Синтез віддає звичайний аудіофайл або потік, тому запис звучить і на смартфонах, і на старих плеєрах, і в розумних колонках. Окремо перевіряємо розбірливість на слабких динаміках.

Хто готує тексти до озвучення?

Можемо взяти на себе: розставляємо наголоси, розкриваємо скорочення, перетворюємо таблиці й числа в читабельні фрази, вичищаємо службові позначки. Якщо тексти готує ваша редакція, віддаємо правила оформлення й словник.

Хто відповідає за вимову назв і термінів?

Терміни, бренди й абревіатури заносимо в словник вимов і фіксуємо еталонний запис. Приймання йде на вибірці: ви слухаєте спірні фрагменти й підтверджуєте їх до публікації.

Обговоримо завдання синтезу мовлення під ваш продукт

Щоб оцінка проєкту синтезу спиралася на ваші дані, а не на середні цифри, достатньо невеликого набору матеріалів. Опишіть завдання озвучення так, як воно живе в продукті: де звучить голос, хто його чує і що відбувається при затримці репліки. За ними ми повернемося з планом впровадження синтезу й терміном.

  • Приклади реальних текстів: репліки з продукту, а не витяги з документації — на них видно довжину фраз, числа, абревіатури й вставки, які найчастіше ламають вимову.
  • Сценарії озвучення з навантаженням: скільки реплік на годину в піку, скільки голосів звучить одночасно, який відгук допустимий — від цього залежить, що синтезується заздалегідь, а що віддається потоком.
  • Вимоги до голосів: мова, темп, тембр, чи потрібен власний диктор і запис для клонування, які ролі мають звучати по-різному.
  • Умови роботи продукту: телефония, мобільний додаток, офлайн-пристрій або кол-центр — і які канали зв'язку із сервісом синтезу там доступні.
  • Що вже є: поточна схема озвучення, вузькі місця, скарги користувачів, метрики розбірливості.
  • Проблемні фрази: 5–10 прикладів із паузами, наголосами, назвами брендів і термінами, які зараз звучать неправильно.
  • Обмеження щодо даних: чи можна надсилати тексти до зовнішнього сервісу, чи потрібна обробка на вашій стороні.

Частина пунктів зазвичай відсутня — це нормально: щось уточнимо на дзвінку, щось закриємо тестовим прогоном на ваших репліках. Надішліть те, що є, — розберемо сценарії озвучення й повернемося з оцінкою та планом.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142