Linear predictive coding

Linear Predictive Coding (LPC) je kódovací algoritmus ztrátové komprese pro zajištění representace spektrální obálky digitalizovaného hlasového signálu v komprimované formě. Je to jeden z nejefektivnějších způsobů analýzy a zpětné konstrukce hlasového signálu použitelného pro low-bit-rate kodeky. Na straně vysílání musí proběhnout analýza hlasového signálu a jeho komprese a na straně příjmu obnova původního hlasového signálu s pokud možno co nejmenší deformací. LPC při provádění analýzy vychází z předpokladu, že hlas je generován zdrojem (hlasivkami), kde na hlasivkové štěrbině závisí průběh a intenzita generovaných vokálů a na krku a ústech, které tvoří jakýsi tubus, který pak způsobuje různé rezonance, což dává hlasu jeho charakteristické zabarvení pro každého člověka. LPC při analýze hlasu nejprve prostřednictvím filtrů (inversní filtrace) oddělí tyto rezonanční kmitočty a pak provede analýzu zbytku hlasu. Protože lidská řeč sestává z opakujících se zvukových elementů, je možné z nich sestavit jakousi databázi. Zbytek hlasu je pak asociován se záznamy v této databázi. Na stranu volaného se pak přenesou odkazy do této databáze + informace o charakteristice hlasu. Jejich zpětnou syntézou vznikne vysoce věrná podoba původního hlasu.

Výpočet

Celkový model lidského hlasového traktu můžeme zapsat jako čistý IIR filtr:

H ( z ) = 1 A ( z ) {\displaystyle H(z)={{1} \over {A(z)}}} , kde polynom A ( z ) = 1 + a 1 z 1 + . . . + a P z P {\displaystyle A(z)=1+a_{1}z^{-1}+...+a_{P}z^{-P}\,} je tzv. prediktor a má řád P {\displaystyle P} (často 10 nebo 16), a i {\displaystyle a_{i}} jsou LPC koeficienty.

Predikovaný signál s ~ [ n ] {\displaystyle {\tilde {s}}[n]} je dán lineární kombinací několika předchozích vzorků (odtud název):

s ~ [ n ] = i = 1 P a i s [ n i ] {\displaystyle {\tilde {s}}[n]=-\sum _{i=1}^{P}{a_{i}s[n-i]}} .

Chyba predikce je rozdíl skutečné a predikované hodnoty:

e [ n ] = s [ n ] s ~ [ n ] {\displaystyle e[n]=s[n]-{\tilde {s}}[n]} .

K výpočtu LPC koeficientů můžeme použít autokorelační koeficienty ϕ [ i , j ] {\displaystyle \phi [i,j]\,} :

ϕ [ i , j ] = n s [ n i ] s [ n j ] {\displaystyle \phi [i,j]=\sum _{n}{s[n-i]s[n-j]}\,} , což vede k soustavě lineárních rovnic.

Autokorelační koeficienty můžeme odhadnou na rámci délce N vzorků korelační metodou (signál vně rámce je považován na známý ale nulový), což vede ke stejným koeficientům ϕ [ i , j ] = ϕ [ i + c , j + c ] {\displaystyle \phi [i,j]=\phi [i+c,j+c]\,} . Získáme korelační koeficienty R [ k ] {\displaystyle R[k]} , o nichž platí vztah R [ | i j | ] = ϕ [ i , j ] = ϕ [ j , i ] {\displaystyle R[|i-j|]=\phi [i,j]=\phi [j,i]\,} .

R [ k ] = n = 0 N 1 k s [ n ] s [ n + k ] {\displaystyle R[k]=\sum _{n=0}^{N-1-k}{s[n]s[n+k]}} .

Na základě těchto korelačních koeficientů můžeme přímo spočítat LPC koeficienty řešením soustavy rovnic:

n = 1 P R [ | n i | ] a n = R [ i ] {\displaystyle \sum _{n=1}^{P}{R[|n-i|]a_{n}}=-R[i]} pro 1 i P {\displaystyle 1\leq i\leq P} .

V případě maticového zápisu této soustavy rovnic ji můžeme řešit algoritmem Levinson-Durbinen (matice je symetrická a Töplitzovaen):

E ( 0 ) = R [ 0 ] {\displaystyle E^{(0)}=R[0]\,} , což je inicializace energie chyby predikce.

Algoritmus postupně zvyšuje řád prediktoru i {\displaystyle i} od 1 do P:

k i = R [ i ] + j = 1 i 1 a j ( i 1 ) R [ i j ] E ( i 1 ) {\displaystyle k_{i}=-{{R[i]+\sum _{j=1}^{i-1}{a_{j}^{(i-1)}R[i-j]}} \over {E^{(i-1)}}}} , kde a j ( i ) {\displaystyle a_{j}^{(i)}} je j {\displaystyle j} -tý koeficient prediktoru řádu i {\displaystyle i} .
a i ( i ) = k i {\displaystyle a_{i}^{(i)}=k_{i}} a a j ( i ) = a j ( i 1 ) + k i a i j ( i 1 ) {\displaystyle a_{j}^{(i)}=a_{j}^{(i-1)}+k_{i}a_{i-j}^{(i-1)}} pro 1 j < i {\displaystyle 1\leq j<i} .
E ( i ) = ( 1 k i 2 ) E i 1 {\displaystyle E^{(i)}=(1-k_{i}^{2})E^{i-1}} , což je aktualizace chyby pro další iteraci.

Výsledkem jsou koeficienty a i {\displaystyle a_{i}} filtru A ( z ) {\displaystyle A(z)} .

Externí odkazy

  • Logo Wikimedia Commons Obrázky, zvuky či videa k tématu Linear predictive coding na Wikimedia Commons
  • (česky) Zpracování řečových signálů – studijní opora z FIT VUT v Brně
Pahýl
Pahýl
Tento článek je příliš stručný nebo postrádá důležité informace.
Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.