Na 1.2.0 kwamen twee klachten steeds terug: "hij spelt de achternaam van mijn collega elke keer verkeerd" en "Enhance staat aan of uit — ik wil niet altijd dezelfde opschoning".
1.3.0 is vanaf vandaag beschikbaar. Het lost beide op, en pakt de andere terugkerende ergernis aan: vergadertranscripties waarin elke zin van de andere kant dubbel staat omdat je geen koptelefoon droeg.
Dit is er veranderd.
Eigen woordenlijst
Elke spraakengine heeft een verzameling woorden die hij juist bij jou steevast fout doet — een achternaam, een productnaam, een intern acroniem, de naam van de tool die je veertig keer per dag noemt. Parakeet heeft nog nooit van jouw startup gehoord. "Claude Code" komt terug als "clod code" tot je het niet meer opmerkt en het gewoon elke keer met de hand corrigeert.
Instellingen heeft nu een sectie Vocabulary. Elke regel is een paar: wat de herkenning produceert, en wat er had moeten staan. clod code → Claude Code. kubernets → Kubernetes. De juiste spelling van een naam in plaats van wat het model meende te horen.
De details die in de praktijk uitmaken:
- Standaard matchen op hele woorden, zodat een regel voor
catnooit het midden van "category" herschrijft. Uit te zetten voor deelstring-correcties. - Standaard hoofdletterongevoelig, met een schakelaar per regel voor als
APIalleen opAPImag matchen. - Een schakelaar per regel, zodat je een regel kunt parkeren zonder hem te verwijderen.
- Meerwoordsfrases werken — de linkerkant hoeft geen enkel token te zijn.
De regels grijpen op drie plekken in, niet op één. Je termen gaan vóór de transcriptie als biasing-hint naar de herkenner, worden daarna als vervangingen op het ruwe transcript toegepast, en belanden in de LLM-prompt als bewaarinstructie — zodat de opschoonstap de spelling die je net corrigeerde niet stilletjes terugdraait. Precies daarop strandde de vroege, naïeve versie van deze functie: een naam corrigeren en die vervolgens door Enhance laten terugparafraseren is erger dan hem niet corrigeren.
Als je in coding-agents dicteert, stel dit dan als eerste in. Tien regels met de eigennamen van je stack halen het grootste deel van het handmatige redigeren weg.
Dicteermodi vervangen de Enhance-schakelaar
Enhance was een vinkje: tekst opschonen of niet. Dat is de juiste standaard en het verkeerde plafond — dezelfde gesproken alinea zou er anders uit moeten komen afhankelijk van waar hij heen gaat.
1.3.0 vervangt het vinkje door een moduskeuze:
- Raw — plakt precies wat je zei, zonder LLM-stap. De snelste route; live vertaling werkt hier nog steeds.
- Cleanup — grammatica, interpunctie, stopwoorden eruit, formulering behouden. Het oude Enhance-gedrag, en nog steeds de standaard.
- Email — vormt het dictaat om tot een gestructureerde, professionele e-mail zonder een onderwerpregel of afsluiting te verzinnen die je niet uitsprak. Hoe dat leest, staat in e-mail dicteren op de Mac.
- Message — beknopt, informeel chatbericht.
- Bullets — gehergroepeerd in opsommingstekens.
- Formal — gepolijste, formele toon.
- Custom — je eigen instructie, opgeslagen in Instellingen en toegepast op elk dictaat.
Custom is de interessante modus. Het is een vrije-tekstprompt, dus "schrijf altijd in Brits Engels en gebruik nooit gedachtestreepjes" of "vertaal naar het Spaans en blijf onder drie zinnen" is een geldige modus. Alles draait nog steeds lokaal op het model op je apparaat.
In alle modi zijn getallen, code-identifiers, URL's, bestandspaden, tekst tussen aanhalingstekens en je woordenlijsttermen beschermd tegen herschrijven. Het hervormen moet het proza veranderen, niet de dragende tokens erin.
Vergaderen via de speakers: het probleem van dubbele regels
Als je belt zonder koptelefoon, komen de externe deelnemers uit de Mac-speaker en meteen weer je microfoon in. Vext neemt microfoon en systeemgeluid op als aparte streams, dus dezelfde zin wordt twee keer getranscribeerd — één keer schoon uit de systeemstream en één keer slecht uit de microfoon — en in het transcript lijkt het alsof jij alles herhaalde wat de ander net zei.
We hebben dit twee keer in het audiodomein proberen op te lossen. Eerst met een DTLN-echocanceller op CoreML, daarna met Apple's eigen Voice Processing I/O. Beide werken, en beide zijn verwijderd: VPIO verandert de gedeelde microfoonstatus, dus inschakelen laat automatische versterkingsregeling en ruisonderdrukking doorlekken naar elke andere app die diezelfde microfoon leest — je stem wordt slechter in Zoom terwijl Vext opneemt. Geen acceptabele ruil.
De versie die is uitgebracht werkt op het transcript. Echo-audio is genoeg vervormd om stemvergelijking te breken, maar het zegt dezelfde woorden op hetzelfde moment, en beide streams delen één vergaderklok. De deduplicator legt dus tekst naast tijd: een microfoonfragment waarvan de tokens grotendeels in een systeemfragment binnen een venster van twee seconden zitten, is echo en wordt weggegooid. Een tweede ronde voegt de kleine fragmenten van dezelfde spreker samen die woordgrens-splitsingen achterlaten.
Daarbovenop gebruikt de offline verfijningsronde nu de stem-embeddings van de externe sprekers om gelekte audio te herkennen en te verwijderen, met overlapdetectie voor wat gelijkenis alleen mist.
Netto effect: een Zoom- of Meet-gesprek opnemen via de laptopspeakers levert nu een transcript op dat dicht bij het resultaat met koptelefoon komt. Een koptelefoon is nog steeds beter. Alleen niet langer verplicht.
Sprekersplitsing op woordniveau
Verwant hieraan, en de structurele oorzaak van een hele categorie rare transcripten.
Spraakdetectie knipt audio in brokken. Als twee mensen elkaar snel afwisselen, kan één brok drie of vier sprekerwisselingen bevatten, en werd het geheel als één blok onder één label getranscribeerd. De offline ronde corrigeerde de toewijzing achteraf, maar de samengeklonterde tekst bleef samengeklonterd.
1.3.0 splitst op tokenniveau. Elk herkend woord draagt een tijdstempel, de diarisatietijdlijn weet wie er op dat moment sprak, en het brok wordt in stukken per spreker geknipt voordat het überhaupt in het transcript komt — met het doorvoeren van het vorige label voor woorden die de tijdlijn niet dekt. Afwisselende sprekers komen als aparte regels binnen terwijl de vergadering nog loopt.
Sprekerherkenning die niet instort
Drie correcties in de sprekeridentificatie, allemaal uit echte opnames die misgingen:
Eén-op-één-koppeling. De toewijzing van clusters aan profielen was gulzig, dus twee verschillende mensen konden allebei op dezelfde bekende spreker matchen en tot één identiteit samensmelten. Het is nu een unieke afbeelding — één cluster, één profiel.
Stabiele stemprofielen. Embeddings worden L2-genormaliseerd en met een exponentieel voortschrijdend gemiddelde gemengd naarmate er nieuwe samples binnenkomen, in plaats van overschreven. Profielen worden beter met elke vergadering in plaats van weg te driften naar de laatste opname.
Een instortbeveiliging. Een vergadering met vijf mensen kwam uit de offline ronde terug als "Ik" plus één ander persoon: de offline diarisator clusterde een stream van 590 segmenten onder tot één cluster, en omdat die ronde leidend is, wiste hij vier sprekers die de live ronde correct had gescheiden. Nu blijven de live labels staan wanneer de offline ronde één cluster of minder oplevert voor een stream waar de live ronde twee of meer sprekers vaststelde. Te fijn opgesplitste sprekers kun je samenvoegen in het Speakers-tabblad; sprekers die een leidende ronde verwijdert, zijn definitief weg.
Sneltoetsen, herbouwd
Het sneltoetssysteem is vanaf de opslaglaag herschreven. Vijf acties hebben nu onafhankelijke toewijzingen: push-to-talk dicteren, handsfree dicteren, notities, vergaderingen en schermafbeeldingen.
Een combinatie toewijzen die al in gebruik is, wordt gedetecteerd en opgelost in plaats van stilzwijgend twee acties op één toets te zetten. Elke toewijzing kun je wissen met de Delete-toets of een knop, en de recorder geeft echte feedback tijdens het opnemen. De oude manager, met zijn verspreide AppStorage-properties en handmatige decodering, is verdwenen.
Duits en Nederlands
De interface is nu beschikbaar in zeven talen: Engels, Spaans, Duits, Nederlands, Russisch, Hindi en Thai — plus Auto, dat de systeemtaal van macOS volgt. Wisselen doe je in Instellingen → Algemeen; het werkt direct, zonder herstart.
Ontwerp: Liquid Glass op macOS 26
Op macOS 26 Tahoe gebruiken de onboarding, de welkomstgids, het licentiescherm, het laadscherm van het model en de opnamepil native Liquid Glass-oppervlakken met adaptieve tinting. Op eerdere macOS-versies valt alles terug op de vorige materialen — voor jou verandert er niets.
Animatiecurves zijn nu gedeelde primitieven in plaats van constanten per view, waardoor overgangen door de hele app consistent aanvoelen, en de opname-indicatoren respecteren de systeeminstelling Verminder beweging.
Stabiliteit en data
De minder glamoureuze helft van de release:
- Geannuleerde transcriptietaken konden een core op 100% CPU laten draaien. Opgelost.
- Een vergadertitel of transcript bewerken terwijl de afronding op de achtergrond liep, kon je bewerking stil terugdraaien. Schrijfacties zijn nu gedeeltelijke updates die door de gebruiker bewerkbare velden niet overschrijven.
- De tekstverwerking kon legitieme transcripttekst verminken bij het verwijderen van stopwoorden — tokens met koppelteken en interpunctie zijn nu beschermd.
- De database wist zichzelf niet langer bij een schemawijziging. Dat pad kon bij een update de vergadergeschiedenis vernietigen; het is uitgeschakeld.
- Crashes door ongeldige VAD-bereiken en een race condition op het audioniveau zijn verholpen.
- Het downsamplen van systeemgeluid gebruikt
AVAudioConvertermet correcte anti-aliasing in plaats van naïeve lineaire interpolatie — meetbaar schonere invoer voor de herkenner. - Het klembord blijft behouden bij het plakken van tekst en afbeeldingen.
- De audio-engine wordt pas gealloceerd wanneer de opname echt begint, dus een inactieve Vext houdt de microfoonhardware niet meer bezet.
- Vergadertitels en live transcripties worden weggeschreven voordat de app afsluit.
- Een spreker verwijderen vraagt nu om bevestiging.
Bijwerken
brew upgrade muvon/tap/vext
Of download Vext 1.3.0 direct. Je vergaderingen, sprekerprofielen en instellingen gaan mee — de Enhance-schakelaar wordt de Cleanup-modus, en je bestaande sneltoetsen migreren naar de nieuwe toewijzingen.
Alles draait nog steeds volledig op je Mac: geen cloud, geen account, geen abonnement.