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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

    目錄(?)[+]

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

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

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

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

    一 預(yù)加重處理

    ???? ? 對輸入的數(shù)字語音進(jìn)行預(yù)加重,其目的是為了對語音的高頻部分進(jìn)行加重,去除口唇輻射的影響,增加語音的高頻分辨率。一般通過傳遞函數(shù)為? 的高通數(shù)字濾波器來實(shí)現(xiàn)預(yù)加重,其中a為預(yù)加重系數(shù),一般為0.9<a<1。設(shè)n時(shí)刻語音采樣值為x(n),經(jīng)過預(yù)加重處理后的結(jié)果為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點(diǎn)的語音,也可選其他樣點(diǎn)??
  • r=fft(ee,1024);?????????????%對信號ee進(jìn)行1024點(diǎn)傅立葉變換??
  • r1=abs(r);?????????????????%對r取絕對值?r1表示頻譜的幅度值??
  • pinlv=(0:1:255)*8000/512;????%點(diǎn)和頻率的對應(yīng)關(guān)系??
  • yuanlai=20*log10(r1);???????%對幅值取對數(shù)??
  • signal(1:256)=yuanlai(1:256);%取256個(gè)點(diǎn),目的是畫圖的時(shí)候,維數(shù)一致??
  • [h1,f1]=freqz([1,-0.98],[1],256,4000);%高通濾波器??
  • pha=angle(h1);???????????%高通濾波器的相位??
  • H1=abs(h1);?????????????%高通濾波器的幅值??
  • r2(1:256)=r(1:256);??
  • u=r2.*h1';??????????????%?將信號頻域與高通濾波器頻域相乘?相當(dāng)于在時(shí)域的卷積??
  • u2=abs(u)?;?????????????%取幅度絕對值??
  • u3=20*log10(u2);????????%對幅值取對數(shù)??
  • %?un=filter([1,-0.98],[1],ee);??%un為經(jīng)過高頻提升后的時(shí)域信號??
  • figure(1);subplot(211);??
  • plot(f1,H1);title('高通濾波器的幅頻響應(yīng)');??
  • xlabel('頻率/Hz');??
  • ylabel('幅度');??
  • subplot(212);plot(pha);title('高通濾波器的相位響應(yīng)');??
  • xlabel('頻率/Hz');??
  • ylabel('角度/radians');??
  • figure(2);subplot(211);plot(pinlv,signal);title('原始語音信號頻譜');??
  • xlabel('頻率/Hz');??
  • ylabel('幅度/dB');??
  • subplot(212);plot(pinlv,u3);title('經(jīng)高通濾波后的語音信號頻譜');??
  • xlabel('頻率/Hz');??
  • ylabel('幅度/dB');</span>??
  • <span style="font-size:14px;">e=wavread('beijing.wav'); ee=e(200:455); %選取原始文件e的第200到455點(diǎn)的語音,也可選其他樣點(diǎn) r=fft(ee,1024); %對信號ee進(jìn)行1024點(diǎn)傅立葉變換 r1=abs(r); %對r取絕對值 r1表示頻譜的幅度值 pinlv=(0:1:255)*8000/512; %點(diǎn)和頻率的對應(yīng)關(guān)系 yuanlai=20*log10(r1); %對幅值取對數(shù) signal(1:256)=yuanlai(1:256);%取256個(gè)點(diǎn),目的是畫圖的時(shí)候,維數(shù)一致 [h1,f1]=freqz([1,-0.98],[1],256,4000);%高通濾波器 pha=angle(h1); %高通濾波器的相位 H1=abs(h1); %高通濾波器的幅值 r2(1:256)=r(1:256); u=r2.*h1'; % 將信號頻域與高通濾波器頻域相乘 相當(dāng)于在時(shí)域的卷積 u2=abs(u) ; %取幅度絕對值 u3=20*log10(u2); %對幅值取對數(shù) % un=filter([1,-0.98],[1],ee); %un為經(jīng)過高頻提升后的時(shí)域信號 figure(1);subplot(211); plot(f1,H1);title('高通濾波器的幅頻響應(yīng)'); xlabel('頻率/Hz'); ylabel('幅度'); subplot(212);plot(pha);title('高通濾波器的相位響應(yīng)'); xlabel('頻率/Hz'); ylabel('角度/radians'); figure(2);subplot(211);plot(pinlv,signal);title('原始語音信號頻譜'); xlabel('頻率/Hz'); ylabel('幅度/dB'); subplot(212);plot(pinlv,u3);title('經(jīng)高通濾波后的語音信號頻譜'); xlabel('頻率/Hz'); ylabel('幅度/dB');</span>

    其中高通濾波器和經(jīng)預(yù)加重處理后的圖如下:

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

    二 加窗處理

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

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

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

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

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

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

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

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

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

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

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

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



    
    0
    0

    我的同類文章

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。