fe_warp_piecewise_linear.h
/* ====================================================================
* Copyright (c) 2006 Carnegie Mellon University. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* This work was supported in part by funding from the Defense Advanced
* Research Projects Agency and the National Science Foundation of the
* United States of America, and the CMU Sphinx Speech Consortium.
*
* THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
* NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* ====================================================================
*
*/
#ifndef FE_WARP_PIECEWIDE_LINEAR_H
#define FE_WARP_PIECEWIDE_LINEAR_H
#include "sphinxbase/fe.h"
#ifdef __cplusplus
extern "C" {
#endif
#if 0
/* Fool Emacs. */
}
#endif
const char *
fe_warp_piecewise_linear_doc(void);
uint32
fe_warp_piecewise_linear_id(void);
uint32
fe_warp_piecewise_linear_n_param(void);
void
fe_warp_piecewise_linear_set_parameters(char const *param_str, float sampling_rate);
float
fe_warp_piecewise_linear_warped_to_unwarped(float nonlinear);
float
fe_warp_piecewise_linear_unwarped_to_warped(float linear);
void
fe_warp_piecewise_linear_print(const char *label);
#ifdef __cplusplus
}
#endif
#endif /* FE_WARP_PIECEWIDE_LINEAR_H */
/*
* Log record. Maintained by RCS.
*
* $Log: fe_warp_piecewise_linear.h,v $
* Revision 1.1 2006/02/16 00:18:26 egouvea
* Implemented flexible warping function. The user can specify at run
* time which of several shapes they want to use. Currently implemented
* are an affine function (y = ax + b), an inverse linear (y = a/x) and a
* piecewise linear (y = ax, up to a frequency F, and then it "breaks" so
* Nyquist frequency matches in both scales.
*
* Added two switches, -warp_type and -warp_params. The first specifies
* the type, which valid values:
*
* -inverse or inverse_linear
* -linear or affine
* -piecewise or piecewise_linear
*
* The inverse_linear is the same as implemented by EHT. The -mel_warp
* switch was kept for compatibility (maybe remove it in the
* future?). The code is compatible with EHT's changes: cepstra created
* from code after his changes should be the same as now. Scripts that
* worked with his changes should work now without changes. Tested a few
* cases, same results.
*
*/