Log in to leave a comment
No posts yet
Счета от ElevenLabs или OpenAI за услуги TTS, приходящие каждый месяц, заставляют вздохнуть. Для инди-разработчиков игр расходы на вызовы API — это фиксированные затраты, которые буквально перекрывают кислород проекту. Kokoro 82M — это модель с открытым исходным кодом под лицензией Apache 2.0, которая позволяет генерировать голос коммерческого уровня в локальной среде. Развернув эту легкую модель, состоящую из 82 миллионов параметров, на своем ПК, вам больше не придется зависеть от изменений в политике внешних серверов.
При запуске локальных моделей главная проблема заключается в резком падении частоты кадров в игре. Чтобы предотвратить нагрузку на CPU при синтезе речи, необходимо принудительно контролировать вычислительные потоки. Kokoro 82M следует структуре StyleTTS 2, поэтому она наиболее эффективна при запуске через среду выполнения ONNX.
SessionOptions ONNX ограничьте intra_op_num_threads до половины или менее от общего количества ядер. Для 8-ядерного процессора достаточно выделить 2–4 ядра.enable_cpu_mem_arena, чтобы предотвратить фрагментацию памяти. Это устраняет микрофризы, возникающие при генерации аудио в фоновом режиме.asyncio, чтобы отправлять первый же полученный блок данных на аудиоустройство.Благодаря этим настройкам время до начала воспроизведения первой фразы (TTFA) можно сократить до менее чем 0,5 секунды.
Какой бы замечательной ни была Kokoro 82M, если она читает «API» как «апи» или неправильно обрабатывает «10%», эффект погружения пропадает. Поскольку эта модель обучалась на основе международного фонетического алфавита (IPA), процесс нормализации входного текста является обязательным.
Вместо того чтобы просто вставлять текст, создайте словарь сопоставления на основе регулярных выражений. Например, r'\bAPI\b' следует заменять на «эй-пи-ай», а числа — на слова («одна штука», «один процент») в зависимости от контекста. Специфические правила произношения (например, связки в корейском языке) можно решить, используя вспомогательные библиотеки вроде korean-text-normalizer. Это сэкономит вам как минимум 5 часов в неделю, которые раньше уходили на ручное редактирование аудиофайлов.
Вам не нужно полностью переписывать код, использующий OpenAI SDK. Подняв легковесный сервер на FastAPI на локальном хосте, вы сможете заменить платный API, просто изменив одну строку с адресом эндпоинта.
/v1/audio/speech, который принимает JSON-данные в формате OpenAI.INT8 размером 92,4 МБ. Скорость вывода у нее более чем в 3 раза выше, чем у обычной модели, при этом разница в качестве звука на слух минимальна.pydub и немедленно возвращайте их в формате .mp3 или .wav.Таким образом, вы сможете сохранить кодовую базу, которая зависела от платных сервисов, и при этом полностью избавиться от ежемесячных затрат на подписку.
Легковесные модели имеют ограничение: при обработке длинных предложений (более 500 символов) за один раз произношение в конце может сбиваться или смешиваться с механическим шумом. Чтобы решить эту проблему, текст нужно грамотно разбивать.
Разделите текст на предложения, ориентируясь на точки и запятые, а затем с помощью AudioSegment.silent принудительно вставьте паузы длительностью 200–500 мс между ними. Простая симуляция человеческого дыхания избавляет от неестественности модели. Ключевым моментом здесь является не просто разделение текста, а логика бесшовного воспроизведения, которая естественно соединяет фрагменты аудио. Автоматизация этого процесса позволит озвучивать длинные диалоги естественно и без прерываний.