小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于MATLAB的音頻信號處理技術實現(xiàn)

 賢人好客 2010-04-10

轉(zhuǎn)自:http:///article/f57ff775-04bd-47ed-94e5-50845fd30191.htm

摘要:MATLAB是一款數(shù)據(jù)分析和處理功能都非常強大的科技應用軟件,利用它可以靈活方便地分析處理音頻信號。文章介紹了用MATLAB軟件處理音頻信號的基本流程,并以實例形式列出了幾款技術實現(xiàn)程序。
  關鍵詞:MATLAB;數(shù)字信號處理;音頻信號;脈沖編碼調(diào)制;數(shù)字濾波

1 引言
  
  MATLAB是美國Math Works公司推出的一種面向工程和科學計算的交互式計算軟件。它以矩陣運算為基礎,把計算、可視化、程序設計融合在一個簡單易用的交互式工作環(huán)境中,是一款數(shù)據(jù)分析和處理功能都非常強大的工程實用軟件。本文介紹了用MATLAB處理音頻信號的基本流程,并以實例形式列出了常用音頻處理技術實現(xiàn)程序。
  
  2 MATLAB處理音頻信號的流程
  
  分析和處理音頻信號,首先要對聲音信號進行采集,MATLAB 的數(shù)據(jù)采集工具箱提供了一整套命令和函數(shù),通過調(diào)用這些函數(shù)和命令,可直接控制聲卡進行數(shù)據(jù)采集[1]。Windows自帶的錄音機程序也可驅(qū)動聲卡來采集語音信號,并能保存為WAV格式文件,供MATLAB相關函數(shù)直接讀取、寫入或播放。本文以WAV格式音頻信號作為分析處理的輸入數(shù)據(jù),用MATLAB處理音頻信號的基本流程是:先將WAV格式音頻信號經(jīng)wavread 函數(shù)轉(zhuǎn)換成MATLAB列數(shù)組變量;再用MATLAB強大的運算能力進行數(shù)據(jù)分析和處理,如時域分析、頻域分析、數(shù)字濾波、信號合成、信號變換、識別和增強等等;處理后的數(shù)據(jù)如是音頻數(shù)據(jù),則可用wavwrite轉(zhuǎn)換成WAV格式文件或用sound、wavplay等函數(shù)直接回放。下面分別介紹MATLAB在音量標準化、聲道分離合并與組合、數(shù)字濾波、數(shù)據(jù)轉(zhuǎn)換等音頻信號處理方面的技術實現(xiàn)。
  
  3 音量標準化
  
  錄制聲音過程中需對聲音電平進行量化處理,最理想的量化是最大電平對應最高量化比特,但實際卻很難做到,常有音輕問題。利用MATLAB很容易實現(xiàn)音量標準化,即最大電平對應最高量化比特。基本步驟是:先用wavread函數(shù)將WAV文件轉(zhuǎn)換成列數(shù)組變量;再求出數(shù)組變量的極值并對所有元素作歸一化處理;最后用wavwrite函數(shù)還原成音量標準化的WAV文件。
  例1:現(xiàn)以微軟自帶的“Windows XP 關機.wav”音頻信號為例,先將其復制另存到文件名為XPexit.wav的MATLAB當前目錄中,再通過音量標準化處理后保存為XPquit.wav文件。實現(xiàn)程序如下:
  clear; close all; clc;
  [Y,FS,NBITS]=wavread('XPexit.WAV');% 將WAV文件轉(zhuǎn)換成變量

