Privé · On-device · Apple Neural Engine

Live ondertiteling voor
alles wat je Mac afspeelt.

Video's, gesprekken, podcasts: getranscribeerd terwijl ze spelen en getekend als een overlay die altijd bovenop blijft. Er wordt niets geüpload, niets opgenomen, niets naar schijf geschreven.

14 dagen geld terug, zonder vragen

Eenmalig $9, elke toekomstige update inbegrepen · macOS 14.2 of nieuwer · Apple Silicon
Onbeperkt ondertitelen, zolang je wilt. Geen minuten kopen, geen account, geen abonnement.

Wissel van app en de ondertiteling blijft staan: de overlay ligt boven elk venster en laat klikken door.

Klik op een venster om het naar voren te halen. Houd ingedrukt en sleep de ondertiteling om ze te verplaatsen, net als in de app.

Wijs op de ondertiteling en ze lost onder je aanwijzer op. Houd ingedrukt om de laatste weer op te stapelen. Allebei werken ze hier precies zoals in de app.

Live ondertiteling voor elke app op je Mac

Subtitles ondertitelt alle audio die je Mac kan afspelen, want het tapt de app zelf in plaats van te integreren met één bepaalde dienst. Of je nu doof of slechthorend bent, in een tweede taal luistert of gewoon ergens werkt waar het lawaaiig is, drie situaties komen steeds terug.

01

Vergaderingen en gesprekken

Zoom, Google Meet, Teams, een Slack-huddle, een gesprek in een browsertab: het is allemaal gewoon geluid dat uit een app komt, dus het krijgt allemaal ondertiteling. Tweede taal of niet, het verdient zijn plek zodra een accent onbekend is, iemands microfoon slecht is of twee mensen door elkaar praten: een woord lezen dat je maar half verstond gaat sneller dan er nog een keer om vragen, en het onderbreekt niemand.

02

De draad vasthouden terwijl je werkt

Audio wacht niet. Zodra je naar je notities, je editor of een browservenster gaat, begin je het gesprek kwijt te raken. De overlay ligt altijd boven elk venster en is klikdoorlatend, dus hij blijft staan terwijl jij ervoor werkt. Je kunt notities maken, iets opzoeken en tegelijk volgen wat er gezegd wordt. Een notitieblok als Granola schrijft de vergadering achteraf uit; dit is de helft die moet gebeuren terwijl hij nog loopt.

03

Video's, podcasts en colleges

Een video zonder ondertiteling, of met automatische ondertiteling die erger is dan niets. Een podcast in een taal die je nog leert. Een opgenomen of gestreamd college, een interview, een film met zachte dialoog. De ondertiteling verschijnt boven het venster dat het afspeelt, in de tekstgrootte die jij instelt, in zestien talen, met de taal die voor je herkend wordt.

Alle drie hebben ze hetzelfde gemeen: een vergadering, een gesprek en een privé-opname gaan een server niets aan. Geen van deze audio wordt geüpload, want dat hoeft niet: het model draait op je Mac.

Gebouwd rond drie beperkingen

Live audio kun je niet pauzeren, niet opnieuw draaien, en het hoort je machine niet te verlaten. Alles hier volgt daaruit.

Er verlaat niets de Mac

Het draait lokaal en offline: geen netwerkverbindingen, geen accounts, geen telemetrie. Audio gaat van de tap rechtstreeks naar de spraakherkenning en wordt weggegooid. Het enige wat ooit gedownload wordt is het model zelf, één keer.

Neural Engine, geen CPU

Ruwweg 0,15 keer realtime: zes seconden spraak getranscribeerd per seconde rekentijd. Hetzelfde model op de CPU bleek ongeveer 100× te traag om een live stream bij te houden.

Elke app, of maar één

Het luistert standaard naar alles wat je Mac afspeelt, dus je hoeft niets in te stellen voordat het werkt. Beperk het via de menubalk tot één app als er twee dingen tegelijk praten, en dan pakt het die app plus elk hulpproces dat hij start, en dat is wat browsers en Electron-apps laat werken, waar audio nooit uit het hoofdproces komt.

Muziek wordt geen songtekst

Er draait een stemdetector vóór de spraakherkenning, zodat achtergrondtracks die nooit bereiken. Zonder detector vult muziek de context van het model en zijn de eerste woorden erna weg.

Een nieuw vak per spreker

Begin desgewenst een nieuwe ondertitel zodra iemand anders begint te praten, net zoals een pauze dat doet. Standaard uit: er draait dan een tweede model naast het eerste.

