⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lxt_tree_1.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: lxt_tree_1.cc//// function to count number of lex nodes in a tree//// isip include files//#include "lex_tree.h"#include "lex_tree_constants.h"// method: build_tree_cc//// arguments://  Ngram* ngram : (input) the ngram language model//  Hash_table* lexicon : (input) the lexicon//// return: a logical_1 to indicate success//// this method loops over all the unigram words in the ngram LM, and// for each pronunciations of the word, it checks phone-by-phone if// the current phone is already on the correct branch of the tree and// inserts the word in the corresponding node//logical_1 Lex_tree::build_tree_cc(Ngram* ngram_a, Hash_table* lexicon_a) {    // phone / word parameters  //  int_4 phone = (int_4)-1;  int_4 num_prons = (int_4)0;  int_4* num_ph = (int_4*)NULL;  int_4** phlist = (int_4**)NULL;  // dummy lexical nodes  //  Lex_node* curr_node = (Lex_node*)NULL;  Lex_node* next_node = (Lex_node*)NULL;  Lex_node* stop_node = (Lex_node*)NULL;  // memory manager  //  Memory_manager* manager = Link_list::get_manager_cc();  // set the head node  //  if (head_d == (Lex_node*)NULL) {    head_d = manager->new_lex_cc();    head_d->set_phone_cc(LXN_START_PHONE);    head_d->set_type_cc(LXN_NGRAM);  }  // mark status as true i.e. active  //  status_d = ISIP_TRUE;  // get the unigrams list  //  Ngram_list* unigrams = ngram_a->get_list_cc(0);  // get each word in the unigram table  //  Word* word = (Word*)NULL;  int_4 num_uni = unigrams->get_num_cc();  Ngram_node** uninodes = unigrams->get_nodes_cc();  // loop over all nodes  //  for (int_4 k = 0; k < num_uni; k++) {    // get the word    //    word = uninodes[k]->get_word_cc();        // the sentence start word has already been accounted for    //    if (word->get_index_cc() != LXT_SENT_START_WORD) {            // create a stop node      //      stop_node = manager->new_lex_cc();      stop_node->set_phone_cc(LXN_STOP_PHONE);      stop_node->set_type_cc(LXN_NGRAM);      stop_node->add_word_cc(uninodes[k]);            // get the pronunciations for this word      //      num_prons = word->get_num_prons_cc();      phlist = word->get_phone_list_cc();      num_ph = word->get_num_phones_cc();            // if this word has no pronunciations, check if it reperesents      // another language model      //      if (*(word->get_name_cc()) == ISIP_DOLLAR || (num_prons == 0)) {	// add the stop node for this word directly to the head node	//	head_d->add_child_cc(stop_node);	head_d->set_word_end_cc(ISIP_TRUE);      }      // otherwise grow the tree      //      else {	// loop over all the pronunciations for this word	//	for (int_4 i = 0; i < num_prons; i++) {	  	  // set the next node as current	  //	  next_node = head_d;	  	  // loop over all phones in this pronunciations	  //	  for (int_4 j = 0; j < num_ph[i]; j++) {	    	    // set the current node	    //	    curr_node = next_node;	    	    // the jth phone of this ith pronunciation	    //	    phone = phlist[i][j];	    	    // get the node in the tree that contains this phone	    //	    next_node = curr_node->make_node_cc(phone);	    next_node->add_word_cc(uninodes[k]);	    next_node->set_type_cc(LXN_NGRAM);	    	  } // end for j	  	  // add the stop node at the end of word and set word end	  // flag	  //	  next_node->add_child_cc(stop_node);	  next_node->set_word_end_cc(ISIP_TRUE);	  	} // end loop over all pronunciations      } // end else grow the tree    } // end if this is not sentence start word  } // end for loop over k    // exit gracefully  //  return ISIP_TRUE;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -