How do I remove background noise from a sound wave?
    33 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    David Koenig
 el 17 de Nov. de 2013
  
    
    
    
    
    Respondida: pravin m
 el 5 de Nov. de 2019
            I have a sound wave y(1:441000) gathered using a microphone and I have background n(1:441000) also gathered by the microphone. I have tried removing the background noise using a script something like:
Y=fft(y);
N=fft(n);
Yclean=Y-N;
yClean=ifft(Yclean);
However, yClean is not correct and is backwards in time. Do you have any suggestions?
Thanks,
Dave
0 comentarios
Respuesta aceptada
  Pedro Villena
      
 el 18 de Nov. de 2013
        Create and Implement LMS Adaptive Filter to remove the filtered noise from desired signal
mtlb_noisy = y;
noise = n;
% Define Adaptive Filter Parameters
filterLength = 32;
weights = zeros(1,filterLength);
step_size = 0.004;
% Initialize Filter's Operational inputs
output = zeros(1,length(mtlb_noisy));
err = zeros(1,length(mtlb_noisy));
input = zeros(1,filterLength);
% For Loop to run through the data and filter out noise
for n = 1: length(mtlb_noisy),
      %Get input vector to filter
      for k= 1:filterLength
          if ((n-k)>0)
              input(k) = noise(n-k+1);
          end
      end
      output(n) = weights * input';  %Output of Adaptive Filter
      err(n)  = mtlb_noisy(n) - output(n); %Error Computation
      weights = weights + step_size * err(n) * input; %Weights Updating 
  end
yClean = err;
1 comentario
  Tahira Batool
 el 30 de Abr. de 2017
				And what if one does not have a separate noisy signal to be removed from an original signal ,then how can we remove background noise from a signal?
Más respuestas (3)
  Umair Nadeem
      
 el 18 de Nov. de 2013
        It would be easier if you could upload the noisy signal too. Save the variable y which supposedly has the noisy signal in a .mat file using save command and attach it with your post. Some frequency analysis could be done if the signal is available.
Also try to provide info about the signal frequency (if known), and the sampling frequency which you used to sample the data.
0 comentarios
  pinreddy chaitanya
 el 22 de Oct. de 2018
        
      Editada: Walter Roberson
      
      
 el 22 de Oct. de 2018
  
       weights = weights + step_size * err(n) * input; %Weights Updating
what is the use of this line
1 comentario
  pravin m
 el 5 de Nov. de 2019
        mtlb_noisy = y;
noise = n;
% Define Adaptive Filter Parameters
filterLength = 32;
weights = zeros(1,filterLength);
step_size = 0.004;
% Initialize Filter's Operational inputs
output = zeros(1,length(mtlb_noisy));
err = zeros(1,length(mtlb_noisy));
input = zeros(1,filterLength);
% For Loop to run through the data and filter out noise
for n = 1: length(mtlb_noisy),
      %Get input vector to filter
      for k= 1:filterLength
          if ((n-k)>0)
              input(k) = noise(n-k+1);
          end
      end
      output(n) = weights * input';  %Output of Adaptive Filter
      err(n)  = mtlb_noisy(n) - output(n); %Error Computation
      weights = weights + step_size * err(n) * input; %Weights Updating 
  end
yClean = err;
0 comentarios
Ver también
Categorías
				Más información sobre Audio Processing Algorithm Design en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






