14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * c42mul.h * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _h_c42mul_ 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define _h_c42mul_ 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef SET_RCSID 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic const char c42mul_h[] = "$Id: c42mul.h,v 1.8.6.8 2008/03/07 19:46:58 dahan Exp $"; 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "prelib.h" 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "utteranc.h" 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "duk_args.h" 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "setting.h" 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "srec_sizes.h" 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "search_network.h" 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "srec.h" 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "swimodel.h" 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectextern "C" 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Exception based error reporting */ 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define SETUP_RETURN(REC) ((REC)->err_code= setjmp ((REC)->except_buf)) 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define RETURN_ERROR(CODE) (rec->except_enabled ? longjmp(rec->except_buf, (CODE)) : SERVICE_ERROR(CODE)) 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define SET_ERROR(CODE) (rec->err_code= CODE) 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Main calls to multi-line recognition 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int multi_srec_viterbi(multi_srec *rec, 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project srec_eos_detector_parms* eosd, 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pattern_info *pattern, 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project utterance_info* utt); 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void multi_srec_get_result(multi_srec *rec); 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int activate_grammar_for_recognition(multi_srec* rec1, srec_context* context, const char* rule); 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int clear_grammars_for_recognition(multi_srec* rec1); 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void partial_traceback(multi_srec *rec, pattern_info *pattern, 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project utterance_info *utt); 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void begin_recognition(multi_srec *rec, int begin_syn_node); 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void end_recognition(multi_srec *rec); 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int add_acoustic_model_for_recognition(multi_srec* rec, const SWIModel* swimodel); 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int clear_acoustic_models_for_recognition(multi_srec* rec); 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void free_recognition(multi_srec *rec); 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int allocate_recognition(multi_srec *rec, 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int viterbi_prune_thresh, 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* score-based pruning threshold - only keep paths within this delta of best cost*/ 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_hmm_tokens, 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_fsmnode_tokens, 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_word_tokens, 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_altword_tokens, 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_wordends_per_frame, 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_fsm_nodes, 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_fsm_arcs, 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_frames, 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_model_states, 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_searches); 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int compare_model_indices(multi_srec *rec1, srec *rec2); 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void reset_utt_ended_in_result(multi_srec *rec, int sil_dur); 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int has_utt_ended_in_result(multi_srec *rec); 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if DO_STRESS_CALC 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void get_stress_in_segment(stress_info *stress, fepFramePkt *frmPkt, 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int start, int end, int relative_to_pullp); 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Utterance stuff moved in here 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int get_data_frame(preprocessed *predat, utterance_info *utt); 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int get_utterance_frame(preprocessed *predat, utterance_info *utt); 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int advance_utterance_frame(utterance_info *utt); 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int retreat_utterance_frame(utterance_info *utt); 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int copy_pattern_frame(utterance_info *oututt, preprocessed *prep); 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void prepare_data_frame(preprocessed *predat); 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void convert_adjustment_to_imelda(norm_info *norm, preprocessed *prep); 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int inherit_recognition_statistics(utterance_info *utt, multi_srec *recog, 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int norm_dim); 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 112