170 lines
8.2 KiB
HTML
170 lines
8.2 KiB
HTML
<!--
|
|
This is free software for the public good of a permacomputer hosted at
|
|
permacomputer.com, an always-on computer by the people, for the people.
|
|
One which is durable, easy to repair, & distributed like tap water
|
|
for machine learning intelligence.
|
|
|
|
The permacomputer is community-owned infrastructure optimized around
|
|
four values:
|
|
|
|
TRUTH First principles, math & science, open source code freely distributed
|
|
FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
|
|
HARMONY Minimal waste, self-renewing systems with diverse thriving connections
|
|
LOVE Be yourself without hurting others, cooperation through natural law
|
|
|
|
This software contributes to that vision by making machine learning
|
|
accessible to everyone through a free, open, embeddable chat interface.
|
|
Code is seeds to sprout on any abandoned technology.
|
|
-->
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="theme-color" content="#43a047">
|
|
<meta name="color-scheme" content="light dark">
|
|
<title>Kokoro TTS | uncloseai-speech | uncloseai.com</title>
|
|
<meta name="description" content="Kokoro TTS: 82M parameter decoder-only TTS. 34 voices, runs on edge devices and Raspberry Pi. Self-host with uncloseai-speech.">
|
|
|
|
<link rel="stylesheet" href="/css/pico.classless.min.css">
|
|
<link rel="stylesheet" href="/css/chunkfive/stylesheet.css" type="text/css" charset="utf-8" />
|
|
<link rel="stylesheet" href="/css/sidebar-theme.css">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/styles/a11y-dark.min.css" />
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>
|
|
|
|
<script>
|
|
function switchTheme(theme) {
|
|
if (theme === "auto") {
|
|
document.documentElement.removeAttribute('data-theme');
|
|
} else {
|
|
document.documentElement.setAttribute('data-theme', theme);
|
|
}
|
|
}
|
|
window.UNCLOSEAI_CUSTOM_STYLING = false;
|
|
</script>
|
|
<script src="https://uncloseai.com/uncloseai.js" type="module"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<button class="sidebar-toggle" onclick="document.querySelector('.sidebar').classList.toggle('open')">
|
|
☰
|
|
</button>
|
|
|
|
<aside class="sidebar">
|
|
<div class="table-of-contents">
|
|
<nav>
|
|
<ul>
|
|
<li><a href="/">Home</a></li>
|
|
<li><a href="/c-examples.html">C Examples</a></li>
|
|
<li><a href="/csharp-examples.html">C# Examples</a></li>
|
|
<li><a href="/dart-examples.html">Dart Examples</a></li>
|
|
<li><a href="/elixir-examples.html">Elixir Examples</a></li>
|
|
<li><a href="/go-examples.html">Go Examples</a></li>
|
|
<li><a href="/java-examples.html">Java Examples</a></li>
|
|
<li><a href="/kotlin-examples.html">Kotlin Examples</a></li>
|
|
<li><a href="/nodejs-examples.html">Node.js Examples</a></li>
|
|
<li><a href="/php-examples.html">PHP Examples</a></li>
|
|
<li><a href="/python-examples.html">Python Examples</a></li>
|
|
<li><a href="/ruby-examples.html">Ruby Examples</a></li>
|
|
<li><a href="/rust-examples.html">Rust Examples</a></li>
|
|
<li><a href="/swift-examples.html">Swift Examples</a></li>
|
|
<li><a href="/uncloseai-js.html">uncloseai.js Docs</a></li>
|
|
<li><a href="/uncloseai-js-styleguide.html">Styleguide</a></li>
|
|
<li><a href="/cli.html">uncloseai-cli</a></li>
|
|
<li><a href="/browser-toys.html">Browser Toys</a></li>
|
|
<li><a href="/inference.html">Inference Setup</a></li>
|
|
<li><a href="/text-to-speech.html">Text-to-Speech</a></li>
|
|
<li><a href="/tts/voice-cloning.html" style="padding-left:2em">Qwen3-TTS</a></li>
|
|
<li><a href="/tts/fast-synthesis.html" style="padding-left:2em">Piper TTS</a></li>
|
|
<li><a href="/tts/hd-cloning.html" style="padding-left:2em">XTTS v2</a></li>
|
|
<li><a href="/tts/multilingual-cpu.html" style="padding-left:2em">Silero TTS</a></li>
|
|
<li><a href="/tts/lightweight.html" class="active" style="padding-left:2em">Kokoro TTS</a></li>
|
|
<li><a href="/crawler.html">Our Crawler</a></li>
|
|
<li><a href="/reverse-retrieval-augmented-generations-rag.html">Reverse RAG</a></li>
|
|
<li><a href="/languages" target="_blank">All Languages</a></li>
|
|
<li><a href="https://shop.unturf.com/p/8486f492-a93e-11f0-b477-02dfe05770ee/uncloseai-machine-learning-reference-guide-to-inference-clients" target="_blank">Book</a></li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</aside>
|
|
|
|
<main>
|
|
<header>
|
|
<hgroup>
|
|
<a href="https://uncloseai.com"><h1 class="unturf" style="font-family: 'ChunkFiveRegular';">uncloseai.</h1></a>
|
|
<p>Kokoro TTS</p>
|
|
</hgroup>
|
|
<nav>
|
|
<ul>
|
|
<li><a href="#" onclick="switchTheme('auto')">Auto</a></li>
|
|
<li><a href="#" onclick="switchTheme('light')">Light</a></li>
|
|
<li><a href="#" onclick="switchTheme('dark')">Dark</a></li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
|
|
<p><strong>Self-host</strong> — Not on the public endpoint. Clone the repo to use this engine.</p>
|
|
|
|
<h2>What It Does</h2>
|
|
|
|
<p>A tiny model that punches above its weight. Only 82 million parameters — small enough to run on a Raspberry Pi, an edge device, or anywhere resources are tight. Despite its size, the output quality is surprisingly good.</p>
|
|
|
|
<p>34 voices in American and British English, with names intentionally mirroring the OpenAI voice lineup. If you're migrating from OpenAI's TTS API and want something that feels familiar but runs on your own hardware, this is a natural fit.</p>
|
|
|
|
<p>Apache 2.0 licensed, 24kHz output. The smallest raccoon in the dumpster, but it gets the job done.</p>
|
|
|
|
<h2>Example</h2>
|
|
|
|
<p>Once self-hosted and enabled, it works through the same OpenAI-compatible API:</p>
|
|
|
|
<pre><code class="python">from openai import OpenAI
|
|
|
|
client = OpenAI(
|
|
api_key="not-needed",
|
|
base_url="http://localhost:8000/v1"
|
|
)
|
|
|
|
# Kokoro uses voice names like af_heart, am_adam, bf_emma
|
|
client.audio.speech.create(
|
|
model="tts-1-kokoro",
|
|
voice="af_heart",
|
|
input="A tiny model that fits anywhere. Edge devices, embedded systems, even a Raspberry Pi. The raccoons rescued this one for the smallest hardware."
|
|
).stream_to_file("kokoro.mp3")</code></pre>
|
|
|
|
<h2>Technical Details</h2>
|
|
|
|
<ul>
|
|
<li><strong>Parameters:</strong> 82 million (decoder-only architecture)</li>
|
|
<li><strong>Voices:</strong> 34 (American/British English)</li>
|
|
<li><strong>License:</strong> Apache 2.0 (commercial use OK)</li>
|
|
<li><strong>Sample rate:</strong> 24kHz</li>
|
|
<li><strong>Hardware:</strong> CPU or GPU, minimal resources needed</li>
|
|
<li><strong>Upstream:</strong> <a href="https://huggingface.co/hexgrad/Kokoro-82M" target="_blank">Kokoro TTS by Hexgrad</a></li>
|
|
</ul>
|
|
|
|
<h2>Self-Hosting</h2>
|
|
|
|
<pre><code class="bash">git clone https://git.unturf.com/engineering/unturf/uncloseai-speech.git
|
|
cd uncloseai-speech
|
|
make deploy
|
|
make voices-kokoro</code></pre>
|
|
|
|
<p>Add Kokoro voices to <code>voice_to_speaker.default.yaml</code> and restart.</p>
|
|
|
|
<p><a href="/text-to-speech.html"><strong>← Back to Text-to-Speech overview</strong></a></p>
|
|
|
|
<script>hljs.highlightAll();</script>
|
|
|
|
<footer>
|
|
<small>© uncloseai. 2025</small>
|
|
<br>
|
|
<small>Stylesheets by <a href="https://picocss.com" target="_blank">PicoCSS</a></small>
|
|
<small>& <a href="https://highlightjs.org/" target="_blank">highlight.js</a></small>
|
|
<br>
|
|
<small><a href="/privacy-policy.html">Privacy Policy</a> | <a href="/terms-of-use.html">Terms of Use</a></small>
|
|
</footer>
|
|
</main>
|
|
</body>
|
|
|
|
</html>
|