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

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

?? hutil.c

?? 實現HMM算法
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   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: HUtil.c      HMM utility routines             *//* ----------------------------------------------------------- */char *hutil_version = "!HVER!HUtil:   3.3 [CUED 28/04/05]";char *hutil_vc_id = "$Id: HUtil.c,v 1.2 2005/07/22 10:17:02 mjfg 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"/* --------------------------- Trace Flags ------------------------- */#define T_TOP  0001       /* Top Level tracing */#define T_ITM  0002       /* Item List tracing */#define T_OCC  0004       /* Occupancy statistics tracing */static int trace = 0;static Boolean parsePhysicalHMM = FALSE;static MemHeap setHeap;static MemHeap itemHeap;/* --------------------------- Initialisation ---------------------- */static ConfParam *cParm[MAXGLOBS];      /* config parameters */static int nParm = 0;/* EXPORT->InitUtil: initialise configuration parameters */void InitUtil(void){   int i;   Register(hutil_version,hutil_vc_id);   nParm = GetConfig("HUTIL", TRUE, cParm, MAXGLOBS);   if (nParm>0){      if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i;   }   CreateHeap(&itemHeap,"HUtil: ItemList Heap",MHEAP,sizeof(ItemRec),              1.0,200,8000);   CreateHeap(&setHeap,"HUtil: IntSet Heap",MSTAK,1,1.0,2000,16000);}/* EXPORT->ResetUtilItemList: frees all the memory from the ItemList heap */void ResetUtilItemList(){   DeleteHeap(&itemHeap);   CreateHeap(&itemHeap,"HUtil: ItemList Heap",MHEAP,sizeof(ItemRec),             1.0,200,8000);}/* EXPORT->SetParsePhysicalHMM: only parse physical HMMs */void SetParsePhysicalHMM(Boolean parse){   parsePhysicalHMM = parse;}/* -------------------- Clone Routines ------------------------ *//* CloneSVector: return a clone of given matrix */SVector CloneSVector(MemHeap *hmem, SVector s, Boolean sharing){   SVector t;  /* the target */      if (s==NULL) return NULL;   if (GetUse(s)>0 && sharing) {      IncUse(s);      return s;   }   t = CreateSVector(hmem,VectorSize(s));   CopyVector(s,t);   return t;}/* CloneSMatrix: return a clone of given Matrix */SMatrix CloneSMatrix(MemHeap *hmem, SMatrix s, Boolean sharing){   SMatrix t;  /* the target */      if (s==NULL) return NULL;   if (GetUse(s)>0 && sharing) {      IncUse(s);      return s;   }   t = CreateSMatrix(hmem,NumRows(s),NumCols(s));   CopyMatrix(s,t);   return t;}/* CloneSTriMat: return a clone of given TriMat */STriMat CloneSTriMat(MemHeap *hmem, STriMat s, Boolean sharing){   STriMat t;  /* the target */      if (s==NULL) return NULL;   if (GetUse(s)>0 && sharing) {      IncUse(s);      return s;   }   t = CreateSTriMat(hmem,TriMatSize(s));   CopyTriMat(s,t);   return t;}/* CloneMixPDF: return a clone of given MixPDF */MixPDF *CloneMixPDF(HMMSet *hset, MixPDF *s, Boolean sharing){   MixPDF *t;      if (s->nUse>0 && sharing) {       ++s->nUse;      return s;   }   t = (MixPDF*)New(hset->hmem,sizeof(MixPDF));   t->nUse = 0; t->hook = NULL; t->gConst = s->gConst;   t->mean = CloneSVector(hset->hmem,s->mean,sharing);   t->ckind = s->ckind;   switch(s->ckind) {   case DIAGC:    case INVDIAGC:       t->cov.var = CloneSVector(hset->hmem,s->cov.var,sharing);      break;   case FULLC:   case LLTC:      t->cov.inv = CloneSTriMat(hset->hmem,s->cov.inv,sharing);      break;   case XFORMC:      t->cov.xform = CloneSMatrix(hset->hmem,s->cov.xform,sharing);      break;   }   return t;}/* CloneStream: return a clone of given stream */MixtureVector CloneStream(HMMSet *hset, StreamElem *ste, Boolean sharing){   int m,M;   MixtureElem *sme,*tme;   MixtureVector mv;   M = ste->nMix;   if (hset->hsKind == PLAINHS || hset->hsKind == SHAREDHS){      tme = (MixtureElem *)New(hset->hmem,M*sizeof(MixtureElem));      mv.cpdf = tme-1; sme = ste->spdf.cpdf + 1;      for (m=1; m<=M; m++,sme++,tme++){         tme->weight = sme->weight;         tme->mpdf =             (MixWeight(hset,tme->weight)>MINMIX)?CloneMixPDF(hset,sme->mpdf,sharing):NULL;      }   } else if (hset->hsKind == TIEDHS) {      mv.tpdf = CreateVector(hset->hmem,M);      CopyVector(ste->spdf.tpdf,mv.tpdf);   } else {      mv.dpdf = CreateShortVec(hset->hmem,M);      CopyShortVec(ste->spdf.dpdf,mv.dpdf);   }   return mv;}/* CloneState: return a clone of given State */StateInfo *CloneState(HMMSet *hset, StateInfo *ssi, Boolean sharing){   StateInfo *tsi;  /* the target */   StreamElem *tste,*sste;   int s,S;      if (ssi->nUse>0 && sharing) {       ++ssi->nUse;      return ssi;   }   S = hset->swidth[0];   tsi = (StateInfo *)New(hset->hmem,sizeof(StateInfo));   tsi->nUse = 0; tsi->hook = NULL;   tste = (StreamElem *)New(hset->hmem,S*sizeof(StreamElem));   tsi->pdf = tste-1; sste = ssi->pdf + 1;   for (s=1; s<=S; s++,tste++,sste++){      tste->nMix = sste->nMix;       tste->hook = NULL;      tste->spdf = CloneStream(hset,sste,sharing);   }   tsi->dur     = CloneSVector(hset->hmem,ssi->dur,sharing);   tsi->weights = CloneSVector(hset->hmem,ssi->weights,sharing);   return tsi;}/* EXPORT->CloneHMM: copy src HMM into tgt.  If sharing, then macros are shared */void CloneHMM(HLink src, HLink tgt, Boolean sharing){   StateElem *s,*t;   int i;   HMMSet *hset = src->owner;      tgt->owner = src->owner;   tgt->numStates = src->numStates;   tgt->dur = CloneSVector(hset->hmem,src->dur,sharing);   tgt->transP = CloneSMatrix(hset->hmem,src->transP,sharing);   t = (StateElem *)New(hset->hmem,(tgt->numStates-2)*sizeof(StateElem));   tgt->svec = t-2; s = src->svec+2;   for (i=2; i<tgt->numStates; i++,s++,t++)      t->info = CloneState(hset,s->info,sharing);   tgt->hook = NULL; tgt->nUse = 0;}/* -------------------- Mapping Routines ------------------------ *//* EXPORT->NewHMMScan:  create new HMM scan record */void NewHMMScan(HMMSet *hset, HMMScanState *hss){   hss->hset = hset;   hss->S = hset->swidth[0];   hss->isCont = (hset->hsKind == PLAINHS) || (hset->hsKind == SHAREDHS);   hss->h = -1;   hss->mac=NULL;   if (!GoNextHMM(hss))      HError(7220,"NewHMMScan: cannot find any physical HMMs to scan");}/* EXPORT->EndHMMScan: terminate scan and restore nUse flags */void EndHMMScan(HMMScanState *hss){   ClearSeenFlags(hss->hset,CLR_ALL);   hss->hmm = NULL; hss->se = NULL; hss->ste = NULL; hss->me = NULL;}/* EXPORT->GoNextHMM: Move to next unseen HMM in HMM set */Boolean GoNextHMM(HMMScanState *hss){   int M;   MLink mac;   mac = hss->mac ? hss->mac->next : NULL;   if (mac==NULL) hss->h++;   for (;hss->h<MACHASHSIZE;hss->h++)      for (mac=((mac==NULL)?hss->hset->mtab[hss->h]:mac);           mac!=NULL;mac=mac->next) {         if (mac->type == 'h') {            hss->mac = mac;            hss->hmm = (HLink)mac->structure;            hss->N = hss->hmm->numStates;            hss->se = hss->hmm->svec+2; hss->i=2;            hss->si = hss->se->info;            hss->ste = hss->si->pdf+1; hss->s=1;            M = hss->ste->nMix;            hss->M = (M<0)?-M:M; hss->m=1;            if (hss->isCont){               hss->me = hss->ste->spdf.cpdf+1;               hss->mp = hss->me->mpdf;            } else if  (hss->hset->hsKind == TIEDHS) {               hss->mp = hss->hset->tmRecs[hss->s].mixes[hss->m];               hss->me = NULL;            }            return TRUE;         }      }   hss->hmm = NULL;   return FALSE;}/* EXPORT->GoNextState: move to next unseen state */Boolean GoNextState(HMMScanState *hss, Boolean noSkip){   Boolean stepping = FALSE, ok = TRUE;   int M;      while (IsSeen(hss->si->nUse) && ok){      if (hss->i < hss->N-1) {         ++hss->i; ++hss->se; stepping = TRUE;         hss->si = hss->se->info;      } else if (noSkip)         return FALSE;      else{         stepping = FALSE;         ok = GoNextHMM(hss);       }   }   if (ok) {      Touch(&hss->si->nUse);      if (stepping){         hss->ste = hss->si->pdf+1; hss->s=1;         M = hss->ste->nMix;         hss->M = (M<0)?-M:M; hss->m=1;         if (hss->isCont){            hss->me = hss->ste->spdf.cpdf+1;            hss->mp = hss->me->mpdf;         } else if  (hss->hset->hsKind == TIEDHS) {            hss->mp = hss->hset->tmRecs[hss->s].mixes[1];            hss->me = NULL;         }      }      return TRUE;   }   hss->se = NULL;   return FALSE;}/* EXPORT->GoNextStream: move to next unseen stream */Boolean GoNextStream(HMMScanState *hss, Boolean noSkip){   Boolean stepping = FALSE, ok = TRUE;   int M;      while (IsSeen(hss->ste->nMix) && ok){      if (hss->s < hss->S) {         ++hss->s; ++hss->ste; stepping = TRUE;      } else if (noSkip)         return FALSE;      else{         stepping = FALSE;             ok = GoNextState(hss,FALSE);      }   }   if (ok) {      Touch(&hss->ste->nMix);      if (stepping) {         M = hss->ste->nMix;         hss->M = (M<0)?-M:M; hss->m=1;         if (hss->isCont){            hss->me = hss->ste->spdf.cpdf+1;            hss->mp = hss->me->mpdf;         } else if  (hss->hset->hsKind == TIEDHS) {            hss->mp = hss->hset->tmRecs[hss->s].mixes[1];            hss->me = NULL;         }      }      return TRUE;   }   hss->ste = NULL;   return FALSE;}/* EXPORT->GoNextMix: move to next unseen mixture component */Boolean GoNextMix(HMMScanState *hss, Boolean noSkip){   Boolean ok = TRUE;      if (hss->isCont || (hss->hset->hsKind == TIEDHS)) {      while (IsSeen(hss->mp->nUse) && ok){         if (hss->m < hss->M) {            ++hss->m;             if (hss->isCont) {               ++hss->me;                hss->mp = hss->me->mpdf;            } else {               hss->mp = hss->hset->tmRecs[hss->s].mixes[hss->m];               hss->me = NULL;            }         } else if (noSkip)            return FALSE;         else            ok = GoNextStream(hss,FALSE);      }      if (ok) {         Touch(&hss->mp->nUse);         return TRUE;      }   } else { /* There are no components in a DISCRETEHS system - use GoNextStream instead */      HError(7231,"GoNextMix: Cannot specify mixture components unless continuous");   }   hss->me = NULL;   return FALSE;}/* ----------------------- DiagC conversions ----------------------------- *//* minimum and max values used in conversions */#define MINVAR 1E-30#define MAXVAR 1E+30/* EXPORT->ConvDiagC Convert Diagonal Covariance Kind  Converts all the HMMs in hset to INVDIAGC from DIAGC  or vice versa. If convData is TRUE then each variance element is  replaced by its reciprocal(倒數) - otherwise only the CovKind in each HMM  is changed and no data conversions are performed. */void ConvDiagC(HMMSet *hset, Boolean convData){   HMMScanState hss;   SVector v;   int k;   if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS)       return;   NewHMMScan(hset, &hss);   while (GoNextMix(&hss,FALSE)) {      if (hss.mp->ckind == DIAGC || hss.mp->ckind == INVDIAGC){         hss.mp->ckind = (hss.mp->ckind == DIAGC)?INVDIAGC:DIAGC;         if (convData){            v = hss.mp->cov.var;            if (! IsSeenV(v)) {               for (k=1; k<=hset->swidth[hss.s]; k++) {                  if (v[k] > MAXVAR) v[k] = MAXVAR;                  if (v[k] < MINVAR) v[k] = MINVAR;                  v[k] = 1/v[k];               }               TouchV(v);            }         }      }   }   EndHMMScan(&hss);   ClearSeenFlags(hset,CLR_ALL);}/* EXPORT->ConvDiagC Convert Diagonal Covariance Kind   Converts all the HMMs in hset to DIAGC from INVDIAGC 將HMM集合中所有的HMM的方差從逆對角轉換成對角*/void ForceDiagC(HMMSet *hset){   HMMScanState hss;   SVector v;   int k;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美sm极限捆绑bd| av爱爱亚洲一区| 精品国产一区二区三区久久影院 | 91麻豆精品秘密| 国产精品入口麻豆原神| 粉嫩aⅴ一区二区三区四区 | 免费看黄色91| 精品三级av在线| 国产盗摄一区二区| 亚洲欧美日韩一区二区| 欧美三级午夜理伦三级中视频| 亚洲va欧美va人人爽午夜| 777午夜精品免费视频| 久久av老司机精品网站导航| 国产亚洲成年网址在线观看| 色综合久久99| 奇米色一区二区| 国产精品三级久久久久三级| 欧美伊人久久大香线蕉综合69| 日韩主播视频在线| 欧美国产精品一区| 欧美日韩视频一区二区| 狠狠色丁香久久婷婷综合丁香| 国产精品久久影院| 777亚洲妇女| 成人网在线免费视频| 日日摸夜夜添夜夜添亚洲女人| 亚洲精品一区二区精华| 色乱码一区二区三区88| 麻豆国产精品视频| 亚洲欧美视频在线观看| 3d动漫精品啪啪1区2区免费| 福利视频网站一区二区三区| 午夜国产精品影院在线观看| 国产精品美女久久久久久久网站| 欧美色图片你懂的| 大陆成人av片| 欧美aaaaaa午夜精品| 亚洲欧美日韩在线不卡| 久久综合av免费| 欧美日韩大陆在线| 成人激情综合网站| 蜜臀99久久精品久久久久久软件| 国产精品进线69影院| 日韩一区二区精品在线观看| 一本久道中文字幕精品亚洲嫩| 激情小说亚洲一区| 无码av免费一区二区三区试看| 亚洲欧洲日产国码二区| 久久综合五月天婷婷伊人| 欧美性三三影院| 91农村精品一区二区在线| 国产一区在线观看视频| 天天做天天摸天天爽国产一区| 国产精品三级av在线播放| 精品久久99ma| 这里只有精品视频在线观看| 欧美做爰猛烈大尺度电影无法无天| 国产精品亚洲一区二区三区在线 | 久久电影网电视剧免费观看| 亚洲一区二区三区小说| 亚洲欧洲美洲综合色网| 欧美激情一区二区三区不卡| 精品少妇一区二区三区日产乱码 | 天堂久久一区二区三区| 亚洲男女一区二区三区| 中文字幕在线观看一区二区| 国产视频一区在线播放| 精品少妇一区二区三区视频免付费 | 成年人网站91| 国产成人综合精品三级| 国产伦精一区二区三区| 国产一区二区三区电影在线观看 | 日本韩国欧美国产| av在线不卡网| 99精品视频中文字幕| 成人动漫中文字幕| 成人激情视频网站| jlzzjlzz亚洲日本少妇| 不卡的av网站| 日本道精品一区二区三区| 色婷婷综合在线| 91国内精品野花午夜精品| 91网站最新地址| 欧美亚洲一区二区在线观看| 欧美性色黄大片| 欧美放荡的少妇| 日韩精品资源二区在线| 26uuu另类欧美亚洲曰本| 国产午夜精品久久久久久久| 国产精品天美传媒| 亚洲图片另类小说| 亚洲高清久久久| 久久99国产乱子伦精品免费| 国产精品18久久久久久久久久久久 | 亚洲桃色在线一区| 亚洲精品国产高清久久伦理二区| 亚洲一区视频在线| 琪琪一区二区三区| 国产电影一区在线| 在线免费观看视频一区| 在线不卡一区二区| 久久嫩草精品久久久精品| 亚洲天堂精品视频| 日韩国产在线一| 成人一级片网址| 欧洲精品视频在线观看| 欧美成人女星排行榜| 中文字幕在线观看不卡视频| 亚洲超丰满肉感bbw| 狠狠v欧美v日韩v亚洲ⅴ| 不卡av电影在线播放| 欧美日韩国产经典色站一区二区三区| 日韩一区二区在线播放| 国产精品久久久久久久久免费相片| 亚洲一区二区三区视频在线| 国产一区二区三区黄视频| 色综合久久综合| www成人在线观看| 亚洲精品va在线观看| 国产精品一区一区三区| 欧美日韩综合不卡| 久久久久久久综合日本| 亚洲国产成人精品视频| 国产精品亚洲а∨天堂免在线| 欧美色网站导航| 国产精品人人做人人爽人人添| 视频精品一区二区| av一区二区三区四区| 精品欧美乱码久久久久久1区2区| 亚洲欧美国产三级| 国产九九视频一区二区三区| 欧美日韩精品免费观看视频| 国产精品无码永久免费888| 日本sm残虐另类| 欧美最猛性xxxxx直播| 国产亚洲精品超碰| 免费精品99久久国产综合精品| 在线观看日产精品| 国产精品久久久久久一区二区三区| 蜜桃久久久久久| 欧美精品三级日韩久久| 一区二区三区欧美亚洲| 粉嫩久久99精品久久久久久夜| 日韩欧美亚洲国产另类| 天天色天天操综合| 91国在线观看| ...av二区三区久久精品| 国产麻豆精品在线观看| 日韩亚洲欧美成人一区| 亚洲国产一二三| 91麻豆123| 日韩毛片精品高清免费| 成人福利视频在线| 日本一区二区视频在线| 国产一区二区三区免费播放| 日韩欧美亚洲国产精品字幕久久久| 亚洲mv在线观看| 精品视频在线看| 亚洲国产精品麻豆| 欧美无乱码久久久免费午夜一区| 亚洲精品久久久久久国产精华液| av在线播放不卡| 亚洲欧美一区二区三区孕妇| 97久久久精品综合88久久| 亚洲人亚洲人成电影网站色| 成人app在线观看| 1024成人网| 一本色道久久综合亚洲精品按摩| 日韩一区中文字幕| 99国产精品久久久久久久久久久| 国产精品家庭影院| 色综合久久久网| 亚洲午夜在线视频| 欧美日韩1区2区| 麻豆一区二区在线| 2017欧美狠狠色| 懂色中文一区二区在线播放| 国产精品国产自产拍高清av王其 | 一区二区三区久久| 欧美午夜一区二区三区| 亚洲午夜久久久久中文字幕久| 欧美日韩亚洲另类| 免费观看在线色综合| 久久婷婷色综合| 91蜜桃婷婷狠狠久久综合9色| 亚洲乱码日产精品bd | 精品欧美久久久| 国产成人超碰人人澡人人澡| 最好看的中文字幕久久| 欧美日韩亚洲综合| 精品一二三四区| 国产精品福利影院| 欧美日韩夫妻久久| 久久99国产精品久久| 国产精品久久久久婷婷二区次| 欧美在线观看你懂的| 精品无人区卡一卡二卡三乱码免费卡| 日本一区二区在线不卡| 欧美亚洲愉拍一区二区|