+ Post New Thread
Results 1 to 2 of 2
  1. #1
    Newbie level 1
    Points: 18, Level: 1

    Join Date
    Jan 2017
    Posts
    1
    Helped
    0 / 0
    Points
    18
    Level
    1

    SNR for an audio .wav files and objective measures for evaluating filtering technique

    I am doing experiments on a filtering technique for noise reduction. My samples in the data set are audio files (.wav), I therefore have: original recording audio files and I mix them with noise, so I get mixed (noisy signals), I pass these noisy signals through the filtering algorithm, the outputs are filtered or noise reduced audio signals. So in total I have the following:

    Original audio files (without noise)
    Noise (that need to be added of the original signals)
    Mixed (Noisy files)
    Filtered (noise reduced)
    I need to get how much dB the filter can reduce, I think of SNR as a measure that could give such indication about the performance of the filtering algorithm and a comparison before filtering and after filtering.

    So does anybody know if SNR is a good objective measure to evaluate the performance of the algorithm and measure the enhancement?
    Are there any other suitable objective measures that can be used in this case?
    What will be the situation if field recording already contain noise and I don't need to add noise? (the noise in my case is wind).
    Here is a simple MATLAB code I wrote to compute SNR.
    Code:
    [signal]=audioread('Original.wav');
    
    [noise]=audioread('Noise.wav');
    
    [noise_reduced_signal]=audioread('Filtered.wav');
    
    [noisysignal]=audioread('Noisy.wav');
    
    snr_before = mean( signal.^ 2 ) / mean( noise .^ 2 );
    
    snr_before_db = 10 * log10( snr_before ) % in dB
    %==========================================================%
    % After noise reduction, the residual noise can be calculated as the difference 
    % of the wanted signal and the actual signal. Calculation of SNR is then straightforward:
    %==========================================================%
    snr_after = mean( signal .^ 2 ) / mean( noise_reduced_signal .^ 2 ); 
    
    snr_after_db = 10 * log10( snr_after ) % in dB
    
    Diff = snr_after_db - snr_before_db;
    
    disp(['Diff  = ' num2str(Diff) ' dB'])
    Last edited by FvM; 1st January 2017 at 15:02. Reason: Added code tags

    •   Alt1st January 2017, 14:27

      advertising

        
       

  2. #2
    Super Moderator
    Points: 40,220, Level: 49
    Awards:
    Most Frequent Poster

    Join Date
    Apr 2014
    Posts
    8,226
    Helped
    1989 / 1989
    Points
    40,220
    Level
    49

    Re: SNR for an audio .wav files and objective measures for evaluating filtering techn

    Hi,

    SNR is the ratio of noise to wanted_signal.
    It is a value to define the quality of a signal, somehow. So you mayu se it.

    I see a problem how you want to filter away noise. This is not an easy approach, because "noise" is something random.
    It follows no rules, therefore usually there is a problem generating an algorithm.

    A noise signal that follows any rules is no "true noise".

    Klaus



+ Post New Thread
Please login
--[[ ]]--