c@0: %% Example c@0: % c@9: %% First steps c@0: c@0: MASSEF.install; % you only need to do this once! c@0: MASSEF.start; % start MASSEF c@0: c@9: %% Make mixtures c@0: % Specify the source files: c@0: c@0: target_fns = {'s1.wav','s2.wav'}; % target filenames c@0: interferer_fns = {'s11.wav','s12.wav'}; % interferer filenames c@0: c@0: %% c@0: % Create some |iosr.bss.source| objects for targets and interferers: c@0: c@0: t(length(target_fns),1) = iosr.bss.source; c@0: i(length(interferer_fns),1) = iosr.bss.source; c@0: c@0: %% c@0: % Make sources from filenames: c@0: c@0: for n = 1:length(target_fns) c@0: t(n,1) = iosr.bss.source(target_fns{n}); c@0: end c@0: for n = 1:length(interferer_fns) c@0: i(n,1) = iosr.bss.source(interferer_fns{n}); c@0: end c@0: c@0: % Specify source spatial parameters: c@0: c@0: azimuths = [-5 5]; % target and interferer azimuths c@0: tirs = [-10 0]; % target-to-interferer ratios c@0: rooms = {'UniS_Room_A_BRIR_16k.sofa'}; % SOFA file for spatialisation c@0: c@0: %% c@0: % Generate the mixtures, in all combinations of the various mixture c@0: % parameters, and render the mixtures to disk. c@0: c@0: fs = 16000; c@0: c@0: mixtures = iosr.bss.generateMixtures(t,i,... c@0: 'sofa_paths',rooms,... c@0: 'azimuths',azimuths,... c@0: 'tirs',tirs,... c@0: 'fs',fs,... c@0: 'cache',true,... c@0: 'folder','mixture_temp',... c@0: 'combine','all',... c@0: 'decomposition','gammatone',... c@0: 'gammatone',struct(... c@0: 'cfs',iosr.auditory.makeErbCFs(20,7500,32),... c@0: 'frame',round(0.02*fs)... c@0: )... c@0: ); c@0: c@9: %% Instantiate the separation algorithm c@0: c@0: p = messl_massef(fs); c@0: c@11: %% c@11: % |messl_massef| is a wrapper class for the algorithm. The class implementation is shown below. c@11: c@0: %% Choose MASSEF options c@0: % Specify the parameters of the MASSEF object: c@0: c@0: options = struct( ... c@0: 'evalPEASS',false,... % don't run PEASS c@0: 'evalSTOI',false); % don't run STOI c@0: c@0: %% Run MASSEF c@0: c@0: massef = MASSEF(options); c@0: massef.execute(mixtures,p); c@0: c@0: %% c@0: % Once |execute| is complete, |massef| will be saved to c@0: % |Results/results.mat|. The performance data are stored in c@0: % |massef.results|. The full dataset can be recalled as a |Table| object in c@0: % the following way: c@0: c@0: resultsTable = massef.results.data; c@0: c@11: %% MESSL wrapper implementation c@13: % . c@13: % c@11: % messl_massef.m c@11: % c@11: % See for more information. c@11: c@0: %% See also c@0: % , . c@0: % c@0: % c@0: %
c@37: %

Copyright © 2017 University of Surrey
c@0: % Institute of Sound Recording, University of Surrey, UK

c@0: %