Restructure TTS docs into main page + 5 engine subpages

Rewrite text-to-speech.html to focus on the live service (Qwen3-TTS
voice cloning with 42+ voices). Each of the 5 engines now has its own
page under /tts/ with detailed docs, examples, and self-hosting
instructions. Engine cards on the main page link out with Live/Self-host
badges. Sidebar nav updated with TTS subsection on all 6 pages.

New pages:
- /tts/voice-cloning.html (Live - Qwen3-TTS)
- /tts/fast-synthesis.html (Self-host - Piper)
- /tts/hd-cloning.html (Self-host - XTTS v2)
- /tts/multilingual-cpu.html (Self-host - Silero)
- /tts/lightweight.html (Self-host - Kokoro)
This commit is contained in:
russell@unturf.com 2026-01-27 17:06:58 -05:00
parent 4df8f92349
commit 5226d0be04
6 changed files with 897 additions and 244 deletions

View file

@ -9,18 +9,12 @@
<title>Open-Source Text-to-Speech | uncloseai-speech | uncloseai.com</title>
<meta name="description" content="Self-hostable OpenAI-compatible text-to-speech API with 5 TTS engines, 42+ built-in cloned voices, and zero API keys. Default: Qwen3-TTS with voice cloning.">
<!-- PicoCSS -->
<link rel="stylesheet" href="/css/pico.classless.min.css">
<!-- ChunkFive Font -->
<link rel="stylesheet" href="/css/chunkfive/stylesheet.css" type="text/css" charset="utf-8" />
<!-- Sidebar Theme -->
<link rel="stylesheet" href="/css/sidebar-theme.css">
<!-- Highlight.js for syntax highlighting -->
<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>
<!-- Theme Switcher Script -->
<script>
function switchTheme(theme) {
if (theme === "auto") {
@ -42,12 +36,10 @@
</head>
<body>
<!-- Mobile menu toggle -->
<button class="sidebar-toggle" onclick="document.querySelector('.sidebar').classList.toggle('open')">
☰
</button>
<!-- Left sidebar - Main Navigation -->
<aside class="sidebar">
<div class="table-of-contents">
<nav>
@ -69,20 +61,24 @@
<li><a href="/uncloseai-js.html">uncloseai.js Docs</a></li>
<li><a href="/inference.html">Inference Setup</a></li>
<li><a href="/text-to-speech.html" class="active">Text-to-Speech</a></li>
<li><a href="/tts/voice-cloning.html" style="padding-left:2em">Voice Cloning</a></li>
<li><a href="/tts/fast-synthesis.html" style="padding-left:2em">Fast Synthesis</a></li>
<li><a href="/tts/hd-cloning.html" style="padding-left:2em">HD Cloning</a></li>
<li><a href="/tts/multilingual-cpu.html" style="padding-left:2em">Multilingual CPU</a></li>
<li><a href="/tts/lightweight.html" style="padding-left:2em">Lightweight</a></li>
<li><a href="/crawler.html">Our Crawler</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>
<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 content -->
<main>
<header>
<hgroup>
<a href="https://uncloseai.com"><h1 class="unturf" style="font-family: 'ChunkFiveRegular';">uncloseai.</h1></a>
<p>Open-Source Text-to-Speech Infrastructure</p>
<p>Open-Source Text-to-Speech</p>
</hgroup>
<nav>
<ul>
@ -93,221 +89,42 @@
</nav>
</header>
<h2 id="raccoon-mission">🦝 Raccoon Mission: Rescuing Abandoned TTS Models</h2>
<h2>Raccoon Mission: Rescuing Abandoned TTS Models</h2>
<p><strong>uncloseai-speech</strong> is our community-driven initiative to rescue, preserve, and unify abandoned text-to-speech models into a single, resilient, self-hostable API.</p>
<blockquote>
<p><strong>"Why raccoons?"</strong> Because like raccoons, we dig through the digital dumpsters of abandoned GitHub repos and archived projects, rescuing valuable open-source TTS models that orgs have left behind. We give them a new home, maintain them, and make them accessible to everyone.</p>
<p><strong>"Why raccoons?"</strong> Because like raccoons, we dig through the digital dumpsters of abandoned GitHub repos and archived projects, rescuing valuable open-source TTS models that organizations have left behind. We give them a new home, maintain them, and make them accessible to everyone.</p>
</blockquote>
<h3 id="why-this-matters">Why This Matters</h3>
<p>Proprietary TTS APIs lock you into vendor ecosystems, charge per character, and can vanish overnight. We're building something different:</p>
<ul>
<li><strong>Zero API Keys:</strong> No registration, no tracking, no rate limits on your own infrastructure</li>
<li><strong>OpenAI-Compatible:</strong> Drop-in replacement - change one URL and you're running</li>
<li><strong>Five TTS Engines:</strong> Voice cloning (default), fast synthesis, HD cloning, multilingual CPU, and lightweight edge</li>
<li><strong>42+ Built-In Cloned Voices:</strong> With 10-language support including Chinese, Japanese, Korean, and European languages</li>
<li><strong>OpenAI-Compatible:</strong> Drop-in replacement &mdash; change one URL and you're running</li>
<li><strong>Five TTS Engines:</strong> Each with different strengths, all behind the same API</li>
<li><strong>42+ Built-In Cloned Voices:</strong> With 10-language support</li>
<li><strong>Self-Hostable:</strong> Docker compose, Makefile-driven, runs on your hardware</li>
<li><strong>AGPL v3 Licensed:</strong> Keeps TTS libre forever - even network service users get source code</li>
<li><strong>AGPL v3 Licensed:</strong> Keeps TTS libre forever</li>
</ul>
<h2 id="try-it-now">Try It Now (Free API)</h2>
<h2>What's Live Right Now</h2>
<p>Test our community-hosted endpoint before self-hosting:</p>
<p>Our public endpoint runs the <a href="/tts/voice-cloning.html"><strong>Voice Cloning engine</strong></a> &mdash; 42+ distinct human voices cloned from the LibriSpeech public domain corpus, speaking 10 languages natively. First audio arrives in under 100 milliseconds.</p>
<pre><code class="bash"># Female voice (aria)
<pre><code class="bash"># Female voice
curl https://speech.ai.unturf.com/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"input": "We rescue abandoned text-to-speech models and give them a new home. No API keys, no tracking, just open source voices for everyone.",
"voice": "aria"
}' > output.mp3
}' > aria.mp3
# Male voice (atlas)
# Male voice
curl https://speech.ai.unturf.com/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"input": "Like raccoons digging through digital dumpsters, we find the best open source TTS models that big companies left behind, and we make them accessible to everyone.",
"voice": "atlas"
}' > output-atlas.mp3</code></pre>
<h3 id="voice-auto-detection">Auto-Detection Magic</h3>
<p>Our voice routing is smart - no need to specify the model:</p>
<pre><code class="python">from openai import OpenAI
client = OpenAI(
api_key="not-needed", # Seriously, any string works
base_url="https://speech.ai.unturf.com/v1"
)
# Voice cloning (default engine) - 42+ voices
client.audio.speech.create(
voice="aria",
input="Raccoon mission. We dig through abandoned repos and rescue the best open source speech models before they disappear."
).stream_to_file("aria.mp3")
client.audio.speech.create(
voice="atlas",
input="Five engines, one API. Self-host it, clone any voice, speak ten languages. No vendor lock-in, no API keys, no limits."
).stream_to_file("atlas.mp3")
# Multilingual CPU engine
client.audio.speech.create(
voice="en_50",
input="One hundred and forty-eight voices across five languages, all running on CPU. No GPU required."
).stream_to_file("silero.mp3")
# Lightweight engine
client.audio.speech.create(
voice="af_heart",
input="A tiny model that fits anywhere. Edge devices, embedded systems, even a Raspberry Pi."
).stream_to_file("kokoro.mp3")</code></pre>
<h3 id="discover-voices">Discover Voices</h3>
<p>Every voice has a name, a gender, and a personality. Browse the full catalog live — the API tells you exactly what's available and which engine powers each one.</p>
<p><a href="https://speech.ai.unturf.com/v1/voices" target="_blank"><strong>→ See all voices</strong></a></p>
<pre><code class="bash">curl https://speech.ai.unturf.com/v1/voices | jq .</code></pre>
<h3 id="discover-models">Discover Models</h3>
<p>Five engines, each with different strengths. Query the API to see what's running on any instance — useful when self-hosting to verify your setup.</p>
<p><a href="https://speech.ai.unturf.com/v1/models" target="_blank"><strong>→ See all engines</strong></a></p>
<pre><code class="bash">curl https://speech.ai.unturf.com/v1/models | jq .</code></pre>
<h2 id="self-hosting">Self-Hosting</h2>
<p>For complete installation instructions and documentation, see the <a href="https://git.unturf.com/engineering/unturf/uncloseai-speech" target="_blank">uncloseai-speech repository</a>.</p>
<h3 id="quick-start">Quick Start</h3>
<pre><code class="bash"># Clone the repository
git clone https://git.unturf.com/engineering/unturf/uncloseai-speech.git
cd uncloseai-speech
# See all available commands
make help
# Deploy with Docker (GPU)
make deploy
# Test it (Qwen3-TTS model downloads automatically on first use)
make test
# Watch logs
make logs</code></pre>
<p><strong>That's it.</strong> You now have a production TTS API running locally.</p>
<h3 id="gpu-deployment">GPU Deployment (Voice Cloning)</h3>
<p>Deploy with GPU support for Qwen3-TTS voice cloning:</p>
<pre><code class="bash"># Build and start with GPU (requires NVIDIA Docker runtime)
make deploy
# Or CPU-only (slower, but works anywhere)
make deploy-cpu
# Test the endpoint
make test
# Test all 42+ voices
make hydrate</code></pre>
<h2 id="the-engines">The Five Engines</h2>
<p>Each engine has a different personality. You don't need to think about model names — just pick a voice and we route it to the right engine. But if you're curious what's under the hood:</p>
<h3 id="qwen">🧠 Voice Cloning — <small>Default Engine</small></h3>
<p>Our default engine clones real human voices from 3-second audio samples. 42+ distinct speakers, each with their own timbre, cadence, and character. Speaks 10 languages natively — English, Chinese, Japanese, Korean, German, French, Russian, Portuguese, Spanish, and Italian. First audio arrives in under 100ms.</p>
<p><a href="https://speech.ai.unturf.com/v1/voices" target="_blank"><strong>→ Browse all 42+ voices</strong></a></p>
<h3 id="piper">🏃 Fast Synthesis</h3>
<p>When you need speed over everything else. Runs entirely on CPU, no GPU required. 100+ English voices. Ideal for high-volume batch jobs or real-time applications where latency matters more than naturalness.</p>
<h3 id="xtts">🎙️ HD Voice Cloning</h3>
<p>Clone any voice from a 6-second sample. Supports 16 languages with automatic detection. The highest fidelity option — great for audiobooks, character voices, or when you want to sound like yourself. Needs a GPU with ~4GB VRAM.</p>
<h3 id="silero">⚡ Multilingual CPU</h3>
<p>148 voices across 5 languages (English, Russian, German, Spanish, French) — all running on CPU. The go-to choice when you need multilingual support without a GPU. Clean 48kHz output, actively maintained.</p>
<h3 id="kokoro">🪶 Lightweight</h3>
<p>A tiny 82M parameter model that punches above its weight. 34 voices in American and British English. Built for edge devices, embedded systems, and anywhere resources are tight. Apache 2.0 licensed.</p>
<h2 id="get-involved">Get Involved</h2>
<p>We run a free public endpoint at <code>https://speech.ai.unturf.com/v1</code> but we need help scaling:</p>
<h3 id="contribute-infrastructure">Contribute Infrastructure</h3>
<ul>
<li><strong>Donate GPU Time:</strong> Run an instance, we'll load-balance community traffic</li>
<li><strong>Host Regional Mirrors:</strong> Reduce latency for users in your region</li>
<li><strong>Sponsor Server Costs:</strong> Help keep the public endpoint free for everyone</li>
</ul>
<h3 id="contribute-code">Contribute Code</h3>
<ul>
<li><strong>Integrate New Engines:</strong> StyleTTS2, Fish Speech, Chatterbox are on the roadmap</li>
<li><strong>Add Voice Samples:</strong> Expand XTTS voice library with diverse accents</li>
<li><strong>Improve Documentation:</strong> Write tutorials, create video walkthroughs</li>
<li><strong>Build Tools:</strong> Voice editor UI, quality benchmarking, automated testing</li>
</ul>
<h2 id="resources">Resources</h2>
<ul>
<li><strong>Repository:</strong> <a href="https://git.unturf.com/engineering/unturf/uncloseai-speech" target="_blank">git.unturf.com/engineering/unturf/uncloseai-speech</a></li>
<li><strong>API Endpoint:</strong> <code>https://speech.ai.unturf.com/v1</code></li>
<li><strong>Voices:</strong> <a href="https://speech.ai.unturf.com/v1/voices" target="_blank">speech.ai.unturf.com/v1/voices</a></li>
<li><strong>Models:</strong> <a href="https://speech.ai.unturf.com/v1/models" target="_blank">speech.ai.unturf.com/v1/models</a></li>
<li><strong>Documentation:</strong> See <code>docs/</code> directory in repository</li>
<li><strong>Community:</strong> Comments section below, or open an issue on GitLab</li>
</ul>
<h2 id="example-walkthrough">Complete Example: Voice Cloning</h2>
<p>Let's clone your voice and use it via the API:</p>
<h3>Step 1: Record Your Voice Sample</h3>
<pre><code class="bash"># Record 10 seconds of clean audio (22050 Hz, mono)
ffmpeg -f alsa -i default -ac 1 -ar 22050 -t 10 -y my_voice.wav
# Clean up background noise
ffmpeg -i my_voice.wav \
-af "highpass=f=200, lowpass=f=3000, afftdn=nf=25" \
-ac 1 -ar 22050 my_voice_clean.wav</code></pre>
<h3>Step 2: Add to Voice Configuration</h3>
<pre><code class="bash"># Copy sample to voices directory
cp my_voice_clean.wav ~/uncloseai-speech/voices/me.wav
# Add to config/voice_to_speaker.yaml
cat >> config/voice_to_speaker.yaml << 'EOF'
tts-1-hd:
my_voice:
model: xtts
speaker: voices/me.wav
language: en
EOF
# Restart server
make deploy</code></pre>
<h3>Step 3: Use Your Voice</h3>
}' > atlas.mp3</code></pre>
<pre><code class="python">from openai import OpenAI
@ -316,20 +133,86 @@ client = OpenAI(
base_url="https://speech.ai.unturf.com/v1"
)
# Generate speech with YOUR voice
client.audio.speech.create(
model="tts-1-hd",
voice="my_voice",
input="This is my own voice, cloned from a ten-second recording. No cloud service needed. My voice, my hardware, my rules."
).stream_to_file("cloned_output.mp3")</code></pre>
voice="aria",
input="Raccoon mission. We dig through abandoned repos and rescue the best open source speech models before they disappear."
).stream_to_file("aria.mp3")
<p><strong>That's the power of open source TTS.</strong> No API keys, no usage limits, your voice, your infrastructure.</p>
client.audio.speech.create(
voice="atlas",
input="Five engines, one API. Self-host it, clone any voice, speak ten languages. No vendor lock-in, no API keys, no limits."
).stream_to_file("atlas.mp3")</code></pre>
<h2 id="next-steps">Next Steps</h2>
<p>Want to run your own LLM inference alongside TTS?</p>
<p><a href="/inference.html"><strong>📖 Read the Inference Setup documentation →</strong></a></p>
<h3>Browse Voices &amp; Models</h3>
<h2 id="discussions">Questions & Community</h2>
<p>Every voice has a name, a gender, and a personality. The API tells you exactly what's available.</p>
<p><a href="https://speech.ai.unturf.com/v1/voices" target="_blank"><strong>&rarr; See all voices</strong></a> &nbsp; <a href="https://speech.ai.unturf.com/v1/models" target="_blank"><strong>&rarr; See all engines</strong></a></p>
<h2>The Five Engines</h2>
<p>The dumpster is well-organized. Five TTS engines, each rescued from a different corner of open source, all running behind the same OpenAI-compatible API. Our public endpoint runs Voice Cloning. The other four are ready for anyone who clones the repo.</p>
<h3><a href="/tts/voice-cloning.html">Voice Cloning</a> &mdash; <mark>Live</mark></h3>
<p>42+ cloned voices, 10 languages, voice cloning from 3-second samples. 1.7 billion parameters, 97ms first-packet latency. This is what's running on our public endpoint right now.</p>
<h3><a href="/tts/fast-synthesis.html">Fast Synthesis</a> &mdash; <small>Self-host</small></h3>
<p>100+ English voices, CPU-only, ONNX runtime. The fastest engine in the dumpster &mdash; built for high-volume batch jobs and real-time applications where latency matters most.</p>
<h3><a href="/tts/hd-cloning.html">HD Voice Cloning</a> &mdash; <small>Self-host</small></h3>
<p>Clone any voice from a 6-second sample across 16 languages. The highest fidelity option, rescued from the Coqui TTS project. Needs a GPU with ~4GB VRAM.</p>
<h3><a href="/tts/multilingual-cpu.html">Multilingual CPU</a> &mdash; <small>Self-host</small></h3>
<p>148 voices across 5 languages, all running on CPU. English, Russian, German, Spanish, and French. Clean 48kHz output, no GPU required.</p>
<h3><a href="/tts/lightweight.html">Lightweight</a> &mdash; <small>Self-host</small></h3>
<p>82 million parameters, 34 voices. Small enough for a Raspberry Pi or an edge device. Apache 2.0 licensed, 24kHz output.</p>
<h2>Self-Hosting</h2>
<p>Clone the repo, deploy, and you have your own production TTS API. All five engines are included &mdash; enable whichever ones you need.</p>
<pre><code class="bash">git clone https://git.unturf.com/engineering/unturf/uncloseai-speech.git
cd uncloseai-speech
# Deploy with GPU (voice cloning engine, default)
make deploy
# Or CPU-only (works anywhere, slower)
make deploy-cpu
# Test it (model downloads automatically on first use)
make test
# Enable additional engines
make voices-piper # Fast Synthesis
make voices-xtts # HD Voice Cloning
make voices-silero # Multilingual CPU
make voices-kokoro # Lightweight</code></pre>
<p>For full documentation, see the <a href="https://git.unturf.com/engineering/unturf/uncloseai-speech" target="_blank">uncloseai-speech repository</a>.</p>
<h2>Get Involved</h2>
<p>We run a free public endpoint at <code>https://speech.ai.unturf.com/v1</code> but we need help scaling:</p>
<ul>
<li><strong>Donate GPU Time:</strong> Run an instance, we'll load-balance community traffic</li>
<li><strong>Host Regional Mirrors:</strong> Reduce latency for users in your region</li>
<li><strong>Integrate New Engines:</strong> StyleTTS2, Fish Speech, Chatterbox are on the roadmap</li>
<li><strong>Add Voice Samples:</strong> Expand the voice library with diverse accents</li>
</ul>
<h2>Resources</h2>
<ul>
<li><strong>Repository:</strong> <a href="https://git.unturf.com/engineering/unturf/uncloseai-speech" target="_blank">git.unturf.com/engineering/unturf/uncloseai-speech</a></li>
<li><strong>API Endpoint:</strong> <code>https://speech.ai.unturf.com/v1</code></li>
<li><strong>Voices:</strong> <a href="https://speech.ai.unturf.com/v1/voices" target="_blank">speech.ai.unturf.com/v1/voices</a></li>
<li><strong>Models:</strong> <a href="https://speech.ai.unturf.com/v1/models" target="_blank">speech.ai.unturf.com/v1/models</a></li>
</ul>
<h2>Questions &amp; Community</h2>
<p>Ask questions, share your deployments, or discuss TTS research below!</p>
@ -393,43 +276,13 @@ client.audio.speech.create(
<script>hljs.highlightAll();</script>
<footer>
<small>© uncloseai. 2025</small>
<small>&copy; 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>
<script>
document.querySelectorAll('.table-of-contents a').forEach(link => {
link.addEventListener('click', function() {
document.querySelectorAll('.table-of-contents a').forEach(a => a.classList.remove('active'));
this.classList.add('active');
});
});
const sections = document.querySelectorAll('h2[id], h3[id]');
const navLinks = document.querySelectorAll('.table-of-contents a');
window.addEventListener('scroll', () => {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (window.scrollY >= sectionTop - 100) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === '#' + current) {
link.classList.add('active');
}
});
});
</script>
</main>
</body>

