Automatische detectie gokt verkeerd: pin je taal vast
Dictatie steeds in de verkeerde taal? Automatische detectie worstelt van nature met tweetalige spraak. Pin je taal één keer vast en hij blijft vastgepind.
Dicteer je in meer dan één taal, dan ken je deze storing. Je zegt een zin in het Roemeens en het transcript komt terug als fonetisch verminkt Engels — echte woorden, alleen niet die van jou. Of hij klapt midden in de zin om: de eerste helft in de juiste taal, de tweede helft in iets waarvan het model besloot dat je erop overstapte. Of, mijn persoonlijke favoriet, alfabetsoep — Latijnse tekens met een paar Cyrillische ertussen, alsof het model letter voor letter zijn risico spreidde.
Dit is geen klacht over één product. Het is een voorspelbaar faalpatroon van automatische taaldetectie, inclusief Keebyes op Engels afgestemde standaard. Het treft sprekers met een accent in het Engels en iedereen die de dag door van taal wisselt. Een tweetalige developer wiens Slack Pools is en wiens commit-berichten Engels zijn, geeft automatische detectie precies de gemengde signalen waar ze het slechtst mee omgaat.
De tweede helft van de klacht is stiller maar even reëel: wanneer er wél een taalinstelling bestaat, ligt hij vaak begraven. Drie menu's diep, achter een enginekiezer, voorbij een schakelaar in wiens naam het woord taal niet eens voorkomt. Wissel je twintig keer per dag van taal, dan is een begraven instelling functioneel geen instelling.
Ik wil uitleggen waarom dat op hol slaan gebeurt — aan de hand van het oorlogsverhaal van mijn eigen product, want Keebye had dit probleem voordat het de oplossing had — en daarna laten zien hoe een echte oplossing eruitziet.
Waarom automatische detectie op hol slaat (en waarom het niet echt een bug is)
Dit is het eerlijke mechanisme. Moderne spraakmodellen doen taalidentificatie stilzwijgend, als onderdeel van het decoderen. Het model luistert, vormt een interne gok over welke taal het hoort, en decodeert tegen die gok aan. Is de audio schoon, accentloos en eentalig, dan werkt dit zo goed dat je er nooit bij stilstaat.
Voer het nu echte spraak. Een accent verschuift de klinkers richting de fonemen van een andere taal. Een zin bevat drie Engelse leenwoorden — dat geldt voor elk technisch gesprek. Er is een kind op de achtergrond, of je zit op een laptopmicrofoon. Elk hiervan maakt de interne taalgok van het model minder zeker, en een gok met lage zekerheid kan tussen frames omklappen. Klapt hij om, dan klapt het decoderen mee, en krijg je een transcript dat middenin een gedachte van taal wisselt.
Het cruciale deel: in de meeste tools is er niets dat die gok verankert. Het model beslist, stilzwijgend, per uiting, en jij hebt geen override. Dat is geen bug in één app — dat ís stilzwijgende automatische detectie. Een model dat een oordeel velt dat jij niet kunt corrigeren.
Ik ken dit van dichtbij, want Keebyes standaard-engine heeft precies deze eigenschap. Parakeet, onze op Engels afgestemde standaard, negeert elke taalhint op de decodeerlaag — je kunt hem niet vertellen wat je gaat zeggen. Op helder Engels is hij uitstekend, en daarom is hij de standaard. Op onheldere audio kan hij net zo tussen talen op hol slaan als al het andere in de categorie. Ik vertel je dit eerst over mijn eigen product, want de oplossing slaat pas ergens op zodra je accepteert dat het probleem in de architectuur zit, en niet in de slordigheid van een of andere concurrent.
Wat doet een taal vastpinnen precies?
De oplossing is stoppen met het model laten gokken. Keebye levert een tweede on-device engine mee — NVIDIA's Canary 1B v2, gekwantiseerd naar int8 — die exact 25 talen dekt: Bulgaars, Kroatisch, Tsjechisch, Deens, Nederlands, Engels, Estisch, Fins, Frans, Duits, Grieks, Hongaars, Italiaans, Lets, Litouws, Maltees, Pools, Portugees, Roemeens, Slowaaks, Sloveens, Spaans, Zweeds, Russisch en Oekraïens. Anders dan de standaard-engine accepteert Canary een taalinstructie en houdt zich eraan.
Keebye biedt dat aan als een pin: een expliciete taalinstelling die per uiting aan de Canary-engine wordt doorgegeven. Pin Roemeens vast en de decoder gebruikt Roemeens in plaats van zelf een taal te kiezen. De herkenning kan nog steeds fout zijn, vooral rond leenwoorden en rumoerige audio, maar de taalkeuze is geen ongecontroleerde gok meer.
De instelling wordt live gelezen, per dictatie. Wijzig hem en de volgende keer dat je ingedrukt houdt om te dicteren, gebruikt hij de nieuwe taal zonder de app te herstarten. Dat weegt zwaarder dan het klinkt: een taalknop is veel nuttiger wanneer wisselen het werk niet onderbreekt.
En omdat Canary net als al het andere in Keebye on-device draait, kost de pin je het privacyverhaal niet. Het model is ongeveer 1,3 GB, één keer gedownload; daarna verlaat je Roemeens, je Pools, je Oekraïens de machine nooit. (Waarom we lokale meertalige dictatie überhaupt belangrijk vinden is een post op zich — dictatie zou niet alleen Engels moeten zijn. Deze is het praktische vervolg: die post pleit voor de talen, deze gaat over ze ook echt bruikbaar maken.)
Twee klikken, niet drie menu's diep
Een pin die je niet kunt bereiken is een pin die je niet gebruikt, dus de schakelaar zit in de menubalk. Keebyes menubalkicoon heeft een menu "Dicteertaal" met een samengestelde shortlist van 11 talen — Engels, Roemeens, Frans, Duits, Spaans, Italiaans, Portugees, Nederlands, Pools, Russisch en Oekraïens. Twee klikken vanuit elke app: klik op het menubalkicoon, klik op de taal. Je opent geen Instellingen, je verlaat het venster niet waarin je werkte.
De volledige lijst van 25 talen staat in Instellingen, voor de talen buiten de shortlist. Maar de shortlist dekt de dagelijkse realiteit van het meeste tweetalige werk: je schrijft in de ene taal aan je team en in de andere aan een klant of een AI-agent, en het wisselen mag niets kosten.
Er is nog één optie die het waard is te kennen, want ze verandert voor sommige mensen het hele gebruik van de pin: een schakelaar voor vertalen naar het Engels. Spreek je eigen taal, en er landt Engels bij de cursor — dezelfde engine, dezelfde on-device uitvoering. Loopt je innerlijke monoloog in het Roemeens terwijl je output Engels moet zijn (commit-berichten, prompts aan een codeeragent, antwoorden aan een internationaal team), dan laat dit de vertaalstap die je in je hoofd deed in elkaar zakken. Ik gebruik hem vaker dan ik had verwacht.
Wat de pin je kost
25 talen is 25 talen. Clouddictatietools noemen er veel meer, omdat audio naar een groot servermodel sturen de goedkope manier is om talen toe te voegen. Dat is de echte afweging van on-device: een model dat op je Mac past dekt minder van de wereld dan een model dat een datacenter vult. Staat jouw taal niet in de lijst van 25, dan dekt Keebyes meertalige engine je vandaag niet, en dat zeg ik liever dan het mooier te maken.
Een pin is een pin. Dit is de keerzijde van determinisme, en ik wil er duidelijk over zijn: pin je Roemeens vast en spreek je daarna Engels, dan decodeert Keebye je Engels trouw verkeerd als Roemeens tot je wisselt. De engine doet precies wat jij hem hebt opgedragen. De hele aantrekkingskracht van automatische detectie was dat je hier nooit over hoefde na te denken — de pin ruilt dat gemak in voor voorspelbaarheid. In mijn ervaring is de ruil het waard, want een verkeerde gok die je niet kunt sturen is erger dan een verkeerde instelling die je in twee klikken repareert. Maar het is een ruil, geen gratis lunch.
De shortlist in de menubalk telt 11 talen, geen 25. Zit in jouw dagelijkse paar bijvoorbeeld Fins of Grieks, dan ga je voor één kant ervan via Instellingen. Selecteren betekent dat iemands taal het snelmenu niet haalde.
Waar dit de klacht laat
De klacht op categorieniveau — "mijn dictatie komt er steeds in de verkeerde taal uit" — is eigenlijk een klacht over stilzwijgende beslissingen. Het model gokte, de gok was fout, en er was geen manier om het iets anders te vertellen. Elke oplossing die het gokken behoudt (betere detectie, langere audiovensters, zekerheidsdrempels) maakt de storing alleen zeldzamer en vreemder. De oplossing die de klacht echt beëindigt, is de beslissing teruggeven aan de gebruiker.
Beleef je dit nu met een andere tool, dan zijn onze vergelijkingspagina's eerlijk over waar elke tool past — Keebye vs Superwhisper en Keebye vs Wispr Flow behandelen allebei onder meer de taalvraag. Om de pin zelf te proberen: start hieronder je gratis proefperiode, speel de Roemeense of Poolse zin van het begin van dit artikel opnieuw af, en kijk hoeveel van dat op hol slaan van een ongecontroleerde gok kwam in plaats van van je accent.
Pin de taal vast die je echt gebruikt
Start je gratis proefperiode en speel één antwoord in je moedertaal opnieuw af dat automatische detectie eerder verminkte.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Lees verder
Dicteer code reviews in je eigen taal
Code is Engels. Je reviewopmerkingen niet. Hoe je reviewfeedback in een van 25 talen on-device dicteert, en waarom je taal vastpinnen uitmaakt.
Prompts dicteren naar parallelle agents, lane voor lane
Twee of drie codeeragents tegelijk draaien maakt prompten het knelpunt. Een stemworkflow om parallelle lanes te voeden zonder je eigen lane te verlaten.
Claude Code met je stem sturen: bouwen in parallelle lanes
AI-codeeragents maakten typen het knelpunt. Een praktische workflow om prompts, reviews en bijsturingen te dicteren over parallelle agent-lanes op macOS.