سلام.لطفا کمکم کنید :angry: باید به نمونه هایی از سیگنال گفتار با snr=5,10,20 نویزسفید را اعمال کنم البته با استفاده از تابع زیر خواهش میکنم کمکم کنید.ممنون :wow: :an
function ADD_Noise_From_File(InputFile,noisefile,OutputFile ,SNR)
%%%%%%%%%%%%%%%%%%%%%% ALL Files Must be Wave file
%-------------------- Read Input & Noise Files -----------------------
[x,InputFs,Inputbits]=wavread('white.wav'
;
[nSamples,o]=size(x);
singldisp=0;
inp=x;
mn=mean(inp(1:length(inp)));
x=x-mean(x);
se=norm(x,2)^2/nSamples; %signal energy
if isempty(SNR)
errordlg('ERROR in SNR value','ERROR','on'
;
return;
end
nsc=se/(10^(SNR/10));
[y,NoiseFs,Noisebits]=wavread(noisefile,nSamples);
cnt=size(y);
if cnt<nSamples % --not enough samples in the noise file
errordlg('Not enough samples in the noise file.','ERROR','on'
;
return;
end
ny=norm(y,2)^2/nSamples;
y=sqrt(nsc/ny)*y;
x = x+y; mx=max(x);
inp(1:nSamples)=x+mn*ones(nSamples,1);
wavwrite(inp,InputFs,OutputFile);
end
function ADD_Noise_From_File(InputFile,noisefile,OutputFile ,SNR)
%%%%%%%%%%%%%%%%%%%%%% ALL Files Must be Wave file
%-------------------- Read Input & Noise Files -----------------------
[x,InputFs,Inputbits]=wavread('white.wav'

[nSamples,o]=size(x);
singldisp=0;
inp=x;
mn=mean(inp(1:length(inp)));
x=x-mean(x);
se=norm(x,2)^2/nSamples; %signal energy
if isempty(SNR)
errordlg('ERROR in SNR value','ERROR','on'

return;
end
nsc=se/(10^(SNR/10));
[y,NoiseFs,Noisebits]=wavread(noisefile,nSamples);
cnt=size(y);
if cnt<nSamples % --not enough samples in the noise file
errordlg('Not enough samples in the noise file.','ERROR','on'

return;
end
ny=norm(y,2)^2/nSamples;
y=sqrt(nsc/ny)*y;
x = x+y; mx=max(x);
inp(1:nSamples)=x+mn*ones(nSamples,1);
wavwrite(inp,InputFs,OutputFile);
end