/ Модель

Характеристики

Размер весов
3,6 ГБ
Лицензия
Apache 2.0
Опубликована
25 июл 2026

Kokoro

Синтез речиТекст → аудио3 профессии

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

9 802скачиваний за 30 дней0лайковвеса обновлены26 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

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

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Thorsten-Voice/Kokoro — это немецкая дообученная версия Kokoro-82M, созданная на датасете Thorsten-Voice с открытой лицензией CC0. Модель основана на архитектуре StyleTTS2 и синтезирует немецкую речь голосом Торстена. В репозитории есть чекпойнты обучения и голосовой пакет; по умолчанию используется чекпойнт эпохи 5.

Модель предназначена для преобразования немецкого текста в речь. Благодаря компактному размеру базовой модели — 82 млн параметров — она рассчитана на локальный запуск на CPU в реальном времени или быстрее, в том числе офлайн. Для немецкой фонемизации нужны форки библиотек misaki и kokoro, а также espeak-ng.

Известные ограничения: короткое немецкое ü может некорректно обрабатываться без специальной подстановки в G2P-фронтенде; дефисные сложные прилагательные иногда звучат неестественно. Очень длинные предложения могут обрезаться, поэтому рекомендуется разбивать текст по границам предложений. Модель распространяется по лицензии Apache-2.0.

Сценарии применения

  • озвучивание немецких текстов голосом Торстена
  • локальная офлайн-озвучка немецких предложений
  • синтез речи на CPU без GPU
  • озвучивание немецких аудиоматериалов и примеров произношения

Ограничения

Короткое ü может требовать замены фонемы ʏ на y во входе G2P; дефисные сложные прилагательные иногда получают неестественную просодию. Очень длинные предложения могут обрезаться, поэтому их рекомендуется разделять.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Thorsten-Voice/Kokoro

A German fine-tune of Kokoro-82M on the Thorsten-Voice dataset — a fast, high-quality, CPU-friendly text-to-speech model that speaks with Thorsten's own voice.

Kokoro-82M is a compact (82M parameter) TTS model based on the StyleTTS2 architecture. Its small size means it runs comfortably on CPU, in real time or faster, without requiring a GPU — making it well suited for local, offline use.

Credits

This model would not exist without:

  • hexgrad/Kokoro-82M — the original English Kokoro-82M model and architecture.
  • kikiri-tts by semidark — the German fine-tuning recipe, patched StyleTTS2/Kokoro submodules, and documentation this training was based on. Please check out their project and the German community voices (Martin, Victoria) they've already published.

Fine-tuned on the Thorsten-Voice dataset (CC0 / public domain).

Files in this repository

FileDescription
config.jsonKokoro-82M architecture config (unchanged from the base model)
model.pthDefault checkpoint (epoch 5). Fine-tuned weights (bert, bert_encoder, predictor, text_encoder, decoder), converted from the Stage 2 StyleTTS2 checkpoint
voices/thorsten.ptVoicepack matching the default (epoch 5) checkpoint
model_ep{1,2,3,4,6,7,8,9,10}.pthAll other Stage 2 checkpoints (epochs 1–4, 6–10), same converted, ready-to-use format as model.pth
voices/thorsten_ep{1,2,3,4,6,7,8,9,10}.ptMatching voicepacks for each of the above

Installation

This model requires the German-language forks of misaki and kokoro (the official PyPI misaki package does not include the de submodule needed for German G2P), plus the espeak-ng system package that misaki relies on for phonemization:

# System dependency (required by misaki for German G2P)
# macOS:
brew install espeak-ng
# Debian/Ubuntu:
sudo apt-get install espeak-ng

# Python dependencies
pip install huggingface_hub soundfile numpy torch
pip install "git+https://github.com/semidark/misaki.git@6d252a2e02f3b030f22f56686f1a73786c16ffc8"
pip install "git+https://github.com/semidark/kokoro.git"

Usage

import numpy as np
import soundfile as sf
import torch
from huggingface_hub import hf_hub_download
from kokoro import KModel, KPipeline

REPO_ID = "Thorsten-Voice/Kokoro"

device = "cuda" if torch.cuda.is_available() else "cpu"

config_path = hf_hub_download(repo_id=REPO_ID, filename="config.json")
model_path = hf_hub_download(repo_id=REPO_ID, filename="model.pth")
voice_path = hf_hub_download(repo_id=REPO_ID, filename="voices/thorsten.pt")

