DSP 實驗六 音頻信號處理實驗_第1頁
DSP 實驗六 音頻信號處理實驗_第2頁
DSP 實驗六 音頻信號處理實驗_第3頁
DSP 實驗六 音頻信號處理實驗_第4頁
DSP 實驗六 音頻信號處理實驗_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 實驗題目:音頻信號處理實驗班級: 姓名: 學號: 日期: 2016年6月10日一、 實驗目的:1. 了解音頻 codec 芯片的程序控制原理。2. 掌握常用濾波器的設計方法。3. 掌握濾波器在 DSP 中的實現方法和驗證方法。4掌握音頻信號的時頻分析方法。二、實驗原理:1. 音頻 codec 芯片性能指標及控制方法- 初始化配置:DSP 將配置命令發送到音頻 codec 芯片,配置完成后音頻 codec 芯片開始工作。- 聲音信號的輸入:采集的聲音數據可以是點數據或塊數據。- 聲音信號的輸出:DSP 將處理好的聲音數據發送給音頻 codec 芯片,輸出模擬信號。2. 音頻濾波處理音

2、頻處理設備是指對音頻信號進行修飾和加工處理的部件、裝置和設備。音頻處理設備通常是圍繞調音臺連接的,因此又稱為周邊設備。通過改變相應的聲音物理參量的方法來達到改變響度、音調、音色等。常用的有濾波器、均衡器、延時混響等等。本實驗要求選擇一種音頻處理功能,設計相應的數字信號處理算法,并在 DSP 實驗箱中實現。3算法推導長度為M的因果有限沖擊響應濾波器由傳輸函數H(z)描述:它是次數為M-1的的一個多項式。在時域中,上述有限沖激響應濾波器的輸入輸出關系為:其中y(n)和x(n)分別是輸出和輸入序列。根據系數 h 是偶對稱為了簡化運算產生如下計算方法 根據這個公式,即可設計出理想的fir濾波器。4.

3、程序流程圖MATLAB仿真: dsp仿真實驗:開始開始定義全局變量讀取原始信號定義變量以及指定系數的文件:將K_FIR_BFFR定為32對原始信號加噪處理分析原始信號和加噪信號頻譜指定寄存器確定fir濾波器的各個參數進行FIR計算輸出根據fir1函數實現fir帶阻濾波器的設計結束輸出濾波器系數h和生成dat文件結束三、儀器設備:1.硬件:計算機一臺。2.軟件:MATLAB R2012a 3Ccs2.24. DM642 實驗箱,耳機,麥克風。四、實驗步驟:(一)、MATLAB仿真實驗: 1、原始信號獲取與處理(1)選取一段事先錄制好的wav音頻文件(“原始信號.wav”),作為實驗的原始語音信號

4、。部分程序如下:y,fs,nbits=wavread('原始信號.wav');(2)對該信號進行加噪處理。分別在6000Hz、6100Hz、6200Hz、6300Hz、6400Hz五個頻率點加一段正弦波或余弦波信號,以此作為噪聲。部分程序如下:n= length(y); %求出語音信號的長度m=0:n-1;w=2*m/n;s=0.03*cos(2*pi*4800*m/fs)'+0.04*sin(2*pi*4900*m/fs)'+0.02*cos(2*pi*5000*m/fs)'+0.03*sin(2*pi*5100*m/fs)'+0.04*sin

5、(2*pi*5200*m/fs)'x=y+s;(3)分別對原始信號和加噪后的信號進行時域和頻域分析。%原始信號波形figure(1)Y=fft(y,n); %傅里葉變換subplot(2,1,1);plot(y);title('原始信號波形');subplot(2,1,2);plot(w,abs(Y);title('原始信號頻譜')%加噪后信號波形figure(2)X=fft(x,n);subplot(2,1,1);plot(x);title('加噪聲后信號波形');subplot(2,1,2);plot(w,abs(X);title(&

6、#39;加噪聲后信號頻譜');2、實現fir帶阻濾波器的設計(1)根據希望達到的效果確定通帶邊界頻率、通帶截止頻率、阻帶邊界頻率和阻帶截止頻率。 (2)根據上一步結果確定fir帶阻濾波器的過渡帶寬。 (3)根據第二步結果確定濾波器的階數。 (4)確定截止頻率(5)利用fir1函數實現fir帶阻濾波器的設計 (6)利用設計好的濾波器對加噪后的信號進行濾波(7)根據前面設計好的fir帶阻濾波器獲取濾波器的系數Fir濾波器程序如下:fs1=2500;fp1=5400;fp2=5600;fs2=9000; Bt=(f p 1*2/fs-fs1*2/fs)*pi;N1=ceil(6.6*pi/B

