Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mim/messl
Model-based EM Source Separation and Localization
https://github.com/mim/messl
Last synced: about 2 months ago
JSON representation
Model-based EM Source Separation and Localization
- Host: GitHub
- URL: https://github.com/mim/messl
- Owner: mim
- Created: 2012-03-05T02:58:35.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2017-01-13T02:32:09.000Z (almost 8 years ago)
- Last Synced: 2024-08-02T07:19:42.705Z (5 months ago)
- Language: Matlab
- Homepage:
- Size: 485 KB
- Stars: 36
- Watchers: 5
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-speech-enhancement - [Code
README
# Model-Based EM Source Separation and Localization
Copyright 2006-2009 Michael I Mandel and Ron Weiss, all rights reserved
and
Last updated 2009-08-20## Basic usage to separate two sources:
```matlab
addpath('./plottools/')% % Load stereo wav files of the same length and mix them
% [y1 fs] = wavread('data/src1.wav');
% [y2 fs] = wavread('data/src2.wav');
% lr = y1' + y2';% Load pre-mixed version of those two files (don't forget the transpose)
[lr fs] = wavread('data/mix.wav');
lr = lr';% Derive grid of tau values (use your numbers here)
tau = tauGrid(0.15, fs, 31);% Run MESSL
[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:
```matlab
% 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):```matlab
[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.```matlab
m2 = prob2mask(m);
yhat1 = reconstruct(m2, lr, 1);
yhat2 = reconstruct(m2, lr, 2);
```