Removing gstreamer plugin
[profile/ivi/pocketsphinx.git] / python / pocketsphinx.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 # Import SphinxBase C types
11 from sphinxbase cimport arg_t, cmd_ln_t, ngram_model_t, fsg_model_t, logmath_t
12
13 # Import SphinxBase extention types
14 from sphinxbase cimport NGramModel
15
16 # Finally, import this for SphinxBase functions (since there are too many to list)
17 cimport sphinxbase as sb
18
19 cdef extern from *:
20     ctypedef char** const_char_ptr_ptr "const char**"
21     ctypedef char* const_char_ptr "const char*"
22     ctypedef int size_t
23     ctypedef int int32
24     ctypedef char* raw_data_ptr "int16 *"
25
26 # System and Python headers we need
27 cdef extern from "stdio.h":
28     ctypedef struct FILE # oh dear...
29
30 cdef extern from "Python.h":
31     FILE *PyFile_AsFile(object p)
32     int PyString_AsStringAndSize(object p, char **buf, Py_ssize_t *len) except -1
33
34 # Don't rely on having PyGTK actually installed
35 cdef extern from "bogus_pygobject.h":
36     ctypedef struct PyGBoxed:
37         void *boxed
38     ctypedef struct PyGPointer:
39         void *pointer
40
41 # PocketSphinx declarations
42 cdef extern from "fsg_set.h":
43     ctypedef struct fsg_set_t
44     ctypedef struct fsg_set_iter_t
45
46 cdef extern from "ps_lattice.h":
47     ctypedef struct ps_lattice_t
48     ctypedef struct ps_latnode_t
49     ctypedef struct ps_latnode_iter_t
50     ctypedef struct ps_latlink_t
51     ctypedef struct ps_latlink_iter_t
52     ctypedef struct ps_decoder_t
53
54     ps_lattice_t *ps_lattice_read(ps_decoder_t *ps, char *file)
55     ps_lattice_t *ps_lattice_retain(ps_lattice_t *dag)
56     int ps_lattice_free(ps_lattice_t *dag)
57     int ps_lattice_write(ps_lattice_t *dag, char *filename)
58     logmath_t *ps_lattice_get_logmath(ps_lattice_t *dag)
59     ps_latnode_iter_t *ps_latnode_iter(ps_lattice_t *dag)
60     ps_latnode_iter_t *ps_latnode_iter_next(ps_latnode_iter_t *itor)
61     void ps_latnode_iter_free(ps_latnode_iter_t *itor)
62     ps_latnode_t *ps_latnode_iter_node(ps_latnode_iter_t *itor)
63     int ps_latnode_times(ps_latnode_t *node, short *out_fef, short *out_lef)
64     char *ps_latnode_word(ps_lattice_t *dag, ps_latnode_t *node)
65     char *ps_latnode_baseword(ps_lattice_t *dag, ps_latnode_t *node)
66     ps_latlink_iter_t *ps_latnode_exits(ps_latnode_t *node)
67     ps_latlink_iter_t *ps_latnode_entries(ps_latnode_t *node)
68     int ps_latnode_prob(ps_lattice_t *dag, ps_latnode_t *node, ps_latlink_t **out_link)
69     ps_latlink_iter_t *ps_latlink_iter_next(ps_latlink_iter_t *itor)
70     void ps_latlink_iter_free(ps_latlink_iter_t *itor)
71     ps_latlink_t *ps_latlink_iter_link(ps_latlink_iter_t *itor)
72     int ps_latlink_times(ps_latlink_t *link, short *out_sf)
73     ps_latnode_t *ps_latlink_nodes(ps_latlink_t *link, ps_latnode_t **out_src)
74     char *ps_latlink_word(ps_lattice_t *dag, ps_latlink_t *link)
75     char *ps_latlink_baseword(ps_lattice_t *dag, ps_latlink_t *link)
76     int ps_latlink_prob(ps_lattice_t *dag, ps_latlink_t *link, int *out_ascr)
77     ps_latlink_t *ps_latlink_pred(ps_latlink_t *link)
78     void ps_lattice_link(ps_lattice_t *dag, ps_latnode_t *src, ps_latnode_t *dest,
79                          int score, int ef)
80     ps_latlink_t *ps_lattice_traverse_edges(ps_lattice_t *dag, ps_latnode_t *start,
81                                             ps_latnode_t *end)
82     ps_latlink_t *ps_lattice_traverse_next(ps_lattice_t *dag, ps_latnode_t *end)
83     ps_latlink_t *ps_lattice_reverse_edges(ps_lattice_t *dag, ps_latnode_t *start,
84                                            ps_latnode_t *end)
85     ps_latlink_t *ps_lattice_reverse_next(ps_lattice_t *dag, ps_latnode_t *start)
86     ps_latlink_t *ps_lattice_bestpath(ps_lattice_t *dag, ngram_model_t *lmset,
87                                       float lwf, float ascale)
88     int ps_lattice_posterior(ps_lattice_t *dag, ngram_model_t *lmset, float ascale)
89     int ps_lattice_n_frames(ps_lattice_t *dag)
90
91 cdef extern from "pocketsphinx.h":
92     ctypedef struct ps_decoder_t
93     ctypedef struct ps_nbest_t
94     ctypedef struct ps_seg_t
95
96     ps_decoder_t *ps_init(cmd_ln_t *config)
97     int ps_reinit(ps_decoder_t *ps, cmd_ln_t *config)
98     ps_decoder_t *ps_retain(ps_decoder_t *ps)
99     void ps_free(ps_decoder_t *ps)
100     arg_t *ps_args()
101     cmd_ln_t *ps_get_config(ps_decoder_t *ps)
102     logmath_t *ps_get_logmath(ps_decoder_t *ps)
103     ngram_model_t *ps_get_lmset(ps_decoder_t *ps)
104     ngram_model_t *ps_update_lmset(ps_decoder_t *ps, ngram_model_t *lmset)
105     fsg_set_t *ps_get_fsgset(ps_decoder_t *ps)
106     fsg_set_t *ps_update_fsgset(ps_decoder_t *ps)
107     int ps_load_dict(ps_decoder_t *ps, char *dictfile,
108                      char *fdictfile, char *format)
109     int ps_save_dict(ps_decoder_t *ps, char *dictfile, char *format)
110     int ps_add_word(ps_decoder_t *ps, char *word, char *phones, int update)
111     int ps_decode_raw(ps_decoder_t *ps, FILE *rawfh,
112                       char *uttid, long maxsamps)
113     int ps_decode_senscr(ps_decoder_t *ps, FILE *senfh, char *uttid)
114     int ps_start_utt(ps_decoder_t *ps, char *uttid)
115     int ps_process_raw(ps_decoder_t *ps, raw_data_ptr data, size_t n_samples,
116                        int no_search, int full_utt)
117     int ps_end_utt(ps_decoder_t *ps)
118     const_char_ptr ps_get_hyp(ps_decoder_t *ps, int32 *out_best_score, const_char_ptr_ptr out_uttid)
119     int32 ps_get_prob(ps_decoder_t *ps, const_char_ptr_ptr out_uttid)
120     ps_lattice_t *ps_get_lattice(ps_decoder_t *ps)
121     ps_seg_t *ps_seg_iter(ps_decoder_t *ps, int32 *out_best_score)
122     ps_seg_t *ps_seg_next(ps_seg_t *seg)
123     char *ps_seg_word(ps_seg_t *seg)
124     void ps_seg_frames(ps_seg_t *seg, int *out_sf, int *out_ef)
125     int ps_seg_prob(ps_seg_t *seg, int32 *out_ascr, int32 *out_lscr, int32 *out_lback)
126     void ps_seg_free(ps_seg_t *seg)
127     ps_nbest_t *ps_nbest(ps_decoder_t *ps, int sf, int ef, char *ctx1, char *ctx2)
128     ps_nbest_t *ps_nbest_next(ps_nbest_t *nbest)
129     char *ps_nbest_hyp(ps_nbest_t *nbest, int32 *out_score)
130     ps_seg_t *ps_nbest_seg(ps_nbest_t *nbest, int32 *out_score)
131     void ps_nbest_free(ps_nbest_t *nbest)
132     void ps_get_utt_time(ps_decoder_t *ps, double *out_nspeech,
133                          double *out_ncpu, double *out_nwall)
134     void ps_get_all_time(ps_decoder_t *ps, double *out_nspeech,
135                          double *out_ncpu, double *out_nwall)
136
137 # Now, our extension classes
138 cdef class Decoder:
139     cdef ps_decoder_t *ps
140     cdef char **argv
141     cdef int argc
142     cdef set_boxed(Decoder self, box)
143
144 cdef class Lattice:
145     cdef ps_lattice_t *dag
146     cdef read_dag(Lattice self, Decoder ps, latfile)
147     cdef set_dag(Lattice self, ps_lattice_t *dag)
148     cdef set_boxed(Lattice self, box)
149     cdef readonly n_frames
150
151 cdef class LatLink:
152     cdef ps_latlink_t *link
153     cdef ps_lattice_t *dag # FIXME: This may or may not cause memory leaks?
154     cdef readonly char *word, *baseword
155     cdef readonly int sf, ef
156     cdef readonly double prob
157     cdef set_link(LatLink self, ps_lattice_t *dag, ps_latlink_t *link)
158
159 cdef class LatLinkIterator:
160     cdef ps_lattice_t *dag
161     cdef ps_latlink_iter_t *itor
162     cdef int first_link
163
164 cdef class LatNode:
165     cdef ps_latnode_t *node
166     cdef ps_lattice_t *dag # FIXME: This may or may not cause memory leaks?
167     cdef readonly char *word, *baseword
168     cdef readonly int sf, fef, lef
169     cdef readonly double prob
170     cdef readonly LatLink best_exit
171     cdef set_node(LatNode self, ps_lattice_t *dag, ps_latnode_t *node)
172
173 cdef class LatNodeIterator:
174     cdef ps_lattice_t *dag
175     cdef ps_latnode_iter_t *itor
176     cdef int first_node
177     cdef int start, end