Matlab toolbox for DNN-based speech separation

This folder contains Matlab programs for a toolbox for supervised speech separation using deep neural networks (DNNs). This toolbox is composed by Jitong Chen, based on an earlier version written by Yuxuan Wang. The toolbox is further improved by Yuzhou Liu.

For technical details about DNN-based speech separation see the following paper:

Wang Y., Narayanan A. and Wang D.L. (2014): On training targets for supervised speech separation. IEEE/ACM Transactions on Audio, Speech, and Language Processing, vol. 22, pp. 1849-1858.
The toolbox is provided by the OSU Perception and Neurodynamics Laboratory (PNL).

To download the toolbox, click here

Description of folders and files

Lists of clean utterances for training and test.

Mixtures, features, masks and separated speech are stored here.

Code for DNN training and test, where dnn/main/ includes key functions for DNN training and test. dnn/pretraining/ includes code for unsupervised DNN pretraining.

Code for creating mixtures from noise and clean utterances.

Code for acoustic features and ideal mask calculation.

Sample data including clean speech and factory noise.

It configures feature type, noise type, training utterance list, test utterance list, mixture SNR, mask type, etc.

It loads configurations from load_config.m and runs a speech separation demo.


(Tested on Matlab 2015b under Ubuntu 14.04, Red Hat 6.7, OS X 10.11.3 and Windows 7.)
This demo uses 600 mixtures for training and 120 mixtures for testing.
The mixtures are created by mixing clean utterances with factory noise at -2 dB.
A 4-hidden-layer DNN with sigmoid hidden activation is used for mask estimation.

To run this demo, simply execute RUN.m in matlab. This matlab script will execute the following steps:

I. Load configurations in load_config.m:

II. Create data folders for this demo.

III. Perform DNN based speech separation in three steps:

When DNN training and test are finished, you will find the following speech separation results:
DATA/factory/dnn/WAVE/db-2/: mixture, clean speech and resynthesized speech.
DATA/factory/dnn/STORE/db-2/EST_MASK/: estimated masks and ideal masks.
DATA/factory/log_db-2.txt: log file for this demo.


We use rastamat ( to extract rastaplp and mfcc features. We use STOI ( as one of the objective speech intelligibility metrics.