MATLAB實現語音頻號短時傅利葉變換

2021-10-25 08:06:12 字數 831 閱讀 9805

function d=

stftms

(x,win,nfft,inc)

iflength

(win)==1

% 判斷有否設定窗函式

wlen=win;

% 否,設幀長

win=

hanning

(wlen)

;% 設定窗函式

else

wlen=

length

(win)

;% 設幀長

endx=x(

:); win=

win(:)

;% 把x和win都變為列陣列

s =length

(x);

% 計算x的長度

c =1

;d =

zeros((

1+nfft/2)

,1+fix

((s-wlen)

/inc));

% 初始化輸出陣列

for b =

0:inc:

(s-wlen)

% 設定迴圈

u = win.*x

((b+1)

:(b+wlen));

% 取來一幀資料加窗

t =fft(u,nfft)

;% 進行傅利葉變換

d(:,c)=t

(1:(

1+nfft/2)

);% 取1到1

+nfft/

2之間的譜值

c = c+1;

% 改變幀數,求取下一幀

end;

MATLAB實現語音頻號分幀

為了分析讀入資料,通常進行分幀處理。在分幀中,往往設定在相鄰兩幀之間有一部分重疊,如下圖所示 設語音檔案的資料存放在y中,y的長度為n,取樣頻率為fs,取每幀長為wlen,後一幀對前一幀的位移量用inc表示,相鄰兩幀之間的重疊部分overlap wlen inc。f enframe x,win,in...

語音頻號短時域分析之短時平均能量(四)

因為語音頻號的能量隨時間而變化,清音和濁音之間的能量區別相當顯著。因此對短時能量和短時平均幅度進行分析,能夠描寫敘述語音的這樣的特徵變換情況。定義n時刻某語音頻號的短時平均能量e為 式中,n為窗長,可見短時能量為一幀樣點值的加權平方和。當窗函式為矩形窗時 短時平均能量用途 1 能夠作為區分清音和濁音...

matlab給語音頻號新增雜訊

我們有時候做演算法分析,需要自己給訊號新增雜訊來驗證自己演算法的魯棒性。以語音頻號為例,給訊號新增指定訊雜比的高斯白雜訊程式如下 data xx 10000 26000 讀入資料 新增雜訊 snr 10 設定訊雜比,單位db 輸出引數data是帶噪語音,noise為加在訊號上的白雜訊 data,no...