Озвучення текстів через Yandex SpeechKit API

Завдання
Нашому клієнту, популярному блогеру Мілі Котлярової, необхідно було озвучувати певні фрагменти текстів. Перед нами стояло завдання розробити максимально простий сервіс: щоб можна було вставити текст, натиснути кнопку та отримати mp3-файл із озвученим текстом.
Вибір технології та її особливості
Ми вирішили генерувати озвучення за допомогою технології Yandex SpeechKit. Вона дозволяє розпізнати або озвучити будь-який текст, на основі якого працює голосовий помічник Яндекса «Аліса». Рішення від Яндекса найбільш природно ставить наголоси і використовує інтонації, тому що їхня нейромережа навчена на безлічі прикладів з реального життя.

Однак Yandex SpeechKit має обмеження на довжину тексту для озвучення за один раз — 5000 символів. Якщо довжина тексту більша, необхідно розбивати текст на частини і робити кілька запитів. Наш клієнт не хотів думати про ці обмеження, озвучуючи тексти будь-якої довжини.
Ми створили гранично простий сервіс, який оминає ці обмеження і виглядає навіть занадто мінімалістично – крім текстового поля та кнопки “Генерація” на екрані нічого немає.
Як працює сервіс
Алгоритм роботи наступний:
- Якщо текст, що вставляється, довжиною більше 5000 символів, то він дробиться на фрагменти програмними методами. Наприклад, текст на 14578 символів буде поділено на три фрагменти.
- Отримуємо IAM-токен, який вказуємо при зверненні до ресурсів Yandex SpeechKit.
- Надсилаємо послідовно кілька запитів (фрагментів тексту).
- Яндекс повертає нам аудіофайли у форматі ogg. Не найкращий формат для нашого клієнта, тому далі ми вирішимо цю проблему.
- Отримані файли зберігаються на сервері клієнта. Подальші операції над ними будуть здійснюватись за допомогою утиліти SoX, яку ми підключили до сервера нашого клієнта.
- Отримані файли ogg конвертуються у формат mp3.
- mp3-файли поєднуються в один.
- Публікується посилання на завантаження аудіофайлу у відповідному клієнту форматі.
Якщо деякі наголоси були проставлені неправильно, а інтонації не надто природні — це можна виправити. Зміни можна внести, розставивши спеціальні символи в потрібних місцях тексту. Наприклад, для передачі слів-омографів слід використовувати “+” перед ударною голосною: “з+амок” або “зам+ок”. Для паузи між словами використовується “-“.
Для демонстрації прикладу роботи ми за допомогою сервісу озвучили його алгоритм роботи. Інтонації та наголоси не коректувалися.
Озвучення тексту на сайті
Інтеграція з API від Яндекса не обмежується лише наведеним вище сценарієм. SpeechKit також зручно використовувати для автоматичного озвучування нових або наявних матеріалів на сайті. Синтезатор голосу може зачитувати записи в блозі або новини, при цьому аудіокаст буде прикріплюватися до посту автоматично, без додаткових зусиль з боку редактора.
Така функціональність користується популярністю у користувачів через підвищену зручність споживання:
- потік контенту новин набагато зручніше слухати під час готування на кухні, прогулянки або поїздки за кермом;
- якість начитки, яка вже є досить близькою до людської, дозволяє сприймати матеріал з комфортом і без відторгнення;
- у деяких випадках набір кращих озвучених статей можна виділяти в окремий інформаційний потік, наприклад, в подкаст.
Впровадження начитки на практиці
Видавництво «Комітет» ще 2019 року запровадило автоматичне озвучування текстів на сайтах своїх проектів. Над заголовком матеріалу розташована кнопка “Слухати”, яка запускає аудіоверсію статті.
