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

📄 lmclass.h

📁 CMU大名鼎鼎的SPHINX-3大词汇量连续语音识别系统
💻 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. * * ==================================================================== * *//* * lmclass.h -- Class-of-words objects in language models. *  * HISTORY *  * 19-Feb-2004  A Chan (archan@cs.cmu.edu) at Carnegie Mellon University * 		copied from sphinx 2 code base.  * 24-Mar-1998	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Started. */#ifndef _S3_LMCLASS_H_#define _S3_LMCLASS_H_#include "s3types.h"#ifdef __cplusplusextern "C" {#endif  /** \file lmclass.h      \brief Language model class.    */  /** * This module maintains classes of words and associated probabilities (P(word | class)). * Examples of such classes: days of week, months of year, digits, last names, etc. * Restrictions: *   - Classes cannot be nested; all classes are top-level classes. *   - Contents of classes are individual words.  Use "compound words" for phrases. * By convention, class names begin and end with [ and ], respectively.  Also, class * names are CASE-SENSITIVE. */  /** * A single word in an LM class. */typedef struct lmclass_word_s {    char *word;		/* The word string */    int32 dictwid;	/* Dictionary word id; NOT filled in by this module, but by			   the application if desired */    int32 LOGprob;	/* Conditional (LOG)probability of this word, given the class */    struct lmclass_word_s *next;	/* For linking together words in this LM class,					   in no particular order. */} *lmclass_word_t;  /** * An LM class object. */typedef struct lmclass_s {    char *name;			/* Name for this LM class */    lmclass_word_t wordlist;	/* Head of list of words in this class */    struct lmclass_s *next;	/* For linking together multiple LM classes in the				   application, in no particular order. */} *lmclass_t;  /** * Collection of LM classes.  Most applications would use multiple classes.  This data * type is provided as a convenience for maintaining several such classes. */typedef struct lmclass_set_s {    lmclass_t lmclass_list;	/* Head of list of LM classes in this module */} *lmclass_set_t;  /** Initialize and return a new, empty LMclass set */lmclass_set_t lmclass_newset ( void );  /** * Load LM classes defined in the given file into the given set, and return the new, * updated set.  Note that the input file can contain several class definitions. * File format: *  *    LMCLASS <classname1> * 	<word1> [<prob1>] * 	<word2> [<prob2>] * 	... (each word, and its associated probability, in one line) *    END <classname1> *    LMCLASS <classname2> *      ... *    END <classname2> *    ... (as many classes as desired) *  * By convention, classname strings begin and end with [ and ] (Roni Rosenfeld). * But it is not a REQUIREMENT as far as this module is concerned. *  * Word probabilities are optional (as indicated by the [] above).  If p = sum of all * EXPLICITLY specified probs within a class, (1-p) will be uniformly distributed * between the remaining words in that class. *  * Lines beginning with a # IN THE FIRST COLUMN are comments and are ignored. */lmclass_set_t lmclass_loadfile (lmclass_set_t lmclass_set, char *file);  /** * Get the LMclass object for the given name from the given set. */lmclass_t lmclass_get_lmclass (lmclass_set_t set, char *name);  /** * Get the number of LMclass objects in the given set. */int32 lmclass_get_nclass (lmclass_set_t set);  /** Set the dictwid field of the given LMclass word entry to the given value */void lmclass_set_dictwid (lmclass_word_t w, int32 dictwid);  /** Various access functions (macros) */#define lmclass_getname(class)		((class)->name)#define lmclass_firstword(class)	((class)->wordlist)#define lmclass_nextword(class,w)	((w)->next)#define lmclass_getwid(w)		((w)->dictwid)#define lmclass_getword(w)		((w)->word)#define lmclass_getprob(w)		((w)->LOGprob)#define lmclass_isclass(cl)		((cl) != NULL)#define lmclass_isword(w)		((w) != NULL)#define lmclass_firstclass(set)		((set)->lmclass_list)#define lmclass_nextclass(set,cl)	((cl)->next)void lmclass_dump (lmclass_t cl, FILE *fp);void lmclass_set_dump (lmclass_set_t set, FILE *fp);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

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