Linear predictive coding

Uit SynthWiki
Ga naar: navigatie, zoeken

Linear Predictive Coding (afgekort:LPC is een van de belangrijkste analyse-(re)synthese-technieken in de audio-signaalverwerking. LPC kan de klank van een instrument of stem "invangen" in een filter. Haal je vervolgens een geluid met een "wit" spectrum (bijv. witte ruis, een puls of pulstoon) door dat filter, dan hoor je de klankkleur van betreffende instrument of stem. LPC wordt in de muziek niet alleen veel gebruikt als vocoder-techniek, maar ook in natuurkundige modellen van muziekinstrumenten, zoals die in physical modelling synthesizers worden toegepast. Een belangrijk aspect van LPC is dat het een sterk data-reducerende werking heeft. LPC-achtige algoritmes worden gebruikt in data-compressie-technieken zoals MP3 en jpeg.


technische verklaring

LPC is een vorm van Wiener optimum filtering - een onderwerp uit de statistische signaalverwerking. Een filterproces wordt in het frequentiedomein beschreven als een vermenigvuldiging van twee functies van de frequentie, namelijk het spectrum van het geluid X(f) en de frequentiekarakteristiek H(f) van het filter. Nu is een spraakklank een voorbeeld van een bron-filter model, dus het heeft een spectrum S(f) waarvoor geldt:

(1) S(f) = X(f)H(f)

Hierin is X(f) het spectrum van het stembandsignaal. In woorden uitgedrukt zegt (1) dus: spraakgeluid is stembandgeluid dat gefilterd is door het spraakkanaal (= mond- en keelholte). Het is bekend dat het spectrum van het stembandgeluid bij benadering constant is, dus "wit": X(f) ≈ 1. De LPC-procedure is gebaseerd op de volgende redenering. Haal het spraaksignaal S(f) door een (nog onbekend) filter A(f) waarvan de eigenschappen zodanig zijn dat je als resultaat een geluid R (het "restsignaal") krijg dat, net als de stembanden, een bij benadering constant ("wit") spectrum heeft. Kortom:

(2) R(f) = S(f)A(f)

Je kunt dus zeggen dat A(f) een "witmakende" werking heeft (het wordt daarom in de literatuur simpelweg aangeduid als whitening filter). Combineer je dat met (1) en (2) dan zie je dat A(f) = 1 / H(f): het witmakende filter A(f) is de inverse van het filter dat we zoeken. Maar hoe vinden we nu A(f)? Het blijkt dat een witmakend filter een bijzondere (en bewijsbare) eigenschap heeft: het minimaliseert de geluidsenergie (= som van de kwadraten van de geluidssamples) van het spraaksignaal. Dus hoe witter R(f), des te zachter het klinkt. Daarmee beschik je over een direct aanknopingspunt om A(f) te vinden, want de (gegeven) geluidsenergie van het spraaksignaal kun je schrijven als een functie van de filtercoëfficiënten a1, a2, a3, ... aM van witmaker A(f). Door de partiële afgeleiden van die functie nul te stellen, krijg je de geminimaliseerde energie. Daarmee komt de LPC-berekening neer op het oplossen van een stelsel van M lineaire vergelijkingen met M onbekende filtercoëfficiënten (M ligt meestal tussen 20 en 40).

Door het witmakende filter A(f) vervolgens te inverteren krijg je het gevraagde filter H(f), waarmee je de spraakklank weer kunt (re)synthetiseren. Een filter inverteren is buitengewoon simpel; verander alle filtercoëfficiënten van teken en maak van het niet-recursieve witmaak-analysefilter een recursief synthesefilter. Daarmee is filter H(f) afgeleid uit het spraaksignaal S(f).


geluidsvoorbeeld

Geluidsfragment.jpg "Maan, zaag, Fien..."
Een gesproken zin wordt opgedeeld in korte fragmenten. Van elk fragment wordt een LPC-filter gemaakt. In de synthese kan de duur van elk fragment worden ingesteld. In dit voorbeeld volgen ze elkaar in steeds hoger tempo op, zodat eerst de afzonderlijke filters en uiteindelijk de "samensmelting" daarvan tot continue spraak hoorbaar wordt.

Externe links

Lees meer over de muzikale toepassing van LPC in het artikel Vocoders (verschenen in Music Maker, 2001 nr 4 (april) als aflevering 15 van de serie over digitale signaalverwerking.)

Dit artikel is een beginnetje. Je kan SynthWiki helpen met het uitbreiden van dit artikel.
Persoonlijke instellingen