Babbeldoos
/
Babbeldoos
Voor onze PWO Physical AI bouwden we een voice agent op een Unitree Go2 robothond. Eén onderdeel bleek onverwacht het lastigste: de robot laten klinken als een Vlaming. Deze post beschrijft de weg van een mislukte poging op Qwen3-TTS naar twee werkende LoRA-adapters op Chatterbox V3 — en wat we onderweg leerden over datasets, transcriptie en het meten van iets zo subjectief als accent.
Main section
Kerngegevens
/
Probleem: open Vlaamse TTS bestaat vrijwel niet.
/
Aanpak: LoRA-adapters op Chatterbox V3, met podcastdata getranscribeerd door NeLF.
/
Resultaat: Babbeldoos Conversational en Babbeldoos Narration.
Babbeldoos
Inleiding
Voor de opstart van onze PWO Physical AI bij Howest koppelden we een voice-agent aan onze Unitree Go2 robothond: je spreekt tegen de robot en hij antwoordt meteen luidop terug, of voert je instructie fysiek uit.
De pipeline daarachter is bekend terrein: speech-to-text (STT), een taalmodel dat beslist, en text-to-speech (TTS). Die laatste stap leek lastiger dan verwacht. Een robot in een Vlaamse hogeschool die antwoordt met een Amsterdams accent breekt de illusie meteen. Als je begint te zoeken naar een TTS-model dat Vlaams spreekt, stroomt de markt verrassend snel leeg.
Veel modellen, weinig Vlaams
Bij TTS modellen komt er heel wat meer bij kijken dan enkel "tekst omzetten in spraak". Ze kunnen erg verschillen in onderstaande functionaliteiten:
- voice cloning: een stem imiteren o.b.v. een referentieclip
- voice design: een stem genereren o.b.v. tekstbeschrijving
- streaming: het begin van een zin al beginnen uitspreken terwijl het einde nog moet verwerkt worden
- multilingual: hoeveel talen worden ondersteunt?
- licentie: mag het commercieel gebruikt worden?
Er zijn heel veel TTS-modellen, maar elke eis reduceert het aantal kandidaten. Modellen met streaming zijn al beperkter. Modellen die Nederlands officieel ondersteunen nog beperkter. Vlaamse modellen zijn vrijwel onbestaand, laat staan dat ze een aantrekkelijke licentie hebben.
Piper is zo goed als de enige algemeen gekende open optie, maar het is oud, klinkt robotisch, en er zijn slechts twee stemmen om uit te kiezen. Er bestaan wel betalende Vlaamse modellen, met ElevenLabs als meest prominente speler.
Zoals een echte Vlaming zou zeggen: wat je zelf doet, doe je meestal beter. Dus besloten we er zelf een te maken.
Wat is een LoRA-adapter?
Een TTS-model bestaat uit miljoenen tot miljarden getallen die we gewichten of parameters noemen. Als we een model willen hertrainen, kan dat op twee manieren: via finetuning of via een LoRA-adapter.
Bij een volledige finetune pas je alle gewichten aan. Dit vereist heel veel data en computerkracht. Bovendien kan het riskant zijn, het model kan bijvoorbeeld "vergeten" wat het eerst wel kon. Elke getrainde variant is een compleet nieuw model dat gigabytes groot is.
Een LoRA (Low-Rank Adaptation) bevriest de originele gewichten en leert een kleine correctielaag ernaast, typisch honderden keren kleiner. Hier heb je minder data voor nodig en kan je trainen op consumentenhardware. Daarnaast zijn ze ook regelbaar in sterkte en combineerbaar met andere LoRA adapters.
Met een LoRA-adapter kan je een accent bijsturen, maar je kan er geen nieuwe taal mee installeren.
Chatterbox V3
De populairste recente modellen op Hugging Face zijn Kokoro, XTTS v2, Qwen3-TTS en Chatterbox V3. We zoeken een model met genoeg fundamentele basiskennis over de Nederlandse fonologie, zodat we alleen nog het accent moeten verschuiven. Daarnaast moet het ook streaming en voice cloning ondersteunen en liefst geen te strenge licentie hebben. Chatterbox V3 van Resemble AI voldoet aan al die voorwaarden.
Het model klinkt van nature Noord-Nederlands. Ons doel is om dit te vervlaamsen, dat is precies het soort verschuiving waar een LoRA voor gemaakt is.
Dataset
Een TTS-dataset bestaat uit paren van audiosegmenten en de bijhorende tekst die wordt uitgesproken. Idealiter studiokwaliteit, zonder overdreven dialect, met divers verdeelde stemmen en timbres.
Op YouTube staan playlists met honderden uren aan nette opnames, meerdere sprekers en spontane spraak.
Om de bijhorende tekst te verkrijgen is er een handig trucje: laat een speech-to-text (STT) model erop los, zoals OpenAI's Whisper Large V3 Turbo. Als de transcriptie fouten bevat, leren we die fouten ook aan de LoRA adapter aan. Het TTS-model kan dus maar zo goed worden als het gebruikte STT-model.
En Whisper maakt kleine foutjes op Vlaamse audio. Het transcribeert consistent "Goeiemiddag" als "Goedemiddag" en "da's" als "dat is". Het normaliseert precies de Vlaamse nuance weg dat we willen behouden. We hadden dus een Vlaams STT-model nodig, opnieuw iets zeer niche. Gelukkig publiceerden KU Leuven en UGent in 2024 het NeLF-project: STT-modellen die specifiek op Vlaamse data getraind zijn. Die transcriberen "amai", "awel", "da's" en "goeiemiddag" wél correct.
Verder verwerkten we de dataset nog:
- gender detectie: gebalanceerd naar 50/50
- opdelen in segmenten: bij leesteken en sprekerwissel
- volume normalisatie: alles even luid maken
- taal detectie: bv. Engels eruit filteren
De dataset zelf blijft voorlopig niet publiek toegankelijk.
Twee adapters, en waarom WER liegt
We splitsten de dataset in spontane informele gesprekken en professionele formele gesprekken. Daarop trainden we twee LoRA-adapters: Babbeldoos Conversational en Babbeldoos Narration. Narration articuleert soms een tikkeltje beter en spreekt wat trager, maar toegegeven: in de praktijk zijn ze soms niet van elkaar te onderscheiden.
Om te testen gebruikten we metrieken zoals de WER (Word Error Rate): je laat het TTS-model een zin genereren, transcribeert die opnieuw, en kijkt hoe sterk dat overeenkomt met de ingestuurde prompt (zie foto). In de praktijk schetste dat vaak een gebrekkig beeld. Accent is subjectief en moeilijk statistisch te bepalen. Er blijft dus maar één methode over: heel veel manuele, blinde A/B-tests met Vlaamse luisteraars.
Wat werkt, en wat nog niet
De modellen zijn niet foutloos en de kwaliteit hangt sterk af van de gebruikte voice clone, maar we zijn heel tevreden met versie 1 van Babbeldoos.
Volgende stappen kunnen zijn:
- Verschillende LoRA's mengen, om een gulden middenweg te vinden tussen spontane spraak en goede articulatie, of om een eigenschap intentioneel te versterken of onderdrukken.
- Quantisatie of andere optimalisaties om het model sneller te maken (zie blogpost).
Bottom section
Slot: De robothond spreekt Vlaams
Wat begon als het laatste onderdeel van een robotdemo werd een project op zich. Onderweg leerden we dat de keuze van je basismodel belangrijker is dan hoeveel data je erop gooit, dat je transcriptiemodel de bovengrens van je TTS-model bepaalt, en dat de metriek die het makkelijkst te berekenen valt zelden de metriek is die telt.
Maar vooral: hier ligt nog een gat in het open-source landschap. Babbeldoos is een eerste stap, geen eindpunt.
Probeer het zelf:
- 🤗 Hugging Face Space (demo):
https://huggingface.co/spaces/huyghebaertthomas/babbeldoos-demo - 📦 Model card:
https://huggingface.co/Howest-AI-Lab/babbeldoos-flemish-tts
Bronnen
- Chatterbox, Resemble AI — github.com/resemble-ai/chatterbox
- NeLF (KU Leuven & UGent) — huggingface.co/nelfproject
- Whisper Large V3 Turbo, OpenAI — huggingface.co/openai/whisper-large-v3-turbo
- Piper — github.com/rhasspy/piper
- LoRA: Low-Rank Adaptation of Large Language Models, Hu et al. (2021) — arxiv.org/abs/2106.09685
