嵌入式audio基礎(七)分析

迷霧綠洲發表於2016-02-06

準備做自動化的測試,難點和影象的測試差不多都是在很多的評價都是基於主觀的感覺。這裡準備簡單的根據前面幾個音訊評價的客觀引數經行測試評價。
首先一個就是工具的選擇,首選就是matlab,優點明顯就是有很多可以即用的函式工具,比如很重要的傅立葉變換的函式fft().
然後就是選一個合適的引數進行驗證,音訊資料的錯誤基本都可以在頻率錯誤上得到反應,所以選擇了測頻譜的方法。
這裡寫圖片描述
pc 用音訊軟體播放1khz的正弦波給板子,板子錄製成音訊檔案,matlab處理音訊檔案。
音訊檔案中的資料格式,
這裡寫圖片描述
我的資料是32bit中的24bit 有效的,高位在後。第一個資料應該是0x306040  
這裡貼出來所有的原始碼。cd /home/xuww/
fs=44100; %頻率44.1KHz

fid=fopen(‘test.dat’,’rt’);
N=50000; %資料樣本有50000多個
samp_time=1/fs; %0.0000226757;
n=0:samp_time:(samp_time*(N-1)); %橫座標時間

c= fread(fid,50001*4 ,’uint8’);
count =0;
a = zeros(1,50000*4);
for count=1:50000+1
%fprintf(‘data print start ###########\n’)
%fprintf(‘data is 1 %x \n’,c(count*4-3,1));
%fprintf(‘data is 2 %x \n’,c(count*4-2,1));
%fprintf(‘data is 3 %x \n’,c(count*4-1,1));
%fprintf(‘data is 4 %x \n’,c(count*4,1));
a(1,count)=c(count*4,1)*16*16*16*16*16*16+c(count*4-1,1)*16*16*16*16+c(count*4-2,1)*16*16+c(count*4-3,1);
%fprintf(‘data print end %x\n’,a(count));

end
subplot(3,1,1)
plot(n,a(1:50000)); %第一幅顯示波形


subplot(3,1,2)
sample_region_count = 1024;
sample_region_array =0:samp_time:samp_time*(sample_region_count-1);
sample_region =a(2000:(2000+sample_region_count-1));
plot(sample_region_array,sample_region); %顯示其中1000個點的sample
subplot(3,1,3)
FFT_Num=1024;
M=0:FFT_Num/2;
freq=M*fs/FFT_Num;
X =fft(sample_region,FFT_Num); % Compute its 16-point DFT%進行傅立葉變換
mag=abs(X(M+1)); %求得Fourier變換後的振幅
plot(freq,mag);
xlim([0 2500]); grid;
pause(20);%暫停防止圖片一閃而過
這裡寫圖片描述
資料有需要的可以找我

相關文章