View file

@ -0,0 +1,149 @@
<!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>Fast Synthesis Engine | uncloseai-speech | uncloseai.com</title>
<meta name="description" content="Piper TTS: real-time speech synthesis on CPU. 100+ English voices, ONNX runtime, no GPU required. 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="/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">Voice Cloning</a></li>
<li><a href="/tts/fast-synthesis.html" class="active" style="padding-left:2em">Fast Synthesis</a></li>
<li><a href="/tts/hd-cloning.html" style="padding-left:2em">HD Cloning</a></li>
<li><a href="/tts/multilingual-cpu.html" style="padding-left:2em">Multilingual CPU</a></li>
<li><a href="/tts/lightweight.html" style="padding-left:2em">Lightweight</a></li>
<li><a href="/crawler.html">Our Crawler</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>Fast Synthesis Engine</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> &mdash; Not on the public endpoint. Clone the repo to use this engine.</p>
<h2>What It Does</h2>
<p>When you need speed over everything else. This engine runs entirely on CPU with no GPU required, producing speech in real-time. It's the fastest engine in the raccoon dumpster &mdash; built on the Piper project, which we rescued and maintain.</p>
<p>Over 100 English voices are available through LibriTTS voice models. The output is clean 22.05kHz audio, synthesized through an ONNX runtime that runs on virtually any hardware.</p>
<p>If you're building a high-volume batch pipeline, a real-time assistant, or anything where latency matters more than naturalness, this is your engine.</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"
)
# Piper voices use the tts-1 model
client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Rescued from the dumpster, running at full speed. No GPU needed, just pure CPU synthesis."
).stream_to_file("piper.mp3")</code></pre>
<h2>Technical Details</h2>
<ul>
<li><strong>Voices:</strong> 100+ English voices (LibriTTS, Amy, Arctic, and more)</li>
<li><strong>Runtime:</strong> ONNX (fast CPU inference)</li>
<li><strong>Sample rate:</strong> 22.05kHz</li>
<li><strong>Hardware:</strong> CPU only, no GPU needed</li>
<li><strong>Upstream:</strong> Piper TTS / OHF-Voice fork</li>
</ul>
<h2>Self-Hosting</h2>
<p>Enable Piper by downloading voice models and adding them to your config:</p>
<pre><code class="bash">git clone https://git.unturf.com/engineering/unturf/uncloseai-speech.git
cd uncloseai-speech
make deploy
make voices-piper</code></pre>
<p>Then uncomment the <code>tts-1</code> section in <code>voice_to_speaker.default.yaml</code> and restart.</p>
<p><a href="/text-to-speech.html"><strong>&larr; Back to Text-to-Speech overview</strong></a></p>
<script>hljs.highlightAll();</script>
<footer>
<small>&copy; 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>

