matlab解析出聲音文件的頻率


因為matlab工具集成了很多算法。記錄學習了用matlab來解析聲音頻率。

ff.wav 是一段頻率為17640HZ的已知聲音文件

貼上代碼:

 1 %1、%[X,Fs,Bit]=wavread('d:\\ff.wav');
 2 %2、然后進行特征提取
 3 %3、然后分類器識別
 4 %4、輸出識別結果
 5 %close all;
 6 %clear all;
 7 [X,Fs]=audioread('d:\\ff.wav');
 8 N=2048;
 9 n=0:N-1;
10 Xk=fft(X,N); %對信號進行快速Fourier變換
11 nUniquePts = ceil((N+1)/2);
12 Xk = Xk(1:nUniquePts); % 選擇前半部,因為后半部是前半部的一個鏡像
13 magX=abs(Xk);%求得Fourier變換后的振幅
14 %作完傅氏變換后要加絕對值abs(Xk);dB值:20*log(abs(Xk)/max(abs(Xk)))。
15 ddd=20*log(magX/max(magX))
16 iPoint = -1 ;
17 for i=1:N
18     if magX(i) == max(magX)
19         iPoint = i;
20         i
21         break ;
22     end
23 end
24 % 創建頻率數組begin
25 TXBB_THRESHOLD = 20 ;%誤差范圍
26 TXBB_CHARACTERS_NUM = 64 ;%假設一共64個頻率
27 TXBB_BASEFREQUENCY_H = 17000; %起始頻率
28 g_fFrequencies =  TXBB_CHARACTERS_NUM*(0:TXBB_CHARACTERS_NUM-1) + TXBB_BASEFREQUENCY_H;
29 % 創建頻率數組end
30               
31 % 查找碼表 begin
32 k = 1 ;
33 for i=1:TXBB_CHARACTERS_NUM
34     if g_fFrequencies(i)-20 < Fs/N*iPoint && g_fFrequencies(i)+20 > Fs/N*iPoint
35         k = i ;
36         break ;
37     end
38 end 
39 % 查找碼表 end
40 
41 %打印結果
42 g_fFrequencies(k)
43 fprintf('k:%d.\n',k);
44 disp('k:.\n');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM