/** * @file init_voca.c * * * @brief 単語辞書ファイルをメモリに読み込む * * * * @brief Load a word dictionary into memory * * * @author Akinobu LEE * @date Fri Feb 18 19:41:12 2005 * * $Revision: 1.4 $ * */ /* * Copyright (c) 1991-2012 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology * All rights reserved */ #include #include #include /** * Load and initialize a word dictionary. * * @param winfo [out] pointer to a word dictionary data to store the read data * @param filename [in] file name of the word dictionary to read * @param hmminfo [in] %HMM definition data, needed for triphone conversion. * @param not_conv_tri [in] TRUE if not converting monophone to triphone. * @param force_dict [in] TRUE if want to ignore the error words in the dictionary * * @return TRUE on success, FALSE on failure. */ boolean init_voca(WORD_INFO *winfo, char *filename, HTK_HMM_INFO *hmminfo, boolean not_conv_tri, boolean force_dict) { FILE *fd; if ((fd = fopen_readfile(filename)) == NULL) { jlog("Error: init_voca: failed to open %s\n",filename); return(FALSE); } if (!voca_load_htkdict(fd, winfo, hmminfo, not_conv_tri)) { if (force_dict) { jlog("Warning: init_voca: the word errors are ignored\n"); } else { jlog("Error: init_voca: error in reading %s: %d words failed out of %d words\n",filename, winfo->errnum, winfo->num); fclose_readfile(fd); return(FALSE); } } if (fclose_readfile(fd) == -1) { jlog("Error: init_voca: failed to close\n"); return(FALSE); } jlog("Stat: init_voca: read %d words\n", winfo->num); return(TRUE); } /** * Load and initialize a word list for isolated word recognition. * * @param winfo [out] pointer to a word dictionary data to store the read data * @param filename [in] file name of the word dictionary to read * @param hmminfo [in] %HMM definition data, needed for triphone conversion. * @param headphone [in] word head silence phone name * @param tailphone [in] word tail silence phone name * @param conextphone [in] silence context name at head and tail phoneme * @param force_dict [in] TRUE if want to ignore the error words in the dictionary * * @return TRUE on success, FALSE on failure. */ boolean init_wordlist(WORD_INFO *winfo, char *filename, HTK_HMM_INFO *hmminfo, char *headphone, char *tailphone, char *contextphone, boolean force_dict) { FILE *fd; jlog("Stat: init_wordlist: reading in word list\n"); if ((fd = fopen_readfile(filename)) == NULL) { jlog("Error: init_wordlist: failed to open %s\n",filename); return(FALSE); } if (!voca_load_wordlist(fd, winfo, hmminfo, headphone, tailphone, contextphone)) { if (force_dict) { jlog("Warning: init_wordlist: the word errors are ignored\n"); } else { jlog("Error: init_wordlist: error in reading %s: %d words failed out of %d words\n",filename, winfo->errnum, winfo->num); fclose_readfile(fd); return(FALSE); } } if (fclose_readfile(fd) == -1) { jlog("Error: init_wordlist: failed to close\n"); return(FALSE); } jlog("Stat: init_wordlist: read %d words\n", winfo->num); return(TRUE); }