167
public/tts/hd-cloning.html Normal file
View file

@ -0,0 +1,167 @@
<!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>HD Voice Cloning Engine | uncloseai-speech | uncloseai.com</title>
<meta name="description" content="XTTS v2: high-definition voice cloning from 6-second samples. 16 languages with auto-detection. 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="/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">Voice Cloning</a></li>
<li><a href="/tts/fast-synthesis.html" style="padding-left:2em">Fast Synthesis</a></li>
<li><a href="/tts/hd-cloning.html" class="active" style="padding-left:2em">HD Cloning</a></li>
<li><a href="/tts/multilingual-cpu.html" style="padding-left:2em">Multilingual CPU</a></li>
<li><a href="/tts/lightweight.html" style="padding-left:2em">Lightweight</a></li>
<li><a href="/crawler.html">Our Crawler</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>HD Voice Cloning Engine</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> &mdash; Not on the public endpoint. Clone the repo to use this engine.</p>
<h2>What It Does</h2>
<p>This is the high-fidelity voice cloning engine. Give it a 6-second audio sample of anyone's voice, and it will speak in that voice across 16 languages. It automatically detects the language of your input text.</p>
<p>Built on the Coqui TTS project &mdash; one of the most important open-source TTS efforts that was abandoned when the company shut down. We rescued it. The raccoons dug deep for this one.</p>
<p>Best for audiobooks, character voices, personalized assistants, or any time you want the output to sound like a specific person. Requires a GPU with about 4GB of VRAM.</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"
)
# HD cloning uses tts-1-hd model
client.audio.speech.create(
model="tts-1-hd",
voice="my_voice",
input="This voice was cloned from a six-second recording. The original Coqui project may be gone, but the raccoons kept it alive."
).stream_to_file("hd-cloned.mp3")</code></pre>
<h2>Clone Your Own Voice</h2>
<pre><code class="bash"># Record 10 seconds of clean audio
ffmpeg -f alsa -i default -ac 1 -ar 22050 -t 10 -y my_voice.wav
# Clean up background noise
ffmpeg -i my_voice.wav \
-af "highpass=f=200, lowpass=f=3000, afftdn=nf=25" \
-ac 1 -ar 22050 my_voice_clean.wav
# Copy to voices directory
cp my_voice_clean.wav ~/uncloseai-speech/voices/me.wav</code></pre>
<p>Then add it to <code>config/voice_to_speaker.yaml</code>:</p>
<pre><code class="yaml">tts-1-hd:
my_voice:
model: xtts
speaker: voices/me.wav
language: en</code></pre>
<h2>Technical Details</h2>
<ul>
<li><strong>Languages:</strong> 16 with automatic detection</li>
<li><strong>Voice cloning:</strong> From 6-second audio samples</li>
<li><strong>Hardware:</strong> GPU required (~4GB VRAM)</li>
<li><strong>Upstream:</strong> XTTS v2 / Coqui TTS (community-maintained)</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-xtts</code></pre>
<p>Uncomment the <code>tts-1-hd</code> section in <code>voice_to_speaker.default.yaml</code> and restart.</p>
<p><a href="/text-to-speech.html"><strong>&larr; Back to Text-to-Speech overview</strong></a></p>
<script>hljs.highlightAll();</script>
<footer>
<small>&copy; 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>

148
public/tts/lightweight.html Normal file
View file

@ -0,0 +1,148 @@
<!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>Lightweight Engine | 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="/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">Voice Cloning</a></li>
<li><a href="/tts/fast-synthesis.html" style="padding-left:2em">Fast Synthesis</a></li>
<li><a href="/tts/hd-cloning.html" style="padding-left:2em">HD Cloning</a></li>
<li><a href="/tts/multilingual-cpu.html" style="padding-left:2em">Multilingual CPU</a></li>
<li><a href="/tts/lightweight.html" class="active" style="padding-left:2em">Lightweight</a></li>
<li><a href="/crawler.html">Our Crawler</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>Lightweight Engine</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> &mdash; 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 &mdash; 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> Kokoro TTS by Hexgrad</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>&larr; Back to Text-to-Speech overview</strong></a></p>
<script>hljs.highlightAll();</script>
<footer>
<small>&copy; 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>

View file

@ -0,0 +1,160 @@
<!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>Multilingual CPU Engine | uncloseai-speech | uncloseai.com</title>
<meta name="description" content="Silero TTS: 148 voices across 5 languages, all on CPU. PyTorch, 48kHz output. 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="/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">Voice Cloning</a></li>
<li><a href="/tts/fast-synthesis.html" style="padding-left:2em">Fast Synthesis</a></li>
<li><a href="/tts/hd-cloning.html" style="padding-left:2em">HD Cloning</a></li>
<li><a href="/tts/multilingual-cpu.html" class="active" style="padding-left:2em">Multilingual CPU</a></li>
<li><a href="/tts/lightweight.html" style="padding-left:2em">Lightweight</a></li>
<li><a href="/crawler.html">Our Crawler</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>Multilingual CPU Engine</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> &mdash; Not on the public endpoint. Clone the repo to use this engine.</p>
<h2>What It Does</h2>
<p>148 voices across 5 languages, all running on CPU. English, Russian, German, Spanish, and French &mdash; each language with its own set of distinct speakers.</p>
<p>The models are small and efficient. They download automatically the first time you use them, no manual setup required. Output is high-quality 48kHz audio.</p>
<p>This is the go-to engine when you need multilingual support without a GPU. The Silero team actively maintains it, and we keep it integrated and tested in the raccoon dumpster.</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"
)
# Silero uses native voice names like en_0, en_50, ru_0, de_0
client.audio.speech.create(
model="tts-1-silero",
voice="en_50",
input="One hundred and forty-eight voices across five languages, all running on CPU. No GPU required. The raccoons found this one and it just works."
).stream_to_file("silero.mp3")</code></pre>
<h2>Available Languages</h2>
<ul>
<li><strong>English:</strong> ~120 voices (en_0 through en_117)</li>
<li><strong>Russian:</strong> ~10 voices</li>
<li><strong>German:</strong> ~10 voices</li>
<li><strong>Spanish:</strong> ~5 voices</li>
<li><strong>French:</strong> ~5 voices</li>
</ul>
<h2>Technical Details</h2>
<ul>
<li><strong>Voices:</strong> 148 across 5 languages</li>
<li><strong>Sample rate:</strong> 48kHz</li>
<li><strong>Runtime:</strong> PyTorch (torch.hub)</li>
<li><strong>Hardware:</strong> CPU only, no GPU needed</li>
<li><strong>Model size:</strong> ~50-100MB per language</li>
<li><strong>Upstream:</strong> Silero TTS, actively maintained</li>
</ul>
<h2>Self-Hosting</h2>
<p>Models auto-download on first use. Enable by adding Silero voices to your config:</p>
<pre><code class="bash">git clone https://git.unturf.com/engineering/unturf/uncloseai-speech.git
cd uncloseai-speech
make deploy
make voices-silero</code></pre>
<p>Add Silero voices to <code>voice_to_speaker.default.yaml</code> and restart.</p>
<p><a href="/text-to-speech.html"><strong>&larr; Back to Text-to-Speech overview</strong></a></p>
<script>hljs.highlightAll();</script>
<footer>
<small>&copy; 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>

