- Eine ONNX-basierte
State-of-the-art-Lightweight-Text-to-Speech-(TTS)-Bibliothek, die hochwertige Sprachsynthese allein auf der CPU ausführt
- Die Modellgröße liegt im Bereich von 15M bis 80M Parametern (25 bis 80 MB) und kann auch ohne GPU effizient ausgeführt werden
- Bietet 8 integrierte Stimmen sowie Geschwindigkeitsanpassung, eine Textvorverarbeitungspipeline und 24-kHz-Audioausgabe
- Direkt über Hugging Face nutzbar und mit der Python-API einfach integrierbar
- Eine Open-Source-TTS-Lösung mit Fokus auf Deployment auf Edge-Geräten und kommerzielle Integration
Überblick über Kitten TTS
- Kitten TTS ist eine ONNX-basierte Open-Source-TTS-Bibliothek, die hochwertige Sprachsynthese auf der CPU ohne GPU ausführt
- Die Modellgröße beträgt 15M bis 80M Parameter und belegt auf dem Datenträger 25 bis 80 MB
- In Version 0.8 werden Modelle mit 15M, 40M und 80M angeboten
- Aktuell befindet sich das Projekt in der Developer-Preview-Phase, die API kann sich künftig noch ändern
- Es wird kommerzieller Support angeboten (Integrationssupport, Custom Voices, Enterprise-Lizenz)
Hauptfunktionen
- Extrem leichtgewichtige Architektur: startet bei 25 MB in int8 und eignet sich für das Deployment in Edge-Umgebungen
- CPU-Optimierung: effiziente ONNX-Inferenz auch ohne GPU
- 8 integrierte Stimmen: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
- Geschwindigkeitsanpassung: Steuerung der Sprechgeschwindigkeit über den Parameter
speed
- Textvorverarbeitungspipeline: verarbeitet Zahlen, Währungen, Einheiten usw. automatisch
- 24-kHz-Ausgabe: erzeugt hochwertiges Audio mit standardisierter Sampling-Rate
Verfügbare Modelle
- Es werden vier Modelle bereitgestellt
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- Einige Nutzer haben Probleme mit dem Modell
kitten-tts-nano-0.8-int8 gemeldet; das Anlegen eines Issues wird empfohlen
Demo und Nutzung
- Kann direkt im Browser über Hugging Face Spaces ausprobiert werden
- Installation nur mit Python 3.8 oder höher und pip möglich
- Grundlegendes Nutzungsbeispiel:
from kittentts import KittenTTS
model = KittenTTS("KittenML/kitten-tts-mini-0.8")
audio = model.generate("텍스트", voice="Jasper")
- Erweiterte Funktionen: Geschwindigkeitsanpassung (
speed), Speichern in Datei (generate_to_file), Abruf der verfügbaren Stimmenliste
API-Struktur
KittenTTS(model_name, cache_dir=None)
- Lädt das Modell aus dem Hugging Face Hub
model.generate(text, voice, speed, clean_text)
- Wandelt Text in 24-kHz-Audio um
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)
- Speichert die synthetisierte Sprache direkt in einer Datei
model.available_voices
- Gibt eine Liste der verfügbaren Stimmen zurück
Systemanforderungen
- Betriebssysteme: Linux, macOS, Windows
- Python: 3.8 oder höher
- Hardware: nur CPU erforderlich, keine GPU nötig
- Speicherplatz: je nach Modell 25 bis 80 MB
- Die Nutzung einer virtuellen Umgebung (venv, conda usw.) wird empfohlen
Roadmap
- Geplant sind Optimierung der Inferenz-Engine, mobiles SDK, hochwertige Modelle, mehrsprachiges TTS und der Release von KittenASR
- Apache License 2.0
1 Kommentare
Hacker-News-Kommentare
Ich habe purr gebaut, einen CLI-Wrapper für Kitten TTS
Das
kitten-Paket hat eine Abhängigkeitskette kittentts → misaki[en] → spacy-curated-transformersWenn man es daher direkt mit
uvinstalliert, werden torch und NVIDIA-CUDA-Pakete (mehrere GB) mitgezogen, obwohl sie für die tatsächliche Ausführung nicht nötig sindBeim ersten Start bekam ich den Fehler „OSError: PortAudio library not found“, aber mit
apt install libportaudio2ließ sich das behebenIch frage mich nur, ob es beim Entfernen unnötiger Abhängigkeiten irgendeinen Funktionsverlust gibt
Wirklich ein tolles Projekt
Ich werde es bald selbst ausprobieren
Ich frage mich allerdings: Warum wurde es nicht als Kommandozeilen-Binary ausgeliefert?
Die API ist auch fast schon im Manpage-Stil gehalten, daher dürfte sich das schnell umsetzen lassen. Nur reine Neugier
Zuerst will ich Feedback zur ONNX-Version einholen und danach den Ausführungsprozess weiter vereinfachen, auch mit einer Kommandozeilen-Binary
Was mir an OpenClaw gefällt, ist, dass es in Discord sofort Sprachnachrichten erzeugt hat, wenn man einfach eine GitHub-URL geschickt hat
Ich hatte innerhalb weniger Minuten Benchmarks und Audio-Beispiele
Die Qualität ist für die Größe beeindruckend. Die Stimme ist nicht perfekt, aber durchaus ordentlich
Auf einer Intel-9700-CPU lief das 80M-Modell mit etwa 1,5-facher Echtzeit, und auf einer 3080-GPU war es nicht schneller
Im Moment haben wir eine animeartige Stimme eingebaut, um die Ausdrucksstärke zu zeigen
Es wäre hilfreich, wenn du den Grund für die Langsamkeit auf der GPU als GitHub-Issue oder auf Discord teilen könntest. Wir werden auch Beispielcode ergänzen
Ich habe mich mit Python-Versionskonflikten herumgeschlagen und es auch mit Docker versucht, musste am Ende aber doch alles direkt selbst einrichten
Es läuft jetzt gerade so, aber ich hasse Python wirklich
Im Moment scheint es nur US-englische Stimmen zu unterstützen
Mich persönlich interessieren nur irische, britische und walisische Akzente. Mit US-Englisch kann ich wenig anfangen
TTS, das direkt auf dem Gerät läuft, ist als Barrierefreiheitswerkzeug wirklich großartig
Die meisten Geräte verlassen sich auf Online-Dienste, aber so ein lokaler Ansatz ist viel besser
Gegenüber den früheren Modellen ist die Verbesserung viel deutlicher spürbar
Wirklich beeindruckend. Danke fürs Teilen
Das aktuelle 15M-Modell ist besser als das frühere 80M-Modell, und wir wollen dieses Verbesserungstempo beibehalten
Ich würde in Zukunft auch gern ein japanischspezifisches Modell sehen
Qwen3-tts unterstützt zwar Japanisch, mischt aber manchmal Chinesisch hinein, wodurch es unbrauchbar wird
Allerdings könnten dabei Informationen zur Tonhöhe verloren gehen (z. B. 飴 vs 雨)
Wenn du deinen Anwendungsfall teilst, würden wir das gern in die Qualitätsverbesserung einfließen lassen
Die Leistung war für die Modellgröße beeindruckend
Es gab allerdings Probleme bei der Aussprache von Zahlen
Ich habe „Startup finished in 135 ms.“ ausprobiert, und die Zahl klang wie Rauschen
Mit „one hundred and thirty five seconds“ war es immerhin einigermaßen brauchbar
Bis dahin lässt es sich durch zusätzliche Textvorverarbeitung lösen
Die meisten TTS-Modelle gehen damit um, indem sie Zahlen und Einheiten in ausgeschriebene Zeichenfolgen umwandeln
Im nächsten Release wird das auch auf Modellebene korrigiert
Es wäre schön, wenn zusammen mit den vier Modellen auch Audio-Beispiele zum Vergleich gezeigt würden
Ein Beispiel, in dem jeder dasselbe Satz vorliest, wäre leichter zu verstehen
In der Zwischenzeit kannst du die Modelle direkt in der Hugging Face Demo ausprobieren
Ich frage mich, ob das Open Source ist oder eher ein Open-Weights-Modell
Bis dieses Wochenende werden wir auch noch einen MIT-lizenzierten Phonemizer hinzufügen, sodass es frei nutzbar sein wird