От сценария к одному многоголо... Заметка
DEV Community на русском

От сценария к одному многоголосному MP3: разбор сценариев для многоголосного API TTS на Cloudflare Workers

Автор разработал веб-приложение, которое генерирует аудио с несколькими динамиками из одного сценария, улучшая традиционные ограничения по преобразованию текста в речь. Система переводит свободный текст в структурированный формат для сложной модели TTS, учитывая указания актёров и несколько символов. Cloudflare Worker, D1 для данных и R2 для MP3-хранилища формируют бэкенд, используя модель Drama 3 от Fish Audio. Формат входа напоминает радиоскрипт, используя «Name: line» и квадратные скобки для указаний доставки. Ключевой выбор дизайна по умолчанию переводит безымянные реплики на диктора, что улучшает пользовательский опыт. Парсинг осуществляется с помощью эвристики регулярного выражения и подсчёта слов для идентификации говорящих и реплик, с тщательным учётом двоеточия в прозе. Приложение активно удаляет управляющие теги из пользовательского ввода, чтобы предотвратить внедрение непреднамеренных изменений динамиков. Конструкция полезной нагрузки сопоставляет символы с уникальными индексами динамиков, обеспечивая правильное назначение голоса. Механизм автотрансляции назначает голоса неназначенным персонажам из курированного пула, приоритизируя пользовательские выборы и избегая дублирований. Критическим открытием стало тихое возвращение модели TTS к другой модели, если заголовок «model» отсутствует или неверен, что подчёркивает необходимость явного закрепления и документации. Надёжная обработка ошибок включает отказ от мелких ответов и отсутствие логирования конфиденциальных данных, таких как текст скриптов или ключи API. Расчет стоимости основан на UTF-8 байтах точной полезной нагрузки с консервативным резервированием кредитов и возвратом средств за сбои. Длительность аудио оценивается по размеру файла и закреплённому битрейту, что позволяет избежать необходимости в аудиодекодере. Система использует синхронную модель запроса для простоты, которая подходит для коротких скриптов, но может иметь ограничения для более длинных. Значительная «подводка» заключалась в том, что iOS не воспроизводит образцы MP3 без надлежащей поддержки запросов на диапазон (206 ответов на частичный контент). Автор приводит чек-лист лучших практик, включая выделение безымянных строк диктору, предварительный просмотр списков актеров, удаление управляющих тегов, закрепление заголовков моделей, точную оценку стоимости, закрепление битрейта и подачу медиа с поддержкой Range. Проект предлагает бесплатные пробные версии для просмотра многоголосых сцен.