Дата публикации
ai_products

Kokoro: локальный TTS высокого качества, который тянет даже старый Core i7

Что нового

Kokoro — это компактная система Text-to-Speech, которая работает локально и не требует мощной видеокарты.

Главные факты:

  • Размер модели: 82 млн параметров.
  • Языки: английский, мандаринский китайский, хинди (голоса в основном заточены под английский).
  • Около 50 разных голосов, список — в VOICES.md на странице проекта: huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md.
  • Работа полностью на CPU, без участия GPU.
  • Есть готовый контейнер Kokoro-FastAPI с уже загруженными голосами.
  • Размер контейнера: около 5 ГБ.
  • Скорость генерации (короткий абзац, голос am_eric, лучшее из 3 прогонов):
    • Intel Core i7-4770K (2012 год): 4,7 секунды.
    • Apple M2 Pro: 4,5 секунды.
    • AMD Ryzen 7 8745HS: 1,5 секунды.

Контейнер поднимает локальный веб-интерфейс и API, совместимый с OpenAI Speech API. Это позволяет подменить облачный TTS на локальный почти без правок кода.

Как это работает

Kokoro — это относительно небольшая TTS‑модель (82M параметров), которая генерирует речь по тексту прямо на вашей машине. Автор запускает её на ПК с GTX 1080 Ti, но видеокарту полностью отдает под LLM, а TTS работает только на CPU.

Kokoro-FastAPI — это контейнер, в который уже упаковали:

  • саму модель Kokoro,
  • набор предзагруженных голосов (из‑за этого образ весит около 5 ГБ),
  • HTTP‑сервер с:
    • простым веб‑UI по адресу localhost:8880/web,
    • API, повторяющим интерфейс OpenAI Speech API.

Сервер принимает текст, выбирает голос (по умолчанию или через переменную окружения TTS_VOICE) и возвращает готовый аудиофайл в формате MP3. Если на машине установлен SoX (Sound eXchange), звук сразу воспроизводится после генерации.

Что это значит для вас

Kokoro полезен, если вам нужно:

  • Озвучивать ответы локального LLM. Можно слушать ответы вместо чтения, не отправляя текст в облако.
  • Защитить данные. Весь TTS происходит на вашем компьютере или сервере. Никакой передачи текста на сервер OpenAI или других сторонних сервисов.
  • Экономить на облачном TTS. Один раз подняли контейнер — дальше генерация не зависит от тарифа API.
  • Сделать голосовой интерфейс в приложении. Благодаря совместимости с OpenAI Speech API можно быстро переключить уже существующие клиенты на локальный TTS.

Примеры задач:

  • голосовой ассистент на базе локального LLM;
  • озвучивание внутренних отчётов и документов, которые нельзя выносить во внешний облачный сервис;
  • офлайн‑читалка для статей и заметок.

Когда Kokoro не подойдёт:

  • если вам нужен естественный русский, а не только английский, китайский или хинди;
  • если вы не хотите возиться с Docker/Podman и контейнерами;
  • если вам критична минимальная задержка на очень слабом железе (например, старый ноутбук без нормального CPU).

Kokoro можно развернуть в России: это локальный контейнер, он работает после скачивания образа. Но для загрузки образа и репозитория с GitHub и GitHub Container Registry может потребоваться VPN, если доступ ограничен.

Место на рынке

Kokoro конкурирует не с конкретной моделью, а с целым классом облачных TTS‑сервисов, которые предлагают OpenAI, Google и другие. Главное отличие — полный локальный запуск и отсутствие привязки к тарифам API.

По сравнению с альтернативным контейнерным решением Speaches:

  • Kokoro-FastAPI:
    • все голосовые веса уже внутри образа (около 5 ГБ);
    • после скачивания контейнера ничего дополнительно не докачивает;
    • фокус на TTS.
  • Speaches (speaches.ai):
    • веса голосов нужно скачивать отдельно через API;
    • в комплект входит Whisper — система Speech-to-Text от OpenAI;
    • это удобнее, если вам нужны и TTS, и STT в одном сервисе.

