diff userProgramsRM/test_speechInNoise.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userProgramsRM/test_speechInNoise.m	Mon Nov 28 13:34:28 2011 +0000
@@ -0,0 +1,147 @@
+function test_speechInNoise
+
+leveldBSPL= 60;                  % dB SPL
+leveldBSPLNoise=-55;
+
+% leveldBSPL= 90;                  % test AR
+% leveldBSPLNoise=85;
+OMEatten=0.1;
+OMEatten=0.00;
+
+MOCattenuation=0.00;    % no attenuation
+% MOCattenuation=-0.02;   % fixed
+% MOCattenuation=0.02;    % dynamic within-channel
+MOCtauProb=0.150;
+
+paramChanges={};
+
+% no attenuation
+paramChanges={['DRNLParams.rateToAttenuationFactorProb = '...
+    num2str(MOCattenuation) ';'],...
+    ['DRNLParams.MOCtauProb =' num2str(MOCtauProb) ';'],...
+    ['OMEParams.rateToAttenuationFactorProb=' num2str(OMEatten) ';'] };
+
+% 
+fileName='twister_44kHz';
+% fileName='1o7a_44kHz';
+
+dbstop if error
+restorePath=path;
+addpath (['..' filesep 'MAP'],    ['..' filesep 'wavFileStore'], ...
+    ['..' filesep 'utilities'])
+
+%%  #1 parameter file name
+MAPparamsName='Normal';
+
+
+%% #2 probability (fast) or spikes (slow) representation
+AN_spikesOrProbability='spikes';
+%   or
+AN_spikesOrProbability='probability';
+
+
+%% #3  speech file input
+
+beginSilence=.25;
+endSilence=0.25;
+noiseRampDuration=0.01;
+
+%% #5 number of channels in the model
+%   21-channel model (log spacing)
+numChannels=21;
+lowestBF=300; 	highestBF= 6000;
+BFlist=round(logspace(log10(lowestBF), log10(highestBF), numChannels));
+
+%   or specify your own channel BFs
+% numChannels=1;
+% BFlist=toneFrequency;
+
+
+
+%% delare 'showMap' options to control graphical output
+showMapOptions.printModelParameters=1;   % prints all parameters
+showMapOptions.showModelOutput=1;       % plot of all stages
+showMapOptions.printFiringRates=1;      % prints stage activity levels
+showMapOptions.showACF=0;               % shows SACF (probability only)
+showMapOptions.showEfferent=0;          % tracks of AR and MOC
+showMapOptions.surfProbability=1;       % 2D plot of HSR response
+showMapOptions.surfSpikes=0;            % 2D plot of spikes histogram
+showMapOptions.ICrates=0;               % IC rates by CNtauGk
+showMapOptions.PSTHbinwidth=0.010;
+showMapOptions.colorbar=0;
+showMapOptions.view=[0 90];
+
+% disable certain silly options
+if strcmp(AN_spikesOrProbability, 'spikes')
+    % avoid nonsensical options
+    showMapOptions.surfProbability=0;
+    showMapOptions.showACF=0;
+else
+    showMapOptions.surfSpikes=0;
+end
+    % needed for labeling plot
+    showMapOptions.fileName=fileName;
+
+%% Generate stimuli
+
+        %% file input simple or mixed
+        [inputSignal sampleRate]=wavread(fileName);
+        dt=1/sampleRate;
+        inputSignal=inputSignal(:,1);
+        targetRMS=20e-6*10^(leveldBSPL/20);
+        rms=(mean(inputSignal.^2))^0.5;
+        amp=targetRMS/rms;
+        inputSignal=inputSignal*amp;
+        
+        % add silences
+        intialSilence= zeros(1,round(beginSilence*sampleRate));
+        finalSilence= zeros(1,round(endSilence*sampleRate));
+        inputSignal= [intialSilence inputSignal' finalSilence];
+        
+        [inputNoise sampleRateN]=wavread('babble');
+        inputNoise=inputNoise(1:length(inputSignal));
+       inputNoise=inputNoise(:,1);
+        targetRMS=20e-6*10^(leveldBSPLNoise/20);
+        rms=(mean(inputNoise.^2))^0.5;
+        amp=targetRMS/rms;
+        inputNoise=inputNoise*amp;
+        time=dt: dt: dt*length(inputNoise);
+        rampTime=dt:dt:noiseRampDuration;
+        ramp=[0.5*(1+cos(2*pi*rampTime/(2*noiseRampDuration)+pi)) ...
+            ones(1,length(time)-length(rampTime))];
+        inputNoise=inputNoise'.*ramp;
+        inputSignal=inputSignal+inputNoise;
+        
+
+
+%% run the model
+tic
+
+fprintf('\n')
+disp(['Signal duration= ' num2str(length(inputSignal)/sampleRate)])
+disp([num2str(numChannels) ' channel model'])
+disp('Computing ...')
+
+MAP1_14(inputSignal, sampleRate, BFlist, ...
+    MAPparamsName, AN_spikesOrProbability, paramChanges);
+
+
+%% the model run is now complete. Now display the results
+UTIL_showMAP(showMapOptions, paramChanges)
+figure(97), 
+title(['speech/ noise: ' num2str([leveldBSPL leveldBSPLNoise]) ...
+    ';   atten/ tau: ' num2str([MOCattenuation MOCtauProb] )],'fontSize', 14)
+
+disp(['level=' num2str(leveldBSPL)])
+disp(['noise level=' num2str(leveldBSPLNoise)])
+
+global DRNLParams
+disp(['attenuation factor =' ...
+    num2str(DRNLParams.rateToAttenuationFactor, '%5.3f') ])
+disp(['attenuation factor (probability)=' ...
+    num2str(DRNLParams.rateToAttenuationFactorProb, '%5.3f') ])
+disp(AN_spikesOrProbability)
+disp(paramChanges)
+toc
+path(restorePath)
+