Zestien talen

Het standaardmodel herkent de taal zelf. Engels krijgt daarbovenop zeven eigen checkpoints, die vertraging tegen nauwkeurigheid afwegen vanaf 160 ms.

De overlay blijft uit de weg

Iets dat boven elk venster ligt werkt alleen als het nooit het ding wordt waar je omheen werkt. Het vangt geen klikken, het lost op waar je wijst, en het geeft je de regel terug waar je van wegkeek.

Een gat waar je wijst

Beweeg de aanwijzer bij het vak in de buurt en het vervaagt eronder, zodat de zin die je leest nooit de zin bedekt die je schrijft. Hoeveel ervan weggaat en hoe breed het gat reikt bepaal je allebei zelf. Houd ingedrukt om het dekkend te houden.

Houd ⌥ ingedrukt voor wat je miste

Het vak gaat per pagina, zoals ondertiteling op tv: het vult zich, leegt en begint opnieuw, dus een regel waar je van wegkeek is weg. Houd ingedrukt en de laatste afgesloten vakken stapelen zich weer op boven het live vak, tot dertig stuks, en je kunt naar de oudere scrollen. Laat los en ze zijn weer weg. Er wordt nergens iets weggeschreven.

De overlay is de preview

, in het menu opent de instellingen: hoeveel regels een vak vult voordat het leegt, hoe dekkend het is, hoe ver de aanwijzer het openmaakt, hoe ver terugkijkt. Elke schuifknop werkt meteen op de overlay terwijl je sleept, dus je stelt dit in door te kijken in plaats van door een getal te kiezen.

Hoe het werkt

Een realtime audiothread die alleen maar kopieert, een draagbare kern die nooit transcribeert, en een model dat draait waar het hoort.

  1. 1

    Core Audio process tap

    48 kHz stereo, elke 10,7 ms een callback. De realtimethread kopieert naar een lock-free ringbuffer en doet verder niets.

  2. 2

    Resamplen en filteren

    Omlaag naar 16 kHz mono op een workerthread, stilte overgeslagen, met ongeveer een seconde die vóór de spraak opnieuw wordt meegegeven zodat geen woord koud begint.

  3. 3

    Parakeet op de Neural Engine

    Een streaming model, geen model met een venster van 30 seconden: het verschil tussen ondertiteling die de audio volgt en ondertiteling die seconden te laat komt.

  4. 4

    Overlay

    Pagina's van drie regels die leeglopen en opnieuw beginnen zoals ondertiteling op tv, en die vier seconden na de laatste nieuwe tekst vervagen in plaats van als de audio stopt.

Alles van de ringbuffer tot aan de rand van het model is draagbare Rust die bewust niet transcribeert: het geeft frames door. De tap en de overlay zijn de enige Mac-specifieke onderdelen.

14 dagen geld terug, zonder vragen.

Niets om te beoordelen, niets om je voor af te melden

De reden dat je dit op een zakelijk gesprek kunt richten, is dat het geen dienst is. Er is geen server, geen account en geen transcript, dus er is niets om te versturen en er zit niemand anders tussen. De lange versie staat op papier. De broncode is openbaar, dus je hoeft niets hiervan op mijn woord aan te nemen.

  • Er komt geen bot in het gesprek. Het pakt de audio op die je Mac toch al afspeelt, dus er verschijnt niets in de deelnemerslijst en niemand krijgt te horen dat er iets draait. De meeste tools in deze categorie sturen wel een zichtbare deelnemer, en dat verbieden veel bedrijven ronduit.
  • Er wordt niets opgenomen en niets naar schijf geschreven. Audio gaat van de tap naar de spraakherkenning en verdwijnt ter plekke. Ondertitels staan op het scherm en zijn dan weg; de vakken die terughaalt zitten in het geheugen tot je afsluit, en er is achteraf geen bestand te vinden, op je Mac niet en nergens anders.
  • De microfoon gaat nooit open. Hij hoort alleen ooit wat je Mac afspeelt. Dat is een echte beperking, en het is ook waarom niets van wat jij zegt ergens heen kan.
  • Geen account, geen telemetrie, geen netwerk. Nergens op inloggen en nergens gebruik gerapporteerd. Het model downloadt één keer, ongeveer 633 MB, en daarna is er geen netwerkverbinding meer te maken: trek de wifi eruit en het ondertitelt gewoon door.
  • Er is niets om op te trainen. Er bestaat geen transcript om te versturen, dus er is geen trainingsinstelling om te zoeken, geen standaardwaarde om te controleren en geen verwerker om in een verwerkersovereenkomst te noemen. Of dat door je eigen beleid komt, bepaal jij, maar er zit geen derde partij in om te beoordelen.
  • De enige uitzondering is het kopen zelf. Gumroad verwerkt de betaling en ziet je e-mailadres, zoals elke winkel doet, en mailt je als de app een update krijgt. De app zelf vraagt je nooit om een van beide.