Если вам важен только TTS и вы не хотите управлять загрузкой весов через API, Kokoro-FastAPI проще. Если нужен ещё и качественный локальный STT, имеет смысл посмотреть на Speaches.

Установка

Kokoro-FastAPI распространяется как контейнерный образ, который можно запустить через Docker или Podman.

Базовая команда запуска (пример с Podman, с Docker будет аналогично):

podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu

После запуска контейнер поднимает веб‑интерфейс по адресу:

  • http://localhost:8880/web

Там можно ввести текст, сгенерировать речь и сразу её прослушать.

Как запустить через OpenAI-совместимое API

Контейнер Kokoro-FastAPI поднимает API, которое повторяет интерфейс OpenAI Speech API. Это позволяет использовать уже написанные клиенты почти без изменений.

Автор предлагает пример на GitHub: github.com/remotebrowser/speak. После клонирования репозитория можно использовать готовые скрипты для JavaScript и Python.

JavaScript

export TTS_API_BASE_URL = http://127.0.0.1:8880/v1
./speak.js "Good morning! How are you today?"

Скрипт отправит текст в локальный API, получит MP3 и сохранит его на диск. Если на машине установлен SoX, звук сразу проиграется.

Python

export TTS_API_BASE_URL = http://127.0.0.1:8880/v1
./speak.py "Good morning! How are you today?"

Поведение аналогичное: MP3 на выходе и автопроигрывание при наличии SoX.

Смена голоса

Чтобы выбрать другой голос, нужно задать переменную окружения TTS_VOICE.

Пример для JavaScript‑скрипта:

export TTS_API_BASE_URL = http://127.0.0.1:8880/v1
export TTS_VOICE = "am_eric"
./speak.js "Good morning! How are you today?"

Список всех доступных голосов лежит в файле VOICES.md на Hugging Face‑странице Kokoro.

Скорость и железо

Автор тестировал Kokoro на коротком абзаце:

Jupiter is the largest and most massive planet in our solar system. This gas giant, made mostly of hydrogen and helium, is known for its Great Red Spot—a massive storm observed for centuries.

Результаты (лучшее из трёх прогонов, голос am_eric):

  • Intel Core i7-4770K — 4,7 секунды. Процессор вышел 12 лет назад, но справляется без проблем.
  • Apple M2 Pro — 4,5 секунды.
  • AMD Ryzen 7 8745HS — 1,5 секунды.

Вывод: для коротких реплик и озвучки ответов ассистента даже старый десктопный CPU даёт комфортную скорость. На современных ноутбуках генерация идёт почти в реальном времени для небольших фраз.

Если нужен и TTS, и STT

Если вам нужен не только синтез речи, но и распознавание, автор предлагает посмотреть на Speaches (speaches.ai).

Особенности Speaches:

  • тоже контейнерный сервис, совместимый с OpenAI API;
  • TTS‑голоса нужно догружать через API, они не входят в образ по умолчанию;
  • в комплекте есть Whisper — система Speech-to-Text от OpenAI, которая хорошо распознаёт речь.

Для проектов, где ассистент должен и говорить, и слушать, Speaches может заменить сразу два сервиса. Для задач только озвучки проще стартовать с Kokoro-FastAPI.

Зачем это всё вместе с локальным LLM

Главная идея автора — связать локальный LLM и локальный TTS. LLM (например, модель, запущенная через текстовый интерфейс) генерирует ответ, Kokoro озвучивает его, и вы получаете голосового ассистента, который полностью живёт на вашей машине.

Это полезно, если вы:

  • не хотите отдавать конфиденциальные данные в облако;
  • работаете в офлайн‑среде или с ограниченным интернетом;
  • хотите управлять стоимостью и не зависеть от тарифов API.

Материал основан на публикации Remote Browser в Substack: автор показывает, что реалистичный TTS на локальном CPU уже стал повседневным инструментом, а не экспериментом для лаборатории.


Читайте также