FS,NBITS,% 顯示采樣頻率和量化比特
  Ym=max(max(max(Y)),max(abs(min(Y)))),% 找出雙聲道極值
  X=Y/Ym;% 歸一化處理
  wavwrite(X,FS,NBITS,'XPquit.wav')% 將變量轉(zhuǎn)換成WAV文件
  試聽可知標準化處理后音量稍大。
  
  4 聲道分離合并與組合
  
  立體聲或雙聲道音頻信號有左右兩個聲道,利用MATLAB實現(xiàn)雙聲道分離、兩路聲道合并和兩個單聲道組合成一個雙聲道等效果,實際上是利用了MATLAB的矩陣抽取、矩陣相加和矩陣重組運算。
  例2:現(xiàn)以例1生成的XPquit.wav為例,實現(xiàn)分離、合并和組合處理的程序如下:
  clear; close all; clc;
  [x,FS,NBITS]=wavread('XPquit.WAV');% 將WAV文件轉(zhuǎn)換成變量
  x1=x(:,1);% 抽取第1聲道
  x2=x(:,2);% 抽取第2聲道
  wavwrite(x1,FS,NBITS,'XPquit1.WAV');% 實現(xiàn)1聲道分離
  wavwrite(x2,FS,NBITS,'XPquit2.WAV');% 實現(xiàn)2聲道分離
  %如果合并位置不對前面補0 %聲道長度不對后面補0
  x12=x1+x2;% 兩路單聲道列向量矩陣變量合并
  x12m=max(max(x12),abs(min(x12))),% 找出極值
  y12=x12./x12m;% 歸一化處理
  wavwrite(y12,FS,NBITS,'XPquit12.WAV');% 實現(xiàn)兩路聲道合并
  %如果組合位置不對前面補0--聲道長度不對后面補0
  x3=[x1,x2];% 兩路單聲道變量組合
  wavwrite(x3,FS,NBITS,'XPquit3.WAV');% 實現(xiàn)兩路聲道組合
  可以試聽聲道分離、合并與組合的效果,也可對各文件大小進行比較。
  
  5 數(shù)字濾波
  
  數(shù)字濾波是常用的音頻處理技術??筛鶕?jù)技術指標,先利用FDATool工具,設計一個數(shù)字濾波器[2],再用Filter或Filter2函數(shù)即可實現(xiàn)濾波處理。調(diào)用的Filter函數(shù)格式是:Y = filte (B,A,X) 。其中,B和A是濾波器傳輸函數(shù)的分子和分母系數(shù),X是輸入變量,Y是實現(xiàn)濾波后的輸出變量。如果處理立體聲音頻信號,可分開處理,但用FIR濾波器時調(diào)用Filter2函數(shù)更方便。
  例3:現(xiàn)以例2生成的XPquit12.wav為例,實現(xiàn)數(shù)字濾波的程序如下:
  clear; close all; clc;
  [X,FS,NBITS]=wavread('XPquit12.WAV');% 將WAV文件轉(zhuǎn)換成變量
  %利用FDATool設計一個LowpassButterworth濾波器
  %指標FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB
  B =[0.0062,0.0187,0.0187,0.0062];% 分子系數(shù)
  

 未安裝
PDF瀏覽器用戶請先下載安裝
原版頁碼:1211,1212,1213
原版全文
  A =[1,-2.1706,1.6517,-0.4312];% 分母系數(shù)
  Y=filter(B,A,X);% 實現(xiàn)數(shù)字濾波
  t=(0:length(X)-1)/FS;% 計算數(shù)據(jù)時刻
  subplot(2,2,1);plot(t,X);% 繪制原波形圖
  title('原信號波形圖');% 加標題
  subplot(2,2,3);plot(t,Y);% 繪制濾波波形圖
  title('濾波后波形圖');% 加標題
  xf=fft(X);% 作傅里葉變換求原頻譜
  yf=fft(Y);% 作傅里葉變換求濾波后頻譜
  fm=3000*length(xf)/FS;% 確定繪頻譜圖的上限頻率
  f=(0:fm)*FS/length(xf);% 確定繪頻譜圖的頻率刻度
  subplot(2,2,2);plot(f,abs(xf(1:length(f))));% 繪制原波形頻譜圖

