I want to add noise (10dB,20dB) to my speech samples. I have used this code to add noise but i do not know how much dB of noise is been added because this is random noise
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
   [s, fs] = audioread(file); 
      rng default
  noise = 0.01 * rand(size(s));
  noisySig = s + noise;
  SNR4545= snr(s,noise);
  % calc SNR using equation
  sigPow_check = 10 * log10(mean(s.^2)); % signal power
  noisePow_check = 10 * log10(mean(noise.^2));% noise power
  SNR_check = sigPow_check - noisePow_check;
  fprintf('\n calculation with equation: \n');
  fprintf('SNR: %.2f dB \n', SNR_check) ;
  fprintf('noise power: %.2f dB \n', noisePow_check) ;
  fprintf('signal power: %.2f dB \n', sigPow_check) ;
Results:  calculation with equation: SNR: 8.91 dB noise power: -44.78 dB signal power: -35.87 dB
댓글 수: 2
  Souarv De
      
 2022년 3월 5일
				SNR = 20;
Noise = randn(1,length(s)); % Generate initial noise; 
Signal_Power = sum(abs(s).*abs(s))/length(s); % Signal Power
Noise_Power = sum(abs(Noise).*abs(Noise))/length(s); % Noise Power
K = (Signal_Power/Noise_Power)*10^(-SNR/10);  % Scale factor xdB SNR
New_Noise = sqrt(K)*Noise; % Change Noise vector
x = S + New_Noise;
  studentmatlaber
 2022년 3월 6일
				Here you have fixed it as SNR = 20. But shouldn't you write as SNR = Signal_Power/Noise_Power?
답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