View file

@ -0,0 +1,176 @@
<!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>Voice Cloning Engine | uncloseai-speech | uncloseai.com</title>
<meta name="description" content="State-of-the-art voice cloning from 3-second samples. 42+ built-in voices, 10 languages, 97ms latency. Live on our public endpoint.">
<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="/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" class="active" style="padding-left:2em">Voice Cloning</a></li>
<li><a href="/tts/fast-synthesis.html" style="padding-left:2em">Fast Synthesis</a></li>
<li><a href="/tts/hd-cloning.html" style="padding-left:2em">HD Cloning</a></li>
<li><a href="/tts/multilingual-cpu.html" style="padding-left:2em">Multilingual CPU</a></li>
<li><a href="/tts/lightweight.html" style="padding-left:2em">Lightweight</a></li>
<li><a href="/crawler.html">Our Crawler</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>Voice Cloning Engine</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><mark>Live</mark> &mdash; This is our default engine, running right now on the public endpoint.</p>
<h2>What It Does</h2>
<p>This engine clones real human voices from short audio samples. We ship 42+ distinct speakers out of the box &mdash; each with their own timbre, cadence, and character, cloned from the LibriSpeech public domain corpus. You can also clone your own voice from a 3-second recording.</p>
<p>It speaks 10 languages natively: English, Chinese, Japanese, Korean, German, French, Russian, Portuguese, Spanish, and Italian. First audio arrives in under 100 milliseconds.</p>
<h2>Try It</h2>
<pre><code class="bash"># Female voice
curl https://speech.ai.unturf.com/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"input": "We rescue abandoned text-to-speech models and give them a new home. No API keys, no tracking, just open source voices for everyone.",
"voice": "aria"
}' > aria.mp3
# Male voice
curl https://speech.ai.unturf.com/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"input": "Like raccoons digging through digital dumpsters, we find the best open source TTS models that big companies left behind, and we make them accessible to everyone.",
"voice": "atlas"
}' > atlas.mp3</code></pre>
<pre><code class="python">from openai import OpenAI
client = OpenAI(
api_key="not-needed",
base_url="https://speech.ai.unturf.com/v1"
)
client.audio.speech.create(
voice="aria",
input="Raccoon mission. We dig through abandoned repos and rescue the best open source speech models before they disappear."
).stream_to_file("aria.mp3")
client.audio.speech.create(
voice="atlas",
input="Five engines, one API. Self-host it, clone any voice, speak ten languages. No vendor lock-in, no API keys, no limits."
).stream_to_file("atlas.mp3")</code></pre>
<h2>Voices</h2>
<p>42+ built-in voices, each a distinct human speaker. 20 female, 20 male, plus OpenAI-compatible aliases.</p>
<p><strong>Female:</strong> aria, clara, elena, grace, hazel, iris, luna, maya, ruby, sage, sofia, amber, brooke, cora, diana, eden, faye, gemma, hope, ivy</p>
<p><strong>Male:</strong> atlas, caleb, felix, hugo, jasper, kai, leo, marcus, owen, theo, archer, blake, cole, dane, ezra, finn, grant, heath, ivan, jude</p>
<p><a href="https://speech.ai.unturf.com/v1/voices" target="_blank"><strong>&rarr; Browse all voices live</strong></a></p>
<h2>Technical Details</h2>
<ul>
<li><strong>Model:</strong> 1.7 billion parameters</li>
<li><strong>License:</strong> Apache 2.0 (commercial use OK)</li>
<li><strong>Languages:</strong> 10 (English, Chinese, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian)</li>
<li><strong>Sample rate:</strong> 24kHz</li>
<li><strong>Latency:</strong> 97ms first packet</li>
<li><strong>Hardware:</strong> GPU recommended, runs on CPU (slower)</li>
<li><strong>Upstream:</strong> Qwen3-TTS by Alibaba, actively maintained</li>
</ul>
<h2>Self-Hosting</h2>
<p>This engine is enabled by default. Clone the repo and deploy:</p>
<pre><code class="bash">git clone https://git.unturf.com/engineering/unturf/uncloseai-speech.git
cd uncloseai-speech
make deploy
make test</code></pre>
<p>The model downloads automatically on first use (~3.4 GB). Voice samples are included in the repo.</p>
<p><a href="/text-to-speech.html"><strong>&larr; Back to Text-to-Speech overview</strong></a></p>
<script>hljs.highlightAll();</script>
<footer>
<small>&copy; 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>