Initial import to Tizen
[profile/ivi/sphinxbase.git] / python / sphinxbase.pxd
1 # Copyright (c) 2008 Carnegie Mellon University. All rights
2 # reserved.
3 #
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.
7 #
8 # Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
9
10 # C declarations
11 ctypedef float float32
12 ctypedef int int32
13 ctypedef double float64
14
15 # Get Python stuff to access stdio
16 cdef extern from "Python.h":
17     ctypedef struct FILE
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)
22
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)
28
29     int logmath_log(logmath_t *lmath, float64 p)
30     float64 logmath_exp(logmath_t *lmath, int p)
31
32     int logmath_ln_to_log(logmath_t *lmath, float64 p)
33     float64 logmath_log_to_ln(logmath_t *lmath, int p)
34
35     int logmath_log10_to_log(logmath_t *lmath, float64 p)
36     float64 logmath_log_to_log10(logmath_t *lmath, int p)
37
38     int logmath_add(logmath_t *lmath, int p, int q)
39
40     int logmath_get_zero(logmath_t *lmath)
41
42 cdef extern from "sphinxbase/cmd_ln.h":
43     ctypedef struct cmd_ln_t
44     ctypedef struct arg_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)
52
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)
57
58 cdef extern from "sphinxbase/fsg_model.h":
59     ctypedef struct fsg_model_t
60
61 cdef extern from "sphinxbase/ngram_model.h":
62     ctypedef enum ngram_file_type_t:
63         NGRAM_AUTO
64         NGRAM_ARPA
65         NGRAM_DMP
66         NGRAM_DMP32
67     ctypedef enum ngram_case_t:
68         NGRAM_UPPER
69         NGRAM_LOWER
70     ctypedef struct ngram_model_t
71     ngram_model_t *ngram_model_read(cmd_ln_t *config,
72                                     char *file_name,
73                                     ngram_file_type_t file_type,
74                                     logmath_t *lmath)
75     ngram_model_t *ngram_model_set_read(cmd_ln_t *config,
76                                         char *lmctlfile,
77                                         logmath_t *lmath)
78     ngram_model_t *ngram_model_retain(ngram_model_t *model)
79     int ngram_model_free(ngram_model_t *model)
80
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)
85
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,
89                                     int32 *out_log_uw)
90
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)
95
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)
100
101     int32 ngram_model_add_word(ngram_model_t *model,
102                                char *word, float32 weight)
103
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,
111                           int32 *out_score,
112                           int32 *out_bowt)
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)
116
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,
132                              int *inout_offset)
133     char *huff_code_decode_str(huff_code_t *hc,
134                                char **inout_data, size_t *inout_dlen,
135                                int *inout_offset)
136
137 # Extension classes
138 cdef class NGramModel:
139     cdef ngram_model_t *lm
140     cdef logmath_t *lmath
141     cdef readonly float lw, wip, uw
142
143     cdef set_lm(NGramModel self, ngram_model_t *lm)
144     cdef set_lmath(NGramModel self, logmath_t *lmath)
145
146 cdef class LogMath:
147     cdef logmath_t *lmath
148
149 cdef class NGramIter:
150     cdef NGramModel lm
151     cdef ngram_iter_t *itor
152     cdef int first_item
153     cdef int m
154     cdef readonly float log_prob, log_bowt
155     cdef readonly object words
156
157     cdef set_iter(NGramIter self, ngram_iter_t *itor)
158
159 cdef class HuffCode:
160     cdef huff_code_t *hc
161     cdef object fh