Uitgelegd

Wat is Whisper

Whisper is een model voor spraakherkenning dat door OpenAI is uitgebracht. Het belangrijke deel is niet hoe nauwkeurig het is. Het is dat je er een kopie van kunt hebben.

Gidsen

Een bestand, geen dienst

Whisper is een model: een groot bestand, geoefend op heel veel opgenomen spraak, dat audio in tekst omzet. Het kent veel talen. Bij het uitbrengen zaten de gewichten erbij, en daarmee bleef het niet achter een dienst staan.

Dat detail is de reden dat het ertoe doet. Vóór modellen als dit huurde je fatsoenlijke spraakherkenning. Je stuurde audio naar een bedrijf, zij draaiden hun model op hun hardware, jij kreeg tekst terug. Een kopie van het model kreeg je nooit, en zonder kopie kon je zelf niets beginnen.

Daaruit volgt waarom een toetsenbord dit werk zelf kan doen.

Je audio hoeft niet meer op reis. Staat het model op je telefoon, dan is er geen upload, geen server die je stem ontvangt, en nergens anders een kopie ervan. Geen beleid en geen belofte, maar een beschrijving van wat de software doet.

Het blijft werken zonder verbinding. Er wordt nergens iets opgevraagd, dus een vliegtuig, een tunnel of een buitenlandse simkaart houdt op een probleem te zijn.

Geen van beide gaat over nauwkeurigheid. Ze gaan allebei over de plek waar het rekenwerk gebeurt.

Wat er precies is uitgebracht

De term “open gewichten” wordt losjes gebruikt, terwijl hij de reden is dat dit alles kan.

Een geoefend model is uiteindelijk een heel grote verzameling getallen. Die getallen zijn het resultaat van het oefenen, en zij doen het herkennen. Ze uitbrengen betekent dat iedereen de verzameling kan binnenhalen en zelf kan draaien.

Open gewichten is iets anders dan open source in de strikte zin. Open source betekent meestal dat je de code kunt lezen die iets bouwt. Open gewichten betekent dat je het afgemaakte product krijgt. Je kunt het draaien, meten, er producten op bouwen en het op een telefoon zetten. Wat je niet makkelijk kunt, is nagaan waaróm het een bepaald woord kiest, want dat gedrag komt uit het oefenmateriaal en niet uit regels die iemand opgeschreven heeft.

Voor een gebruiker is het praktische gevolg eenvoudig. Een model met beschikbare gewichten kan in een app gestopt worden die nooit een server aanraakt, en dat maakt offline inspreken op een telefoon mogelijk. Zonder zo’n model zou elke spraakapp noodzakelijkerwijs bij andermans dienst aankloppen.

Het is bovendien een eenmalige zaak. Een bestand dat vandaag op je telefoon staat blijft doen wat het deed. Een dienst kan volgend jaar van voorwaarden veranderen, van prijs, of ophouden te bestaan, en dan verandert de spraakinvoer in je hand mee. Een binnengehaald model doet dat niet.

Er is nog een gevolg dat je op productpagina’s terugziet: niemand hoeft het van nul te bouwen. Er zijn veel herimplementaties gemaakt, en whisper.cpp is de bekendste, geschreven om efficiënt op gewone processors te draaien.

Waarom je telefoon een kleinere Whisper draait

Whisper is niet één bestand. Het bestaat in verschillende maten, van kleine die vrijwel overal draaien tot grote die serieuze hardware verwachten.

Die maten dragen namen die in vrijwel elk project terugkomen, van tiny en base aan de kleine kant tot large aan de andere. Welke naam een app noemt zegt je meer over wat je krijgt dan het woord Whisper op de winkelpagina.

Grotere modellen gaan doorgaans beter om met accenten, achtergrondgeluid, snel praten en ongewone namen. Ze hebben ook meer geheugen nodig, doen er langer over om een uitkomst te leveren, en nemen meer opslag in.

Die ene afruil verklaart vrijwel elk verschil tussen de apps die erop gebouwd zijn. Een programma op een computer met een videokaart erin kan iets groots draaien. Een telefoon heeft een paar gigabyte geheugen dat gedeeld wordt met elke app die je open hebt, geen actieve koeling, en stroom uit een accu. Werk dat een laptop afmaakt zonder het te merken, maakt een telefoon warm en traag.

