README for PNCC-2 (ver. 4) release -- 11/18/2012

If your Matlab Compiler Runtime is not in the default location (/opt/MATLAB/MATLAB_Compiler_Runtime/v714), you need to change the definition of MCRROOT in go_pncc_wrapper.sh accordingly.

To run:

$ ./go_pncc2_wrapper.sh <filelist> <config_file> <PEM_file>

The <config_file> parameter is optional; if it isn't specified, default values are used.

The <PEM_file> is optional, as well.

One example of a config file (with the default values) is included. It's called testConfigFile.

The definitions of the parameters are as follows:
fs --> sampling rate (default: 16khz)
feat_name --> name of feature for sphere header (default: cmu_feat)
appDeltas --> set to 1 to append delta coefficients; if this is 0, then del_width is irrelevant (default: 1)
del_width --> parameter for calculating all delta coefficients with deltas.m as supplied by Vikramjit; always set to some value, even if appDeltas is 0 (default: 5)
numFilts --> number of filters in the filter bank (default: 40)*
dLowFreq --> bottom edge frequency for filter bank (default: 200)*
dHighFreq --> high edge frequency for filter bank (default: 8000)*
cmn --> set to 1 to impose cepstral mean subtraction before the calculation of the deltas & double-deltas (default: 1)
fileType --> format of input audio, can be 'sph' or 'wav' (default: sph)
addDither --> setting to 1 adds dither to counteract adverse effects of digital zeros (default: 1)**
overwrite --> set to 1 to overwrite output files that already exist (default: 0)
pbs --> set to 0 to turn off medium-time asymmetric noise suppression (ANS) and temporal masking (default: 1)
ppn --> set to 0 to turn off mean power normalization (default: 1)
numDeltas --> the highest order of deltas to append; e.g. numDeltas = 2 appends deltas and double-deltas (default: 2)
numcep --> the number of cepstral coefficients to retain before computing deltas (default: 13)
skipC0 --> set to 1 to store coefficients 1 through numcep, set to 0 to store 0 through numcep-1 (default: 0)
deltaSpec --> compute "delta-spectral" cepstral coefficients instead of conventional delta cepstra (default: 1)
spb --> perform small power boosting (default: 1)
hard_limit --> process only the sign of the incoming speech waveform (default: 0)

IMPORTANT: The configuration file must contain all the parameters and they must not be rearranged. If this is problematic, another version that more intelligently parses the contents of the configuration file can be developed.

Footnotes:
*These values probably should change for 8kHz sampling rate... TBD
**We used the method suggested by CRSS

Changes from version 1 (pncc-1):
1. The binary was compiled as follows: >> mcc -R -singleCompThread -R -nodisplay -R -nojvm -m pncc_wrapper
2. A {0,1} option for cepstral mean subtraction is included

Changes from version 2 (pncc-1):
1. Added a {0,1} option for power bias subtraction (pbs)
2. Added a {0,1} option for peak power normalization (ppn)

Changes from version 3 (pncc-1):
1. Extended functionality for arbitrary-order delta coefficients
2. The script now uses readsph from VOICEBOX to load sphere files and MATLAB's built-in wavread to load wav files
3. The entire PNCC algorithm is fundamentally different; versions preceding 4 used the ICASSP 2010 version of PNCC utilizing medium-time power bias subtraction ... this version uses the ICASSP 2012 version of PNCC incorporating medium-time ANS, temporal masking, and automatic SAD

Changes from version 4 (pncc-1):
1. Added the parameters numcep and skipC0

Changes from pncc-1:
1. Added an option to compute delta-spectral cepstral coefficients, instead of conventional delta cepstra
2. Added an option to additionally perform small power boosting

Changes from pncc-2, version 1:
1. Added a mechanism to automatically adjust the input file's sampling rate so that it is matched to the one specified in the configuration file or default settings

Changes from pncc-2, version 2:
1. Added option to hard limit (i.e. retain only the sign of) the incoming signal -- may be useful in clipping
2. Began adding support for a PEM file -- NOT COMPLETED
3. Updated maximum duration of input to be one hour in accordance with the API specifications

Changes from pncc-2, version 3:
1. Added support for PEM files

Mark Harvilla (mharvill@cs.cmu.edu)
Carnegie Mellon University
November 18, 2012 
