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

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

?? voca_load_wordlist.c

?? julius version 4.12.about sound recognition.
?? C
字號:
/** * @file   voca_load_wordlist.c *  * <JA> * @brief  干惟帽胳千急モ〖ド脫帽胳リストの粕み哈み * * </JA> *  * <EN> * @brief  Read word list from a file for isolated word recognition mode * </EN> *  * @author Akinobu LEE * @date   Sun Jul 22 13:29:32 2007 * * $Revision: 1.5 $ *  *//* * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology * All rights reserved */#include <sent/stddefs.h>#include <sent/vocabulary.h>#include <sent/htk_hmm.h>/*  * dictinary format: *  * 1 words per line. *  * fields: OutputString phone1 phone2 .... *  *     OutputString *		   String to output when the word is recognized. * *     phone1 phone2 .... *		   sequence of logical HMM name (normally phoneme) *                 to express the pronunciation */#define PHONEMELEN_STEP  30	///< Memory allocation step for phoneme sequencestatic char buf[MAXLINELEN];	///< Local work area for input text processingstatic char bufbak[MAXLINELEN];	///< Local work area for debug message/**  * Add a triphone name to the missing error list in WORD_INFO. *  * @param winfo [i/o] word dictionary to add the error phone to error list * @param name [in] phone name to be added */static voidadd_to_error(WORD_INFO *winfo, char *name){  char *buf;  char *match;  buf = (char *)mymalloc(strlen(name) + 1);  strcpy(buf, name);  if (winfo->errph_root == NULL) {    winfo->errph_root = aptree_make_root_node(buf, &(winfo->mroot));  } else {    match = aptree_search_data(buf, winfo->errph_root);    if (match == NULL || !strmatch(match, buf)) {      aptree_add_entry(buf, buf, match, &(winfo->errph_root), &(winfo->mroot));    }  }}/**  * Traverse callback function to output a error phone. *  * @param x [in] error phone string of the node */static voidcallback_list_error(void *x){  char *name;  name = x;  jlog("Error: voca_load_wordlist: %s\n", name);}/**  * Output all error phones appeared while readin a word dictionary. *  * @param winfo [in] word dictionary data */static voidlist_error(WORD_INFO *winfo){  jlog("Error: voca_load_wordlist: begin missing phones\n");  aptree_traverse_and_do(winfo->errph_root, callback_list_error);  jlog("Error: voca_load_wordlist: end missing phones\n");}/**  * Load a line from buffer and set parameters to the dictionary. *  * @param buf [in] input buffer containing a word entry * @param winfo [i/o] word dictionary to append the entry * @param hmminfo [in] phoneme HMM definition * @param headphone [in] word head silence model name * @param tailphone [in] word tail silence model name * @param contextphone [in] silence context name to be used at head and tail *  * @return TRUE when successfully read, or FALSE on encountered end of * dictionary.  When an error occurs, this function will set winfo->ok_flag * to FALSE. *  */booleanvoca_load_word_line(char *buf, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, char *headphone, char *tailphone, char *contextphone){  WORD_ID vnum;  winfo->linenum++;  vnum = winfo->num;  if (vnum >= winfo->maxnum) {    if (winfo_expand(winfo) == FALSE) return FALSE;  }  if (voca_load_wordlist_line(buf, &vnum, winfo->linenum, winfo, hmminfo, winfo->do_conv, &(winfo->ok_flag), headphone, tailphone, contextphone) == FALSE) {    return FALSE;  }  winfo->num = vnum;  return TRUE;}/**  * Top function to read word list via text *  * @param fp [in] file pointer * @param winfo [out] pointer to word dictionary to store the read data. * @param hmminfo [in] HTK %HMM definition data.  if NULL, phonemes are ignored. * @param headphone [in] word head silence model name * @param tailphone [in] word tail silence model name * @param contextphone [in] silence context name to be used at head and tail *  * @return TRUE on success, FALSE on any error word. */booleanvoca_load_wordlist(FILE *fp, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, char *headphone, char *tailphone, char *contextphone){  boolean ret;  voca_load_start(winfo, hmminfo, FALSE);  while (getl(buf, sizeof(buf), fp) != NULL) {    if (voca_load_word_line(buf, winfo, hmminfo, headphone, tailphone, contextphone) == FALSE) break;  }  ret = voca_load_end(winfo);  return(ret);}/**  * Top function to read word list via file pointer *  * @param fp [in] file pointer * @param winfo [out] pointer to word dictionary to store the read data. * @param hmminfo [in] HTK %HMM definition data.  if NULL, phonemes are ignored. * @param headphone [in] word head silence model name * @param tailphone [in] word tail silence model name * @param contextphone [in] silence context name to be used at head and tail *  * @return TRUE on success, FALSE on any error word. */booleanvoca_load_wordlist_fp(FILE *fp, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, char *headphone, char *tailphone, char *contextphone){  boolean ret;  voca_load_start(winfo, hmminfo, FALSE);  while (getl_fp(buf, sizeof(buf), fp) != NULL) {    if (voca_load_word_line(buf, winfo, hmminfo, headphone, tailphone, contextphone) == FALSE) break;  }  ret = voca_load_end(winfo);  return(ret);}/**  * Sub function to Add a dictionary entry line to the word dictionary. *  * @param buf [i/o] buffer to hold the input string, will be modified in this function * @param vnum_p [in] current number of words in @a winfo * @param linenum [in] current line number of the input * @param winfo [out] pointer to word dictionary to append the data. * @param hmminfo [in] HTK %HMM definition data.  if NULL, phonemes are ignored. * @param do_conv [in] TRUE if performing triphone conversion * @param ok_flag [out] will be set to FALSE if an error occured for this input. * @param headphone [in] word head silence model name * @param tailphone [in] word tail silence model name * @param contextphone [in] silence context name to be used at head and tail *  * @return FALSE if buf == "DICEND", else TRUE will be returned. */booleanvoca_load_wordlist_line(char *buf, WORD_ID *vnum_p, int linenum, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, boolean do_conv, boolean *ok_flag, char *headphone, char *tailphone, char *contextphone){  char *ptmp, *lp = NULL, *p;  static char cbuf[MAX_HMMNAME_LEN];  static HMM_Logical **tmpwseq = NULL;  static int tmpmaxlen;  int len;  HMM_Logical *tmplg;  boolean pok, first;  int vnum;  vnum = *vnum_p;  if (strmatch(buf, "DICEND")) return FALSE;  /* allocate temporal work area for the first call */  if (tmpwseq == NULL) {    tmpmaxlen = PHONEMELEN_STEP;    tmpwseq = (HMM_Logical **)mymalloc(sizeof(HMM_Logical *) * tmpmaxlen);  }  /* backup whole line for debug output */  strcpy(bufbak, buf);    /* Output string */  if ((ptmp = mystrtok_quote(buf, " \t\n")) == NULL) {    jlog("Error: voca_load_wordlist: line %d: corrupted data:\n> %s\n", linenum, bufbak);    winfo->errnum++;    *ok_flag = FALSE;    return TRUE;  }  winfo->wname[vnum] = strcpy((char *)mybmalloc2(strlen(ptmp)+1, &(winfo->mroot)), ptmp);  /* reset transparent flag */  winfo->is_transparent[vnum] = FALSE;  /* just move pointer to next token */  if ((ptmp = mystrtok_movetonext(NULL, " \t\n")) == NULL) {    jlog("Error: voca_load_wordlist: line %d: corrupted data:\n> %s\n", linenum, bufbak);    winfo->errnum++;    *ok_flag = FALSE;    return TRUE;  }#ifdef CLASS_NGRAM  winfo->cprob[vnum] = 0.0;	/* prob = 1.0, logprob = 0.0 */#endif    if (ptmp[0] == '@') {		/* class N-gram prob */#ifdef CLASS_NGRAM    /* word probability within the class (for class N-gram) */    /* format: classname @classprob wordname [output] phoneseq */    /* classname equals to wname, and wordname will be omitted */    /* format: @%f (log scale) */    /* if "@" not found or "@0", it means class == word */    if ((ptmp = mystrtok(NULL, " \t\n")) == NULL) {      jlog("Error: voca_load_wordlist: line %d: corrupted data:\n> %s\n", linenum, bufbak);      winfo->errnum++;      *ok_flag = FALSE;      return TRUE;    }    if (ptmp[1] == '\0') {	/* space between '@' and figures */      jlog("Error: voca_load_wordlist: line %d: value after '@' missing, maybe wrong space?\n> %s\n", linenum, bufbak);      winfo->errnum++;      *ok_flag = FALSE;      return TRUE;    }    winfo->cprob[vnum] = atof(&(ptmp[1]));    if (winfo->cprob[vnum] != 0.0) winfo->cwnum++;    /* read next word entry (just skip them) */    if ((ptmp = mystrtok(NULL, " \t\n")) == NULL) {      jlog("Error: voca_load_wordlist: line %d: corrupted data:\n> %s\n", linenum,bufbak);      winfo->errnum++;      *ok_flag = FALSE;      return TRUE;    }    /* move to the next word entry */    if ((ptmp = mystrtok_movetonext(NULL, " \t\n")) == NULL) {      jlog("Error: voca_load_wordlist: line %d: corrupted data:\n> %s\n", linenum, bufbak);      winfo->errnum++;      *ok_flag = FALSE;      return TRUE;    }#else  /* ~CLASS_NGRAM */    jlog("Error: voca_load_wordlist: line %d: cannot handle in-class word probability\n> %s\n", linenum, ptmp, bufbak);    winfo->errnum++;    *ok_flag = FALSE;    return TRUE;#endif /* CLASS_NGRAM */  }  /* OutputString */  switch(ptmp[0]) {  case '[':			/* ignore transparency */    ptmp = mystrtok_quotation(NULL, " \t\n", '[', ']', 0);    break;  case '{':			/* ignore transparency */    ptmp = mystrtok_quotation(NULL, " \t\n", '{', '}', 0);    break;  default:    /* ALLOW no entry for output */    /* same as wname is used */    ptmp = winfo->wname[vnum];  }  if (ptmp == NULL) {    jlog("Error: voca_load_htkdict: line %d: corrupted data:\n> %s\n", linenum, bufbak);    winfo->errnum++;    *ok_flag = FALSE;    return TRUE;  }  winfo->woutput[vnum] = strcpy((char *)mybmalloc2(strlen(ptmp)+1, &(winfo->mroot)), ptmp);      /* phoneme sequence */  if (hmminfo == NULL) {    /* don't read */    winfo->wseq[vnum] = NULL;    winfo->wlen[vnum] = 0;  } else {    len = 0;    first = TRUE;    pok = TRUE;    for (;;) {      if (do_conv) {	if (first) {	  /* init phone cycler */	  cycle_triphone(NULL);	  /* insert head phone at beginning of word */	  if (contextphone) {	    cycle_triphone(contextphone);	  } else {	    cycle_triphone("NULL_C");	  }	  if ((lp = mystrtok(NULL, " \t\n")) == NULL) {	    jlog("Error: voca_load_wordlist: line %d: word %s has no phoneme:\n> %s\n", linenum, winfo->wname[vnum], bufbak);	    winfo->errnum++;	    *ok_flag = FALSE;	    return TRUE;	  }	  p = cycle_triphone(lp);	  first = FALSE;	} else {		/* do_conv, not first */	  if (lp != NULL) {	/* some token processed at last loop */	    lp = mystrtok(NULL, " \t\n");	    if (lp != NULL) {	      /* token exist */	      p = cycle_triphone(lp);	    } else {	      /* no more token, insert tail phone at end of word */	      if (contextphone) {		p = cycle_triphone(contextphone);	      } else {		p = cycle_triphone("NULL_C");	      }	    }	  } else {		/* no more token at last input  */	    /* flush tone cycler */	    p = cycle_triphone_flush();	  }	}      } else {			/* not do_conv */	if (first) {	  p = lp = headphone;	  first = FALSE;	} else {	  if (lp != NULL) {	/* some token processed at last loop */	    p = lp = mystrtok(NULL, " \t\n");	    /* if no more token, use tailphone */	    if (lp == NULL) p = tailphone;	  } else {	    /* no more token at last input, exit loop */	    p = NULL;	  }	}      }      if (p == NULL) break;      /* for headphone and tailphone, their context should not be handled */      /* and when they appear as context they should be replaced by contextphone */      if (do_conv) {	center_name(p, cbuf);	if (contextphone) {	  if (strmatch(cbuf, contextphone)) {	    if (len == 0) {	      p = headphone;	    } else if (lp == NULL) {	      p = tailphone;	    }	  }	} else {	  if (strmatch(cbuf, "NULL_C")) {	    if (len == 0) {	      p = headphone;	    } else if (lp == NULL) {	      p = tailphone;	    }	  } else {	    if (strnmatch(p, "NULL_C", 6)) {	      if (strnmatch(&(p[strlen(p)-6]), "NULL_C", 6)) {		p = cbuf;	      } else {		p = rightcenter_name(p, cbuf);	      }	    } else if (strnmatch(&(p[strlen(p)-6]), "NULL_C", 6)) {	      p = leftcenter_name(p, cbuf);	    }	  }	}      }      //printf("[[%s]]\n", p);      /* both defined/pseudo phone is allowed */      tmplg = htk_hmmdata_lookup_logical(hmminfo, p);      if (tmplg == NULL) {	/* not found */	if (do_conv) {	  /* logical phone was not found */	  jlog("Error: voca_load_wordlist: line %d: logical phone \"%s\" not found\n", linenum, p);	  snprintf(cbuf,MAX_HMMNAME_LEN,"%s", p);	} else {	  jlog("Error: voca_load_wordlist: line %d: phone \"%s\" not found\n", linenum, p);	  snprintf(cbuf, MAX_HMMNAME_LEN, "%s", p);	}	add_to_error(winfo, cbuf);	pok = FALSE;      } else {	/* found */	if (len >= tmpmaxlen) {	  /* expand wseq area by PHONEMELEN_STEP */	  tmpmaxlen += PHONEMELEN_STEP;	  tmpwseq = (HMM_Logical **)myrealloc(tmpwseq, sizeof(HMM_Logical *) * tmpmaxlen);	}	/* store to temporal buffer */	tmpwseq[len] = tmplg;      }      len++;    }    if (!pok) {			/* error in phoneme */      jlog("Error: voca_load_wordlist: the line content was: %s\n", bufbak);      winfo->errnum++;      *ok_flag = FALSE;      return TRUE;    }    if (len == 0) {      jlog("Error: voca_load_wordlist: line %d: no phone specified:\n> %s\n", linenum, bufbak);      winfo->errnum++;      *ok_flag = FALSE;      return TRUE;    }    /* store to winfo */    winfo->wseq[vnum] = (HMM_Logical **)mybmalloc2(sizeof(HMM_Logical *) * len, &(winfo->mroot));    memcpy(winfo->wseq[vnum], tmpwseq, sizeof(HMM_Logical *) * len);    winfo->wlen[vnum] = len;    winfo->wton[vnum] = 0;  }  vnum++;  *vnum_p = vnum;    return(TRUE);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人福利片| 在线精品视频小说1| 成人91在线观看| 91麻豆精品国产91久久久久久久久| 国产情人综合久久777777| 婷婷成人激情在线网| 91免费看`日韩一区二区| 久久亚洲精华国产精华液| 一区二区高清免费观看影视大全| 国产精品亚洲综合一区在线观看| 欧美精品第1页| 亚洲精品免费视频| 成人中文字幕电影| 欧美精品一区二| 日本成人中文字幕在线视频| 97精品久久久久中文字幕 | 中文字幕av不卡| 精品伊人久久久久7777人| 欧美日韩极品在线观看一区| 中文字幕亚洲在| 成人亚洲精品久久久久软件| 久久蜜桃一区二区| 国产在线视频不卡二| 日韩欧美中文字幕制服| 午夜免费欧美电影| 欧美裸体一区二区三区| 亚洲欧美二区三区| 一本一本大道香蕉久在线精品| 国产精品午夜在线| 成人免费视频caoporn| 国产午夜亚洲精品午夜鲁丝片| 捆绑紧缚一区二区三区视频| 91精品欧美久久久久久动漫| 午夜欧美大尺度福利影院在线看| 欧美日韩国产综合草草| 天堂久久一区二区三区| 欧美一级夜夜爽| 另类小说综合欧美亚洲| 欧美成人高清电影在线| 国产一区在线精品| 国产精品久久毛片| 91麻豆免费在线观看| 日韩理论片中文av| 91行情网站电视在线观看高清版| 亚洲综合一区二区| 欧美日韩国产大片| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩一区二区三免费高清| 国产一二精品视频| 国产精品视频免费看| 色综合婷婷久久| 天天影视色香欲综合网老头| 26uuuu精品一区二区| 成人动漫一区二区三区| 亚洲国产三级在线| 日韩视频在线一区二区| 国产精品一区二区在线观看不卡 | 美女性感视频久久| 久久色成人在线| 99久久伊人精品| 亚洲成人av资源| 精品国产精品网麻豆系列| 国产成人精品aa毛片| 一区二区三区成人| 日韩免费看的电影| 97久久久精品综合88久久| 偷拍与自拍一区| 国产亚洲短视频| 欧美精品在线观看一区二区| 国产一区二区三区免费在线观看 | 91国模大尺度私拍在线视频| 蜜臀国产一区二区三区在线播放| 国产精品欧美一区二区三区| 欧美日韩亚洲综合在线| 国产盗摄一区二区三区| 日本中文字幕不卡| 中文久久乱码一区二区| 欧美久久久久免费| 97se亚洲国产综合在线| 国产在线播精品第三| 一二三四区精品视频| 国产欧美一区二区三区鸳鸯浴| 欧亚洲嫩模精品一区三区| 国产精品综合二区| 日日欢夜夜爽一区| 亚洲欧美一区二区在线观看| 欧美www视频| 欧美无乱码久久久免费午夜一区 | 在线观看亚洲专区| 国产一区二区久久| 日韩精品高清不卡| 亚洲综合成人在线视频| 国产精品免费aⅴ片在线观看| 日韩欧美一级片| 欧美丰满一区二区免费视频 | 国产1区2区3区精品美女| 午夜精品久久久久久不卡8050| 国产精品美女www爽爽爽| 久久免费的精品国产v∧| 日韩一级精品视频在线观看| 欧美视频一区二区三区在线观看| 不卡一卡二卡三乱码免费网站| 国产揄拍国内精品对白| 免费精品视频最新在线| 日本不卡一区二区三区| 亚洲成人在线观看视频| 亚洲影院理伦片| 亚洲国产欧美在线| 午夜精品一区二区三区免费视频| 中文字幕欧美三区| 国产三级精品三级| 国产欧美一二三区| 久久精品欧美一区二区三区不卡 | 欧美挠脚心视频网站| 91成人在线免费观看| 欧洲精品中文字幕| 日本乱码高清不卡字幕| 在线观看av不卡| 欧美性猛片aaaaaaa做受| 欧美日韩国产在线播放网站| 精品视频999| 欧美日本免费一区二区三区| 69av一区二区三区| 欧美一区二区三区爱爱| 日韩视频一区二区三区| 国产亚洲一区字幕| 国产精品福利影院| 亚洲欧美另类久久久精品| 亚洲一区二区三区国产| 午夜精品123| 老司机精品视频导航| 国产成人啪免费观看软件| 成人毛片在线观看| 欧美性高清videossexo| 6080日韩午夜伦伦午夜伦| 久久综合久久99| 国产精品久久久久久久久快鸭| 亚洲色图制服诱惑| 亚洲va欧美va天堂v国产综合| 蜜臀精品久久久久久蜜臀 | 日本一区二区三级电影在线观看| 中文字幕不卡在线观看| 亚洲夂夂婷婷色拍ww47| 蜜臀精品久久久久久蜜臀| 大陆成人av片| 精品视频免费在线| 国产亚洲欧美在线| 一区二区三区欧美日韩| 久久精品国产秦先生| 色综合欧美在线视频区| 日韩视频在线永久播放| 亚洲日本va午夜在线电影| 奇米色一区二区三区四区| 风流少妇一区二区| 欧美日韩国产天堂| 日本一区二区三区国色天香| 亚洲国产视频直播| 成人开心网精品视频| 欧美一区二区三区四区久久| 国产精品女同一区二区三区| 天堂久久久久va久久久久| 99久久亚洲一区二区三区青草| 日韩一二在线观看| 亚洲裸体在线观看| 国产成人精品一区二| 欧美美女喷水视频| 日韩毛片精品高清免费| 国产在线视频一区二区三区| 欧美日韩高清一区二区不卡 | 日日夜夜精品视频天天综合网| 成人在线视频一区二区| 欧美区视频在线观看| 亚洲三级电影全部在线观看高清| 久久er精品视频| 欧美日韩国产bt| 艳妇臀荡乳欲伦亚洲一区| 成人小视频免费观看| www成人在线观看| 麻豆国产欧美一区二区三区| 欧美日韩一区二区三区四区五区| 中文字幕国产一区| 国产成人精品综合在线观看| 精品美女在线观看| 秋霞午夜av一区二区三区| 欧美图片一区二区三区| 国产精品久久久久桃色tv| 国产成人在线电影| www国产成人免费观看视频 深夜成人网| 丝袜美腿成人在线| 欧美日韩mp4| 午夜精品福利一区二区蜜股av| 91免费国产在线观看| 亚洲区小说区图片区qvod| av网站免费线看精品| 国产精品你懂的在线欣赏| 成人av先锋影音| 国产精品对白交换视频| 成人理论电影网| 最新久久zyz资源站| 色综合天天综合狠狠|