MESSL code online

After getting a number of queries, I’ve realized that I should just put the matlab code for MESSL online, so everyone can use it. Note, however, that this is for noncommercial use only. If you would like to use it commercially, please contact me. Also let me know if you find it useful. And if you use it academically, I would appreciate it if you cited this paper:

Michael I. Mandel, Ron J. Weiss, and Daniel P. W. Ellis. Model-based expectation maximization source separation and localization. IEEE Transactions on audio, speech, and language processing, 18(2):382-394, February 2010. [ bib | DOI | .pdf | Abstract ]

Update 2012-05-24: I have moved the code to github to make it easier to distribute and track.

Here is the README for the code:

Model-Based EM Source Separation and Localization

Copyright 2006-2009 Michael I Mandel and Ron Weiss, all rights reserved
Last updated 2009-08-20

Basic usage to separate two sources:

% Load stereo wav files of the same length
y1 = wavread('XXX1.wav');
y2 = wavread('XXX2.wav');
lr = y1 + y2;

[m,p] = messl(lr, tau, 2, 'vis', 1);

% Reconstruct wavforms from masks
yhat1 = reconstruct(m, lr, 1);
yhat2 = reconstruct(m, lr, 2);

Fancier usage, initialized from PHAT-histogram:

% Localize and then run MESSL
tdoa = phatLoc(LR, tau, 2, 1024, 1);
[m,p] = messl(lr, tau, 2, 'vis', 1, 'tauPosInit', tdoa);

Even fancier usage, garbage source and ILD prior (better in reverb,
but only when using dummy-head recordings):

[m,p] = messl(lr, tau, 2, 'vis', 1, 'ildPriorPrec', 3, ...
'GarbageSrc', 1, 'sr', 16000);

Can also use prob2mask to make the mask more definitive, i.e. closer
to binary, but not binary.

m2 = prob2mask(m);
yhat1 = reconstruct(m2, lr, 1);
yhat2 = reconstruct(m2, lr, 2);

This entry was posted in research. Bookmark the permalink.

One Response to MESSL code online

  1. Arastoo says:

    I used README text to run this program but I get erroe when I execute
    MESSL:[m,p] = messl(lr, tau, 2, ‘vis’, 1),
    I used databases which are in MESSL web page.

    erroe is:

    ??? Error using ==> plotall
    Too many input arguments.

    Error in ==> messl>visualizeParams at 1195
    plotall(mask_plots, ‘title’, mask_titles, ‘figure’, 1, ‘subplot’, …

    Error in ==> messl at 218
    visualizeParams(W, T, I, tau, sr, ipdParams, ildParams, spParams, …

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>