kmodel = KModel(repo_id="hexgrad/Kokoro-82M", config=config_path, model=model_path)
kmodel = kmodel.to(device).eval()

pipeline = KPipeline(lang_code="d", repo_id="hexgrad/Kokoro-82M", model=kmodel)

# Workaround: misaki's German G2P can emit 'ʏ' (short ü), which is not in
# Kokoro's vocabulary (only 'y' is). See "Known limitations" below.
_original_g2p = pipeline.g2p
pipeline.g2p = lambda text: (lambda ps, tok: (ps.replace("ʏ", "y"), tok))(*_original_g2p(text))

voice = torch.load(voice_path, map_location="cpu", weights_only=True)

text = "Hallo, hier spricht Thorsten."
audio_chunks = [audio for _, _, audio in pipeline(text, voice=voice, speed=1.0)]
combined = np.concatenate(audio_chunks)

sf.write("output.wav", combined, 24000)

A ready-to-run version of this snippet is included as inference.py:

# Default checkpoint (epoch 5)
python inference.py "Hallo, hier spricht Thorsten." output.wav

# Any other epoch (1-10) - e.g. epoch 10, faster/tighter delivery
python inference.py "Hallo, hier spricht Thorsten." output.wav ep10
python inference.py "Hallo, hier spricht Thorsten." output.wav ep3

Audio samples

Sample outputs from the default (epoch 5) checkpoint, covering German pronunciation edge cases (umlauts, ich/ach-laut, eszett, consonant clusters, numbers, prosody) and technical/loanword pronunciation overrides:

Zwei weiße Zwerge zwängen sich zwischen zwei Zweige.

Ich mache mich auf den Weg nach Aachen, um auch Nachts wach zu sein.

Lade die API oder ein JSON herunter.

All 14 samples are available under test_audio_epoch5/.

Training details

  • Base model: Kokoro-82M (English), architecture unchanged
  • Dataset: Thorsten-Voice (12,283 training sentences after cleaning/filtering)
  • Training recipe: kikiri-tts, a patched StyleTTS2 fine-tuning pipeline for Kokoro
  • Stage 1 (acoustic/alignment): 10 epochs
  • Stage 2 (adversarial/prosody, with GAN + WavLM discriminator): 10 epochs

Stage 2 checkpoint comparison

Validation loss stayed essentially flat across the second half of Stage 2 training, with epoch 5 and epoch 10 tied for the lowest value. Epoch 10 has a slightly lower F0 (pitch) loss, suggesting more refined prosody after additional adversarial fine-tuning — but in informal listening comparisons, epoch 5 was judged more natural, with a slightly slower, less "clipped" speaking pace. The metrics alone did not predict this; it only became apparent by listening to both checkpoints on identical sentences.

All 10 Stage 2 checkpoints are included in this repository, already converted to Kokoro's inference format and ready to use via inference.py (see Usage above) — no separate conversion step needed.

EpochValidation lossDuration lossF0 lossinference.py variant
10.2880.4552.281ep1
20.2850.4322.131ep2
30.2830.4272.085ep3
40.2720.4392.015ep4
50.2690.4201.957ep5 / default
60.2740.4271.953ep6
70.2710.4221.883ep7
80.2710.4201.869ep8
90.2710.4251.846ep9
100.2690.4161.800ep10

Only epochs 5 and 10 were carefully compared by ear; the others are provided as-is for anyone curious to explore the full training trajectory. Feedback on the intermediate checkpoints is welcome.

Known limitations

  • The German G2P frontend (misaki.de.DEG2P) can emit the short-ü symbol ʏ (e.g. in "Brücke"), which is not part of Kokoro's 178-symbol vocabulary — only the long-ü symbol y is. Left unhandled, this silently breaks short-ü words during inference. inference.py includes a small workaround that patches the G2P output to replace ʏ with y (the same substitution used when preparing the training data). If you're writing your own inference code instead of using the provided script, make sure to apply this substitution yourself.
  • Hyphenated German compound adjectives (e.g. "atmosphärisch-optisches") can occasionally produce unnatural prosody or stumbling at the hyphen boundary. This is a known limitation of the underlying G2P frontend (misaki/espeak-ng) shared with other TTS systems (including Piper), not specific to this fine-tune.
  • As with the base Kokoro model, very long sentences may be truncated; splitting text on sentence boundaries is recommended for longer inputs.

License

Released under Apache 2.0, consistent with the base Kokoro-82M model and the CC0-licensed Thorsten-Voice dataset used for fine-tuning.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
734e593

0 моделей