00001
00010 #ifndef SEGSEG_SYNTAX_H_INCLUDED
00011 #define SEGSEG_SYNTAX_H_INCLUDED
00012 #include "segSyntax.h"
00013 #endif
00014
00015
00016
00017
00018
00019
00020 #define VOID -1
00021 #ifdef DEBUG
00022 #define ALIVE 1
00023 #define DEAD 0
00024 #endif
00025
00027 typedef struct segDpItem {
00028 long dpPtr;
00029 short dpEntryTime;
00030 char dpStat;
00031 #ifdef DEBUG
00032 char dpStatus;
00033 double dpScore;
00034 double dpStartProb;
00035 #endif
00036 } SEG_DP_ITEM;
00037
00038
00039
00040
00041
00042 #define NO_PRUN 0
00043 #define THRESH_PRUN 1
00044 #define N_BEST_PRUN 2
00047 typedef struct segPruningParameter {
00048 int method;
00049 double threshold;
00050 unsigned short nBestN;
00051 } SEG_PRUN_PARAM;
00052
00053
00054
00055
00057 typedef struct segDecoderParameter {
00058 double durScale;
00059 double durThreshold;
00060 double logDurThreshold;
00061 SEG_PRUN_PARAM startNodePrun;
00062 SEG_PRUN_PARAM endNodePrun;
00063 int flagPCPart;
00064 } SEG_DEC_PARAM;
00065
00066 #if 0
00067
00069
00070 typedef struct segAnnData {
00071 short start;
00072 short end;
00073 char *label;
00074 } SEG_ANN_DATA;
00075 #endif
00076
00077
00078
00079
00080 double segViterbiDecoder(SEG_DP_ITEM***, SEG_SYNTAX*, double**, int*, int, int, int, SEG_DEC_PARAM*);
00081 int *segRecoverStateSeq(int*, SEG_DP_ITEM**, SEG_SYNTAX*, int);
00082
00083 SEG_ANN_DATA *segRecoverRecogSeq(SEG_DP_ITEM**, SEG_SYNTAX*, int, int);
00084 SEG_STATE **segRecoverStateIds(int*, SEG_SYNTAX*, int);
00085 int segGetDurationLimits(int*, int*, SEG_MODEL_SET*, SEG_SYNTAX*, int);
00086 int segFreeDecoder(SEG_DP_ITEM**, int);
00087 void segFreeStateSeq(int*);
00088 #if 0
00089 int segWriteMLFData(SEG_ANN_DATA*, int, int, FILE*, char*);
00090 double segOutputProb(SEG_STATE*, double**, int, int, double**, int, int);
00091 void segSetDecoderParams(double, int, double, int, int, double, int, int, double, int);
00092 void segFreeDPHist(SEG_DP_ITEM**, int);
00093 int segFreeDPMat(SEG_DP_ITEM**, int);
00094 #endif
00095
00096
00097
00098
00099 #if 0
00100 void segSetDecoderParams(SEG_DEC_PARAM);
00101 double ViterbiDecoder(double**, int, int, SEG_SYNTAX, SEG_MODEL_SET, int, SEG_DP_ITEM***, double*, int*);
00102 void FreeDPHist(SEG_DP_ITEM**, int);
00103 int FreeDPMat(SEG_DP_ITEM**, int);
00104 int *RecoverStateSeq(SEG_SYNTAX, SEG_DP_ITEM**, int, int*);
00105 int RecoverSegSeq(SEG_SYNTAX, SEG_DP_ITEM**, int, int**, int**);
00106 SEG_ANN_DATA *RecoverRecogSeq(SEG_SYNTAX, SEG_DP_ITEM**, int, int);
00107 STATE_INFO **RecoverStateIds(SEG_SYNTAX, int*, int);
00108 int WriteMLFData(SEG_ANN_DATA*, int, int, FILE*, char*);
00109 int GetDurationLimits(SEG_MODEL_SET, SEG_SYNTAX, int, int*, int*);
00110 #endif
00111