Automatische Spraakherkenning

In dit "document" op deze website zullen we proberen uit te leggen wat het CGN precies is en wat je er mee zou kunnen doen op het gebied van Automatische Spraakherkenning. Verder vertellen we in het kort wat Automatische Spraakherkenning precies is en geven een overzicht van een moderne ASR-applicatie Whisper: de Open Source Spraakherkenner zoals geleverd door OpenAI. Tenslotte geven we een (onvolledig) overzicht van bestaande ASR-pakketten die voor Windows en/of Apple te gebruiken zijn om Whisper (en afgeleiden daarvan) eenvoudig te gebruiken.
We hebben geprobeerd om de beschrijving zo eenvoudige mogelijk te houden maar konden niet voorkomen dat er toch termen genoemd worden die (voor sommigen) nadere toelichting nodig hebben. Hiervoor hebben we een tabel-overzicht gemaakt waarin de verschillende termen worden uitgelegd.

Achtergrond

Het Corpus Gesproken Nederlands (CGN, versie 2.0.3, 2014) is een verzameling van ong. 900 uur hedendaagse Nederlandse spraak, afkomstig van Vlamingen en Nederlanders. Het CGN bevat bijna 9 miljoen woorden. Het project startte eind jaren negentig en had als doel om een database te maken met daarin een representatieve weergave van het Nederlands zoals dat op dat moment in Nederland en Vlaanderen gesproken werd. Het ging er daarbij niet alleen om om welke woorden gesproken werden, maar ook om de manier waarop ze door de verschillende sprekersgroepen uitgesproken werden.

De spraakfragmenten in het CGN bestaan zowel uit "spontane" als "voorbereide" spraak. Na het opnemen en verzamelen werd de spraak door studenten (Nederlanders en Vlamingen) opgelijnd met diverse transcripties (o.a. orthografisch en fonetisch) en annotaties (syntactisch, POS-tags). Uiteraard werd dit allemaal dubbel gecorrigeerd om er voor te zorgen dat er een redelijk betrouwbare en homogene set transcripties en annotatie verscheen.

En daarna werd er nog metadata aan toegevoegd. Metadata is data over of van de data. Denk daarbij aan lexica, frequentielijsten en corpusexploratiesoftware zoals Corex.

Tenslotte is er ook nog een "webcursus CGN" waarmee je je vertrouwd kunt maken met wat je allemaal met het CGN zou kunnen doen.

Automatische Spraakherkenning

Het mooie van zo'n beschikbare corpus is natuurlijk de aanwezigheid van heel veel, goed opgenomen spraak waarvan ook bekend is wat er precies gezegd werd. Dit biedt de mogelijkheid om ASR (Automatische Spraakherkenning) toepassingen te maken waarbij direct gekeken kan worden hoe goed de spraakherkenning precies is en wat er allemaal nog verkeerd gaat.

Inleiding

In dit document gaan we in op de mogelijkheden om de spraakdata in het CGN te gebruiken voor onderzoek en toepassingen op het gebied van Spraaktechnologie en dan vooral Spraakherkenning. Spraakherkenning is sinds de herfst 2022 met de komst van Whisper als open source voor iedereen beschikbaar waardoor het voor niemand meer een probleem is om er zelf mee te werken.

Welke spraakherkenners zijn er?

Er bestaan een heleboel spraakherkenners die je grofweg in twee groepen kunt verdelen. Het makkelijkst om mee te werken zijn bestaande softwarepakketten of programma’s. Die geven je een interface om mee te werken, net als andere computerprogramma’s, en je krijgt de resultaten meestal op een goede manier aangeboden. Makkelijk in het gebruik, maar je hebt vaak wat beperktere mogelijkheden.
Je kunt ook een python-script installeren. Dat geeft je veel meer flexibiliteit, maar vereist wel wat meer programmeervaardigheid.

Hieronder staan een paar voorbeelden van Whisper-spraakherkenners: aTrain, MacWhisper, SubtitleEdit (alle drie programma’s) en natuurlijk Whisper, WhisperX en Faster-Whisper (python-scripts).

