KugelAudio KI-Servicezentrum Berlin-Brandenburg Gefördert durch BMFTR
Motivation
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.
🏆 Benchmark Results: Outperforming ElevenLabs
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.
Human Preference Benchmark (A/B Testing)
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.
German Language Evaluation
The evaluation specifically focused on German language samples with diverse emotional expressions and speaking styles:
Neutral Speech: Standard conversational tones
Shouting: High-intensity, elevated volume speech
Singing: Melodic and rhythmic speech patterns
Drunken Voice: Slurred and irregular speech characteristics
These diverse test cases demonstrate the model's capability to handle a wide range of speaking styles beyond standard narration.
OpenSkill Ranking Results
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)
Audio Samples
Listen to KugelAudio's diverse voice capabilities across different speaking styles and languages:
German Voice Samples
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 using pre-encoded voice embeddings.
This model supports the following European languages:
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.
1# Install with pip2pip install kugelaudio-open
34# Or with uv (recommended)5uv pip install kugelaudio-open
Basic Usage
python
1from kugelaudio_open import(2 KugelAudioForConditionalGenerationInference,3 KugelAudioProcessor,4)5import torch
67# Load model8device ="cuda"if torch.cuda.is_available()else"cpu"9model = KugelAudioForConditionalGenerationInference.from_pretrained(10"kugelaudio/kugelaudio-0-open",11 torch_dtype=torch.bfloat16,12).to(device)13model.eval()1415processor = KugelAudioProcessor.from_pretrained("kugelaudio/kugelaudio-0-open")1617# Strip encoder weights to save VRAM (only decoders needed for inference)18model.model.strip_encoders()1920# See available voices21print(processor.get_available_voices())# ["default", "warm", "clear"]2223# Generate speech with a specific voice24inputs = processor(text="Hallo Welt! Das ist KugelAudio.", voice="default", return_tensors="pt")25inputs ={k: v.to(device)ifisinstance(v, torch.Tensor)else v for k, v in inputs.items()}2627with torch.no_grad():28 outputs = model.generate(**inputs, cfg_scale=3.0)2930# Save audio31processor.save_audio(outputs.speech_outputs[0],"output.wav")
Voices
KugelAudio provides pre-encoded voices that can be selected by name. The voices are stored as .pt files in the voices/ folder and are automatically downloaded when needed.
python
1# List available voices2voices = processor.get_available_voices()3print(voices)# ["default", "warm", "clear"]45# Generate with a specific voice6inputs = processor(text="Hallo, das ist eine warme Stimme!", voice="warm", return_tensors="pt")7inputs ={k: v.to(device)ifisinstance(v, torch.Tensor)else v for k, v in inputs.items()}89with torch.no_grad():10 outputs = model.generate(**inputs, cfg_scale=3.0)1112processor.save_audio(outputs.speech_outputs[0],"warm_voice_output.wav")
Note: Voice cloning from raw audio is not supported in this open-source release. Only the pre-encoded voices listed in voices/voices.json are available.
Generation Parameters
Parameter
Default
Description
cfg_scale
3.0
Classifier-free guidance scale (1.0-10.0). Higher = more adherence to text
max_new_tokens
2048
Maximum number of tokens to generate
do_sample
False
Whether to use sampling (vs greedy decoding)
temperature
1.0
Sampling temperature (if do_sample=True)
Architecture
KugelAudio uses a hybrid Autoregressive + Diffusion architecture based on Microsoft's VibeVoice:
Text Input → Qwen2.5-7B Backbone → Diffusion Head → Acoustic Decoder → Audio Output
↑
Pre-encoded Voice Embedding
Text Encoder: Qwen2.5-7B language model encodes input text
Diffusion Head: Predicts speech latents using denoising diffusion (20 steps)
Acoustic Decoder: Hierarchical convolutional decoder converts latents to 24kHz audio
Audio Watermarking
All audio generated by this model is automatically watermarked using Facebook's AudioSeal. The watermark is:
Imperceptible: No audible difference in audio quality
Robust: Survives compression, resampling, and editing
Detectable: Can verify if audio was generated by KugelAudio
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.
This project was funded by the German Federal Ministry of Research, Technology and Space under the funding code "AI Service Center Berlin-Brandenburg" 16IS22092.