Daarom bouwen de meeste versies voor mobiel op whisper.cpp of een vergelijkbare herbouw, en niet op de oorspronkelijke onderzoekscode. Daarmee wordt uitschrijven op je telefoon praktisch, ook op hardware zonder noemenswaardige videokaart.

Wat je op een telefoon krijgt is daarmee vrij goed te voorspellen: een kleiner model dan het model dat mensen online roemen, een korte wachttijd nadat je uitgesproken bent, hooguit een paar honderd megabyte opslag, en minder talen die goed gedekt worden dan een dienst aan de serverkant zou bieden. Wie de nauwkeurigheidscijfers van een computer aanhaalt voor een telefoon, vergelijkt twee verschillende modellen met dezelfde naam.

Wat het niet is

De naam wordt geplakt op dingen die het niet is.

Het is geen assistent. Het beantwoordt geen vragen, vat niets samen en schrijft geen tekst voor je. Het schrijft uit: geluid erin, woorden eruit.

Het is geen recorder en geen transcriptiedienst. Dat zijn producten die rond een model gebouwd zijn, met opslag, accounts, zoeken en delen erbovenop.

En het is niet automatisch privé. Een model met te downloaden gewichten kan net zo makkelijk op een server draaien als op je telefoon, en genoeg clouddiensten gebruiken open modellen. Hetzelfde model op een server: je audio wordt verstuurd, er is een verbinding nodig, en de kunde wordt begrensd door hun hardware. Hetzelfde model op je telefoon: er gaat niets weg, het werkt in vliegtuigstand, en de kunde wordt begrensd door wat jouw telefoon kan dragen. “Werkt op Whisper” op een productpagina zegt dus niets over waar je stem naartoe gaat.

De leestekens komen er anders uit dan je gewend bent

Eén ding verrast mensen die van oudere spraaksoftware komen.

Klassieke systemen verwachtten dat je de leestekens hardop zei. “Komma.” “Nieuwe alinea.” Moderne modellen leiden ze af, uit het ritme van je spraak en uit de vorm van de zin. Je zegt ze dus niet, en je kunt ze ook niet afdwingen. Zet het model een punt waar jij een komma wilde, dan verbeter je dat achteraf met je duim.

Spreek “ik ben om zes uur klaar bel me daarna” in één adem in, en het model moet uit je ritme opmaken waar de knip hoort. Valt die knip een woord verderop dan jij bedoelde, dan kost het je één tik om hem te verzetten, en die tik zit op hetzelfde toetsenbord.

Geen van beide aanpakken is in elke situatie beter. Afgeleide leestekens passen bij berichten en snelle antwoorden, waar “punt” hardop zeggen meer moeite kost dan het leesteken waard is. Gesproken opdrachten passen bij lange documenten met kopjes en alinea’s, waar je sturing wilt en toch al met opzet aan het inspreken bent.

Wat ermee gebouwd is, en waar wij staan

Doordat de gewichten beschikbaar zijn, hebben veel kleine projecten erop gebouwd, en er bestaan daardoor meerdere oprecht goede Android-apps die op de telefoon zelf draaien. Sommige zijn open source en gratis, verschillende doen alleen Engels, en elk kiest zijn eigen punt op de lijn tussen omvang en snelheid.

LocalType is op hetzelfde uitgangspunt gebouwd: het model is een bestand op je telefoon en het herkennen gebeurt daar, zonder route naar de cloud in de app. Het levert drie maten mee, van 60, 190 en 539 MB, zodat je het compromis zelf kiest. Het dekt achttien talen uit één meertalig model, en het leidt uit de opname af welke daarvan je spreekt, in plaats van uit een menu. Om de afruil een getal te geven: op een testtelefoon met 4 GB geheugen maakte de middelste maat in 4,1 seconden tekst van 6,9 seconden spraak.

De eerder genoemde grenzen gelden er onverkort voor. De modellen zijn kleiner dan wat een server zou draaien, de nauwkeurigheid is ongelijk over die achttien talen omdat het oefenmateriaal ongelijk is, en een rumoerige kamer blijft een rumoerige kamer.

De vraag die je aan een spraakapp stelt gaat dus niet over het model dat erin zit. Hij gaat over de plek waar dat model draait.

LocalType voor Android

Spraak naar tekst, privé op je eigen telefoon. De spraakherkenning draait op de telefoon zelf.

Ontdek op Google Play