Spraakherkenning

Sinds de herfst 2022 heeft OpenAI haar redelijk universele spraakherkenner als OpenSource beschikbaar gesteld: Whisper. Het is een ASR-herkenner waarmee ong 99 verschillende talen goed tot uitstekend herkend kunnen worden. Het standaard Nederlands hoort meestal tot de "uitstekend" herkende talen!
Het is bovendien mogelijk om de herkende spraak direct in het Engels te vertalen waardoor je een redelijk tot goed idee krijgt van hetgeen er in een voor jou onbekende taal wordt gezegd. Uiteraard kun je de spraakherkenningsresultaten ook in andere talen vertalen, maar daar moet je dan aparte software (DeepL, Google Translate) voor gebruiken.

Door het open karakter van Whisper, is er vrij snel na de lancering een grote hoeveelheid extra software beschikbaar gekomen die allerlei facetten van moderne ASR nog beter en/of sneller beschikbaar maken. Voorbeelden zijn "add-ons" als Diarizatie en Voice Activity Detection (VAD) die bv. in WhisperX draaien. Ook wordt er gewerkt aan het veel sneller maken van de Whisper spraakherkenning (Faster-Whisper, Insanely-Fast-Whisper).
En dat proces gaat maar door waardoor er zeker in het eerste jaar, iedere maand wel weer een relevante update beschikbaar kwam waardoor het allemaal nog beter/sneller ging werken.

Python

Whisper is beschikbaar als een python-script waarmee je op je eigen computer de herkenning zelf kunt doen. Er zijn op Internet verschillende sites waarin wordt uitgelegd hoe je Whisper kunt installeren. Een goede site is bv. Notta.

Als het lukt om Whisper (en andere toevoegingen) als een Python script op je computer te installeren, dan heeft dat het voordeel dat je erg flexibel bent in het uitvoeren van de herkenning. Nadeel is dat je in principe maar één herkenning tegelijk kunt doen waardoor het een heleboel werk is als je veel en lange AV-files wilt herkennen. Hier is gelukkig een oplossing voor waarbij je een set files kunt opgeven (incl. de te herkennen taal en het te gebruiken herkenningsmodel) die vervolgens herkend gaan worden.

Programma's

Naast de herkenning via het Python-script zijn er natuurlijk ook mensen/groepen die zich richten op het maken van "dedicated software pakketten" om de spraak te herkennen. De resultaten kunnen grofweg verdeeld worden in software voor a) Windows machines en b) Apple-machines.

Alle programma’s werken goed, makkelijk en de resultaten zijn uitstekend. Een voordeel van aTrain is dat het ook de nieuwe ontwikkelingen zoals bv. Diarizatie doet terwijl MacWhisper zich in eerste instantie richt op het goed en makkelijk herkennen van de spraak. Uiteraard zijn ook zij bezig om de andere ontwikkelingen er bij in te zetten, maar op dit moment kan Diarizatie nog niet.

SubtitleEdit is een iets ander programma. Ontstaan als een OpenSource tool om makkelijk ondertitels van video's te maken, heeft het zich ontwikkeld tot een uitgebreid pakket met de mogelijkheid om de transcripties in ongeveer alle bestaande ondertitelingsformaten om te zetten. Met de komst van goede, opensource spraakherkenners (eerst KALDI en daarna Whisper) hebben ze het proces vergemakkelijkt door ondertitelaars de optie te geven om de video eerst door de spraakherkenner te halen om daarna de transcripties te corrigeren. Dat scheelt een heleboel tijd!

Installatie

De eerste stap is om te beslissen wat je precies wilt doen. Voor de beste flexibiliteit is het het beste om de geschikte python versie te downloaden en te installeren. Gaat het je vooral om het herkennen van files, dan kun je beter een software pakket downloaden (bv. aTrain, MacWhisper of SubtitleEdit).

aTrain

