语音信号预处理4——绘制接滤波后chirp信号的时域图和频域图
生活随笔
收集整理的這篇文章主要介紹了
语音信号预处理4——绘制接滤波后chirp信号的时域图和频域图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫在前面:僅作為個人學習筆記,便于以后查閱,如對你有幫助,榮幸之至,如有錯誤,歡迎評論指正
編程軟件:matlab R2018b
系統: win10
系列文章目錄
文章目錄
- 系列文章目錄
- 時域圖
- 頻域圖
- 參考文獻
時域圖
直接上代碼上圖,因為回聲信號可能有很多個,所以我只截取了一段回聲信號進行展示:
%% 截取一段回聲信號 i = 1; invaildTime = 0.0138; vaildTime = 0.0800; %set the vaild time of real echo % invaildTime = 0.0138; vaildTime = 0.0862; invaildLen = round(invaildTime * fs); vaildLen = round(vaildTime * fs); %get the real echo' length startIndex = (voiceseg(i).begin - 1) * inc + invaildLen; endIndex = startIndex + vaildLen; % startIndex = (voiceseg(i).begin - 1) * inc; % endIndex = startIndex + chirpInterval * fs; % echo = xPoly(startIndex : endIndex); %回聲信號 echo = xFilter(startIndex : endIndex); % echoEnvelop = abs(echo+(1i)*hilbert(echo)); %get the envelop of this echo segment echoTime = time(startIndex : endIndex); % figure(2); subplot(2, 2, 2); plot(echoTime, echo); grid; % ylabel('歸一化幅值'); ylabel('幅值'); xlabel(['樣本點' 10 '(b)']); title('一段回聲信號');%%% compute the correlation between echo and raw audio signal corrEcho = matched_filter_compute(echo, sampleSignal); corrEcho = corrEcho / max(corrEcho); timeEcho = 0 : length(corrEcho) - 1; timeEcho = timeEcho/fs; subplot(2, 2, 3); plot(timeEcho, corrEcho); grid; title('回聲的相關性'); % ylabel('歸一化幅值'); ylabel('幅值'); xlabel(['樣本點' 10 '(c)']); hold on;一段回聲信號的時域圖如下所示,橫坐標時樣本點序列,橫坐標是信號的幅值:
頻域圖
上代碼上圖:
%% compute the fft %%% get the echo array echoData = echo; [f_vec, amp] = fftCompute(echoData, fs); freqArr = zeros(length(f_vec), k); % store echo valid echo data); freqArr( : , 1) = amp;% for i = 2 : chirpRepeat for i = 2 : kstartIndex = (voiceseg(i).begin - 1) * inc + invaildLen;endIndex = startIndex + vaildLen; % echoData = xPoly(startIndex : endIndex);echoData = xFilter(startIndex : endIndex);[f_vec, amp] = fftCompute(echoData, fs);freqArr( : , i) = amp; end freqMean = sum(freqArr, 2); freqMean = freqMean / k; % freqMean = freqMean / max(abs(freqMean));subplot(2, 2, 4); plot(f_vec, freqMean); xlabel(['頻率/HZ']); ylabel('幅度'); title('頻域圖');回聲信號的平均頻域圖如下所示,簡言之,對每個回聲信號都去計算它的頻譜,最后取一個平均值,能在一定程度上減弱單個回聲信號的誤差。橫坐標為頻率、縱坐標為頻率幅值,我們提取出的信號的頻域確實分布在18KHZ-20KHZ區間附近,因此,因此可認為我們提取出的回聲信號是有效的。
參考文獻
總結
以上是生活随笔為你收集整理的语音信号预处理4——绘制接滤波后chirp信号的时域图和频域图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python处理csv文件
- 下一篇: jquery datatable搜索框添