Синтез речиВеб-разработка

Как защитить кредиты TTS и улучшить звучание: оценка контента и нормализация текста

Необработанный текст звучит неуклюже, а публичные эндпоинты провоцируют злоупотребления. Рассказываем, как оценка контента и нормализация текста в TTS2Go решают обе проблемы без лишних накладных расходов.

Anthony Morris·
Как защитить кредиты TTS и улучшить звучание: оценка контента и нормализация текста

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

Почему самообслуживаемый TTS — это действительно сложно

Браузерному SDK нужно знать, к какому проекту он относится, а этот идентификатор находится в коде, который пользователи могут посмотреть. Его можно защитить списками разрешённых доменов и ограничением частоты запросов, но секретом он не является. Если кто-то найдёт эндпоинт, он сможет отправлять запросы. И каждый из них, дойдя до синтеза, может расходовать ваши кредиты у провайдера.

Первое желание — требовать, чтобы каждый запрос перед генерацией одобрял человек. Это правильно — и именно так TTS2Go работает по умолчанию. Но объём этой работы растёт быстрее, чем команда, которая её выполняет. Когда появится реальный трафик, ручное одобрение превратится в постоянное отвлечение на полный рабочий день.

Что касается качества, TTS-провайдеры по-разному произносят распространённые конструкции. Дату вроде «2026-04-21» один движок прочитает как «двадцать первое апреля две тысячи двадцать шестого года», а другой — как «две тысячи двадцать шесть тире ноль четыре тире двадцать один». Валюты, время, сокращения и большие числа ведут себя непредсказуемо. Ваши авторы не управляют внутренним устройством провайдера, а провайдер ничего не знает о вашем контенте.

Базовый уровень: ручное одобрение

Каждый проект TTS2Go начинается с ручного одобрения. Когда SDK отправляет запрос на генерацию, он попадает в очередь в панели управления. Вы его просматриваете, одобряете или отклоняете, и кредиты расходуют только одобренные запросы. Это безопасный вариант по умолчанию, и он работает: команды, которым важен каждый фрагмент аудио, звучащий их голосом, получают полный контроль.

Но это медленно. При достаточном трафике такой процесс начинаешь мечтать передать машине.

ИИ-оценка контента: фейсконтроль для вашего эндпоинта

ИИ-оценка контента и есть такая машина. Для каждого проекта вы настраиваете короткий профиль контента: описание тематики сайта, его тип, язык и несколько примеров текста. Когда приходит запрос на генерацию, TTS2Go отправляет текст запроса и профиль языковой модели, которая возвращает оценку от одного до десяти с кратким обоснованием.

Вы выбираете порог. Запросы с оценкой на уровне порога или выше автоматически одобряются и отправляются на синтез. Запросы ниже порога либо возвращаются в очередь ручной проверки, либо сразу отклоняются — как удобнее для вашего сайта. Шкала не бинарная: ступени идут от «спам или злоупотребление» внизу через «слабо связано», «правдоподобное совпадение», «хорошее совпадение» до «идеальное совпадение» наверху. Вы можете быть настолько строгими или лояльными, насколько это оправдано вашим контентом.

В результате случайные посторонние, которые нашли ваш эндпоинт и пытаются сгенерировать не относящийся к делу текст, получают низкую оценку и до синтеза не доходят. Легитимный контент с ваших собственных страниц получает высокую оценку и озвучивается без вашего участия. Вам остаётся смотреть только на промежуточную зону — и только когда захотите.

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

Нормализация текста: редактор перед микрофоном

Когда контент одобрен для генерации, возникает следующий вопрос — как он будет звучать. Каждый одобренный запрос TTS2Go пропускает через основанный на правилах конвейер нормализации, прежде чем отправить провайдеру. Конвейер переписывает те части текста, которые провайдеры обрабатывают непоследовательно: целые и дробные числа, даты и время, валюты в нескольких форматах, проценты, римские цифры и распространённые сокращения вроде «Dr.», «Mr.» и «etc.».

«Счёт на $1,234.56 нужно оплатить до 2026-04-21» превращается в «Счёт на одну тысячу двести тридцать четыре доллара пятьдесят шесть центов нужно оплатить до двадцать первого апреля две тысячи двадцать шестого года». «В главе IV 5 разделов» превращается в «В главе четвёртой пять разделов». Каждое преобразование детерминировано, покрыто юнит-тестом и ничего не стоит во время работы — вся обработка локальная, без дополнительного API-запроса на пути к синтезу.

Правила вместо ещё одного ИИ-слоя — осознанный выбор. Правила предсказуемы: их можно воспроизвести, объяснить и сравнить построчно. Если пользователь услышит что-то странное, вы сможете точно выяснить почему и исправить конкретное правило, которое это вызвало. Аудио — это выступление, а выступлению нужен повторяемый сценарий.

Почему важны обе системы вместе

Эти две системы работают на противоположных концах конвейера. Оценка решает, что дойдёт до синтеза. Нормализация решает, как это будет звучать. Одна защищает ваш бюджет, другая — качество результата. Уберите оценку — и ваши кредиты окажутся без защиты; уберите нормализацию — и аудио станет непоследовательным. Вместе они превращают интеграцию TTS из проекта, которому нужны модератор контента и лингвист, в одну строку кода SDK.

Попробуйте в панели управления

У обеих систем есть живые демо в боковом меню панели управления. На странице AI Content Scoring можно вставить пример текста и увидеть точную оценку, обоснование и решение об автоодобрении с учётом профиля контента любого из ваших проектов. На странице Speech Formatting есть поле Try-It, которое показывает нормализованную версию всего, что вы вводите, рядом с примерами «до» и «после». У обеих страниц есть ограничение частоты запросов, ни одна не расходует кредиты, и каждая показывает ровно то, что происходит в продакшене при поступлении реального запроса.

Если у вас уже есть проект TTS2Go, откройте панель управления и попробуйте обе. Если вы только начинаете, создайте проект, добавьте React SDK на страницу и позвольте ручной очереди поймать первые несколько запросов — вы увидите весь конвейер в действии от начала до конца.