c@11: classdef messl_massef < MASSEFseparator c@11: %MESSL_MASSEF Wrapper class for the MESSL algorithm. c@11: % c@11: % A wrapper class for the MESSL algorithm (https://github.com/mim/messl). c@11: % c@11: % MESSL_MASSEF properties: c@11: % label - A label for the instance of the algorithm (shown in c@11: % the results file). c@11: % estTag - Tags for the estimated outputs. c@11: % fs - The sampling frequency that the separator will run c@11: % at. c@11: % c@11: % MESSL_MASSEF methods: c@11: % messl_massef - Create an instance of the algorithm. c@11: % separate - Run the separation algorithm on the time-domain c@11: % mixture. c@11: % c@11: % See also MASSEF. c@11: c@11: % Copyright 2016 University of Surrey. c@11: c@11: properties % Public properties c@11: fs % Sampling frequency c@11: end c@11: c@11: methods c@11: c@11: function obj = messl_massef(fs) % constructor c@11: %MESSL_MASSEF Create an instance of the separation algorithm c@11: % c@11: % OBJ = MESSL_MASSEF(FS) creates an instance of the MESSL c@11: % algorithm at the sampling frequency FS. c@11: c@11: % this code creates an instance of the object c@11: obj.label = 'MESSL'; c@11: obj.estTag = {'Fancier usage'}; c@11: obj.fs = fs; c@11: c@11: % check dependency is compiled c@11: iosr.general.checkMexCompiled('logProbGmm.cpp'); c@11: c@11: end c@11: c@11: % separation c@11: function [signal,mask,est_azis,est_eles] = separate(obj,mixture) c@11: %SEPARATE separate the mixture c@11: % c@11: % SIGNAL = OBJ.SEPARATE(MIXTURE) separates the time-domain c@11: % mixture signal MIXTURE and produces the estimated output c@11: % SIGNAL. c@11: c@11: lr = mixture'; c@11: tau = tauGrid(0.15, obj.fs, 31); c@11: c@11: m = messl(lr, tau, 2, 'vis', 1, 'ildPriorPrec', 3, ... c@11: 'GarbageSrc', 1, 'sr', 16000, 'vis', 0); c@11: c@11: m2 = prob2mask(m); c@11: signal = reconstruct(m2, lr, 1); c@11: c@11: mask = []; c@11: est_azis = []; c@11: est_eles = []; c@11: c@11: end c@11: c@11: end c@11: c@11: end