Open-source text-to-speech for European languages with voice cloning capabilities
Powered by an AR + Diffusion architecture
Open-source text-to-speech models for European languages are significantly lagging behind. While English TTS has seen remarkable progress, speakers of German, French, Spanish, Polish, and dozens of other European languages have been underserved by the open-source community.
KugelAudio aims to change this. Building on the excellent foundation laid by the VibeVoice team at Microsoft, we've trained a model specifically focused on European language coverage, using approximately 200,000 hours of highly pre-processed and enhanced speech data from the YODAS2 dataset.
KugelAudio achieves state-of-the-art performance, beating industry leaders including ElevenLabs in rigorous human preference testing. This breakthrough demonstrates that open-source models can now rival - and surpass - the best commercial TTS systems.
We conducted extensive A/B testing with 339 human evaluations to compare KugelAudio against leading TTS models. Participants listened to a reference voice sample, then compared outputs from two models and selected which sounded more human and closer to the original voice.
The evaluation specifically focused on German language samples with diverse emotional expressions and speaking styles:
These diverse test cases demonstrate the model's capability to handle a wide range of speaking styles beyond standard narration.
| Rank | Model | Score | Record | Win Rate |
|---|---|---|---|---|
| ๐ฅ 1 | KugelAudio | 26 | 71W / 20L / 23T | 78.0% |
| ๐ฅ 2 | ElevenLabs Multi v2 | 25 | 56W / 34L / 22T | 62.2% |
| ๐ฅ 3 | ElevenLabs v3 | 21 | 64W / 34L / 16T | 65.3% |
| 4 | Cartesia | 21 | 55W / 38L / 19T | 59.1% |
| 5 | VibeVoice | 10 | 30W / 74L / 8T | 28.8% |
| 6 | CosyVoice v3 | 9 | 15W / 91L / 8T | 14.2% |
Based on 339 evaluations using Bayesian skill-rating system (OpenSkill)
Listen to KugelAudio's diverse voice capabilities across different speaking styles and languages:
| Sample | Description | Audio Player |
|---|---|---|
| Whispering | Soft whispering voice | |
| Female Narrator | Professional female reader voice | |
| Angry Voice | Irritated and frustrated speech | |
| Radio Announcer | Professional radio broadcast voice |
All samples are generated with zero-shot voice cloning from reference audio.
KugelAudio supports 24 major European languages with varying levels of quality based on dataset representation:
| Language | Code | Flag | Language | Code | Flag | Language | Code | Flag |
|---|---|---|---|---|---|---|---|---|
| English | en | ๐บ๐ธ | German | de | ๐ฉ๐ช | French | fr | ๐ซ๐ท |
| Spanish | es | ๐ช๐ธ | Italian | it | ๐ฎ๐น | Portuguese | pt | ๐ต๐น |
| Dutch | nl | ๐ณ๐ฑ | Polish | pl | ๐ต๐ฑ | Russian | ru | ๐ท๐บ |
| Ukrainian | uk | ๐บ๐ฆ | Czech | cs | ๐จ๐ฟ | Romanian | ro | ๐ท๐ด |
| Hungarian | hu | ๐ญ๐บ | Swedish | sv | ๐ธ๐ช | Danish | da | ๐ฉ๐ฐ |
| Finnish | fi | ๐ซ๐ฎ | Norwegian | no | ๐ณ๐ด | Greek | el | ๐ฌ๐ท |
| Bulgarian | bg | ๐ง๐ฌ | Slovak | sk | ๐ธ๐ฐ | Croatian | hr | ๐ญ๐ท |
| Serbian | sr | ๐ท๐ธ | Turkish | tr | ๐น๐ท |
๐ Language Coverage Disclaimer: Quality varies significantly by language. Spanish, French, English, and German have the strongest representation in our training data (~200,000 hours from YODAS2). Other languages may have reduced quality, prosody, or vocabulary coverage depending on their availability in the training dataset.
Get started with KugelAudio quickly using our documentation:
| ๐ฅ Installation | Set up KugelAudio on your machine |
| ๐ฏ Quick Start | Generate your first speech in minutes |
| โ๏ธ Hosted API | Use our cloud API for zero-setup inference | | ๐ Watermarking | Verify AI-generated audio | | ๐ฆ Models | Available model variants and benchmarks |
๐ State-of-the-Art Performance: Outperforms ElevenLabs and other leading TTS models in human evaluations
๐ European Language Focus: Trained specifically for 24 major European languages
High-Quality TTS: State-of-the-art speech synthesis using AR + Diffusion
Audio Watermarking: All generated audio is watermarked using Facebook's AudioSeal
๐ญ Emotional Range: Supports various speaking styles including shouting, singing, and expressive speech
Web Interface: Easy-to-use Gradio UI for non-technical users
HuggingFace Integration: Seamless loading from HuggingFace Hub
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or via pip
pip install uv
# Clone the repository
git clone https://github.com/Kugelaudio/kugelaudio-open.git
cd kugelaudio-open
# Run directly with uv (recommended - handles all dependencies automatically)
uv run python start.py
That's it! The uv run command will automatically create a virtual environment and install all dependencies.
# Quick start with uv (recommended)
uv run python start.py
# With a public share link
uv run python start.py ui --share
# Custom host and port
uv run python start.py ui --host 0.0.0.0 --port 8080
Then open http://127.0.0.1:7860 in your browser.
# Generate speech from text
uv run python start.py generate "Hello, this is KugelAudio!" -o hello.wav
# Using the default model for higher quality
uv run python start.py generate "Premium quality speech" --model kugelaudio/kugelaudio-0-open -o premium.wav
# Check if audio contains watermark
uv run python start.py verify audio.wav
from kugelaudio_open import (
KugelAudioForConditionalGenerationInference,
KugelAudioProcessor,
)
import torch
# Load model
device = "cuda" if torch.cuda.is_available() else "cpu"
model = KugelAudioForConditionalGenerationInference.from_pretrained(
"kugelaudio/kugelaudio-0-open",
torch_dtype=torch.bfloat16,
).to(device)
model.eval()
processor = KugelAudioProcessor.from_pretrained("kugelaudio/kugelaudio-0-open")
# Generate speech (watermark is automatically applied)
inputs = processor(text="Hello world!", return_tensors="pt")
inputs = {k: v.to(device) if isinstance(v, torch.Tensor) else v for k, v in inputs.items()}
with torch.no_grad():
outputs = model.generate(**inputs, cfg_scale=3.0)
# Save audio
processor.save_audio(outputs.speech_outputs[0], "output.wav")
Don't want to run your own infrastructure? Use our hosted API at kugelaudio.com:
uv pip install kugelaudio
from kugelaudio import KugelAudio
# Initialize the client
client = KugelAudio(api_key="your_api_key")
# Generate speech
audio = client.tts.generate(
text="Hello from KugelAudio!",
model="kugel-1-turbo",
)
# Save to file
audio.save("output.wav")
print(f"Generated {audio.duration_seconds:.2f}s in {audio.generation_ms:.0f}ms")
๐ Full SDK Documentation โ
All audio generated by KugelAudio contains an imperceptible watermark using Facebook's AudioSeal technology. This helps identify AI-generated content and prevent misuse.
from kugelaudio_open.watermark import AudioWatermark
watermark = AudioWatermark()
# Check if audio is watermarked
result = watermark.detect(audio, sample_rate=24000)
print(f"Detected: {result.detected}")
print(f"Confidence: {result.confidence:.1%}")
| Model | Parameters | Quality | RTF | Speed | VRAM |
|---|---|---|---|---|---|
| kugelaudio-0-open | 7B | Best | 1.00 | 1.0x realtime | ~19GB |
RTF = Real-Time Factor (generation time / audio duration). Lower is faster.
KugelAudio uses a hybrid AR + Diffusion architecture:
# Use specific GPU
export CUDA_VISIBLE_DEVICES=0
# Enable TF32 for faster computation on Ampere GPUs
export TORCH_ALLOW_TF32=1
outputs = model.generate(
**inputs,
voice_prompt=voice_prompt, # Reference audio for voice cloning
cfg_scale=3.0, # Guidance scale (1.0-10.0)
max_new_tokens=4096, # Maximum generation length
)
This technology is intended for legitimate purposes:
โ Appropriate Uses:
โ Prohibited Uses:
All generated audio is watermarked to enable detection of AI-generated content.
MIT License - see LICENSE for details.
This model would not have been possible without the contributions of many individuals and organizations:
Kajo Kratzenstein
๐ง kajo@kugelaudio.com
๐ kugelaudio.com
Carlos Menke
@software{kugelaudio2026,
title = {KugelAudio: Open-Source Text-to-Speech for European Languages with Voice Cloning},
author = {Kratzenstein, Kajo and Menke, Carlos},
year = {2026},
institution = {Hasso-Plattner-Institut},
url = {https://github.com/kugelaudio/kugelaudio}
}
Funding Notice
Das zugrunde liegende Vorhaben wurde mit Mitteln des Bundesministeriums fรผr Forschung, Technologie und Raumfahrt unter dem Fรถrderkennzeichen ยปKI-Servicezentrum Berlin-Brandenburgยซ 16IS22092 gefรถrdert. Die Verantwortung fรผr den Inhalt dieser Seite liegt bei der Autorin/beim Autor.
This project was funded by the German Federal Ministry of Research, Technology and Space under the funding code "AI Service Center Berlin-Brandenburg" 16IS22092. The responsibility for the content of this publication lies with the author.
Python
100.0%
Open-source text-to-speech for European languages with voice cloning capabilities
Powered by an AR + Diffusion architecture
Open-source text-to-speech models for European languages are significantly lagging behind. While English TTS has seen remarkable progress, speakers of German, French, Spanish, Polish, and dozens of other European languages have been underserved by the open-source community.
KugelAudio aims to change this. Building on the excellent foundation laid by the VibeVoice team at Microsoft, we've trained a model specifically focused on European language coverage, using approximately 200,000 hours of highly pre-processed and enhanced speech data from the YODAS2 dataset.
KugelAudio achieves state-of-the-art performance, beating industry leaders including ElevenLabs in rigorous human preference testing. This breakthrough demonstrates that open-source models can now rival - and surpass - the best commercial TTS systems.
We conducted extensive A/B testing with 339 human evaluations to compare KugelAudio against leading TTS models. Participants listened to a reference voice sample, then compared outputs from two models and selected which sounded more human and closer to the original voice.
The evaluation specifically focused on German language samples with diverse emotional expressions and speaking styles:
These diverse test cases demonstrate the model's capability to handle a wide range of speaking styles beyond standard narration.
| Rank | Model | Score | Record | Win Rate |
|---|---|---|---|---|
| ๐ฅ 1 | KugelAudio | 26 | 71W / 20L / 23T | 78.0% |
| ๐ฅ 2 | ElevenLabs Multi v2 | 25 | 56W / 34L / 22T | 62.2% |
| ๐ฅ 3 | ElevenLabs v3 | 21 | 64W / 34L / 16T | 65.3% |
| 4 | Cartesia | 21 | 55W / 38L / 19T | 59.1% |
| 5 | VibeVoice | 10 | 30W / 74L / 8T | 28.8% |
| 6 | CosyVoice v3 | 9 | 15W / 91L / 8T | 14.2% |
Based on 339 evaluations using Bayesian skill-rating system (OpenSkill)
Listen to KugelAudio's diverse voice capabilities across different speaking styles and languages:
| Sample | Description | Audio Player |
|---|---|---|
| Whispering | Soft whispering voice | |
| Female Narrator | Professional female reader voice | |
| Angry Voice | Irritated and frustrated speech | |
| Radio Announcer | Professional radio broadcast voice |
All samples are generated with zero-shot voice cloning from reference audio.
KugelAudio supports 24 major European languages with varying levels of quality based on dataset representation:
| Language | Code | Flag | Language | Code | Flag | Language | Code | Flag |
|---|---|---|---|---|---|---|---|---|
| English | en | ๐บ๐ธ | German | de | ๐ฉ๐ช | French | fr | ๐ซ๐ท |
| Spanish | es | ๐ช๐ธ | Italian | it | ๐ฎ๐น | Portuguese | pt | ๐ต๐น |
| Dutch | nl | ๐ณ๐ฑ | Polish | pl | ๐ต๐ฑ | Russian | ru | ๐ท๐บ |
| Ukrainian | uk | ๐บ๐ฆ | Czech | cs | ๐จ๐ฟ | Romanian | ro | ๐ท๐ด |
| Hungarian | hu | ๐ญ๐บ | Swedish | sv | ๐ธ๐ช | Danish | da | ๐ฉ๐ฐ |
| Finnish | fi | ๐ซ๐ฎ | Norwegian | no | ๐ณ๐ด | Greek | el | ๐ฌ๐ท |
| Bulgarian | bg | ๐ง๐ฌ | Slovak | sk | ๐ธ๐ฐ | Croatian | hr | ๐ญ๐ท |
| Serbian | sr | ๐ท๐ธ | Turkish | tr | ๐น๐ท |
๐ Language Coverage Disclaimer: Quality varies significantly by language. Spanish, French, English, and German have the strongest representation in our training data (~200,000 hours from YODAS2). Other languages may have reduced quality, prosody, or vocabulary coverage depending on their availability in the training dataset.
Get started with KugelAudio quickly using our documentation:
| ๐ฅ Installation | Set up KugelAudio on your machine |
| ๐ฏ Quick Start | Generate your first speech in minutes |
| โ๏ธ Hosted API | Use our cloud API for zero-setup inference | | ๐ Watermarking | Verify AI-generated audio | | ๐ฆ Models | Available model variants and benchmarks |
๐ State-of-the-Art Performance: Outperforms ElevenLabs and other leading TTS models in human evaluations
๐ European Language Focus: Trained specifically for 24 major European languages
High-Quality TTS: State-of-the-art speech synthesis using AR + Diffusion
Audio Watermarking: All generated audio is watermarked using Facebook's AudioSeal
๐ญ Emotional Range: Supports various speaking styles including shouting, singing, and expressive speech
Web Interface: Easy-to-use Gradio UI for non-technical users
HuggingFace Integration: Seamless loading from HuggingFace Hub
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or via pip
pip install uv
# Clone the repository
git clone https://github.com/Kugelaudio/kugelaudio-open.git
cd kugelaudio-open
# Run directly with uv (recommended - handles all dependencies automatically)
uv run python start.py
That's it! The uv run command will automatically create a virtual environment and install all dependencies.
# Quick start with uv (recommended)
uv run python start.py
# With a public share link
uv run python start.py ui --share
# Custom host and port
uv run python start.py ui --host 0.0.0.0 --port 8080
Then open http://127.0.0.1:7860 in your browser.
# Generate speech from text
uv run python start.py generate "Hello, this is KugelAudio!" -o hello.wav
# Using the default model for higher quality
uv run python start.py generate "Premium quality speech" --model kugelaudio/kugelaudio-0-open -o premium.wav
# Check if audio contains watermark
uv run python start.py verify audio.wav
from kugelaudio_open import (
KugelAudioForConditionalGenerationInference,
KugelAudioProcessor,
)
import torch
# Load model
device = "cuda" if torch.cuda.is_available() else "cpu"
model = KugelAudioForConditionalGenerationInference.from_pretrained(
"kugelaudio/kugelaudio-0-open",
torch_dtype=torch.bfloat16,
).to(device)
model.eval()
processor = KugelAudioProcessor.from_pretrained("kugelaudio/kugelaudio-0-open")
# Generate speech (watermark is automatically applied)
inputs = processor(text="Hello world!", return_tensors="pt")
inputs = {k: v.to(device) if isinstance(v, torch.Tensor) else v for k, v in inputs.items()}
with torch.no_grad():
outputs = model.generate(**inputs, cfg_scale=3.0)
# Save audio
processor.save_audio(outputs.speech_outputs[0], "output.wav")
Don't want to run your own infrastructure? Use our hosted API at kugelaudio.com:
uv pip install kugelaudio
from kugelaudio import KugelAudio
# Initialize the client
client = KugelAudio(api_key="your_api_key")
# Generate speech
audio = client.tts.generate(
text="Hello from KugelAudio!",
model="kugel-1-turbo",
)
# Save to file
audio.save("output.wav")
print(f"Generated {audio.duration_seconds:.2f}s in {audio.generation_ms:.0f}ms")
๐ Full SDK Documentation โ
All audio generated by KugelAudio contains an imperceptible watermark using Facebook's AudioSeal technology. This helps identify AI-generated content and prevent misuse.
from kugelaudio_open.watermark import AudioWatermark
watermark = AudioWatermark()
# Check if audio is watermarked
result = watermark.detect(audio, sample_rate=24000)
print(f"Detected: {result.detected}")
print(f"Confidence: {result.confidence:.1%}")
| Model | Parameters | Quality | RTF | Speed | VRAM |
|---|---|---|---|---|---|
| kugelaudio-0-open | 7B | Best | 1.00 | 1.0x realtime | ~19GB |
RTF = Real-Time Factor (generation time / audio duration). Lower is faster.
KugelAudio uses a hybrid AR + Diffusion architecture:
# Use specific GPU
export CUDA_VISIBLE_DEVICES=0
# Enable TF32 for faster computation on Ampere GPUs
export TORCH_ALLOW_TF32=1
outputs = model.generate(
**inputs,
voice_prompt=voice_prompt, # Reference audio for voice cloning
cfg_scale=3.0, # Guidance scale (1.0-10.0)
max_new_tokens=4096, # Maximum generation length
)
This technology is intended for legitimate purposes:
โ Appropriate Uses:
โ Prohibited Uses:
All generated audio is watermarked to enable detection of AI-generated content.
MIT License - see LICENSE for details.
This model would not have been possible without the contributions of many individuals and organizations:
Kajo Kratzenstein
๐ง kajo@kugelaudio.com
๐ kugelaudio.com
Carlos Menke
@software{kugelaudio2026,
title = {KugelAudio: Open-Source Text-to-Speech for European Languages with Voice Cloning},
author = {Kratzenstein, Kajo and Menke, Carlos},
year = {2026},
institution = {Hasso-Plattner-Institut},
url = {https://github.com/kugelaudio/kugelaudio}
}
Funding Notice
Das zugrunde liegende Vorhaben wurde mit Mitteln des Bundesministeriums fรผr Forschung, Technologie und Raumfahrt unter dem Fรถrderkennzeichen ยปKI-Servicezentrum Berlin-Brandenburgยซ 16IS22092 gefรถrdert. Die Verantwortung fรผr den Inhalt dieser Seite liegt bei der Autorin/beim Autor.
This project was funded by the German Federal Ministry of Research, Technology and Space under the funding code "AI Service Center Berlin-Brandenburg" 16IS22092. The responsibility for the content of this publication lies with the author.
Python
100.0%