Wat is audio-resampling?
Wanneer je audio converteert van de ene samplerate naar de andere (bijv. een 44,1 kHz MP3 → 48 kHz WAV voor videobewerking), moet elk afzonderlijk sample opnieuw worden berekend op een nieuw tijdraster. Dit proces heet resampling.
Een naïeve aanpak — simpelweg samples weggooien of dupliceren — veroorzaakt hoorbare clicks en aliasing. Professionele resamplers gebruiken wiskundige interpolatie (doorgaans polyfase FIR-filters) om een continu signaal te reconstrueren vanuit discrete samples, en samplen dat vervolgens opnieuw op de nieuwe rate. De kwaliteit van deze interpolatie bepaalt of je audio transparant blijft of artefacten oppikt.
Kernbegrip: Volgens het Nyquist-Shannon-theorema kan elk bandbeperkt signaal dat boven twee keer de hoogste frequentie is gesamplede, perfect worden gereconstrueerd. Resampling maakt gebruik van dit theorema — een hoogwaardige resampler kan rates wijzigen zonder hoorbare kwaliteitsverlies.
Wat is SoXr?
De SoXr (SoX Resampler Library) is een open-source resampling-engine van audiofiele kwaliteit, oorspronkelijk ontwikkeld voor de SoX (Sound eXchange) command-line audiotool. Hij gebruikt een FFT-gebaseerd polyfase-algoritme dat resultaten oplevert die vrijwel niet te onderscheiden zijn van het originele signaal.
SoXr wordt gebruikt door professionele audiosoftware zoals foobar2000, JRiver Media Center, MPV en VLC. CleverUtils.com integreert SoXr via het aresample-filter van FFmpeg en past het automatisch toe op elke WAV-conversie.
| Parameter | Waarde | Functie |
|---|---|---|
| Engine | SoXr (CR64) | 64-bit dubbele precisie drijvende-kommarberekening |
| Precisie | 28-bit | ~168 dB signaal-ruisverhouding — ver boven de hoorbare ruisvloer |
| Dithering | Shibata | Psychoacoustisch gevormd ruis dat kwantiseringsartefacten weghoudt van de 1–5 kHz gehoorgevoeligheidspiek |
| Anti-aliasing | Automatisch | Steile laagdoorlaatfilter voorkomt aliasing bij downsampling |
SoXr vs. FFmpeg's standaardresampler
FFmpeg bevat twee resampling-backends: de standaard swresample (SWR) en de optionele soxr. Hier is een vergelijking:
| Aspect | swresample (standaard) | SoXr |
|---|---|---|
| Algoritme | Kaiser-gewenste sinc (lineaire fase) | FFT-gebaseerd overgesampled polyfase |
| Interne precisie | 16-bit (standaard) of 32-bit float | 64-bit double (CR64-engine) |
| Aliasing-onderdrukking | Goed (−100 dB typisch) | Uitstekend (−168 dB met precision=28) |
| Dithering | Driehoekig (vlak spectrum) | Shibata (ruisvormend, minder hoorbaar) |
| Snelheid | Sneller | Iets langzamer (~10–15% meer CPU) |
| Doorlaatband-rimpel | Meetbaar nabij Nyquist | Verwaarloosbaar |
| Beste voor | Realtime streaming, videoweergave | Mastering, archivering, distributie |
Conclusie: swresample is geoptimaliseerd voor snelheid en is prima voor realtime weergave. SoXr is geoptimaliseerd voor kwaliteit en is de juiste keuze wanneer je een bestand produceert dat bewaard, gedistribueerd of verder bewerkt wordt — precies wat een converter doet.
Shibata-dithering uitgelegd
Wanneer audio wordt geconverteerd tussen bitdieptes (bijv. 32-bit float interne verwerking → 16-bit WAV-uitvoer), veroorzaken afrondingsfouten kwantiseringsruis. Dithering voegt een kleine hoeveelheid ruis toe vóór het afrondenproces om onprettiger vervoringspatronen te elimineren.
Niet alle dithering is gelijk. Standaard driehoekige dithering (TPDF) verdeelt ruis gelijkmatig over het frequentiespectrum. Shibata-dithering gebruikt psychoacoustische ruisvormgeving om die ruis te verschuiven naar frequentiebereiken waar het menselijk gehoor het minst gevoelig is:
| Dither-type | Ruisverdeling | Hoorbaarheid |
|---|---|---|
| Geen (afkapping) | Geen ruis toegevoegd | Slechtst — hoorbare harmonische vervorming |
| Rechthoekig (RPDF) | Vlak, willekeurig | Verwijdert vervorming, vlakke ruisvloer |
| Driehoekig (TPDF) | Vlak, ongecorreleerd | Beter — geen modulatieruis |
| Shibata (ruisvormend) | Verschoven van 1–5 kHz weg | Minst hoorbaar — maakt gebruik van de gehoorscurve |
Waarom het ertoe doet: Het menselijk gehoor is het meest gevoelig tussen 1–5 kHz (de Fletcher-Munson-curve). Shibata-dithering verschuift kwantiseringsruis naar het minder gevoelige hoogfrequente gebied boven 10 kHz, waardoor het praktisch onhoorbaar is, zelfs op hoogwaardige monitorapparatuur.
Wanneer vindt resampling plaats?
SoXr wordt automatisch toegepast op elke WAV-conversie op CleverUtils.com, maar de impact is het grootst in de volgende scenario's:
| Scenario | Voorbeeld | SoXr-impact |
|---|---|---|
| Hi-res downsampling | 96 kHz FLAC → 44,1 kHz WAV | Kritiek — voorkomt aliasing-artefacten |
| Muziek → videorate | 44,1 kHz MP3 → 48 kHz WAV | Belangrijk — schone rate-conversie |
| Spraak downsampling | 48 kHz podcast → 22,05 kHz WAV | Belangrijk — behoudt spraakhelderheid |
| Zelfde rate-conversie | 44,1 kHz MP3 → 44,1 kHz WAV | Minimaal — dithering geldt nog steeds voor bitdieptewijzigingen |
Het grootste kwaliteitsverschil treedt op bij downsampling — wanneer de doelrate lager is dan de bronrate. Zonder correcte anti-aliasing (die SoXr automatisch verzorgt) vouwen frequenties boven de nieuwe Nyquist-limiet terug in het hoorbare bereik als vervorming.
28-bit precisie: wat het betekent
De parameter precision=28 van SoXr stelt de interne berekening in op 28 effectieve bits via de CR64 (constant-rate, 64-bit) engine. Dit vertaalt zich naar ongeveer 168 dB signaal-ruisverhouding.
Ter vergelijking:
- 16-bit audio heeft ~96 dB dynamisch bereik
- 24-bit audio heeft ~144 dB dynamisch bereik
- SoXr op precision=28 berekent op ~168 dB — 24 dB onder de ruisvloer van zelfs 24-bit audio
Dit betekent dat het resampling-proces zelf geen hoorbare ruis introduceert, zelfs niet voor 24-bit masters. De interne berekening van de resampler is stiller dan het stilste geluid dat een echte opname kan vastleggen.
Waarom niet precision=32? Hogere precisiewaarden verhogen de CPU-tijd met afnemende meeropbrengst. Op precision=28 werkt SoXr al 24 dB onder de ruisvloer van 24-bit audio — verder verhogen zou onhoorbaar en onpraktisch zijn. Dit is de sweet spot die de meeste professionele audiotools gebruiken.
Hoe CleverUtils SoXr gebruikt
Elke WAV-conversie op CleverUtils.com doorloopt deze pipeline:
- Upload — je audiobestand wordt ontvangen via HTTPS
- Decoderen — FFmpeg leest het bronformaat (MP3, FLAC, M4A, OGG, enz.)
- Resamplen — SoXr converteert naar je gekozen samplerate en bitdiepte
- Ditheren — Shibata-ruisvormgeving wordt toegepast tijdens bitdiepteconversie
- Coderen — schone PCM-samples worden naar de WAV-container geschreven
- Downloaden — je WAV-bestand is klaar
Het hele proces verloopt automatisch. Je kiest gewoon je doelinstellingen (samplerate, bitdiepte, kanalen) en CleverUtils regelt de rest met SoXr onder de motorkap. Geen configuratie nodig, geen "kwaliteitsmodus"-schakelaar — elke conversie krijgt dezelfde resampling op studioniveau.