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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? htrain.c

?? 隱馬爾科夫模型工具箱
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   SPEECH                    *//*                       | | | | \   RECOGNITION               *//*                       =========   SOFTWARE                  */ /*                                                             *//*                                                             *//* ----------------------------------------------------------- *//* developed at:                                               *//*                                                             *//*      Speech Vision and Robotics group                       *//*      Cambridge University Engineering Department            *//*      http://svr-www.eng.cam.ac.uk/                          *//*                                                             *//*      Entropic Cambridge Research Laboratory                 *//*      (now part of Microsoft)                                *//*                                                             *//* ----------------------------------------------------------- *//*         Copyright: Microsoft Corporation                    *//*          1995-2000 Redmond, Washington USA                  *//*                    http://www.microsoft.com                 *//*                                                             *//*              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: HTrain.c   HMM Training Support Routines      *//* ----------------------------------------------------------- */char *htrain_version = "!HVER!HTrain:   3.2 [CUED 09/12/02]";char *htrain_vc_id = "$Id: HTrain.c,v 1.8 2002/12/19 16:37:11 ge204 Exp $";#include "HShell.h"#include "HMem.h"#include "HMath.h"#include "HSigP.h"#include "HAudio.h"#include "HWave.h"#include "HVQ.h"#include "HParm.h"#include "HLabel.h"#include "HModel.h"#include "HUtil.h"#include "HTrain.h"/* --------------------------- Trace Flags ------------------------- */#define T_TOP  00001       /* Top Level tracing */#define T_SEQ  00002       /* Trace sequence operations */#define T_CGE  00004       /* General cluster tracing */#define T_CLC  00010       /* Trace cluster convergence */#define T_DCM  00020       /* Dump cluster map after each cycle */#define T_CAL  00040       /* Trace item to cluster allocation */#define T_CDI  00100       /* Trace cluster distance calc */#define T_NAC  00200       /* Count accs created */#define T_ALD  00400       /* Trace acc load/dump */static int trace = 0;/* --------------------------- Initialisation ---------------------- */static ConfParam *cParm[MAXGLOBS];      /* config parameters */static int nParm = 0;static int maxIter = 10;               /* max num cluster iterations */static int minClustSize = 3;           /* min num vectors in cluster */static Boolean ldBinary = TRUE;        /* load/dump in binary */#define DoPreComps(hsKind) (hsKind==SHAREDHS||hsKind==PLAINHS)/* EXPORT->InitTrain: initialise configuration parameters */void InitTrain(void){   int i;   Boolean b;   Register(htrain_version,htrain_vc_id);   nParm = GetConfig("HTRAIN", TRUE, cParm, MAXGLOBS);   if (nParm>0){      if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i;      if (GetConfInt(cParm,nParm,"MAXCLUSTITER",&i)) maxIter = i;      if (GetConfInt(cParm,nParm,"MINCLUSTSIZE",&i)) minClustSize = i;      if (GetConfBool(cParm,nParm,"BINARYACCFORMAT",&b)) ldBinary = b;   }}/* -------------------- Generic Sequence Type ------------------- *//*  Items are stored within chained lists of blocks.  Items are   normally added to the end of the last block.  If the last  block is full, then the item is inserted into the first block  with a free item slot.  If all blocks are full, then a new  block is created and chained to the end of the list.*/   /* NewItemBlock: create and return an emptry ItemBlock */static IBLink NewItemBlock(MemHeap *x, int blkSize){   IBLink b;      if (trace&T_SEQ)      printf("HTrain: creating item block, %d items on stack %s\n",             blkSize,x->name);   b = (IBLink)New(x,sizeof(ItemBlock));   b->used = 0; b->next = NULL;   b->items = (Ptr *)New(x,sizeof(Ptr)*blkSize);   return b;}/* EXPORT->CreateSequence: create and return an empty sequence */Sequence CreateSequence(MemHeap *x, int blkSize){   Sequence s;      s = (Sequence)New(x,sizeof(SequenceInfo));   s->mem = x;    s->nItems = 0;   s->nFree = s->blkSize = blkSize;   s->hd = s->tl = NewItemBlock(x,blkSize);   return s;}/* EXPORT->StoreItem: store item in seq, extend if needed */void StoreItem(Sequence seq, Ptr item){   IBLink b;   if (seq->nFree==0){     /* add a block */      b = NewItemBlock(seq->mem,seq->blkSize);      seq->tl->next = b; seq->tl = b;      seq->nFree = seq->blkSize;   }   if (seq->tl->used < seq->blkSize) { /* try last block first */      b = seq->tl;      b->items[b->used++] = item;   }else{   /* otherwise search blocks for empty slot */      for (b = seq->hd; b->used == seq->blkSize; b = b->next)         if (b==NULL)            HError(7190,"StoreItem: free slot missing");      b->items[b->used++] = item;   }   --seq->nFree; ++seq->nItems;}/* FindItemBlock: find block containing i'th item, j is index in block */static IBLink FindItemBlock(Sequence seq, int i, int *j){   IBLink b;      if (i > seq->nItems)      HError(7171,"FindItemBlock: %d'th item from %d requested",             i,seq->nItems);   b = seq->hd;   while (i>b->used){      i -= b->used; b = b->next;   }   *j = i-1;   return b;}/* EXPORT->DeleteItem: delete i'th item */void DeleteItem(Sequence seq, int i){   IBLink b;   int j,k;      b = FindItemBlock(seq,i,&j);   --b->used;   for (k=j; k<b->used; k++)      b->items[k] = b->items[k+1];   ++seq->nFree; --seq->nItems;}/* EXPORT->GetItem: return ptr to the i'th item in sequence */Ptr GetItem(Sequence seq, int i){   IBLink b;   int j;      b = FindItemBlock(seq,i,&j);   return b->items[j];  }/* ------------ Segment (Observation Sequence) Storage ------------ *//* EXPORT->CreateSegStore: Create and return an empty segment store   suitable for observations of form obs. */SegStore CreateSegStore(MemHeap *x, Observation obs, int segLen){   SegStore ss;      ss = (SegStore)New(x,sizeof(SegStoreRec));   ss->mem = x;   ss->o = obs; ss->segLen = segLen;   ss->hasfv = (obs.pk&BASEMASK) != DISCRETE;   ss->hasvq = (obs.pk&HASVQ)  || (obs.pk&BASEMASK) == DISCRETE;   if (ss->hasfv) ss->fvSegs = CreateSequence(x,100);   if (ss->hasvq) ss->vqSegs = CreateSequence(x,100);   return ss;}/* EXPORT->LoadSegment: of obs in pbuf from start to end */void LoadSegment(SegStore ss, HTime start, HTime end, ParmBuf pbuf){   Sequence vq;   Sequence fv;   BufferInfo info;   long i,st,en,len;   int s,S = ss->o.swidth[0];   short *vqItem;   Vector *fvItem;      GetBufferInfo(pbuf,&info);   st = (long)(start/info.tgtSampRate);   en = (long)(end/info.tgtSampRate);   len = ObsInBuffer(pbuf);   if (en >= len) en = len-1;   if (st > en) {      HError(-7173,"LoadSegment: empty segment");      return;   }   if (ss->hasvq) vq = CreateSequence(ss->mem,ss->segLen);   if (ss->hasfv) fv = CreateSequence(ss->mem,ss->segLen);   for (i=st; i<=en; i++) {      if (ss->hasfv) { /* put new vectors in ss->o */         for (s=1; s<=S; s++)             ss->o.fv[s] = CreateVector(ss->mem,ss->o.swidth[s]);              }      ReadAsTable(pbuf,i,&(ss->o));      if (ss->hasvq) {         vqItem = (short *)New(ss->mem,sizeof(short)*(S+1));         for (s=1; s<=S; s++)             vqItem[s] = ss->o.vq[s];         StoreItem(vq, (Ptr) vqItem);      }      if (ss->hasfv) {         fvItem = (Vector *)New(ss->mem,sizeof(Vector)*(S+1));         for (s=1; s<=S; s++)             fvItem[s] = ss->o.fv[s];         StoreItem(fv, (Ptr) fvItem);      }   }   if (ss->hasvq) StoreItem(ss->vqSegs, (Ptr)vq);   if (ss->hasfv) StoreItem(ss->fvSegs, (Ptr)fv);}/* EXPORT->SegLength: Return num obs in i'th segment */int SegLength(SegStore ss, int i){   Sequence s;      if (ss->hasfv)       s = (Sequence) GetItem(ss->fvSegs,i);   else if (ss->hasvq)      s = (Sequence) GetItem(ss->vqSegs,i);   else      HError(7191,"SegLength: no fv or vq seg stored");   return s->nItems;}/* EXPORT->NumSegs: Return num segments in ss */int NumSegs(SegStore ss){   if (ss->hasfv)       return ss->fvSegs->nItems;   else if (ss->hasvq)      return ss->vqSegs->nItems;   else      HError(7191,"NumSegs: no fv or vq segs stored");   return 0;  /* to keep compiler happy */}/* EXPORT->GetSegObs: Return j'th observation from i'th segment */Observation GetSegObs(SegStore ss, int i, int j){   Sequence vq;   Sequence fv;   int s,S = ss->o.swidth[0];   short *vqItem;   Vector *fvItem;      if (ss->hasvq) {      vq = (Sequence) GetItem(ss->vqSegs,i);      vqItem = (short *) GetItem(vq,j);      for (s=1; s<=S; s++)          ss->o.vq[s] = vqItem[s];   }        if (ss->hasfv) {      fv = (Sequence) GetItem(ss->fvSegs,i);      fvItem = (Vector *) GetItem(fv,j);      for (s=1; s<=S; s++)          ss->o.fv[s] = fvItem[s];   }        return ss->o;}/* EXPORT->SequenceMean: compute mean of vectors in ss */void SequenceMean(Sequence ss, Vector mean){   Vector v;   int i,j,size;   double n;   DVector sum;   size = VectorSize(mean);   sum = CreateDVector(&gstack,size);   ZeroDVector(sum);   n = ss->nItems;   for (i=1; i<=ss->nItems; i++) {      v = (Vector) GetItem(ss,i);      for (j=1; j<=size; j++)         sum[j] += v[j];   }   for (j=1; j<=size; j++)      mean[j] = sum[j]/n;   FreeDVector(&gstack,sum);}/* EXPORT->SequenceCov: compute covariance of vectors in ss */void SequenceCov(Sequence ss, CovKind ck, Covariance cov, Vector mean){   Vector v;   int i,j,k,size;   double n,x,y;   DVector sqsum;   DMatrix xsum;      switch(ck){   case DIAGC:       /* diagonal covariance matrix */   case INVDIAGC:    /* inverse diag covariance matrix */      size = VectorSize(cov.var);      sqsum = CreateDVector(&gstack,size);      ZeroDVector(sqsum);      n = ss->nItems;      for (i=1; i<=ss->nItems; i++) {         v = (Vector) GetItem(ss,i);         for (j=1; j<=size; j++){            x = v[j]-mean[j];            sqsum[j] += x*x;         }      }      for (j=1; j<=size; j++)         cov.var[j] = (ck==DIAGC)?sqsum[j]/n:n/sqsum[j];      FreeDVector(&gstack,sqsum);      break;   case FULLC:    /* inverse full covariance matrix */      size = TriMatSize(cov.inv);      xsum = CreateDMatrix(&gstack,size,size);      ZeroDMatrix(xsum);      n = ss->nItems;      for (i=1; i<=ss->nItems; i++) {         v = (Vector) GetItem(ss,i);         for (j=1; j<=size; j++)            for (k=1; k<=j; k++){               x = v[j]-mean[j];               y = v[k]-mean[k];               xsum[j][k] += x*y;            }      }      for (j=1; j<=size; j++)         for (k=1; k<=j; k++)            cov.inv[j][k] = xsum[j][k]/n;      CovInvert(cov.inv,cov.inv);      FreeDMatrix(&gstack,xsum);      break;   default:      HError(7170,"SequenceCov: unsupported cov kind [%d]",ck);   }}/* --------------------- Vector Clustering -------------------- *//*    The routines in this section implement a top-down clustering   algorithm.  There are two clustering modes: linear and tree   based.  Both are top-down and start from a single cluster.      In the default linear mode, the largest cluster is   successively split until the required number of clusters are   formed.  Each cluster centre is the average of all vectors in the   cluster.  Splitting is performed by perturbing the cluster centre to   form two cluster centres.  The largest cluster is defined as that   which has the largest average construction cost.      In tree clustering mode, the current leaves are split regardless   of their size.      Linear mode is best for clustering small data sets (eg as in HInit).   Either mode can be used for large data sets (eg as in HQuant).*/static int curNumCl;    /* num clust currently created */static int nItems;      /* num items in pool */static ClusterSet *ccs; /* current cluster set */static Sequence cvp;    /* current vector pool being clustered */static ShortVec cmap;   /* array[1..cvp->nItems]of cluster index */static CovKind dck;     /* defines type of distance calc */static Covariance dcov; /* covariance to use in distance calc */static int vSize;       /* size of vectors */static Vector vTmp;     /* temp vector *//* DumpClusterMap: dump the vector pool -> cluster map */static void DumpClusterMap(void){   int i,lc=0;      for (i=1; i<=nItems; i++) {      printf("%3d",cmap[i]);      if (++lc == 20) { printf("\n"); lc = 0; }   }   if (lc != 0) printf("\n");   fflush(stdout);}/* Distance: compute distance between v1 and v2 */static float Distance(Vector v1, Vector v2){   Vector iv,crow;   TriMat ic;   double sum,x;   int i,j;   switch(dck){   case NULLC:      sum = 0.0;      for (i=1; i<=vSize; i++){         x = v1[i]-v2[i]; sum += x*x;      }      break;   case DIAGC:      iv = dcov.var;  /* covkind == DIAGC */      sum = 0.0;      for (i=1; i<=vSize; i++){         x = v1[i]-v2[i]; sum += x*x/iv[i];      }      break;   case INVDIAGC:      iv = dcov.var;  /* covkind == INVDIAGC */      sum = 0.0;      for (i=1; i<=vSize; i++){         x = v1[i]-v2[i]; sum += x*x*iv[i];      }      break;   case FULLC:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品热久久久久夜色精品三区| 久久精品夜夜夜夜久久| 国内精品久久久久影院一蜜桃| 国产精品萝li| 日韩欧美国产麻豆| 欧美三级一区二区| 国产精品亚洲专一区二区三区 | 97精品电影院| 奇米影视在线99精品| 亚洲欧美日韩国产另类专区| 久久众筹精品私拍模特| 在线视频国产一区| 成人免费黄色在线| 奇米色一区二区三区四区| 亚洲男同1069视频| 欧美经典三级视频一区二区三区| 欧美高清www午色夜在线视频| 99久久久无码国产精品| 国产一区美女在线| 青青青伊人色综合久久| 亚洲高清视频的网址| 国产精品热久久久久夜色精品三区 | 午夜视频在线观看一区二区| 亚洲国产精品av| 26uuu成人网一区二区三区| 欧美日韩在线直播| 日本韩国欧美一区二区三区| eeuss鲁片一区二区三区在线观看| 国产专区综合网| 九九精品视频在线看| 免费高清不卡av| 日本女优在线视频一区二区| 亚洲国产色一区| 亚洲一区二区精品视频| 亚洲激情图片一区| 日韩精品久久理论片| 亚洲欧美日韩小说| 亚洲精品视频一区| 亚洲乱码一区二区三区在线观看| 国产欧美日韩在线观看| 国产网站一区二区三区| 久久免费精品国产久精品久久久久| 日韩欧美第一区| 日韩免费一区二区| 欧美刺激午夜性久久久久久久| 欧美一卡在线观看| 欧美一卡二卡在线观看| 欧美一区二区人人喊爽| 日韩免费在线观看| 久久久青草青青国产亚洲免观| 亚洲精品一区二区三区四区高清| 久久综合av免费| 久久精品欧美日韩精品| 中文字幕免费不卡| 亚洲色图第一区| 亚洲国产成人va在线观看天堂 | 国产精品综合在线视频| 国产成人精品免费一区二区| 99这里只有久久精品视频| 97久久久精品综合88久久| 欧美最新大片在线看 | 欧美日韩午夜在线视频| 在线播放91灌醉迷j高跟美女| 日韩一区二区在线观看视频播放| 欧美一卡二卡三卡| 国产视频一区在线观看| 中文字幕中文乱码欧美一区二区 | 亚洲乱码中文字幕综合| 午夜伦欧美伦电影理论片| 精品一区二区三区影院在线午夜 | 国产欧美日韩三级| 亚洲特黄一级片| 亚洲国产精品久久久男人的天堂| 另类综合日韩欧美亚洲| 丰满岳乱妇一区二区三区| 91浏览器入口在线观看| 91精品国产综合久久福利 | 欧美极品xxx| 亚洲线精品一区二区三区八戒| 国产精品无人区| 日韩欧美精品在线视频| 国产亚洲成年网址在线观看| 樱花草国产18久久久久| 麻豆精品新av中文字幕| 99久久精品久久久久久清纯| 在线观看亚洲一区| 久久综合色8888| 亚洲一区二区在线播放相泽 | 久久91精品久久久久久秒播| 成人黄色777网| 欧美卡1卡2卡| 国产精品美女久久久久aⅴ | 青青草国产精品97视觉盛宴| 成人av一区二区三区| 91.com视频| 最新中文字幕一区二区三区| 日本成人在线不卡视频| 99麻豆久久久国产精品免费| 日韩视频一区在线观看| 亚洲日本乱码在线观看| 久色婷婷小香蕉久久| 91碰在线视频| 久久精品亚洲精品国产欧美kt∨| 午夜免费欧美电影| 91原创在线视频| 国产午夜精品一区二区| 秋霞午夜av一区二区三区| 一本久久精品一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲成人一二三| 北条麻妃一区二区三区| 久久久综合激的五月天| 日韩精品视频网站| 在线免费观看日韩欧美| 国产精品你懂的在线欣赏| 激情小说欧美图片| 日韩一区二区免费高清| 亚洲在线视频免费观看| 99久久精品国产麻豆演员表| 欧美激情在线一区二区三区| 激情久久五月天| 日韩一本二本av| 肉肉av福利一精品导航| 欧美午夜一区二区三区| 亚洲一区在线观看视频| 91香蕉视频mp4| 亚洲国产成人在线| 国产一区二区三区香蕉| 日韩精品一区二区三区三区免费| 五月天精品一区二区三区| 色综合网色综合| 亚洲男同1069视频| 色天天综合色天天久久| 亚洲欧美日韩系列| 日本高清视频一区二区| 亚洲精品国产a久久久久久| 99综合电影在线视频| 亚洲三级免费观看| av中文字幕亚洲| 亚洲天堂a在线| 色综合天天综合狠狠| 一区二区三区四区高清精品免费观看| 99久久精品国产一区| 亚洲精品视频一区| 欧洲国产伦久久久久久久| 亚洲一区二区三区影院| 欧美日本韩国一区| 免费在线观看成人| 精品福利一区二区三区免费视频| 久国产精品韩国三级视频| 久久久久久久免费视频了| 亚洲精品v日韩精品| 九一久久久久久| 国产亚洲欧美激情| 不卡的电影网站| 亚洲裸体xxx| 欧美日韩1234| 蜜桃免费网站一区二区三区| 久久综合色天天久久综合图片| 国产高清一区日本| 亚洲三级在线观看| 欧美日韩激情一区二区| 久久成人羞羞网站| 久久久久国产成人精品亚洲午夜| 成人教育av在线| 亚洲午夜久久久久久久久电影院| 3d成人动漫网站| 国产精品一区专区| 中文字幕一区二区三区乱码在线| 在线视频一区二区三区| 奇米色777欧美一区二区| 久久久久久久久久看片| 91污在线观看| 久久精品国产免费看久久精品| 国产精品网站在线观看| 欧洲日韩一区二区三区| 狠狠久久亚洲欧美| 亚洲精品视频免费看| 欧美一区二区视频在线观看| 国产成人av电影免费在线观看| 亚洲激情在线播放| 精品国产露脸精彩对白| 91视频免费看| 久久99久久精品| 亚洲自拍偷拍av| 国产午夜亚洲精品午夜鲁丝片| 在线观看免费一区| 国产成人综合亚洲91猫咪| 亚洲午夜免费视频| 国产亚洲一二三区| 精品视频全国免费看| 国产精品18久久久久久久久 | 久久综合色8888| 色婷婷久久久久swag精品| 激情丁香综合五月| 亚洲综合精品自拍| 国产日韩欧美一区二区三区综合| 欧美日韩成人激情| 91视频观看视频| 国产福利91精品一区二区三区|