基于TMS320VC5509-DSP的語音信號的FIR濾波器_第1頁
基于TMS320VC5509-DSP的語音信號的FIR濾波器_第2頁
基于TMS320VC5509-DSP的語音信號的FIR濾波器_第3頁
基于TMS320VC5509-DSP的語音信號的FIR濾波器_第4頁
基于TMS320VC5509-DSP的語音信號的FIR濾波器_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2009級學生課程設計 DSP原理與應用 課程設計報告書課題名稱基于TMS320VC5509 DSP的語音信號的FIR濾波器姓 名學 號 院、系、部專 業(yè)指導教師 20012年 6月 9日 基于TMS320VC5509 DSP的語音信號的FIR濾波器設計一、實踐的目的和要求 1.熟悉ICETEK-VC5509-A板上語音codec芯片TLV320AIC23的設計和程序控制原理。2.熟悉FIR濾波器工作原理及編程。3.掌握使用TI的算法庫dsplib提高程序運行效率的方法。4.學習使用CCS圖形觀察窗口觀察和分析語音波形及其頻譜。二、實踐原理: 在數(shù)字信號處理中,濾波占有極其重要的地位。數(shù)字濾波

2、是語音處理、圖像處理、模式識別、頻譜分析等應用中的基本處理算法。用DSP芯片實現(xiàn)數(shù)字濾波除了具有穩(wěn)定性好、精確度高、不受環(huán)境影響等優(yōu)點外,還具有靈活性好等特點。 VC5509引腳圖過渡帶寬度=阻帶邊緣頻寬-通帶邊緣頻率采樣頻率:f1=通帶邊緣頻率+(過渡帶寬度)/2理想低通濾波器脈沖響應:h1n=sin(n1)/n/根據(jù)要求,選擇布萊克曼窗,窗函數(shù)長度為:N=5.98fs/過渡帶寬度選擇N=30wn=0.42+0.5cos(2n/30)+0.8cos(4n/24)濾波器脈沖響應為:hn=h1nwn|n|12根據(jù)上面計算,各式算出hn,然后將脈沖響應值移位為因果序列。完成的濾波器的差分方程為:y

3、n=-0.001xn-2-0.002xn-3-0.002xn-4+0.01xn-5-0.009xn-6-0.018xn-7-0.049xn-8-0.02xn-9+0.11xn-10+0.28xn-11+0.64xn-12+0.28xn-13-0.11xn-14-0.02xn-15+0.049xn-16-0.018xn-17-0.009xn-18+0.01n-19-0.002xn-20-0.002xn-21+0.001xn-22開始初始化:EMIF、CPU頻率、AIC23調用AIC23_Mixer子程序處理音頻數(shù)據(jù)輸入/輸出開始初始化語音緩沖區(qū)和工作變量等待McBSP通道0傳送結束讀取語音數(shù)據(jù)保

4、存于左聲道緩沖區(qū)調用fir2計算FIR濾波輸出濾波結果保存于右聲道緩沖區(qū)原聲音送左聲道,濾波結果送右聲道,輸出到McBSP0三、實踐步驟1.首先自己參照指導書完語音信號的FIR濾波實驗,認真閱讀實驗中的源程序,深刻理解語音信號FIR濾波的原理及具體實現(xiàn)方法,包括含噪語音信號的讀取,濾波后信號的輸出,語音編解碼器的設置(AIC23),重點理解FIR濾波器的實現(xiàn)(循環(huán)尋找的實現(xiàn))2.語音采集的采集與分析 (1)錄制語音,并命名為“e”,保存在相應的位置(桌面)。(2)用MATLAB對原始語音信號進行分析,畫出它的時域波形和頻譜。程序如下:fs=22050;x,fs,Nbits=wavread(C:

5、Documents and SettingsOwner桌面e);t=0:1/22050:(length(x)-1)/22050;sound(x,fs) ; %對加載的語音信號進行回放figure(1)plot(x) %做原始語音信號的時域圖形title(原始語音信號);xlabel(time n);ylabel(fuzhi n);figure(2)freqz(x) %繪制原始語音信號的頻率響應圖title(頻率響應圖)n=length(x); %求出語音信號的長度y1=fft(x,n) ; %傅里葉變換y2=fftshift(y1); %對頻譜圖進行平移f=0:fs/n:fs*(n-1)/n;

