日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

语音信号短时域分析之预处理(三)

發布時間:2025/5/22 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音信号短时域分析之预处理(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

語音信號短時域分析之預處理(三)

標簽: 預加重加窗分幀矩形窗漢明窗 934人閱讀 評論(0) 收藏 舉報 本文章已收錄于: 分類: 語音信號處理(6) 作者同類文章X

    目錄(?)[+]

  • 一 預加重處理
  • 二 加窗處理
  • ????? ??? 語音信號是一種非平穩的時變信號,它攜帶著各種信息。一般而言語音處理目的有兩種,一種是對語音信號進行分析,提取特征參數,用于后續處理;一種是加工語音信號,如在語音增強中對含噪語音進行背景噪聲抑制,以獲得相對“干凈”的語音。

    ?????? 根據分析參數不同,可分為時域分析和變換域(頻域、倒譜域)分析,其中時域分析是最簡單、最直觀的方法,它直接對語音信號的時域波形進行分析提取主要有語音短時能量和平均幅度、短時平均過零率、短時自相關函數和短時平均幅度差函數等。

    ?????? 實際的語音信號是模擬信號,因此在對語音信號進行數字處理之前,首先要將模擬語音信號是s(t)以采樣周期T采樣,將其離散化為s(n),采樣周期的選擇應根據模擬語音信號的帶寬來確定,以避免信號的頻域混疊失真。

    ????? 語音信號的預處理一般包括預加重處理和加窗處理

    一 預加重處理

    ???? ? 對輸入的數字語音進行預加重,其目的是為了對語音的高頻部分進行加重,去除口唇輻射的影響,增加語音的高頻分辨率。一般通過傳遞函數為? 的高通數字濾波器來實現預加重,其中a為預加重系數,一般為0.9<a<1。設n時刻語音采樣值為x(n),經過預加重處理后的結果為y(n) = x(n) - ax(n-1),這里a=0.98。matlab代碼如下,可以參考。?

    [plain] view plaincopy print?
  • <span?style="font-size:14px;">e=wavread('beijing.wav');??
  • ee=e(200:455);????????????%選取原始文件e的第200到455點的語音,也可選其他樣點??
  • r=fft(ee,1024);?????????????%對信號ee進行1024點傅立葉變換??
  • r1=abs(r);?????????????????%對r取絕對值?r1表示頻譜的幅度值??
  • pinlv=(0:1:255)*8000/512;????%點和頻率的對應關系??
  • yuanlai=20*log10(r1);???????%對幅值取對數??
  • signal(1:256)=yuanlai(1:256);%取256個點,目的是畫圖的時候,維數一致??
  • [h1,f1]=freqz([1,-0.98],[1],256,4000);%高通濾波器??
  • pha=angle(h1);???????????%高通濾波器的相位??
  • H1=abs(h1);?????????????%高通濾波器的幅值??
  • r2(1:256)=r(1:256);??
  • u=r2.*h1';??????????????%?將信號頻域與高通濾波器頻域相乘?相當于在時域的卷積??
  • u2=abs(u)?;?????????????%取幅度絕對值??
  • u3=20*log10(u2);????????%對幅值取對數??
  • %?un=filter([1,-0.98],[1],ee);??%un為經過高頻提升后的時域信號??
  • figure(1);subplot(211);??
  • plot(f1,H1);title('高通濾波器的幅頻響應');??
  • xlabel('頻率/Hz');??
  • ylabel('幅度');??
  • subplot(212);plot(pha);title('高通濾波器的相位響應');??
  • xlabel('頻率/Hz');??
  • ylabel('角度/radians');??
  • figure(2);subplot(211);plot(pinlv,signal);title('原始語音信號頻譜');??
  • xlabel('頻率/Hz');??
  • ylabel('幅度/dB');??
  • subplot(212);plot(pinlv,u3);title('經高通濾波后的語音信號頻譜');??
  • xlabel('頻率/Hz');??
  • ylabel('幅度/dB');</span>??
  • <span style="font-size:14px;">e=wavread('beijing.wav'); ee=e(200:455); %選取原始文件e的第200到455點的語音,也可選其他樣點 r=fft(ee,1024); %對信號ee進行1024點傅立葉變換 r1=abs(r); %對r取絕對值 r1表示頻譜的幅度值 pinlv=(0:1:255)*8000/512; %點和頻率的對應關系 yuanlai=20*log10(r1); %對幅值取對數 signal(1:256)=yuanlai(1:256);%取256個點,目的是畫圖的時候,維數一致 [h1,f1]=freqz([1,-0.98],[1],256,4000);%高通濾波器 pha=angle(h1); %高通濾波器的相位 H1=abs(h1); %高通濾波器的幅值 r2(1:256)=r(1:256); u=r2.*h1'; % 將信號頻域與高通濾波器頻域相乘 相當于在時域的卷積 u2=abs(u) ; %取幅度絕對值 u3=20*log10(u2); %對幅值取對數 % un=filter([1,-0.98],[1],ee); %un為經過高頻提升后的時域信號 figure(1);subplot(211); plot(f1,H1);title('高通濾波器的幅頻響應'); xlabel('頻率/Hz'); ylabel('幅度'); subplot(212);plot(pha);title('高通濾波器的相位響應'); xlabel('頻率/Hz'); ylabel('角度/radians'); figure(2);subplot(211);plot(pinlv,signal);title('原始語音信號頻譜'); xlabel('頻率/Hz'); ylabel('幅度/dB'); subplot(212);plot(pinlv,u3);title('經高通濾波后的語音信號頻譜'); xlabel('頻率/Hz'); ylabel('幅度/dB');</span>

    其中高通濾波器和經預加重處理后的圖如下:

    ????????????????????? ?????? ????? ??

    二 加窗處理

    ?????? 在進行預加重數字濾波處理后,接下來進行加窗分幀處理,語音信號是一種隨時間而變化信號,主要分為濁音和清音兩大類,由于發音器官的慣性運動,可以認為在一小段時間里(一般為10ms-30ms),語音信號近似不變,即語音信號具有短時平穩性。這樣,可以把語音信號分為一些短段來進行處理,語音信號的分幀是采用可移動的有限長度窗口進行加權的辦法來實現的,一般每秒的幀數為33-100幀,分幀雖然可以采用連續分段的方法,但一般要采用如圖所示交疊分段的方法,為了使幀與幀之間平滑過渡,保持連續性,前一幀與后一幀的交疊部分為幀移,幀移和幀長的比值一般為0-1/2。

    ???????????????????????????????????????????????????????????????????????????????

    ????? 一般窗有兩種,一種是矩形窗,一種是漢明窗,窗函數如下:

    ???? ????????????????????????????

    ?????????????????????????? (1) 矩形窗??????????????????????????????????????????????????????????????????????????? ????????????????? ?? (2) 漢明窗

    ??????矩形窗的時域和頻域波形,窗長N=61,matlab代碼如下:

    [plain] view plaincopy print?
  • <span?style="font-size:14px;">%?程序3.2:juxing.m??
  • x=linspace(0,100,10001);???????????????%在0~100的橫坐標間取10001個值??
  • h=zeros(10001,1);?????????????????????%為矩陣h賦0值??
  • h(1:2001)=0;?????????????????????????%前2000個值取為0值??
  • h(2002:8003)=1;??????????????????????%窗長?,窗內值取為1???
  • h(8004:10001)=0;?????????????????????%后2000個值取為0值??
  • figure(1);????????????????????????????%定義圖號??
  • subplot(1,2,1)????????????????????????%畫第一個子圖??
  • plot(x,h,'k');??????????????????????????%畫波形,橫坐標為x,縱坐標為h,k表示黑色??
  • title('矩形窗時域波形');????????????????%圖標題??
  • xlabel('樣點數');??????????????????????%橫坐標名稱??
  • ylabel('幅度');????????????????????????%縱坐標名稱??
  • axis([0,100,-0.5,1.5])??????????????????%限定橫、縱坐標范圍??
  • line([0,100],[0,0])????????????????????%畫出x軸??
  • ??
  • w1=linspace(0,61,61);????????????????%取窗長內的61個點??
  • w1(1:61)=1;????????????????????????%賦值1,相當于矩形窗???
  • w2=fft(w1,1024);????????????????????%對時域信號進行1024點的傅立葉變換??
  • w3=w2/w2(1)???????????????????????%幅度歸一化??
  • w4=20*log10(abs(w3));???????????????%對歸一化幅度取對數??
  • w=2*[0:1023]/1024;??????????????????%頻率歸一化??
  • subplot(1,2,2);???????????????????????%畫第二個子圖??
  • plot(w,w4,'k')????????????????????????%畫幅度特性圖??
  • axis([0,1,-100,0])?????????????????????%限定橫、縱坐標范圍??
  • title('矩形窗幅度特性');???????????????%圖標題??
  • xlabel('歸一化頻率?f/fs');???????????%橫坐標名稱??
  • ylabel('幅度/dB');?????????????????%縱坐標名稱??
  • </span>??
  • <span style="font-size:14px;">% 程序3.2:juxing.m x=linspace(0,100,10001); %在0~100的橫坐標間取10001個值 h=zeros(10001,1); %為矩陣h賦0值 h(1:2001)=0; %前2000個值取為0值 h(2002:8003)=1; %窗長 ,窗內值取為1 h(8004:10001)=0; %后2000個值取為0值 figure(1); %定義圖號 subplot(1,2,1) %畫第一個子圖 plot(x,h,'k'); %畫波形,橫坐標為x,縱坐標為h,k表示黑色 title('矩形窗時域波形'); %圖標題 xlabel('樣點數'); %橫坐標名稱 ylabel('幅度'); %縱坐標名稱 axis([0,100,-0.5,1.5]) %限定橫、縱坐標范圍 line([0,100],[0,0]) %畫出x軸w1=linspace(0,61,61); %取窗長內的61個點 w1(1:61)=1; %賦值1,相當于矩形窗 w2=fft(w1,1024); %對時域信號進行1024點的傅立葉變換 w3=w2/w2(1) %幅度歸一化 w4=20*log10(abs(w3)); %對歸一化幅度取對數 w=2*[0:1023]/1024; %頻率歸一化 subplot(1,2,2); %畫第二個子圖 plot(w,w4,'k') %畫幅度特性圖 axis([0,1,-100,0]) %限定橫、縱坐標范圍 title('矩形窗幅度特性'); %圖標題 xlabel('歸一化頻率 f/fs'); %橫坐標名稱 ylabel('幅度/dB'); %縱坐標名稱 </span>

    ?????? 漢明窗matlab代碼如下:

    [plain] view plaincopy print?
  • <span?style="font-size:14px;">x=linspace(20,80,61);?????????%在20~80的橫坐標間取61個值作為橫坐標點??
  • h=hamming(61);?????????????%取61個點的哈明窗值為縱坐標值??
  • figure(1);???????????????????%畫圖??
  • subplot(1,2,1);???????????????%第一個子圖??
  • plot(x,h,'k');?????????????????%橫坐標為x,縱坐標為h,k表示黑色??
  • title('Hamming窗時域波形');???%圖標題??
  • xlabel('樣點數');??????????????%橫坐標名稱??
  • ylabel('幅度');?????????????%縱坐標名稱??
  • w1=linspace(0,61,61);?????????%取窗長內的61個點??
  • w1(1:61)=hamming(61);?????????%加哈明窗??
  • w2=fft(w1,1024);???????????????%對時域信號進行1024點傅立葉變換??
  • w3=w2/w2(1);?????????????????%幅度歸一化??
  • w4=20*log10(abs(w3))???????????%對歸一化幅度取對數??
  • w=2*[0:1023]/1024;????????????%頻率歸一化??
  • subplot(1,2,2)??????????????????%畫第二個子圖??
  • plot(w,w4,'k')??????????????????%畫幅度特性圖??
  • axis([0,1,-100,0])????????????????%限定橫、縱坐標范圍??
  • title('Hamming窗幅度特性');??????%圖標題??
  • xlabel('歸一化頻率?f/fs');??????%橫坐標名稱??
  • ylabel('幅度/dB');?????????????%縱坐標名稱</span>??
  • <span style="font-size:14px;">x=linspace(20,80,61); %在20~80的橫坐標間取61個值作為橫坐標點 h=hamming(61); %取61個點的哈明窗值為縱坐標值 figure(1); %畫圖 subplot(1,2,1); %第一個子圖 plot(x,h,'k'); %橫坐標為x,縱坐標為h,k表示黑色 title('Hamming窗時域波形'); %圖標題 xlabel('樣點數'); %橫坐標名稱 ylabel('幅度'); %縱坐標名稱 w1=linspace(0,61,61); %取窗長內的61個點 w1(1:61)=hamming(61); %加哈明窗 w2=fft(w1,1024); %對時域信號進行1024點傅立葉變換 w3=w2/w2(1); %幅度歸一化 w4=20*log10(abs(w3)) %對歸一化幅度取對數 w=2*[0:1023]/1024; %頻率歸一化 subplot(1,2,2) %畫第二個子圖 plot(w,w4,'k') %畫幅度特性圖 axis([0,1,-100,0]) %限定橫、縱坐標范圍 title('Hamming窗幅度特性'); %圖標題 xlabel('歸一化頻率 f/fs'); %橫坐標名稱 ylabel('幅度/dB'); %縱坐標名稱</span>???????????? ??
    ?????????????????????????????????????????? (1)?矩形窗??????????????????????????????????????????????????????????????????????????????????????????? ????? (2)?漢明窗

    ??????通過圖可以看出漢明窗具有更平滑的低通特性,能夠在較高的程度上反映短時信號的頻率特性。????

    ??????下圖說明了加窗方法,其中窗序列沿著語音樣點值逐幀從左到右移動,窗w(n)長度為N。在確定窗函數后,對語音信號的分幀處理實際上就是對各幀進行某種變換或運算,設這種變換用T[]表示,x(n)為輸入語音信號,w(n)為窗序列,h(n)是與w(n)有關的濾波器,則各幀經處理后輸出可表示為

    ??????????????????????????????????????? ??



    
    0
    0

    我的同類文章

    語音信號處理(6) http://blog.csdn.net
    • ?語音信號處理之DTW2014-08-23閱讀275
    • ?matlab三維數據繪圖2014-07-15閱讀824
    • ?語音信號之特性分析圖(二)2014-07-04閱讀1048
    • ?加窗分幀中各種窗函數2014-08-03閱讀619
    • ?語音信號短時域分析之短時平均能量(四)2014-07-13閱讀1310
    • ?語音信號之基礎知識(一)2014-06-29閱讀551

    總結

    以上是生活随笔為你收集整理的语音信号短时域分析之预处理(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。