Werken met Spraak in het CGN
Achtergrond
Het Corpus Gesproken Nederlands (CGN, versie 2.0.3, 2014) is een verzameling van ong 900 uur (met bijna 9 miljoen woorden) hedendaagse Nederlandse spraak, afkomstig van Vlamingen en Nederlanders. Het project starte 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 niet alleen om om welke woorden gesproken werden, maar ook om de manier waarop ze door de verschilllende groepen uitgesproken werden. Als voorbeeld is er de ontwikkeling van het Poldernederlands. Is dat al ruim te horen in de geluidsopnamen of eigenlijk nog niet? (zie Jan Stroop: Poldernederlands). En zo ja, door wie of welke groep spekers en/of spreeksters dan?
De spraakfragmenten in het CGN bestaan zowel uit spontane als voorbereide spraak. Ze zijn vervolgens door studenten (Nederlanders en Vlamingen) opgelijnd met diverse transcripties (o.a. orthografisch, fonetisch) en annotaties (syntactisch, POS-tags). Uiteraard werd dit allemaal dubbel gecorrigeerd om er voor te zorgen dat er een redelijk homogene set transcripties en annotatie verscheen.
Tenslotte zijn er nog metadata aan toegevoegd. Metadata zijnMetadata, lexica, frequentielijsten en de corpusexploratiesoftware Corex behoren ook tot het CGN.
Tenslotte is er ook een webcursus CGN waarmee je je vertrouwd kunt maken met wat je allemaal met het CGN kunt doen.
Automatische Spraakherkenning
Het mooie van het 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 (Automatic Speech Recognition) toepassingen te maken waarbij gekeken kan worden hoe goed de herkenning precies is.
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. Spraakherkenning is tegenwoordig heel erg goed en als open source beschikbaar waardoor het eigenlijk voor niemand meer een probleem geeft om er ook zelf mee te werken. We laten zien hoe dat gedaan kan worden.
Spraakherkenning
Sinds de herfst 2022 heeft OpenAI een spraakherkenner beschikbaar gesteld: Whisper. Het is herkenner waarmee ong 99 verschillende talen goed tot uitstekend herkend kunnen worden. Het Nederlands hoort meestal tot de "uitstekend" herkende talen.
Het is bovendien mogelijk om de herkende spraak direct in het Engels te vertalen.
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). Ook wordt er gewerkt aan het sneller maken van Whisper (Faster-Whisper, Insanely-Fast-Whisper). En het gaat maar door waardoor iedere maand het allemaal nog beter/sneller gaat werken.
Python
Whisper is een python-script waarmee je op je eigen computer makkelijk de herkenning kunt doen. Er zijn op Internet verschillende sites waarin wordt uitgelegd hoe je Whisper kunt installeren. Een goede site is 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. Nadeel is dat je in principe maar een herkenning tegelijk kunt doen waardoor het een hoop werk is als je veel files wilt herkennen. Hier is gelukkig een oplossing voor waarbij je een set files kunt opgeven (icl taal en herkenningsmodel) die vervolgens herkend gaan worden.
Software
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.
Drie mooie voorbeelden zijn:
- aTrain van de Universiteit van Graz (Windows)
- SubtitleEdit (Windows)
- MacWhisper van Jordi Bruin (Apple)
Beide programma’s werken goed, makkelijk en de resultaten zijn uitstekend. Een voordeel van aTrain is dat het ook de nieuwe ontwikkelingen zoals Diarizatie doet terwijl MacWhisper zich in eerste instantie richt op het herkennen van de spraak maar ook bezig is de andere ontwikkelingen er bij te zetten.
Installatie
De eerste stap is om te beslissen wat je precies wilt doen. Voor de beste flexibiliteit is het het beste om de 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 of MacWhisper).
aTrain
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 udio lengte (zonder kaart) naar 20% van de audio lengte (met kaart). Met kaart is dus ong 10x 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 een behoorlijke download (> 13 GB) maar eenmaal geïnstalleerd, werkt het uitstekend.
SubtitleEdit
SubtitleEdit
Een veel gebruikt programma om ondertitels mee te maken, is SubtitleEdit. Het is Open Source software en beschikbaar op: https://github.com/SubtitleEdit/subtitleedit/releases
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.
MacWhisper
MacWhisper
Deze software komt in twee smaken. Een gratis versie waarmee de herkenning gedaan kan worden met de drie kleinere 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 een keer een bedrag (dat helaas wel steeds meer wordt. Is nu al €39). Ongeveer iedere week kun je dan (op woensdag) een nieuwere versie downloaden.
Python
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 Hier staat ook hoe je het Python script kunt installeren.
- Installeer eerst
- Python (3.8 – 3.10)
(Ik heb zelf 3.10.1 AvH) - PyTorch (1.10.1 or 2.0)
- FFmpeg: Ga naar de FFmpeg-website om het authentieke bestand te downloaden.
- NVIA CUDA (eventueel)
- Python (3.8 – 3.10)
- Dan
Open een terminal venster en type:
- Whisper: pip3 install git+https://github.com/openai/whisper.git
en daarna (als je wilt): - Whisperx: pip3 install git+https://github.com/m-bain/whisperx.git
- Whisper: pip3 install git+https://github.com/openai/whisper.git
Het installeren staat 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 geinstalleerd wordt.
Windows
Video met het installeren onder Windows
MacOS
Video met het installeren onder MacOS
Als het allemaal lukt, dan heb je nu Whisper en WhisperX geinstalleerd en kun je je AV-files herkennen.
Additionele software
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 jer meer of heb je geen tijd of zin om op de resultaten te wachten. Dan kun je een batch job maken waarin je aangeeft hoe 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 resulaten in de opgegeven directory. Zo'n batch job kun je uitvoeren met WhisperBatch dat ook van de website te downloaden is.
Extra
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 vide waarin Trelis (uit Dublin) uitlegt hoe je Whisper kunt fine-tunen om bv heel vreemde woorden toch goed te kunnen herkennen.
De video staat hieronder:
In een redelijk lange video legt hi een paar basis onderdelen van Whisper uit en laat hij zien hoe je een model (in dit geval een small model) kunt aanpassen aan het goed herkennen van die rij erg vreemde woorden.