1 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */ 2 /* ==================================================================== 3 * Copyright (c) 2007 Carnegie Mellon University. All rights 4 * reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * 18 * This work was supported in part by funding from the Defense Advanced 19 * Research Projects Agency and the National Science Foundation of the 20 * United States of America, and the CMU Sphinx Speech Consortium. 21 * 22 * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 23 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 24 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 25 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY 26 * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 * 34 * ==================================================================== 35 * 36 * Author: David Huggins-Daines <dhuggins@cs.cmu.edu> 37 */ 38 39 #ifndef __GST_POCKETSPHINX_H__ 40 #define __GST_POCKETSPHINX_H__ 41 42 #include <gst/gst.h> 43 #include <pocketsphinx.h> 44 45 G_BEGIN_DECLS 46 47 #define GST_TYPE_POCKETSPHINX \ 48 (gst_pocketsphinx_get_type()) 49 #define GST_POCKETSPHINX(obj) \ 50 (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_POCKETSPHINX,GstPocketSphinx)) 51 #define GST_POCKETSPHINX_CLASS(klass) \ 52 (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_POCKETSPHINX,GstPocketSphinxClass)) 53 #define GST_IS_POCKETSPHINX(obj) \ 54 (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_POCKETSPHINX)) 55 #define GST_IS_POCKETSPHINX_CLASS(klass) \ 56 (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_POCKETSPHINX)) 57 58 typedef struct _GstPocketSphinx GstPocketSphinx; 59 typedef struct _GstPocketSphinxClass GstPocketSphinxClass; 60 61 struct _GstPocketSphinx 62 { 63 GstElement element; 64 65 GstPad *sinkpad, *srcpad; 66 67 ps_decoder_t *ps; 68 cmd_ln_t *config; 69 gchar *latdir; /**< Output directory for word lattices. */ 70 int n_best_size; /**< Size of the returned B-best list */ 71 72 GHashTable *arghash; 73 gboolean listening; 74 75 GstClockTime last_result_time; /**< Timestamp of last partial result. */ 76 char *last_result; /**< String of last partial result. */ 77 }; 78 79 struct _GstPocketSphinxClass 80 { 81 GstElementClass parent_class; 82 83 void (*partial_result) (GstElement *element, const gchar *hyp_str); 84 void (*result) (GstElement *element, const gchar *hyp_str); 85 }; 86 87 GType gst_pocketsphinx_get_type(void); 88 89 /* 90 * Boxing of lattices. 91 */ 92 #define PS_LATTICE_TYPE (ps_lattice_get_type()) 93 GType ps_lattice_get_type(void); 94 95 /* 96 * Boxing of decoder. 97 */ 98 #define PS_DECODER_TYPE (ps_decoder_get_type()) 99 GType ps_decoder_get_type(void); 100 101 G_END_DECLS 102 103 #endif /* __GST_POCKETSPHINX_H__ */ 104