Jeg kan prøve.
Dersom du analyserer teksten din så vil du finne at enkelte bokstaver forekommer mye oftere enn andre. Ved å enkode teksten som 8-bit ascii-tegn så utnyttes ikke dette, og tekstfilene blir unødig store.
Hvis vi derimot lager oss en kode som bruker f.eks 3 bit på å uttrykke "e" og "t", men kanskje 12 bit på å uttrykke "z" eller "c", så vil vi (i gjennomsnitt) kunne komprimere norsk språk endel. Dette er basert på at man har en modell av "prosessen" som genererer teksten (en veltalende nordmann), hvis en sjimpanse dundret på tastaturet så ville ikke kompresjonen fungere. Morse-kode er et tidlig eksempel som utnytter samme fenomen. Hvis du tenker på T9-ordboka i mobilen din så er den et mer komplekst utrykk for samme sak: ved et par tastetrykk så greier mobilen å gjette ordet (evt isolere ned til en gruppe sannsynlige ord). Det samme kan selvsagt sendes over en radiolink, sammen med noen ekstra bit som forteller mottakeren hvilket av de sannsynlige ordene som skal velges, gitt at de har samme ordbok.
For musikk så kan en enkel modell være at "neste sample = forrige sample". Selvsagt er ikke musikk slik, men fordi musikk inneholder mye mer energi i lave frekvenser, så er korrelasjonen mellom nabosample stor. Vi kan enten se dette som en kodingsprosess (dpcm), eller som en høypass-filtrering av signalet (dette kalles også "hviting" siden statistikken ligner mer på hvit støy etter filtrering).
En grunnleggende tanke i koding og kompresjon er at "informasjons-entropien" "eller graden av uorden" representerer den virkelige "informasjonen" i en melding. Når vi har fjernet alt valgflesket hos en politiker så sitter vi ofte igjen med ganske lite mening som ikke lar seg spå ut fra hva andre politikere har sagt etc. Avhengig av syn så kan vi si at dette er hans originale synspunkter (eller ren galskap), men uansett må vi ha en viss "kapasitet" for å greie å lagre disse synene - ofte ikke så veldig stor
På samme måte så må et lydformat eller en lydkanal ha en viss
kapasitet for å kunne overføre en gitt mengde
informasjon, og den minste mengden informasjon vi kan slippe unna med er gitt av
entropien til lydstrømmen (som kan variere, og er vanskelig å måle)
FLAC benytter selvsagt en mye mer omstendelig algoritme, men jeg tror at det ligger en høyere-ordens lineær prediktor til grunn for den, slik at man egentlig lagrer en "modell" av hvordan lyden avhenger av tidligere samples, og så komprimerer det (ofte lille) avviket som skyldes modell-unøyaktighet.
Hvis du genererer en fil med hvit støy så regner jeg med at flac overhodet ikke greie å komprimere. Hvis filen inneholder mye stillhet eller veldig lavfrekvent innhold så kan man sikkert få veldig høy kompresjonsratio. Jeg opplever veldig konsekvente verdier på rundt 40-50% reduksjon i filstørrelse.
edit:fant informasjonen
FLAC uses four methods for modeling the input signal:
- Verbatim. This is essentially a zero-order predictor of the signal. The predicted signal is zero, meaning the residual is the signal itself, and the compression is zero. This is the baseline against which the other predictors are measured. If you feed random data to the encoder, the verbatim predictor will probably be used for every subblock. Since the raw signal is not actually passed through the residual coding stage (it is added to the stream 'verbatim'), the encoding results will not be the same as a zero-order linear predictor.
- Constant. This predictor is used whenever the subblock is pure DC ("digital silence"), i.e. a constant value throughout. The signal is run-length encoded and added to the stream.
- Fixed linear predictor. FLAC uses a class of computationally-efficient fixed linear predictors (for a good description, see audiopak and shorten). FLAC adds a fourth-order predictor to the zero-to-third-order predictors used by Shorten. Since the predictors are fixed, the predictor order is the only parameter that needs to be stored in the compressed stream. The error signal is then passed to the residual coder.
- FIR Linear prediction. For more accurate modeling (at a cost of slower encoding), FLAC supports up to 32nd order FIR linear prediction (again, for information on linear prediction, see audiopak and shorten). The reference encoder uses the Levinson-Durbin method for calculating the LPC coefficients from the autocorrelation coefficients, and the coefficients are quantized before computing the residual. Whereas encoders such as Shorten used a fixed quantization for the entire input, FLAC allows the quantized coefficient precision to vary from subframe to subframe. The FLAC reference encoder estimates the optimal precision to use based on the block size and dynamic range of the original signal.
I tillegg så kodes residuet ("prediksjonsfeilen") med flere modeller, og flac utnytter redundans mellom høyre/venstre og surroundkanaler,
-k