1 # Copyright (c) 2008 Carnegie Mellon University. All rights
4 # You may copy, modify, and distribute this code under the same terms
5 # as PocketSphinx or Python, at your convenience, as long as this
6 # notice is not removed.
8 # Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
11 ctypedef float float32
13 ctypedef double float64
15 # Get Python stuff to access stdio
16 cdef extern from "Python.h":
18 FILE *PyFile_AsFile(object)
19 void *PyMem_Malloc(size_t n)
20 void PyMem_Free(void *p)
21 object PyString_FromStringAndSize(char *v, Py_ssize_t len)
23 cdef extern from "sphinxbase/logmath.h":
24 ctypedef struct logmath_t
25 logmath_t *logmath_init(float64 base, int shift, int use_table)
26 logmath_t *logmath_retain(logmath_t *lmath)
27 int logmath_free(logmath_t *lmath)
29 int logmath_log(logmath_t *lmath, float64 p)
30 float64 logmath_exp(logmath_t *lmath, int p)
32 int logmath_ln_to_log(logmath_t *lmath, float64 p)
33 float64 logmath_log_to_ln(logmath_t *lmath, int p)
35 int logmath_log10_to_log(logmath_t *lmath, float64 p)
36 float64 logmath_log_to_log10(logmath_t *lmath, int p)
38 int logmath_add(logmath_t *lmath, int p, int q)
40 int logmath_get_zero(logmath_t *lmath)
42 cdef extern from "sphinxbase/cmd_ln.h":
43 ctypedef struct cmd_ln_t
45 cmd_ln_t *cmd_ln_parse_r(cmd_ln_t *inout_cmdln, arg_t * defn,
46 int argc, char **argv, int strict)
47 void cmd_ln_free_r(cmd_ln_t *cmdln)
48 float32 cmd_ln_float32_r(cmd_ln_t *cmdln, char *key)
49 int32 cmd_ln_int32_r(cmd_ln_t *cmdln, char *key)
50 int cmd_ln_boolean_r(cmd_ln_t *cmdln, char *key)
51 char *cmd_ln_str_r(cmd_ln_t *cmdln, char *key)
53 cdef extern from "sphinxbase/ckd_alloc.h":
54 void *ckd_calloc(int n, int size)
55 char *ckd_salloc(char *str)
56 void ckd_free(void *ptr)
58 cdef extern from "sphinxbase/fsg_model.h":
59 ctypedef struct fsg_model_t
61 cdef extern from "sphinxbase/ngram_model.h":
62 ctypedef enum ngram_file_type_t:
67 ctypedef enum ngram_case_t:
70 ctypedef struct ngram_model_t
71 ngram_model_t *ngram_model_read(cmd_ln_t *config,
73 ngram_file_type_t file_type,
75 ngram_model_t *ngram_model_set_read(cmd_ln_t *config,
78 ngram_model_t *ngram_model_retain(ngram_model_t *model)
79 int ngram_model_free(ngram_model_t *model)
81 int ngram_model_recode(ngram_model_t *model, char *frum, char *too)
82 int ngram_model_casefold(ngram_model_t *model, ngram_case_t kase)
83 int ngram_model_write(ngram_model_t *model, char *file_name,
84 ngram_file_type_t format)
86 int ngram_model_apply_weights(ngram_model_t *model,
87 float32 lw, float32 wip, float32 uw)
88 float32 ngram_model_get_weights(ngram_model_t *model, int32 *out_log_wip,
91 int32 ngram_wid(ngram_model_t *model, char *word)
92 char *ngram_word(ngram_model_t *model, int32 wid)
93 int32 ngram_unknown_wid(ngram_model_t *model)
94 int32 ngram_zero(ngram_model_t *model)
96 int32 ngram_ng_score(ngram_model_t *model, int32 wid,
97 int32 *history, int32 n_hist, int32 *n_used)
98 int32 ngram_ng_prob(ngram_model_t *model, int32 wid,
99 int32 *history, int32 n_hist, int32 *n_used)
101 int32 ngram_model_add_word(ngram_model_t *model,
102 char *word, float32 weight)
104 int32 ngram_model_get_size(ngram_model_t *model)
105 int32 *ngram_model_get_counts(ngram_model_t *model)
106 ctypedef struct ngram_iter_t
107 ngram_iter_t *ngram_ng_iter(ngram_model_t *model, int32 wid,
108 int32 *history, int32 n_hist)
109 ngram_iter_t *ngram_model_mgrams(ngram_model_t *model, int m)
110 int32 *ngram_iter_get(ngram_iter_t *itor,
113 ngram_iter_t *ngram_iter_next(ngram_iter_t *itor)
114 ngram_iter_t *ngram_iter_successors(ngram_iter_t *itor)
115 void ngram_iter_free(ngram_iter_t *itor)
117 cdef extern from "sphinxbase/huff_code.h":
118 ctypedef struct huff_code_t
119 huff_code_t *huff_code_build_int(int *values, int *frequencies, int nvals)
120 huff_code_t *huff_code_build_str(char **values, int *frequencies, int nvals)
121 huff_code_t *huff_code_read(FILE *infh) except NULL
122 int huff_code_write(huff_code_t *hc, FILE *outfh) except -1
123 int huff_code_dump(huff_code_t *hc, FILE *dumpfh) except -1
124 huff_code_t *huff_code_retain(huff_code_t *hc)
125 int huff_code_free(huff_code_t *hc)
126 FILE *huff_code_attach(huff_code_t *hc, FILE *fh, char *mode)
127 FILE *huff_code_detach(huff_code_t *hc)
128 int huff_code_encode_int(huff_code_t *hc, int sym, unsigned int *outcw)
129 int huff_code_encode_str(huff_code_t *hc, char *sym, unsigned int *outcw)
130 int huff_code_decode_int(huff_code_t *hc, int *outval,
131 char **inout_data, size_t *inout_dlen,
133 char *huff_code_decode_str(huff_code_t *hc,
134 char **inout_data, size_t *inout_dlen,
138 cdef class NGramModel:
139 cdef ngram_model_t *lm
140 cdef logmath_t *lmath
141 cdef readonly float lw, wip, uw
143 cdef set_lm(NGramModel self, ngram_model_t *lm)
144 cdef set_lmath(NGramModel self, logmath_t *lmath)
147 cdef logmath_t *lmath
149 cdef class NGramIter:
151 cdef ngram_iter_t *itor
154 cdef readonly float log_prob, log_bowt
155 cdef readonly object words
157 cdef set_iter(NGramIter self, ngram_iter_t *itor)