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

📄 lex_07.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
//// file: $isip/class/search/LexicalTree/lex_07.cc// version: $Id: lex_07.cc,v 1.3 2002/11/19 22:32:57 parihar Exp $////isip include files//#include "LexicalTree.h"// method: factorLexicalTree//// arguments:// const GVLexicalNode*& start_vert_a: (input) the starting vertex // const HashTable<Long, Float>* & ngram_a: (input) used in ngram only// const long history_a: (input) use in ngram only, the history for current//                       ngram//// return: the max probability from the start vertext//// this method factor the language model probabilities on the lexical tree//float LexicalTree::factorLexicalTree(GVLexicalNode* lex_vert_a,				     const HashTable<Long, Float>* ngram_a,				     long history_a) {    // algorithm for this method:  // self-explain  //  // IF: algo == UNFACTORED  //     return 0;  // IF: algo == DI_GRAPH && impl == ALWAYS_MAX  //     put the probability on the weight of the arc  //  // IF: algo == NGRAM && impl == ALWAYS_MAX  //     the ngram probability shouldn't put on the arc, otherwise we will  //     destroy the pronuciation probability, we just return  a  //     value dynmically  //         GVLexicalNode* succ_vert = (GVLexicalNode*)NULL;  GALexicalNode* curr_arc  = (GALexicalNode*)NULL;  boolean more_arcs = false;  float tmp_weight;  float max_weight = (float)Integral::MIN_LOG_VALUE;  // IF: algo == UNFACTORED  //  if ( algorithm_d == UNFACTORED )    return 0;  // IF: algo == DI_GRAPH && impl == ALWAYS_MAX  //  if ( algorithm_d == DI_GRAPH && implementation_d == ALWAYS_MAX ){    LexicalNode* curr_node = (LexicalNode*)lex_vert_a->getItem();        // loop throught all successors    //    for ( more_arcs = lex_vert_a->gotoFirst(); more_arcs;	  more_arcs = lex_vert_a->gotoNext() ) {      // get current arc      //      curr_arc = lex_vert_a->getCurr();            // get the successor      //      succ_vert = curr_arc->getVertex();      LexicalNode* succ_node = (LexicalNode*)succ_vert->getItem();      // if it is a NULL node      //      if (succ_node == (LexicalNode*)NULL){	Error::handle(name(), L"factor: invalid lexical tree node",		      Error::NULL_ARG, __FILE__,		      __LINE__);	return 0;      }      else if ( lex_vert_a->isStart() ){		// get the maxium recursively	//	tmp_weight = factorLexicalTree(succ_vert);	// set the weight on the arc	//	curr_arc->setWeight(tmp_weight);	curr_arc->setEpsilon(false);      }      // if we reach the end of the pronuciation      //      else if ( succ_node->getSearchLevel()->getLevelIndex()		!= curr_node->getSearchLevel()->getLevelIndex() ){	// get the probability at the end of each pronuciation	//	tmp_weight = curr_arc->getWeight();      }      else {		// get the maxium recursively	//	tmp_weight = factorLexicalTree(succ_vert);	// set the weight on the arc	//	curr_arc->setWeight(tmp_weight);	curr_arc->setEpsilon(false);      }      // set the max weight      //      if ( tmp_weight > max_weight )	max_weight = tmp_weight;    }    // return    //    return max_weight;  }  else {    // not implemented yet    //    Error::handle(name(), L"factor", Error::NOT_IMPLEM, __FILE__,		  __LINE__);  }      // exit gracefully  //  return 0;}

⌨️ 快捷键说明

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