Kies een taal, geen model

Taal is het eerste wat een model in of uit de race houdt, dus dat is het bovenste niveau van het menu. Binnen een pakket wisselen gaat meteen; van het ene pakket naar het andere haalt het andere op en houdt wat je al hebt.

Bedenk je je halverwege een download, dan wordt die geannuleerd en begint de nieuwe meteen. Schakel je later terug, dan gaat hij verder in plaats van opnieuw te beginnen.

Zestien in totaal: Engels, Spaans, Frans, Italiaans, Portugees, Duits, Nederlands, Turks, Russisch, Arabisch, Hindi, Japans, Koreaans, Vietnamees, Oekraïens en Mandarijn. Laat het op Meertalig staan en het zoekt zelf uit welke het hoort, of noem de taal en het hoeft niet meer te gokken.

Hij woont in de menubalk

Geen Dock-icoon, geen venster om te beheren. Het icoon vertelt wat hij doet: indigo tijdens het luisteren, blauw terwijl een model downloadt, geel als de pijplijn achterop begint te raken, en nooit rood, want rood betekent opnemen, en er wordt nooit iets ergens weggeschreven. De schakelaars zitten in het menu, en , opent daar een instellingenvenster voor de knoppen erachter.

S
Pauzeren en hervatten
Houd ingedrukt
Maak de overlay sleepbaar; verder is hij klikdoorlatend
Houd ingedrukt
Stapel de laatste vakken weer op boven het live vak; scroll voor oudere
,
Instellingen, vanuit het geopende menu: regels per vak, dekking, het gat onder de aanwijzer, hoe ver terugkijkt
Menubalk
Model, bron, tekstgrootte, positie van de overlay, toestemmingsstatus

Waarom niet Live ondertiteling van Apple?

macOS heeft ondertiteling ingebouwd, gratis, op elke Mac met Apple silicon, onder Systeeminstellingen, Toegankelijkheid, Live ondertiteling. Dekt dat wat je nodig hebt, gebruik het dan. Dit zijn de plekken waar het bij mij ophield, en er is een vergelijking rij voor rij als je de lange versie wilt.

  • Zestien talen, voor je herkend. Die van Apple is niet in elke taal, elk land of elke regio beschikbaar. Het standaardmodel hier zoekt de taal zelf uit, en in de menubalk wissel je ertussen.
  • Jij kiest het model. Zeven Engelse checkpoints die vertraging tegen nauwkeurigheid afwegen vanaf 160 ms, plus het meertalige model. Apple geeft je ondertiteling, geen knop om aan te draaien.
  • De overlay is klikdoorlatend. Die van Apple is een venster dat je verplaatst en van grootte verandert. Deze vangt geen enkele klik, dus je werkt er dwars doorheen. Houd ingedrukt als je hem wél wilt verplaatsen.
  • Het gaat opzij waar je wijst. Het vak vervaagt onder de aanwijzer zodat je kunt lezen wat eronder ligt, zo sterk en zo breed als je zelf instelt. Dat van Apple is een dicht venster dat je in plaats daarvan ergens anders neerzet.
  • Alles, of maar één ding. Allebei beginnen ze bij alles wat de machine afspeelt. Het verschil is dat deze te beperken is tot de app waar het je om gaat, zodat het gesprek ondertiteld wordt en de rest van de machine stil blijft.
  • Muziek wordt geen songtekst. Er draait een stemdetector vóór de spraakherkenning, dus een achtergrondtrack bereikt die nooit.
  • Een nieuw vak per spreker. Optioneel, standaard uit, en zonder tegenhanger in de ingebouwde variant.