6、 %得出頻點figure(3) subplot(2,1,1);plot(abs(y2) %做原始語音信號的FFT頻譜圖title(原始語音信號FFT頻譜)subplot(2,1,2);plot(f,abs(y2); %繪制原始語音信號的頻譜圖title(原始語音信號頻譜)%加噪聲k=1:1:n; %定義k 值,噪聲與原始語音長度一致c1=100000*sin(2*pi*5000*k); %噪聲信號的函數(shù)z=x+c1; %噪音與原始信號疊加wavwrite(z,8000,16,C:Documents and SettingsOwner桌面e2); %得到含噪語音s=length(c1);y3=f

7、ft(z,s); %對疊加信號進行頻譜變換y4=fftshift(y3); %對頻譜圖平移f=0:fs/s:fs*(s-1)/s; %得出頻點figure(4)plot(z) %做原始語音信號的時域圖形title(加噪語音信號);xlabel(time n);ylabel(fuzhi n);figure(5)plot(f,abs(y4); %繪出加噪語音頻譜圖axis(0 8000 0 100);title(含噪語音信號的頻譜);figure(6)subplot(2,1,1);plot(f,abs(y2) %做原始語音信號的FFT頻譜圖title(原始語音信號FFT頻譜)subplot(2,1

8、,2);plot(f,abs(y4) %做加噪語音信號的FFT頻譜圖title(加噪語音信號頻譜) 原始語音信號 加噪語音信號 原始語音信號FFT頻譜 含噪語音信號頻譜 原始語音信號FFT頻譜 頻率響應圖3. 設計一定參數(shù)的濾波器使用fir2函數(shù)設計一個31階低通濾波器,信號的采樣頻率為8000Hz,濾波器的通帶截止頻率為2900Hz,阻帶截止頻率為3300Hz。在函數(shù)中,其截止頻率均用歸一化頻率表示。歸一化頻率的計算方法:f=實際頻率/(采樣頻率/2),則將截止頻率歸一化后的截止頻率值為0.725、0.825用fir2函數(shù)實現(xiàn)的格式:f = 0 0.725 0.825 1 ; m = 1 1

9、 0 0 ; b=fir2(30,f,m);b= -0.0005,0.0004,0.0003,-0.0018,0.0039,-0.0045,0.0009,0.0086,-0.0210,0.0279,-0.0173,-0.0191,0.0793,-0.1486,0.2043,0.7744,0.2043,-0.1486,0.0793,-0.0191,-0.0173,0.0279,-0.0210,0.0086,0.0009,-0.0045,0.0039,-0.0018,0.0003,0.0004,-0.0005Audio濾波程序如下:#include myapp.h#include ICETEK-V

10、C5509-EDU.h#include scancode.h#include #define FIRNUMBER 31#define SIGNAL1F 2900#define SIGNAL2F 3300#define SAMPLEF 8000#define PI 3.1415926float InputWave();float FIR();float fHnFIRNUMBER=-0.0005,0.0004,0.0003,-0.0018,0.0039,-0.0045,0.0009,0.0086,-0.0210,0.0279,-0.0173,-0.0191,0.0793,-0.1486,0.204

11、3,0.7744,0.2043,-0.1486,0.0793,-0.0191,-0.0173,0.0279,-0.0210,0.0086,0.0009,-0.0045,0.0039,-0.0018,0.0003,0.0004,-0.0005;float fXnFIRNUMBER= 0.0 ;float fInput,fOutput;float fSignal1,fSignal2;float fStepSignal1,fStepSignal2;float f2PI;int i;float fIn256,fOut256;int nIn,nOut;main()nIn=0; nOut=0;f2PI=2

12、*PI;fSignal1=0.0;fSignal2=PI*0.1;fStepSignal1=2*PI/30;fStepSignal2=2*PI*1.4;while ( 1 )fInput=InputWave();fInnIn=fInput;nIn+; nIn%=256;fOutput=FIR();fOutnOut=fOutput;nOut+;/* break point */if ( nOut=256 )nOut=0;float InputWave()for ( i=FIRNUMBER-1;i0;i- )fXni=fXni-1;fXn0=sin(double)fSignal1)+cos(dou

13、ble)fSignal2)/6.0;fSignal1+=fStepSignal1; if ( fSignal1=f2PI )fSignal1-=f2PI;fSignal2+=fStepSignal2;if ( fSignal2=f2PI )fSignal2-=f2PI;return(fXn0);float FIR()float fSum;fSum=0;for ( i=0;i spcr1, 0); Write(pMCBSP0 - spcr2, 0); / Config frame parameters (32 bit, single phase, no delay) Write(pMCBSP0

14、- xcr1, XWDLEN1_32); Write(pMCBSP0 - xcr2, XPHASE_SINGLE | XDATDLY_0); Write(pMCBSP0 - rcr1, RWDLEN1_32); Write(pMCBSP0 - rcr2, RPHASE_SINGLE | RDATDLY_0); / Disable int frame generation and enable slave w/ext frame signals on FSX / Frame sync is active high, data clocked on rising edge of clkx Writ

15、e(pMCBSP0 - pcr, PCR_CLKXP); / Bring transmitter and receiver out of reset SetMask(pMCBSP0 - spcr2, SPCR2_XRST); SetMask(pMCBSP0 - spcr1, SPCR1_RRST); void AIC23_Init() I2C_Init(); / Reset the AIC23 and turn on all power AIC23_Write(AIC23_RESET_REG, 0); AIC23_Write(AIC23_POWER_DOWN_CTL, 0); AIC23_Wr

16、ite(AIC23_ANALOG_AUDIO_CTL, ANAPCTL_DAC | ANAPCTL_INSEL);/ 使用麥克風音源 AIC23_Write(AIC23_DIGITAL_AUDIO_CTL, 0); / Turn on volume for line inputs AIC23_Write(AIC23_LT_LINE_CTL,0x000); AIC23_Write(AIC23_RT_LINE_CTL,0x000); / Configure the AIC23 for master mode, 44.1KHz stereo, 16 bit samples / Use 12MHz U

17、SB clock AIC23_Write(AIC23_DIGITAL_IF_FORMAT, DIGIF_FMT_MS | DIGIF_FMT_IWL_16 | DIGIF_FMT_FOR_DSP); AIC23_Write(AIC23_SAMPLE_RATE_CTL, SRC_SR_44 | SRC_BOSR | SRC_MO); / Turn on headphone volume and digital interface AIC23_Write(AIC23_LT_HP_CTL, 0x07f); / 0x79 for speakers AIC23_Write(AIC23_RT_HP_CTL

18、, 0x07f); AIC23_Write(AIC23_DIG_IF_ACTIVATE, DIGIFACT_ACT); / Set McBSP0 to be transmit slave McBSP0_InitSlave();void AIC23_Disable() PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR; I2C_Disable(); / Put the MCBSP in reset Write(pMCBSP0 - spcr1, 0); Write(pMCBSP0 - spcr2, 0);#define AUTIODATALEFT

19、 0x0d000#define AUTIODATARIGHT 0x17000int *pAudioLeft,*pAudioRight;int www=0; void AIC23_Mixer() PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR; int left, right; int *pl,*pr,nAudioCount; int i;pAudioLeft=pl=(int *)AUTIODATALEFT;pAudioRight=pr=(int *)AUTIODATARIGHT;nAudioCount=0; for ( i=0;iNX;i+

20、) xi=0; for ( i=0;i spcr2, SPCR2_XRDY);/ 等待數(shù)據(jù)傳輸完成 (*pl)=left = Read(pMCBSP0 - ddr1);/ 讀入左聲道數(shù)據(jù) right = Read(pMCBSP0 - ddr2);/ 讀入右聲道數(shù)據(jù) xNX-1=left/16;/ 防止濾波時數(shù)據(jù)溢出 fir2(x, h, r, db, NX, NH);/ 調用濾波程序計算當前輸出(*pr)=rNX-1;/ 數(shù)組r的最后一個單元為當前輸出 Write(pMCBSP0 - dxr1, left);/ 將原始數(shù)據(jù)送左聲道輸出 /Write(pMCBSP0 - dxr1, rNX-1);/ 將

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論