7、t);N=N1+mod(N1+1,2);wn1=(f s 1+fp1)/2,(fs2+fp2)/2;wn=wn1*2/fs; hn=fir1(N-1,wn,'stop');fir_x=filter(hn,1,x);生成濾波器系數h:fid=fopen('C:UsersZXCDesktopxishu.txt','wt');m,n=size(hn); for i=1:1:m for j=1:1:n if j=n fprintf(fid,'%0.4fn',hn(i,j); else fprintf(fid,'%0.4f,'

8、;,hn(i,j); end endendfclose(fid); 3、將加噪后的原始信號生成dat文件 (1) 根據前面的結果生成加噪信號的dat文件(“xishu.dat”),以便dsp仿真使用。fid=fopen('C:UsersZXCDesktopxishu.dat','w');fprintf(fid,'1651 1 0 0 0n');for k=1:length(y1) y1(k) = round(y1(k);if y1(k)<16 fprintf(fid,'0x000%xn',y1(k);elseif y1(k)

9、<256 fprintf(fid,'0x00%xn',y1(k);elseif y1(k)<4096 fprintf(fid,'0x0%xn',y1(k);else fprintf(fid,'0x%xn',y1(k);endendfclose(fid);(二)、dsp仿真實驗:1、設置 Code Composer Studio2.2 在軟件仿真方式下運行 2、啟動 Code Composer Studio2.2。雙擊桌面上“CCS 2(C6000)”,啟動 Code Composer Studio2.2;3、打開工程單擊菜單“Proj

10、ect”->“Open”,打開先前fir實驗用的fir.pjt工程4、修改參數用之前MATLAB實驗獲得的fir帶阻濾波器系數h代替剛打開的fir工程的fir.c文件系數h,修改volume.h文件的FIRSIZE的大小為27。5、 編譯并下載程序單擊菜單“Project” -> “Rebuild All”;執行 File->Load Program ,在隨后打開的對話框中選擇剛剛建立debugfir.out 文件。6、輸入數據 (1) 移動光標到主函數的 dataIO()這一行, 右擊鼠標選擇 Toggle Probe Point 項。再右擊鼠標選擇 Toggle Brea

11、kPoint 項。如圖:(2) 打開 File 選單,選擇 File I/O 選項,打開 File I/O 對話框,在這個對話框中, 可以選擇輸入/輸出文件。(3) 在 File Input 屬性頁下, 點擊 Add File 按鈕。選擇本工程文件夾下的xishu.dat文件。如圖:(4) 單擊打開按鈕,把文件添加到 File Input 屬性頁下的列表框中,使“Wrap Around”前的對勾被選中,輸入 Address 為:inp_tempbuf, 長度為:8。(5) 選擇“Add probepoint”進入 Break /Probe /Profile Points 對話框,在 Probe

12、 Points 屬性欄中選中斷點,在 Connent 的屬性框中選擇輸入波形的位置,單擊 Replace 并單擊確定,完成設置。如圖:(6)打開 View 選單,選擇 Graph 下的 Time/Frequency 選項。(7)在 Graph Property 對話框中,修改以下選項為當前值。點擊OK按鈕,顯示輸入信號的時域波形(8)重復上兩步,修改以下選項為當前值。點擊OK按鈕,顯示輸出信號的時域波形(9)重復前面步驟步,修改以下選項為當前值。點擊OK按鈕,顯示輸入信號的頻域波形(10)重復前面步驟步,修改以下選項為當前值。點擊OK按鈕,顯示輸出信號的頻域波形(11)打開“Debug”選單,

13、選擇“Run”選項或按 F5 運行程序,觀察結果。(12)打開“Debug”選單,選擇“Halt”選項或按 Shift-F5 終止實驗結果。五、數據記錄:(一)、MATLAB仿真實驗: 1、獲取的原始音頻文件長度:n =12218 原始信號的時域和頻域波形: 加噪信號的時域和頻域波形:濾波后的時域和頻域波形2、設計的fir帶阻濾波器階數:N = 27 濾波器系數h:hn = -0.0001 0.0024 0.0023 -0.0118 -0.0051 0.0182 0.0019 0.0170 0.0098 -0.1192 -0.0178 0.2454 0.0092 0.6957 0.0092 0

14、.2454 -0.0178 -0.1192 0.0098 0.0170 0.0019 0.0182 -0.0051 -0.0118 0.0023 0.0024 -0.00013、fir帶阻濾波器(二)、dsp仿真實驗: 1000點時域:輸入:輸出:1000點頻域:輸入頻域:輸出頻域:六、實驗結果討論:在本實驗中,首先通過MATLAB讀取一段音頻,然后對音頻信號(在5000Hz處)用余弦和正弦混合信號進行加噪,對比加噪前后的聲音頻譜,可以看到,在5000Hz附近頻段上有明顯加進去的噪聲信號。之后用MATLAB設計一個fir帶阻濾波器,阻帶在5000Hz附近頻段,階數為27,用設計好的fir帶阻濾

15、波器對加噪后的聲音信號進行濾波處理,對比濾波前后的噪聲信號的頻譜圖,可以看到,噪聲信號已經明顯被濾除掉。 通過fir濾波器來獲得相應的濾波系數h,將h帶入到dsp中的fir濾波器中,然后通過dsp中的fir算法對加噪后的原始信號進行濾波處理,輸出濾波前后的信號頻譜,對比前后信號頻譜可以看到,中頻段處的噪聲信號已經被明顯濾除掉,實驗結果較理想。 對比MATLAB和dsp兩者的濾波效果,可以看到兩者的濾波效果較為相近,中頻段處的噪聲信號被明顯濾除。但是,由于噪聲信號是人為加進去的,噪聲點在5000Hz附近,而實際的原始聲音信號在5000Hz出也有信號,用本實驗方式設計的fir帶阻濾波器雖然能夠濾除掉加進去的噪聲信號,但是5000Hz頻段處的原始聲音信號也相應的被濾除,這樣造成原始信號有損失。因此本實驗設計的濾波器對噪聲信號濾除效果較好,但是實際應用效果并非很理想,這個需要進一步的改進,從而達到更理想的濾波效果。七、結論:通過本實驗,我對fir濾波器有了更深層次的理解,學會了如何用MATLAB和dsp來設計fir帶阻濾波器,從而對噪聲信號進行濾波處理。Fir濾波有幾個比較重要的參數,比如:通帶截止頻率、通帶邊界頻率、阻帶截止頻率、阻帶邊界頻率、濾波器階數等。通過這些參數,就可以設計出相應的fir濾波器,最后得到濾波器的系統函數,從而實現fir濾波,要想達到較好的濾波

溫馨提示

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

評論

0/150

提交評論