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

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

?? hutil.c

?? 實(shí)現(xiàn)HMM算法
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   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(倒數(shù)) - 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的方差從逆對(duì)角轉(zhuǎn)換成對(duì)角*/void ForceDiagC(HMMSet *hset){   HMMScanState hss;   SVector v;   int k;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品一区二区www| 免费在线看成人av| 成人午夜电影久久影院| 欧美一区二区三区性视频| 亚洲国产毛片aaaaa无费看| 亚洲同性同志一二三专区| 国产精品夜夜爽| 99天天综合性| 亚洲伊人伊色伊影伊综合网| 国产美女娇喘av呻吟久久| 美女在线视频一区| 日韩欧美国产一区二区在线播放 | 日本亚洲一区二区| 911精品产国品一二三产区| 首页亚洲欧美制服丝腿| 欧美一区二区免费视频| 26uuu亚洲综合色| 国产乱国产乱300精品| 国产欧美精品一区| 91在线国产观看| 亚洲h精品动漫在线观看| 7878成人国产在线观看| 蜜臀久久久久久久| 久久精品一区四区| 成人综合在线观看| 欧美亚洲国产一区二区三区| 亚洲欧洲日本在线| 欧美色成人综合| 精品一区二区三区视频| 久久综合久久鬼色中文字| 国产精品免费丝袜| 欧美优质美女网站| 日韩精品欧美精品| 欧美老人xxxx18| 久久久三级国产网站| 韩国精品主播一区二区在线观看| 国产嫩草影院久久久久| 国产精品一区久久久久| 亚洲欧美日韩国产中文在线| 亚洲色图制服丝袜| 欧美日韩免费电影| 国产尤物一区二区| 午夜精品视频一区| 国产精品第五页| 欧美成人官网二区| 在线观看视频一区二区欧美日韩| 亚洲成av人片在www色猫咪| 精品国产污污免费网站入口 | 九九精品一区二区| 一区二区三区国产| 国产色产综合产在线视频| 91亚洲精品久久久蜜桃| 亚洲成av人片在www色猫咪| www日韩大片| 日韩国产成人精品| 亚洲欧美日韩在线不卡| 日韩精品一区二区三区在线观看 | 久久久久99精品国产片| 亚洲欧美日韩国产另类专区| 欧美视频在线一区| 成人一级视频在线观看| 日韩av电影天堂| 亚洲高清免费在线| 中文字幕一区二区三区不卡在线 | 久久精品无码一区二区三区| 夜夜精品视频一区二区| 国产偷国产偷亚洲高清人白洁| 午夜精品成人在线视频| 中文字幕欧美激情一区| 宅男在线国产精品| 欧美群妇大交群的观看方式| 国产一区二区看久久| 亚洲成人在线观看视频| 久久久九九九九| 欧美日韩一区二区三区不卡| 国产精品一区不卡| 久久精品国产亚洲一区二区三区| 91老师国产黑色丝袜在线| 精品一区二区三区欧美| 丝袜诱惑制服诱惑色一区在线观看 | 日韩一级二级三级| 欧美日韩和欧美的一区二区| 成人免费福利片| 成人精品免费视频| 欧美精品久久久久久久久老牛影院 | 免费在线看一区| 久热成人在线视频| 狠狠色伊人亚洲综合成人| 麻豆精品视频在线观看免费| 亚洲人妖av一区二区| 午夜精品视频一区| 久久久久久毛片| 不卡av免费在线观看| 精品亚洲成av人在线观看| 美国精品在线观看| 精品在线观看视频| 国产乱人伦偷精品视频免下载| 日本欧美加勒比视频| 日韩一级片网址| 日韩精品一区二区三区在线 | 精品99久久久久久| 国产欧美日韩不卡免费| 久久精品人人做人人综合| 亚洲精品在线观| 国产日韩欧美在线一区| 久久99国产精品尤物| 久久精品国产77777蜜臀| 免费精品视频在线| 成人免费三级在线| 在线观看视频一区二区| 91精品国产91久久综合桃花| 欧美日韩二区三区| 成人听书哪个软件好| a亚洲天堂av| 欧美日韩电影一区| 福利电影一区二区三区| 99精品久久只有精品| 欧美视频中文字幕| 久久亚洲二区三区| 亚洲最大的成人av| 国产一区二区三区在线观看精品| 日韩美女在线视频| 欧美日韩日日夜夜| 国产人久久人人人人爽| 99久久婷婷国产综合精品| 色婷婷精品大在线视频 | 日韩电影免费在线观看网站| 一区二区三区四区乱视频| 一区二区三区视频在线观看 | 91丨九色丨尤物| 日韩欧美不卡一区| 亚洲伦在线观看| 国产麻豆视频一区| 色综合天天综合网国产成人综合天| 欧美久久久久久久久| 欧美精品一区二区高清在线观看| 国产精品美女视频| 精品剧情v国产在线观看在线| 国产精品久久久久久久久图文区 | 一区二区国产视频| 国内精品国产成人国产三级粉色| 成人黄动漫网站免费app| 欧美精选一区二区| 欧美日本一区二区| 色婷婷久久久综合中文字幕| 欧洲精品视频在线观看| 国产色婷婷亚洲99精品小说| 一区二区在线观看不卡| 国产精品一区二区黑丝| 91精品麻豆日日躁夜夜躁| 国产精品的网站| 欧美激情在线免费观看| 在线这里只有精品| 99r国产精品| 中文字幕免费不卡| 国产在线乱码一区二区三区| 成人禁用看黄a在线| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲精品视频在线看| 国产精品福利影院| 国产精品一区一区三区| 日韩亚洲电影在线| 亚洲成人av在线电影| 99麻豆久久久国产精品免费| 欧美一区二区久久久| 亚洲电影激情视频网站| 色噜噜狠狠色综合中国| 中文字幕一区不卡| 亚洲欧洲一区二区在线播放| 蜜臀av性久久久久蜜臀aⅴ四虎| 色播五月激情综合网| 国产精品国模大尺度视频| 国产精品资源网站| 久久久不卡影院| 国产精品一卡二卡在线观看| 91麻豆精品国产| 91精品欧美一区二区三区综合在| 一区二区三区欧美激情| 色拍拍在线精品视频8848| 久久久不卡网国产精品二区| 亚洲尤物在线视频观看| 亚洲一区欧美一区| 欧美日韩精品专区| 日韩一区二区电影在线| 久久69国产一区二区蜜臀| 欧美老肥妇做.爰bbww| 五月天国产精品| 日韩一级大片在线| 精品无人码麻豆乱码1区2区| 在线不卡中文字幕| 久久福利资源站| 亚洲成人黄色影院| 日本va欧美va欧美va精品| 在线视频中文字幕一区二区| 精品国产一区二区在线观看| 亚洲综合免费观看高清完整版在线 | 国产毛片一区二区| 亚洲欧美综合另类在线卡通| 国产精品高清亚洲| 精品视频一区三区九区|