Goed om te weten voordat je downloadt

  • De eerste start duurt een paar minuten. Het model is ongeveer 633 MB en haalt zichzelf op bij de eerste start. De menubalk laat de voortgang zien.
  • macOS vraagt toestemming om systeemgeluid op te nemen. Sla die vraag over en elk sample komt binnen als digitale stilte, zonder ergens een foutmelding, dus houdt de app een toestemmingscontrole in het menu in plaats van te doen alsof hij het weet. De download is ondertekend en genotariseerd, dus het antwoord dat je geeft overleeft elke update.
  • Zang telt als spraak. De stemdetector hoort het verschil niet, dus muziek met zang komt er als songtekst doorheen.
  • Sprekerwissels lopen iets achter. Diarisatie rapporteert op een vaste cadans, dus een woord of twee van de nieuwe spreker kan nog op het vorige vak belanden voordat dat leegt.
  • Eén scherm. De overlay gebruikt het hoofdscherm.
  • Modellen blijven op schijf zodra je ze probeert. Wisselen tussen de acht is hoe je vindt welk model je wilt, en elk model dat je probeert blijft staan. In de instellingen zit een knop die de modellen verwijdert die niets gebruikt, en nooit het model dat in gebruik is.

Vragen die mensen als eerste stellen

Werkt het met Zoom, Teams en Google Meet?
Ja. Het tapt de audio die een app afspeelt in plaats van te integreren met één bepaalde dienst, dus een Zoom-venster, een Slack-huddle en een gesprek in een browsertab worden allemaal op dezelfde manier ondertiteld. Browsers en Electron-apps inbegrepen: het pakt de hulpprocessen op die die starten, en daar komt hun audio echt vandaan.
Zit een overlay niet in de weg?
Hij vangt helemaal geen klikken, dus je werkt er dwars doorheen, en hij vervaagt onder de aanwijzer zodat je kunt lezen wat eronder ligt. Hoeveel hij vervaagt, hoe ver dat reikt, hoe dekkend het vak is en hoeveel regels het vasthoudt zijn allemaal instellingen. Houd ingedrukt om hem dekkend te houden en ergens anders neer te zetten; waar je hem neerzet wordt onthouden.
Ondertitelt het mijn eigen stem?
Nee. Hij hoort alleen ooit wat je Mac afspeelt, nooit de microfoon. In een gesprek betekent dat dat je de anderen leest en niet jezelf.
Is er een internetverbinding nodig?
Eén keer, om het model bij de eerste start op te halen, ongeveer 633 MB. Daarna draait het volledig offline en maakt het helemaal geen netwerkverbindingen meer.
Kan ik een transcript opslaan of exporteren?
Nee, en dat is bewust. Er wordt niets naar schijf geschreven: ondertitels bestaan op het scherm en zijn dan weg. ingedrukt houden haalt de laatste vakken terug zolang de app draait, en dat is om de regel op te vangen waar je van wegkeek, niet om iets vast te leggen. Heb je een vastlegging van een gesprek nodig, dan is dit het verkeerde gereedschap.
Moet IT het goedkeuren?
Er is hier geen leverancier om goed te keuren: geen account, geen server, geen transcript dat de Mac verlaat, en niets dat als deelnemer bij het gesprek aansluit, dus niemand in de vergadering wordt door iets opgenomen. Het is één ondertekende, genotariseerde app op één machine, en nadat het model één keer gedownload is maakt hij helemaal geen netwerkverbindingen meer. Of dat door je eigen beleid komt, bepaal jij, maar er zit geen derde partij in om te beoordelen.
Werkt het met een koptelefoon of AirPods?
Ja. Het pakt de audio op die een app produceert, niet het geluid dat uit een luidspreker komt, dus waar je op luistert maakt niets uit.
Maakt het mijn Mac langzamer?
De transcriptie draait op de Neural Engine in plaats van op de CPU, met ruwweg een realtimefactor van 0,15, oftewel zes seconden spraak per seconde rekentijd. Hetzelfde model op de CPU bleek ongeveer 100× te traag om het überhaupt bij te houden.
Op welke Macs draait het?
Apple Silicon, macOS 14.2 of nieuwer. De ondergrens komt door Core Audio process taps, de API waar het geheel op gebouwd is.
Is het een abonnement?
Nee. $9 eenmalig, elke toekomstige update inbegrepen, geen account om aan te maken en geen minuten om te kopen. Is het niets voor jou, dan krijg je binnen 14 dagen je geld terug.
Kan ik de broncode zien?
Ja. Hij staat onder FSL-1.1-ALv2, die twee jaar na elke release overgaat in Apache 2.0. Lees hem, of bouw hem zelf, op github.com/daformat/subtitles.

Ondertiteling voor alles, zonder audio ergens heen te sturen.

14 dagen geld terug, zonder vragen

Eenmalig $9, elke toekomstige update inbegrepen · macOS 14.2 of nieuwer · Apple Silicon
Onbeperkte live ondertiteling, zolang je de Mac hebt. Geen minuten om te kopen, geen account, geen abonnement.