⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsg_search.h

📁 WinCE平台上的语音识别程序
💻 H
字号:
/* ==================================================================== * Copyright (c) 1999-2004 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 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. * * ==================================================================== * *//* * fsg_search.h -- Search structures for FSM decoding. *  * ********************************************** * CMU ARPA Speech Project * * Copyright (c) 2004 Carnegie Mellon University. * ALL RIGHTS RESERVED. * ********************************************** */#ifndef __S2_FSG_SEARCH_H__#define __S2_FSG_SEARCH_H__#include <glist.h>#include <fsg_lextree.h>#include <fsg_history.h>#include <fbs.h>typedef struct fsg_search_s {  glist_t fsglist;		/* List of all FSGs loaded */    word_fsg_t *fsg;		/* Currently active FSG; NULL if none.  One				   must be made active before starting FSG				   decoding */  fsg_lextree_t *lextree;	/* Lextree structure for the currently				   active FSG */  fsg_history_t *history;	/* For storing the Viterbi search history */    glist_t pnode_active;		/* Those active in this frame */  glist_t pnode_active_next;	/* Those activated for the next frame */    int32 beam_orig;		/* Global pruning threshold */  int32 pbeam_orig;		/* Pruning threshold for phone transition */  int32 wbeam_orig;		/* Pruning threshold for word exit */  float32 beam_factor;		/* Dynamic/adaptive factor (<=1) applied to above				   beams to determine actual effective beams.				   For implementing absolute pruning. */  int32 beam, pbeam, wbeam;	/* Effective beams after applying beam_factor */    int32 frame;			/* Current frame */  int32 bestscore;		/* For beam pruning */  int32 bpidx_start;		/* First history entry index this frame */    search_hyp_t *hyp;		/* Search hypothesis */  int32 ascr, lscr;		/* Total acoustic and lm score for utt */    int32 n_hmm_eval;		/* Total HMMs evaluated this utt */  int32 n_sen_eval;		/* Total senones evaluated this utt */    int32 state;			/* Whether IDLE or BUSY */} fsg_search_t;/* Access macros */#define fsg_search_frame(s)	((s)->frame)/* * Create, initialize and return a search module for the given FSM. * If no FSG is given (i.e., the argument is NULL), a search structure is * still created.  If an FSG is provided, it is made the currently active * FSG. */fsg_search_t *fsg_search_init (word_fsg_t *);/* * Lookup the FSG associated with the given name and return it, or NULL if * no match found. */word_fsg_t *fsg_search_fsgname_to_fsg (fsg_search_t *, char *name);/* * Add the given FSG to the collection of FSGs known to this search object. * The given fsg is simply added to the collection.  It is not automatically * made the currently active one. * The name of the new FSG must not match any of the existing ones.  If so, * FALSE is returned.  If successfully added, TRUE is returned. */boolean fsg_search_add_fsg (fsg_search_t *, word_fsg_t *);/* * Delete the given FSG from the known collection.  Free the FSG itself, * and if it was the currently active FSG, also free the associated search * structures and leave the current FSG undefined. */boolean fsg_search_del_fsg (fsg_search_t *, word_fsg_t *);/* Like fsg_search_del_fsg(), but identifies the FSG by its name */boolean fsg_search_del_fsg_byname (fsg_search_t *, char *name);/* * Switch to a new FSG (identified by its string name).  Must not be invoked * when search is busy (ie, in the midst of an utterance.  That's an error * and FALSE is returned.  If successful, returns TRUE. */boolean fsg_search_set_current_fsg (fsg_search_t *, char *);/* * Deallocate search structure. */void fsg_search_free (fsg_search_t *);/* * Prepare the FSG search structure for beginning decoding of the next * utterance. */void fsg_search_utt_start (fsg_search_t *);/* * Windup and clean the FSG search structure after utterance.  Fill in the * results of search: fsg_search_t.{hyp,ascr,lscr,frame}.  (But some fields * of hyp are left unfilled for now: conf, latden, phone_perp.) */void fsg_search_utt_end (fsg_search_t *);/* * Step one frame forward through the Viterbi search. */void fsg_search_frame_fwd (fsg_search_t *);/* * Compute the partial or final Viterbi backtrace result.  (The result can * be retrieved using the API functions seach_result or search_get_hyp().) * If "check_fsg_final_state" is TRUE, the backtrace starts from the best * history entry ending in the final state (if it exists).  Otherwise it * starts from the best entry, regardless of the terminating state (usually * used for partial results). */void fsg_search_history_backtrace (fsg_search_t *search,				   boolean check_fsg_final_state);/* * Return the start (or final) state of the currently active FSG, if any. * Otherwise return -1. */int32 fsg_search_get_start_state (fsg_search_t *);int32 fsg_search_get_final_state (fsg_search_t *);/* * Set the start (or final) state of the current active FSG, if any, to the * given state.  This operation can only be done in between utterances, not * in the midst of one.  Return the previous start (or final) state if * successful.  Return -1 if any error. */int32 fsg_search_set_start_state (fsg_search_t *, int32 state);int32 fsg_search_set_final_state (fsg_search_t *, int32 state);/* * Update the global senone_active list using the list of active pnodes. */void fsg_search_sen_active (fsg_search_t *);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -