/*************************************************************************** * A simple implementation in C++ of the autocorrelogram model used in: * Ma, N., Green, P., Barker, J. and Coy, A. (2007) Exploiting correlogram * structure for robust speech recognition with multiple speech sources. * Speech Communication, 49 (12): 874-891. * * The ACG model employs a Gammatone filterbank and is useful to reveal periodic * information of sounds. It is widely used as a front end of computational * auditory scene analysis (CASA) models, particularly for pitch estimation. * Detailed description about the ACG model can be found in (Ma et al. 2007) * and at http://www.dcs.shef.ac.uk/~ning/resources/correlogram * * This is a primitive implementation and requires the "fftw3" package * (http://www.fftw.org) to compute FFT. Compiled fftw3 libraries for Linux * x86, Linux x86_64 and Cygwin are included. Change the Makefile accordingly. * * It reads a WAV audio file, filters it with a Gammatone auditory filterbank, * and computes a running short-time autocorrelation on the output of each * filter with a Hann window. * * The ACG parameters defined in the AcgParam structure can be modified to suit * your own use, e.g. employing more frequency channels * * To compile the code, type "make". To compute ACG for the included example * "test.wav", type * ./acg test.wav test.acg * The ACG output is saved in the binary file "test.acg" as "float" numbers * (32 bits) with a header defined as: * struct AcgDataHeader * { * int _maxDelay; * int _numChans; * int _numFrames; * }; * * To read the ACG data, a MATLAB script is provided: "read_acg.m". Type * "help read_acg" in MATLAB for help on the script. * * Any bug reports or suggestions welcome. * * Ning Ma, University of Sheffield * n.ma@dcs.shef.ac.uk, 09 Aug 2007 ***************************************************************************/