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