• Main Page
  • Related Pages
  • Data Structures
  • Files
  • File List
  • Globals

src/libpocketsphinx/s2_semi_mgau.h

00001 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
00002 /* ====================================================================
00003  * Copyright (c) 1999-2004 Carnegie Mellon University.  All rights
00004  * reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  *
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, this list of conditions and the following disclaimer. 
00012  *
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in
00015  *    the documentation and/or other materials provided with the
00016  *    distribution.
00017  *
00018  * This work was supported in part by funding from the Defense Advanced 
00019  * Research Projects Agency and the National Science Foundation of the 
00020  * United States of America, and the CMU Sphinx Speech Consortium.
00021  *
00022  * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 
00023  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
00024  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00025  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
00026  * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00027  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
00028  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
00029  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
00030  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
00031  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
00032  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033  *
00034  * ====================================================================
00035  *
00036  */
00037 /*
00038  * Interface for "semi-continuous vector quantization", a.k.a. Sphinx2
00039  * fast GMM computation.
00040  */
00041 
00042 #ifndef __S2_SEMI_MGAU_H__
00043 #define __S2_SEMI_MGAU_H__
00044 
00045 /* SphinxBase headesr. */
00046 #include <fe.h>
00047 #include <logmath.h>
00048 #include <mmio.h>
00049 
00050 /* Local headers. */
00051 #include "hmm.h"
00052 #include "kdtree.h"
00053 #include "bin_mdef.h"
00054 
00055 typedef struct vqFeature_s vqFeature_t;
00056 
00057 typedef struct s2_semi_mgau_s s2_semi_mgau_t;
00058 struct s2_semi_mgau_s {
00059     cmd_ln_t *config;   /* configuration parameters */
00060 
00061     mean_t  **means;    /* mean vectors foreach feature */
00062     var_t   **vars;     /* inverse var vectors foreach feature */
00063     var_t   **dets;     /* det values foreach feature */
00064 
00065     uint8 ***mixw;     /* mixture weight distributions */
00066     mmio_file_t *sendump_mmap;/* memory map for mixw (or NULL if not mmap) */
00067 
00068     int32 n_feat;       /* Number of feature streams */
00069     int32 *veclen;      /* Length of feature streams */
00070     int32 n_density;    /* Number of mixtures per codebook */
00071     int32 n_sen;        /* Number of senones */
00072     int32 topn;         /* Number of top densities to compute (<S2_MAX_TOPN) */
00073 
00074     kd_tree_t **kdtrees;
00075     uint32 n_kdtrees;
00076     uint32 kd_maxdepth;
00077     int32 kd_maxbbi;
00078 
00079     int32 num_frames;
00080     int32 ds_ratio;
00081 
00082     /* Top-N scores and codewords from current, last frame. */
00083     vqFeature_t **f, **lastf;
00084 
00085     /* Log-add table for compressed values. */
00086     logmath_t *lmath_8b;
00087 };
00088 
00089 s2_semi_mgau_t *s2_semi_mgau_init(cmd_ln_t *config, logmath_t *lmath, bin_mdef_t *mdef);
00090 
00091 void s2_semi_mgau_free(s2_semi_mgau_t *s);
00092 
00093 int32 s2_semi_mgau_frame_eval(s2_semi_mgau_t *s,
00094                               int16 *senone_scores,
00095                               int32 *senone_active,
00096                               int32 n_senone_active,
00097                               mfcc_t **featbuf,
00098                               int32 frame,
00099                               int32 compallsen,
00100                               int32 *out_bestidx);
00101 
00102 int32 s2_semi_mgau_load_kdtree(s2_semi_mgau_t *s, const char *kdtree_path,
00103                                uint32 maxdepth, int32 maxbbi);
00104 
00105 
00106 #endif /*  __S2_SEMI_MGAU_H__ */

Generated on Thu Jan 27 2011 for PocketSphinx by  doxygen 1.7.1