Onderzoekers van de Universiteit van Graz hebben aTrain ontwikkeld: software waarmee je op een Windows machine spraakherkenning (=Whisper) kunt doen. De opzet is iets anders dan bij MacWhisper waardoor je direct al de nieuwste snufjes (snel, diarizatie) kunt gebruiken. Zeker bij gebruik van een grafische kaart gaat de snelheid van 3x de audio lengte (zonder kaart) naar 20% van de audio lengte (met kaart). Met kaart is dus ong 15x sneller dan zonder!
De software kan gedownload worden in de Microsoft App (https://apps.microsoft.com/detail/9n15q44szns2?amp%3Bgl=US&hl=nl-nl&gl=NL) en extra informatie is op de website van de Universiteit van Graz te vinden (https://business-analytics.uni-graz.at/en/research/atrain/).
aTrain is wel een behoorlijke download (> 13 GB) maar eenmaal geïnstalleerd, werkt het uitstekend!

MacWhisper

Deze software komt in twee smaken. Een gratis versie waarmee de herkenning gedaan kan worden met de drie kleinere Whisper modellen (Tiny, Base, Small) en een (eenmalig) betaalde versie waarmee ook de twee fogrotere modellen (Medium en Large) gebruikt kunnen worden. De software kan gedownload worden in de Apple Store of hier (https://goodsnooze.gumroad.com/l/macwhisper) Je betaalt één keer een bedrag. Meestal iedere week kun je dan (vaak op woensdag) een nieuwere versie downloaden.

SubtitleEdit

Een veel gebruikt programma om ondertitels mee te maken, is SubtitleEdit. Het is beschikbaar op: https://github.com/SubtitleEdit/subtitleedit/releases

Ontstaan als een OpenSource tool om makkelijk ondertitels van video's te maken, heeft het zich ontwikkeld tot een uitgebreid pakket met de mogelijkheid om de transcripties in ongeveer alle bestaande ondertitelingsformaten om te zetten. Met de komst van goede, opensource spraakherkenners (eerst KALDI en daarna Whisper) hebben ze nu het proces vergemakkelijkt door ondertitelaars de optie te geven om de video eerst door de spraakherkenner te halen om daarna de transcripties slechts te corrigeren. Dat scheelt een heleboel tijd! De ontwikkelaars zagen snel in dat gebruik van goede ASR-software een duidelijk toegevoegde waarde had en zijn een 2 jaar geleden begonnen met de implementatie van KALDI en vervolgens Whisper. Het transcriptieproces werkt nu behoorlijk vlekkeloos en de resultaten zijn uitstekend. Het voordeel van SubtitleEdit is dat je direct het resultaat kunt verbeteren en vertalen in een andere taal. Nadeel is dat je maar een file per keer kunt doen..

Python

Python is een programmeertaal die begin jaren 90 ontworpen en ontwikkeld werd door Guido van Rossum, destijds verbonden aan het Centrum voor Wiskunde en Informatica in Amsterdam.  Inmiddels wordt de taal doorontwikkeld door een enthousiaste groep techneuten, ondersteund door vrijwilligers op het internet. Python is vrije software.
Om de Python versie te installeren, kun je het best kijken op de website van OpenAI: https://github.com/openai/whisper Hier staat redelijk goed uitgelegd wat je precies moet doen. Eventueel kun je ook nog op onze website kijken: https://speechandtech.eu/news/state-asr/whisper. Ook hier staat ook hoe je de juiste versie van het Python script kunt installeren. Het installeren staat ook op op deze YouTube video: https://youtu.be/R5pZPpIIUzA

Tenslotte is er (voor Windows) ook nog een soort toverformule. Je typt eenvoudig: iex (irm whisper.tc.ht) waarna alles (als het goed is) geïnstalleerd wordt.

 Als het allemaal lukt, dan heb je nu Whisper en WhisperX geïnstalleerd en kun je je AV-files herkennen.

Additionele software

De hierboven beschreven software is in eerste instantie bedoeld om de spraak om te zetten in een geschreven versie daarvan (de transcriptie). Whisper doet het voor de meeste talen uitstekend maar toch zal het nooit 100% correct worden. Denk bv aan namen (Jansen, Janssen, Janszen) die allemaal identiek klinken maar toch anders geschreven worden. Of aan bedrijfsnamen, Internet-termen (XS4All), (buitenlandse) woonplaatsen en andere woorden waarvan je moet weten hoe die precies geschreven worden. Bovendien maken de sprekers ook dikwijls fouten of versprekingen. Wat wil je daarmee dan doen? Overnemen of toch omzetten in "correct Nederlands"? En tenslotte de vraag: waar wil je de transcripties eigenlijk voor gebruiken?

Bij bewerkte transcriptie wordt het volledige, nauwkeurige script geformaliseerd en bewerkt op leesbaarheid, beknoptheid en duidelijkheid. Bewerkte transcriptie behandelt zaken als grammaticale fouten, jargon en onvolledige zinnen. Bij het transcriberen van geschreven materiaal worden ook spelling en interpunctie gecorrigeerd en kunnen de gesproken woorden formeler klinken.

Over het algemeen worden er vier soorten transcripties onderschreden.

Onbewerkt -> Bewerkt

“Mijn moeder zei tegen ons, tegen mij en mijn broer en zus: Jullie moeten niet klagen over het feit dat jullie je groenten moeten eten tijdens het avondeten.”

“Mijn moeder zei tegen mij en mijn broers en zussen dat ze niet moesten klagen over het feit dat ze groenten moesten eten tijdens het avondeten.”

Verbatim

Verbatim transcriptie is de geschreven vorm van gesproken taal die geconverteerd is van video- en audiobestanden. Elk geluid wordt vastgelegd, inclusief keel klikken en verbale pauzes zoals “ah”, “um” en “uh”. Het geeft aan wanneer er gelachen wordt en wanneer er geluiden zijn zoals het rinkelen van een telefoon of het dichtslaan van een deur. Het kan onmisbaar zijn bij het vertalen van een video- of geluidsopname die is gemaakt in een juridische omgeving waarbij elk detail, inclusief pauzes en non-verbale geluiden, belangrijk kan zijn.

Intelligent

Intelligente verbatim transcriptie verwijdert afleidende opvullingen en herhalingen uit het gesproken woord. De bedoeling is om een beknopter, leesbaarder transcript te maken, terwijl de stemmen van de deelnemers en de bedoelde betekenissen behouden blijven. Dit brengt de nauwkeurigheid van verbatim transcriptie in balans met de duidelijkheid van non-verbatim transcriptie, waardoor het ideaal is voor veel zakelijke en professionele contexten.

Fonetisch

Fonetische transcriptie noteert de manier waarop gesproken woorden worden uitgesproken met behulp van fonetische symbolen.
Hoewel de Nederlandse taal 26 letters in het alfabet heeft, zijn er ongeveer 46 unieke klanken die fonemen worden genoemd. Het Internationaal Fonetisch Alfabet (IPA) is een gestandaardiseerde weergave van spraakklanken in een geschreven vorm die voor alle talen geldt. Je kunt dus het IPA gebruiken om een fonetische transcriptie te maken.

Je moet dus voor je de spraak om gaat zetten in een geschreven versie, eerst goed bedenken wat je met de transcripties gaat doen. Maar... hoe dan ook: helemaal foutloos zal ASR niet werken en dus kan het gebeuren dat je de herkenningsresultaten zal moeten corrigeren. Nu kan dat op verschillende manieren want de transcriptie is eigenlijk gewoon een tekstbestand dat je met iedere editor kunt aanpassen. Maar het kan makkelijker als je tekst en audio bij elkaar houdt waardoor je beter en sneller weet wat er eigenlijk gezegd werd.

Correctie

Behalve het herkennen van opnamen, wil je er soms ook andere dingen mee doen. Bijvoorbeeld een ondertitelingsbestand maken, een HTML-script maken waarmee je kunt lezen en afluisteren, en natuurlijk: corrigeren van de herkenningsresultaten. Hiervoor hebben we WhisperCorrector gemaakt. Het is een softwarepakket (nog steeds in ontwikkeling) waarmee je vrij makkelijk de herkenningsresultaten kunt controleren en desgewenst aanpassen.
Het is te downloaden op onze website SpeechAndTech alwaar er ook nog additionele informatie over het installeren en gebruiken van Whisper te vinden is (Engelstalig). De software die gedownload kan worden, staat hier

Batch-jobs

Soms hoef je maar een paar files te herkennen en lukt het makkelijk om ze een-voor-een op de command line te draaien. Maar soms heb je er meer of heb je geen tijd of zin om op de resultaten te wachten. Dan kun je een batch job maken waarin je aangeeft met welk model en ik welke taal iedere file herkend moet gaan worden. Je slaat de resultaten op en "runt" ze. De computer voert dan een-voor-een de opdrachten uit en schrijft de resultaten in de opgegeven directory. Zo'n batch job kun je uitvoeren met WhisperBatch dat ook van de website te downloaden is.

Fine Tunen

De wereld staat gelukkig niet stil en vanwege het open karakter van de Whisper software zijn er heel veel zaken die goed uitgelegd en verbeterd worden. Bij het schrijven van deze tekst, viel mijn oog op een interessante YouTube video waarin Trelis (uit Dublin, Engelstalig) uitlegt hoe je Whisper kunt fine-tunen om bv heel vreemde woorden toch goed te kunnen herkennen.

Zelf of in de Cloud?

Het herkennen van AV-materiaal kan goed op de eigen computer gedaan worden. Afhankelijk van het model dat je voor de herkenning gebruikt (tiny, base, small, medium of large) en de processor, geheugen en de aanwezigheid van een grafische kaart, gaat de herkenning van ong. 5x tot 0.1x de duur van de opnamen. Als je een aantal uur aan interviews hebt, dan kun je makkelijk 's avonds de computer starten en per keer 2 a 3 intervieuws herkennen. Maar heb je er 10-tallen, dan kan de lange duur bezwaarlijk worden. En veel studenten en onderzoekers in de SSH hebben nu eenmaal een eenvoudige laptop. Omdat probleem te ondervangen, zijn er verschillende oplossingen voorhanden. De eenvoudigste is het aanschaffen (of gebruiken) van een snelle computer met veel geheugen en een externe grafische kaart op de afdeling. Iedereen kan die dan gebruiken voor het herkennen van zijn of haar materiaal. 

Als dat toch te druk wordt, kan een afdeling of universiteit besluiten om een cluster snelle PC's aan te schaffen die door iedereen van de groep gebruikt kan worden. En tenslotte kan zoiets ook op nationaal niveau geregeld beschikbaar gesteld worden. In nederland hebben we dit met SURF gedaan. Iedereen die met SURF kan werken, kan zijn/haar AV-files opsturen en door de computers van SURF laten herkennen.

Maar... hier kan een probleem optreden. Sommige onderzoekers hebben materiaal onder strikte voorwaarden in handen gekregen en hebben dan beloofd dat hun AV-opnamen NIET naar buiten mogen. Herkenningen in de Cloud mogen dan (officieel) niet! Als je dan de transcripties nodig hebt, zul je het zelf moeten doen en dat kost meestal en hoop tijd (en moeite). ASR op de eigen computer kan dan helpen om het sneller te doen

Conclusie

We hebben geprobeerd een overzicht te maken van Whisper: moderne spraakherkenningssoftware die gewoon via internet te downloaden is. Je kunt je AV-bestanden via dedicated software op zowel je Mac als je Windowsmachine makkelijk en gratis herkennen. Heb je heel veel bestanden die herkend moeten worden en/of ben je handig met Python, dan kun je de herkenning via Python-scripts uitvoeren. Voordeel is dat je net wat meer flexibiliteit krijgt en makkelijk de laatste ontwikkelingen kunt bijhouden. Die komen nl allemaal als eerste via Python beschikbaar.

Ook hebben we de verschillende transcriptiesoorten besproken. Bedenk vooraf dus goed waar je de transcripties voor gaat gebruiken en pas eventueel de te gebruiken software daar op aan.

Tenslotte hebben we onze correctiesoftware besproken. Die is nu ongeveer twee jaar in gebruik en begint een zekere mate van volwasenheid te bereiken.