title('原信號頻譜圖');% 加標題
  subplot(2,2,4);plot(f,abs(yf(1:length(f))));% 繪制濾波后頻譜圖
  title('濾波后信號頻譜圖');% 加標題
  wavwrite(Y,FS,NBITS,'XPquitFilter.WAV');% 寫成WAV文件
  程序運行結果如圖1所示。由圖可知,濾波對波形影響不大,但對高頻有較大衰減。試聽會感覺到處理后的聲音比較沉悶。
  
  6 數(shù)據(jù)轉(zhuǎn)換
  
  數(shù)據(jù)轉(zhuǎn)換是指改變音頻格式中的采樣頻率或量化位數(shù)。轉(zhuǎn)換原理是:先用矩陣插值或抽取技術實現(xiàn)變量變換,如果是抽取數(shù)據(jù)還需在變換前作濾波處理使之滿足采樣定理;變量變換完成后再用Wavwrite函數(shù)重新定義量化位數(shù)和采樣頻率即可實現(xiàn)數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)轉(zhuǎn)換過程中,要注意采樣頻率與原始采樣頻率及插值或抽取系數(shù)的關系。MATLAB實現(xiàn)插值或抽取的函數(shù)有decimate、interp和resample,具體應用可參考有關文獻[3]。這果以2倍抽取為例,將例3中經(jīng)過濾波后產(chǎn)生的XPquitFilter.WAV文件進行數(shù)據(jù)轉(zhuǎn)換處理。具體程序如下:
  clear; close all; clc;
  [x,FS,NBITS]=wavread('XPquitFilter.WAV');% 將WAV文件轉(zhuǎn)換成變量
  N=length(x);% 計算數(shù)據(jù)點數(shù)
  % 不是偶數(shù)點化成偶數(shù)點
  if mod(N,2)==0; N=N; else x(N)=[]; N=N-1; end;
  % 原信號波形頻譜分析
  tx=(0:N-1)/FS;% 計算原信號數(shù)據(jù)點時刻
  subplot(3,2,1);plot(tx,x);% 繪制原信號波形
  title('原信號波形圖');% 加標題
  xf=fft(x);% 求原信號頻譜
  fx=(0:N/2)*FS/N;% 確定頻譜圖頻率刻度
  subplot(3,2,2);plot(fx,abs(xf(1:N/2+1)));% 繪制原信號頻譜
  title('原信號頻譜圖');% 加標題
  % 實現(xiàn)數(shù)據(jù)抽取
  k=[1:N/2];% 確定抽取位置
  y=x(2*k);% 實現(xiàn)抽取后的數(shù)據(jù)
  M=length(y);% 計算抽取后數(shù)據(jù)點數(shù)
  % 抽取數(shù)據(jù)在原采樣頻率FS下的波形頻譜分析
  ty=(0:M-1)/FS;% 計算數(shù)據(jù)點時刻
  subplot(3,2,3);plot(ty,y);% 繪制信號波形圖
  title('原采樣率下新波形圖');% 加標題
  yf=fft(y);% 求頻譜
  fy=(0:M/2)*FS/M;% 確定頻譜圖頻率刻度
  subplot(3,2,4);plot(fy,abs(yf(1:M/2+1)));% 繪制頻譜圖
  title('原采樣率下新頻譜圖');% 加標題
  % 抽取數(shù)據(jù)在FS/2采樣頻率下的波形頻譜分析
  tz=(0:M-1)/(FS/2);% 計算數(shù)據(jù)點時刻
  subplot(3,2,5);plot(tz,y);% 繪制信號波形圖
  title('新采樣率下新波形圖');% 加標題
  fz=(0:M/2)*(FS/2)/M;% 確定頻譜圖頻率刻度
  subplot(3,2,6);plot(fz,abs(yf(1:M/2+1)));% 繪制頻譜圖
  title('新采樣率下新頻譜圖');% 加標題
  % 實現(xiàn)數(shù)據(jù)轉(zhuǎn)換
  wavwrite(y,FS/2,NBITS,'XPquit16B.WAV');% 音頻格式PCM 11025Hz 16位
  wavwrite(y,FS/2,NBITS/2,'XPquit8B.WAV');% 音頻格式PCM 11025Hz 8位
  運行程序,在得到的圖形窗口中,執(zhí)行Edit/Axes Properties…命令,再把各分圖下X標簽中的Limits設為0、0.01和0、1000,得到0—0.01秒的波形和0—1000Hz的頻譜如圖2所示。由圖可知,在滿足采樣定律條件下,實現(xiàn)數(shù)據(jù)抽取,在原采樣率下波形變密、頻譜變寬且幅度減半,但在新采樣率下波形和頻譜都很好。通過試聽輸出文件還可感受處理效果。

7 結束語
  
  MATLAB提供了許多專用工具箱,靈活利用這些工具箱和函數(shù),可以實現(xiàn)很多信號處理任務。同時,MATLAB還支持用戶對其函數(shù)進行二次開發(fā),以滿足不同要求。在信號處理過程中,MATLAB兼顧了專用工具軟件的簡單性和計算機程序語言的靈活性,特別是處理效果的可視性和可感知,有利于理解信號處理的本質(zhì),有利于激發(fā)學習和研究興趣,也有利于培養(yǎng)MATLAB軟件的操作技能。
  
  參考文獻:
  [1] 陳宇鋒.基于聲卡和MATLAB的語音信號采集和處理[J].中國現(xiàn)代教育裝備,2006(5):49-51.
  [2] 張登奇.基于MATLAB的IIR數(shù)字濾波器設計[J].湖南理工學院學報,2007(3):26-29.
  [3] Sanjit K.Mitra.數(shù)字信號處理[M].孫洪等譯.北京:電子工業(yè)出版社,2005.
  [4] 張志涌等.精通MATLAB6.5版[M].北京:北京航空航天
大學出版社,2003.

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多