158 lines
7.5 KiB
HTML
158 lines
7.5 KiB
HTML
<!DOCTYPE html>
|
|
<!--
|
|
PUBLIC DOMAIN - NO LICENSE, NO WARRANTY
|
|
Copyright 2025 TimeHexOn & foxhop & russell@unturf
|
|
https://www.permacomputer.com
|
|
-->
|
|
|
|
<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-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>
|