具體的代碼如下% 對語音信號做原始的時域波形分析和頻譜分析
[y,fs]=audioread('C:\Users\wangzhen\Desktop\課設2\百鬼.wav');
sound(y,fs) % 回放語音信號
pause
n=length(y); %選取變換的點數
y_p=fft(y,n); % 對n點進行傅里葉變換到頻域
f=fs*(0:n/2-1)/n; % 對應點的頻率
figure(1)
subplot(2,1,1);
plot(y); %語音信號的時域波形圖
title('原始語音信號采樣后時域波形');
xlabel('時間軸')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(y_p(1:n/2))); % 語音信號頻譜圖
title('原始語音信號采樣后頻譜圖');
xlabel('頻率HZ');
ylabel('頻率幅值');
% 對音頻信號產生噪聲
L=length(y); % 計算音頻信號長度
noise=0.1*randn(L,2); %產生等長度的隨機噪聲信號
y_z=y+noise; % 將兩個信號疊加成一個新的信號——加噪處理
sound(y_z,fs)
pause
% 對加噪后的語音信號進行分析
n=length(y); % 選取變換的點數
y_zp=fft(y_z,n); % 對n點進行傅里葉變換到頻域
f=fs*(0:n/2-1)/n; % 對應點的頻率
figure(2)
subplot(2,1,1);
plot(y_z); % 加噪語音信號的時域波形圖
title('加噪語音信號時域波形');
xlabel('時間軸')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(y_zp(1:n/2))); % 加噪語音信號的頻譜圖
title('加噪語音信號頻譜圖');
xlabel('頻率HZ');
ylabel('頻率幅值');
% 對加噪的語音信號進行去噪程式如下:
fp=1500;fc=1700;As=100;Ap=1; % 低通濾波器性能指標
wc=2*pi*fc/fs; wp=2*pi*fp/fs;
wdel=wc-wp;
beta=0.112*(As-8.7);
N=ceil((As-8)/2.285/wdel);
wn=kaiser(N+1,beta);
ws=(wp+wc)/2/pi;
b=fir1(N,ws,wn);
figure(3);
freqz(b,1);% 以上為低通濾波器設計
% 去除噪聲信號
x=fftfilt(b,y_z);
X=fft(x,n);
figure(4);
subplot(2,2,1);
plot(f,abs(y_zp(1:n/2)));
title('濾波前信號頻譜');
subplot(2,2,2);
plot(f,abs(X(1:n/2)));
title('濾波后信號頻譜');
subplot(2,2,3);
plot(y_z(1:n/2));
title('濾波前信號的波形');
subplot(2,2,4);
plot(x(1:n/2));
title('濾波后信號的波形')
sound(x,fs) % 回放濾波后的音頻
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75460.html
標籤:網絡通信
上一篇:如何利用思科模擬器為小型公司五個部門間組網,求大神救我T~T
下一篇:怎么強制遠程關機
