音声信号圧縮のためのDCT
この例では,離散コサe .ン変換(dct)を使用した音声信号の圧縮方法を説明します。
女性と男性が発声する" strong "という単語が含まれているファ。この信号は8千赫でサンプリングされています。
负载(“strong.mat”)要听,输入soundsc(her,fs), pause(1), soundsc(him,fs)
離散コサン変換を使用して,女性の音声信号を圧縮します。信号をDCT基底ベクトルに分解します。分解構造の項は,信号内のサンプルと同数になります。ベクトルX
の展開係数は,各成分に蓄積されたエネルギ量を調整します。係数を一番大きいものから順に並べ替えます。
x =她';X = dct (X);[XX,印第安纳州]=排序(abs (X),“下”);
信号のエネルギの99.9%がいく。その数を全体に対するパセント比で表現します。
需要= 1;而norm(X(ind(1:need)))/norm(X)<0.999 need = need+1;结束xpc =需要/长度(X) * 100;
残りの0.1%のエネルギを含む係数を0に設定します。圧縮表現から信号を再構成します。元の信号,再構成した信号および2の差分をプロットします。
X(印第安纳州(需要+ 1:结束))= 0;xx = idct (X);情节([x, xx; x-xx])传说(“原始”[int2str (xpc)%的多项式系数。),“差异”,...“位置”,“最佳”)
%要听到,键入soundsc(x,fs), pause(1), soundsc(xx,fs)
男性の音声にいて解析を繰り返します。エネルギーの99.9%がいくつのDCT係数で表されるかを求め,その数を全体に対するパーセント比で表現します。
y =他';Y = dct (Y);[YY,印第安纳州]=排序(abs (Y),“下”);需要= 1;而norm(Y(ind(1:need)))/norm(Y)<0.999 need = need+1;结束碧=需要/长度(Y) * 100;
残りの係数を0に設定し,圧縮されたバジョンから信号を再構成します。元の信号,再構成した信号および2の差分をプロットします。
Y(印第安纳州(需要+ 1:结束))= 0;yy = idct (Y);情节([y; yy y-yy])传说(“原始”[int2str(碧)%的多项式系数。),“差异”,...“位置”,“最佳”)
输入soundsc(y,fs), pause(1), soundsc(yy,fs)
どらの場合も,音声信号を適度に再構成するには約半数のDCT係数で十分です。求められるエネルギの割合が99%である場合,必要な係数の数は全体の約20%に減少します。再構成の結果は劣りますが,聞き取りは可能です。
上記のサンプルとその他のサンプルの解析から,男性の音声の方が女性よりも特徴付けに多くの係数を必要とすることがわかります。