how to remove noise from audio using fourier transform and filter and to obtain back the original audio signal

21 次查看(过去 30 天)
[y,Fs]=audioread('audio.wav');
%Normal sound
sound(y,Fs);
subplot(3,1,1);
plot(y);
x=y(1:2:length(y));%x=y(1:2:end)
%Decimated sound
sound(x,Fs);
subplot(3,1,2);
plot(x);
xn=randn(384362,1);
yn=y+xn;
sound(yn,Fs);
x1(1)=y(1);
g=length(y)-1;
j=2;
i=2;
while g~=0
m=rem(i,2);
if m==0
x1(i)=0;
else
x1(i)=y(j);
j=j+1;
g=g-1;
end
i=i+1;
end
%Interpolated sound
sound(x1,Fs);
subplot(3,1,3);
plot(x1);
srate = 10000;
time = 0:1/srate:2;
npnts = length(time);
% signal
signal = y;
% Fourier spectrum
signalX = fft(signal);
hz = linspace(0,srate/2,npnts);
% amplitude
ampl = abs(signalX(1:length(hz)));
figure(1);
stem(signal);
figure(2), clf
stem(hz,ampl,'ks-','linew',3,'markersize',10,'markerfacecolor','w')
% make plot look a bit nicer
set(gca,'xlim',[0 10])
xlabel('Frequency (Hz)'), ylabel('Amplitude (a.u.)')

回答(2 个)

Suhan
Suhan 2018-2-22
Hi,
The following documentation demonstrates discarding noise from the data using 'fft': https://in.mathworks.com/help/matlab/math/fourier-transforms.html
Once you discard the noise spectrum, you can use 'ifft' to recover the signal. For 'ifft' refer to the following: https://in.mathworks.com/help/matlab/ref/ifft.html

Manideep
Manideep 2024-8-4
matlab code on echo noise cancellation in trigonometric forrier series

类别

Help CenterFile Exchange 中查找有关 Measurements and Spatial Audio 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by