亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lpmerge.c

?? 隱馬爾科夫模型工具箱
?? C
字號(hào):
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   SPEECH                    *//*                       | | | | \   RECOGNITION               *//*                       =========   SOFTWARE                  */ /*                                                             *//*                                                             *//* ----------------------------------------------------------- *//* developed at:                                               *//*                                                             *//*      Speech Vision and Robotics group                       *//*      Cambridge University Engineering Department            *//*      http://svr-www.eng.cam.ac.uk/                          *//*                                                             *//* main authors: Valtcho Valtchev, Steve Young,                *//*               Julian Odell, Gareth Moore                    *//* ----------------------------------------------------------- *//*         Copyright:                                          *//*                                                             *//*          1994-2002 Cambridge University                     *//*                    Engineering Department                   *//*                                                             *//*   Use of this software is governed by a License Agreement   *//*    ** See the file License for the Conditions of Use  **    *//*    **     This banner notice must not be removed      **    *//*                                                             *//* ----------------------------------------------------------- *//*      File: LPMerge.c: probability merging                   *//* ----------------------------------------------------------- */char *lpmerge_version = "!HVER!LPMerge:   3.2 [CUED 09/12/02]";char *lpmerge_vc_id = "$Id: LPMerge.c,v 1.1 2002/12/19 16:35:33 ge204 Exp $";#include "HShell.h"     /* HMM ToolKit Modules */#include "HMem.h"#include "HMath.h"#include "HWave.h"#include "HLabel.h"#include "LWMap.h"      /* LM ToolKit Modules */#include "LGBase.h"     #include "LUtil.h"#include "LModel.h"#include "LPCalc.h"#include "LPMerge.h"#define T_TOP    0001       /* top level tracing */#define T_PROB   0020       /* probability calculation *//* -------------------------- Trace Flags ------------------------ */static int trace = 0;#define T_TOP  0001     /* Top Level tracing *//* ---------------- Configuration Parameters --------------------- */static ConfParam *cParm[MAXGLOBS];static int nParm = 0;            /* total num params *//* ---------------------- Global Variables ----------------------- *//* SetConfParms: set conf parms relevant to this tool */void InitPMerge(void){   int i;   Register(lpmerge_version,lpmerge_vc_id);   nParm = GetConfig("LPMERGE", TRUE, cParm, MAXGLOBS);   if (nParm>0){      if (GetConfInt(cParm,nParm, "TRACE",&i))    trace = i;   }}/* ---------------------- Model interpolation  -------------------- */#define DOT_CHUNK     10000typedef struct {   BackOffLM *lm;            /* target model */   char    *mapFN;           /* LM symbol map file */   WordMap *wList;           /* the target word list */   int     nLModel;          /* number of LMs to merge */   LMInfo  *lmInfo;          /* array of LMs to merge */   int     **l2nId;          /* array of LabId -> NameId lookup tables */   int     **n2lId;          /* array of NameId -> LabId lookup tables */   int     *mId;             /* map array for speedy FE/SE copying */   int     progress;         /* progress tracking */} MergeInfo;/* InitTargetModel: initialise target model structure */static BackOffLM *InitTargetModel(MemHeap *heap, int nSize, WordMap *wList){   int i,N;   FLEntry *fe;   SMEntry *se;   LabId *srcId;   BackOffLM *lm;   NameId wordId;   N = wList->used;   lm = (BackOffLM *) New(heap,sizeof(BackOffLM));   lm->heap = heap;   lm->htab = CreateHashTable(11731,"Back-off LM hash table");   lm->gScale = 1.0;   lm->nSize = nSize;   lm->vocSize = N;   lm->probType = LMP_FLOAT;   /* initialise structures */   lm->lmvec = (float *) New(lm->heap,N*sizeof(float));   lm->fe_buff = (FLEntry *) New(lm->heap,(N)*sizeof(FLEntry));   lm->se_buff = (SMEntry *) New(lm->heap,(N)*sizeof(SMEntry));   lm->binMap =  (NameId *) New(lm->heap,(N)*sizeof(NameId));   lm->binMap--;   lm->root.sea = NULL; lm->root.nse = 0;   lm->root.fea = NULL; lm->root.nfe = 0;   lm->root.bowt = 0.0;   for (i=1;i<=nSize; i++) {      lm->gInfo[i].fmt  = LMF_TEXT;      lm->gInfo[i].boInfo = NULL;      lm->gInfo[i].nEntry = 0;   }   for (se=lm->se_buff,i=0; i<N; i++,se++) {      se->ndx = 0; se->prob = 0.0;   }   for (fe=lm->fe_buff,i=0; i<N; i++,fe++) {      fe->ndx = 0;      fe->bowt = 0.0;      fe->nse = fe->nfe = 0;      fe->sea = NULL;       fe->fea = NULL;   }   /* process each word in the list in turn */   for (srcId=wList->id,i=1; i<=N; i++,srcId++) {      wordId = GetNameId(lm->htab,(*srcId)->name,TRUE);      LM_INDEX(wordId) = i;      lm->binMap[i] = wordId;   }   return lm;}/* InitialiseMerge: create lookup tables */static void InitialiseMerge(MemHeap *heap, MergeInfo *mi){   int i,j,nw;   LMInfo *li;   Boolean inLM;   LabId  lid, *lip;   NameId nid, *nip;   int nWords, nLModel;   int *na, *la, **l2nId, **n2lId, *mId;      nWords = mi->lm->vocSize;   nLModel = mi->nLModel;      /* assign lookup indeces */   for (lip = mi->wList->id, j=1; j<=nWords; j++, lip++)     (*lip)->aux = (Ptr) j;   /* create LabId.aux -> NameId.aux lookup arrays (one per LM) */   l2nId = mi->l2nId = (int **) New(heap,nLModel*sizeof(int *));   for (li=mi->lmInfo, i=0; i<nLModel; i++, li++, na++) {      na = (int *) New(heap,(nWords+2)*sizeof(NameId));      for (lip = mi->wList->id, j=1; j<=nWords; j++, lip++) {	 nid = GetNameId(li->lm->htab, (*lip)->name, FALSE);	 na[j] = (nid==NULL) ? 0 : (int) nid->aux;       }      l2nId[i] = na;   }   /* create NameId.aux -> LabId.aux lookup arrays (one per LM) */   n2lId = mi->n2lId = (int **) New(heap,nLModel*sizeof(int *));   for (li=mi->lmInfo, i=0; i<nLModel; i++, li++, na++) {      nw = li->lm->vocSize;      la = (int *) New(heap,(nw+2)*sizeof(int));      for (nip=li->lm->binMap+1,j=1; j<=nw; j++,nip++) {	 lid = GetLabId((*nip)->name, FALSE);	 la[j] = (lid==NULL) ? 0 : (int) lid->aux;      }      n2lId[i] = la;   }   /* create index translation table */   mId = mi->mId = (int *) New(heap,(nWords+1)*sizeof(int));   for (i=0; i<=nWords; i++) mId[i] = -1;   /* ensure words present at least in one model */   for (lip = mi->wList->id, j=0; j<nWords; j++, lip++) {      for (inLM=FALSE,i=0; i<nLModel; i++, li++)	 if (l2nId[i][(int) ((*lip)->aux)]!=0)	    inLM = TRUE;      if (!inLM)	 HError(15620,"InitialiseMerge: Unable to find word %s in any model\n",(*lip)->name);   }   mi->progress = 0;}/* CalcBackOff: calculate/normalise backoff weights */static void CalcBackOff(BackOffLM *lm, FLEntry **context,int lev) {   int i,feId[LM_NSIZE];   SMEntry *se;   FLEntry *fe,*tgtFE;   float bosum,umass,*pvec;   tgtFE = context[lev];   if (lev > 0) {      for (i=0; i<lev; i++) feId[i] = context[i+1]->ndx;    /* context[0] is the root FLEntry */      pvec = GetNGramProbVecSE(lm,feId+1,lev,tgtFE);        /* shorten context */      bosum = 0.0;      umass = 0.0;      for (se = tgtFE->sea, i=0; i<tgtFE->nse; i++, se++) {	 bosum += pvec[se->ndx];	 umass += se->prob;      }      /* printf("umass = %f, bosum = %f\n",umass,bosum); */      tgtFE->bowt = (1.0-umass)/(1.0-bosum);      if (tgtFE->bowt < MIN_BOWT) tgtFE->bowt = MIN_BOWT;   }   for (fe=tgtFE->fea,i=0; i<tgtFE->nfe; i++,fe++) {      context[lev+1] = fe;      CalcBackOff(lm,context,lev+1);   }}/* MergeFE: recursive LM tree merge */static int MergeFE(MergeInfo *mi, FLEntry **context, FLEntry **srcFE, int lev) {   /* lev     - indicates current level of recursion (0-unigram, 1-bigram, etc) */   /* context - ngram context[0..lev] of FLEntry                                */   /* srcFE   - array[0..nLModel] of FLEntry corresponding to context[lev]      */   /*           entries can be NULL indicating that nGram doesn't exist         */   /* mi      - MergeInfo structure                                             */   LMInfo *li;   int ndx;   Boolean inLM;   BackOffLM *lm;   UInt feId[LM_NSIZE];   int i,j,l,nse,nfe,*la,total;   int nSize,nLModel,**l2nId,**n2lId,*mId;   FLEntry *srcFE1[MAX_LMODEL];   SMEntry *sea,*se,*tse,*se_buff;   FLEntry *fea,*fe,*sfe,*fe_buff,*tgtFE;   lm = mi->lm;   if (lm->probType!=LMP_FLOAT)      HError(15690,"MergeFE: Incompatible probability type");   nSize = lm->nSize;   l2nId = mi->l2nId;   n2lId = mi->n2lId;   mId = mi->mId;   nLModel = mi->nLModel;   tgtFE = context[lev];   tgtFE->bowt = 0.0;   tgtFE->nfe = 0;   tgtFE->fea = NULL;      /*------------------ Process SMEntry first ------------------*/   nse = 0;   se_buff = lm->se_buff;      for (li=mi->lmInfo,l=0;l<nLModel;l++,li++) {      /* process each model in turn */      if ((sfe = srcFE[l])==NULL)	 continue;      /* count unique SE's across all models */      la = n2lId[l];                                 /* cache index lookup row */      for (se=sfe->sea,j=0; j<sfe->nse; j++,se++) {   	 if ((ndx = la[se->ndx])==0)                 /* obtain actual target LM index */	   continue;	 if (mId[ndx] < 0 ) {	    mId[ndx] = nse;                          /* obtain translated index */	    se_buff[nse++].ndx = ndx;                /* !! indexed from 0 */	 }      }   }   for (se=se_buff,j=0; j<nse; j++,se++) se->prob = 0.0;   /* create SE storage */   sea = (SMEntry *) New(lm->heap,nse*sizeof(SMEntry));      /* process each model */   for (li=mi->lmInfo, i=0; i<nLModel; i++, li++) {      /* set up lm-specific lookup indeces */      la = l2nId[i];      for (se=se_buff,tse=sea,j=0; j<nse; j++,se++,tse++) {	 tse->ndx = la[se->ndx];	 tse->prob = 0.0;      }      /* setup context array */      for (inLM=TRUE, j=0; j<lev; j++) {	 if ((feId[j] = la[context[j+1]->ndx])==0)	    inLM = FALSE;      }      /* skip if any word in n-gram not in model */      if (!inLM)	 continue;      /* update probabilities */      GetNGramProbs(li->lm,feId,lev+1,sea,nse);      for (se=se_buff,tse=sea,j=0; j<nse; j++,se++,tse++) {	 if (tse->ndx > 0)#ifdef INTERPOLATE_MAX	    if ((x = tse->prob) > se->prob) se->prob = x;#else	    se->prob += li->weight * tse->prob;#endif      }   }	   memcpy(sea,se_buff,nse*sizeof(SMEntry));   qsort(sea,nse,sizeof(SMEntry),CmpSE);     tgtFE->nse = nse;   tgtFE->sea = sea;   /* reset buffers for next operation */   for (se=se_buff,i=0; i<nse; i++,se++) {      mId[se->ndx] = -1;      se->ndx = 0;      se->prob = 0.0;   }   if (lev==(nSize-1))      return tgtFE->nse;   /*------------------ Process FLEntry second ------------------*/   nfe = 0;   fe_buff = lm->fe_buff;   for (li=mi->lmInfo,l=0;l<nLModel;l++,li++) {      /* process each model in turn */      if ((sfe = srcFE[l])==NULL)	 continue;            /* merge FLEntry */      la = n2lId[l];      for (fe=sfe->fea,j=0; j<sfe->nfe; j++,fe++) {   	 if (fe->nse==0)                             /* remove useless FEs */ 	    continue;	 if ((ndx = la[fe->ndx])==0)	    continue;	 if (mId[ndx] < 0 ) {	    mId[ndx] = nfe;                          /* obtain translated index */	    fe_buff[nfe++].ndx = ndx;                /* !! indexed from 1 */	 }      }   }   fea = (FLEntry *) New(lm->heap,nfe*sizeof(FLEntry));  /* move FE to permanent storage */   memcpy(fea,fe_buff,nfe*sizeof(FLEntry));   qsort(fea,nfe,sizeof(FLEntry),CmpFE);     tgtFE->nfe = nfe;   tgtFE->fea = fea;   /* reset buffers for next operation */   for (fe=fe_buff,i=0; i<nfe; i++,fe++) {      mId[fe->ndx] = -1;      fe->ndx = 0;   }   /*------------------ Descend down the tree  --------------------*/   total = 0;   for (fe=tgtFE->fea,i=0; i<tgtFE->nfe; i++,fe++) {      context[lev+1] = fe;      for (l=0; l<nLModel; l++) {	 if ((sfe = srcFE[l])!=NULL)	    srcFE1[l] = FindFE(sfe->fea, 0, sfe->nfe, l2nId[l][fe->ndx]);	 else 	    srcFE1[l] = NULL;      }      nse = MergeFE(mi,context,srcFE1,lev+1);      {	 int ii;	 mi->progress += nse;	 if (mi->progress >= DOT_CHUNK) {	    for (ii=0; ii<mi->progress/DOT_CHUNK; ii++) printf(".");	    fflush(stdout);	    mi->progress = mi->progress % DOT_CHUNK;	 }      }      total += nse;   }   lm->gInfo[lev+2].nEntry += total;      return tgtFE->nse;}/* MergeModels: interpolate language models */BackOffLM *MergeModels(MemHeap *heap, LMInfo *lmInfo, int nLModel, 		       int nSize, WordMap *wList){   int i;   LMInfo *li;   MergeInfo *mi;   BackOffLM *tgtLM;   FLEntry *srcFE[MAX_LMODEL];  /* hold corresponding FLEntry */   FLEntry *context[LM_NSIZE];  /* cache context when descending down the tree */   mi = (MergeInfo *) New(heap,sizeof(MergeInfo));   mi->lmInfo = lmInfo;   mi->nLModel = nLModel;   mi->wList = wList;   mi->lm = tgtLM = InitTargetModel(heap,nSize,wList);   InitialiseMerge(heap,mi);   context[0] = &(tgtLM->root);   for (li=lmInfo,i=0; i<nLModel; i++,li++)      srcFE[i] = &(li->lm->root);   tgtLM->gInfo[1].nEntry = MergeFE(mi,context,srcFE,0);   CalcBackOff(tgtLM,context,0);#ifdef HTK_CRYPT   tgtLM->encrypt=FALSE;   for (li=lmInfo,i=0; i<nLModel; i++,li++)      tgtLM->encrypt = (tgtLM->encrypt || li->lm->encrypt);#endif   return tgtLM;}   /* ---------------------- Normalisation  -------------------- */static void NormaliseFE(FLEntry *tgtFE){   int i;   double psum;   FLEntry *fe;   SMEntry *se;   psum = 0.0;   for (se=tgtFE->sea,i=0; i<tgtFE->nse; i++,se++)      psum += se->prob;   for (se=tgtFE->sea,i=0; i<tgtFE->nse; i++,se++)      se->prob = se->prob/psum;   for (fe=tgtFE->fea,i=0; i<tgtFE->nfe; i++,fe++)      NormaliseFE(fe);}/* EXPORT->NormaliseLM: normalise probs and calculate back-off weights */void NormaliseLM(BackOffLM *lm) {   FLEntry *context[LM_NSIZE];   /* NormaliseFE(&lm->root); */   context[0] = &lm->root;   CalcBackOff(lm,context,0);}/* ---------------------- End of LPMerge.c  -------------------- */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩小说| 亚洲第一激情av| 国产一区二区三区免费播放| 欧美久久久久久蜜桃| 亚洲在线观看免费| 欧美在线一区二区| 一个色妞综合视频在线观看| 一本大道久久a久久综合婷婷| 国产精品美女视频| av亚洲精华国产精华精华| 国产精品美女久久久久高潮| 成人妖精视频yjsp地址| 中文字幕成人在线观看| 波多野结衣一区二区三区| 国产精品天美传媒| 91在线国产观看| 亚洲人成网站色在线观看| 日本高清成人免费播放| 亚洲免费av网站| 欧美视频精品在线观看| 视频一区二区中文字幕| 欧美一区二区三区喷汁尤物| 蜜桃91丨九色丨蝌蚪91桃色| 精品国产青草久久久久福利| 国产裸体歌舞团一区二区| 国产午夜精品在线观看| 99精品一区二区三区| 一区二区三区精品视频在线| 欧美麻豆精品久久久久久| 免费观看在线色综合| 久久精品在线观看| 91亚洲精华国产精华精华液| 亚洲电影中文字幕在线观看| 日韩丝袜情趣美女图片| 国产成人精品三级麻豆| 中文字幕综合网| 欧美日本在线一区| 国模套图日韩精品一区二区| 中日韩av电影| 欧亚一区二区三区| 蜜桃久久久久久久| 中文字幕二三区不卡| 色欧美乱欧美15图片| 日韩av午夜在线观看| 久久精子c满五个校花| 色域天天综合网| 麻豆成人在线观看| 国产精品欧美一区二区三区| 在线观看91精品国产入口| 日本午夜一本久久久综合| 国产午夜亚洲精品理论片色戒| 97精品超碰一区二区三区| 日韩av电影天堂| 国产精品欧美极品| 欧美麻豆精品久久久久久| 国产老妇另类xxxxx| 亚洲精品国产精品乱码不99| 欧美一二三区在线| 成人av影视在线观看| 日韩激情视频在线观看| 久久精品亚洲一区二区三区浴池| 日本精品一区二区三区高清| 久久精品国内一区二区三区| 中文字幕永久在线不卡| 欧美一区二区三区男人的天堂 | 亚洲日本丝袜连裤袜办公室| 欧美日韩免费电影| 国产精品99久| 亚洲国产精品自拍| 欧美高清一级片在线观看| 欧美日韩国产综合视频在线观看| 国产一区二区三区久久久| 亚洲综合区在线| 久久久不卡网国产精品一区| 欧美日韩免费在线视频| 成人h动漫精品| 美女视频第一区二区三区免费观看网站| 中文字幕国产精品一区二区| 欧美一区二区三区免费大片| 99久久精品免费精品国产| 免费看日韩a级影片| 亚洲免费毛片网站| 久久久亚洲午夜电影| 欧美另类高清zo欧美| 波波电影院一区二区三区| 奇米影视一区二区三区小说| 亚洲精品视频在线观看网站| 国产午夜三级一区二区三| 欧美一区二区三区不卡| 色综合久久综合| 国产成人免费9x9x人网站视频| 全国精品久久少妇| 亚洲国产sm捆绑调教视频| 日韩一区中文字幕| 国产人成亚洲第一网站在线播放 | 91丨porny丨国产| 狠狠色综合色综合网络| 日韩高清不卡在线| 一区二区三区日韩在线观看| 亚洲国产高清aⅴ视频| 欧美电影免费观看高清完整版在线观看| 在线一区二区三区四区| 成人高清在线视频| 国产电影一区二区三区| 久久91精品国产91久久小草| 天堂在线亚洲视频| 亚洲v中文字幕| 亚洲一区二区在线视频| 亚洲人成网站色在线观看| 国产精品久久久99| 中文字幕精品一区二区精品绿巨人| 2023国产一二三区日本精品2022| 日韩一区二区三区在线视频| 欧美日韩高清影院| 欧美优质美女网站| 91国内精品野花午夜精品 | 国产在线日韩欧美| 美女高潮久久久| 免费av网站大全久久| 日韩电影在线观看电影| 亚洲福利视频导航| 亚洲mv在线观看| 亚洲动漫第一页| 亚洲sss视频在线视频| 亚洲二区在线视频| 亚洲va在线va天堂| 天堂资源在线中文精品| 亚洲成av人片在www色猫咪| 亚洲在线视频免费观看| 亚洲一级二级在线| 亚洲图片欧美视频| 午夜精品福利一区二区三区蜜桃| 亚洲国产精品一区二区www | 亚洲一区二区三区四区在线| 一区二区三区久久| 亚洲国产一区二区视频| 亚洲成年人网站在线观看| 婷婷综合另类小说色区| 日本欧美韩国一区三区| 老司机免费视频一区二区三区| 久久99久久久久| 韩国精品一区二区| 国产精品77777| 成年人网站91| 一本色道久久综合亚洲aⅴ蜜桃| 91麻豆视频网站| 欧美性生活一区| 911精品产国品一二三产区| 欧美一区二区视频在线观看| 精品日本一线二线三线不卡| 久久久91精品国产一区二区三区| 国产精品伦一区二区三级视频| 日韩伦理av电影| 亚洲午夜电影在线| 六月婷婷色综合| 东方aⅴ免费观看久久av| av电影在线观看完整版一区二区| 在线视频一区二区三| 91 com成人网| 久久久99精品久久| 亚洲老妇xxxxxx| 午夜精品福利久久久| 韩国成人在线视频| 99精品热视频| 欧美久久久久久蜜桃| 久久久久久免费网| 18成人在线观看| 视频一区视频二区中文| 国产精品1区2区| 色婷婷香蕉在线一区二区| 欧美一区二区三区男人的天堂| 国产午夜亚洲精品羞羞网站| 亚洲黄色录像片| 麻豆免费看一区二区三区| 国产999精品久久久久久| 色哟哟国产精品免费观看| 日韩亚洲欧美一区二区三区| 国产目拍亚洲精品99久久精品| 亚洲精品国产精华液| 久久99精品国产| 色哟哟日韩精品| 精品动漫一区二区三区在线观看| 国产精品国产三级国产普通话三级 | 亚洲一区二区三区视频在线 | 亚洲va国产va欧美va观看| 国产在线不卡视频| 在线精品视频一区二区三四| 日韩精品一区二区三区在线观看| 国产精品美女久久久久aⅴ| 三级一区在线视频先锋| 国产成人激情av| 777色狠狠一区二区三区| 国产精品嫩草影院av蜜臀| 日韩不卡一区二区三区| 91网站黄www| 久久先锋资源网| 五月天一区二区三区| 成人午夜av电影| 日韩视频123| 亚洲精品一卡二卡|