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

📄 pdt_06.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/pr/PhoneticDecisionTree/pdt_06.cc// version: $Id: pdt_06.cc,v 1.5 2002/11/01 17:54:41 parihar Exp $//// isip include files//#include "PhoneticDecisionTree.h"// method: load method//boolean PhoneticDecisionTree::load(const Attributes& attributes_a,				   PhoneticDecisionTreeNode& pdtnode_a) {  boolean res;    res = attributes_d.assign(attributes_a);  res = pdt_rootnode_d.assign(pdtnode_a);  // exit gracefully  //  return res;}  // method: loadTrain//// arguments://  Vector<ContextMap>& context_map: (input) ContextMaps//  long& left_context: (input) left context length//  long& right_context: (input) right context length//  Vector<SearchSymbol>& upper_symbol_table: (input) symbol-table above the//                                            lowest level (phones)//  Vector<SearchSymbol>& contextless_symbol_table: (input) symbol-table with//                                                  no context (phones)//  Vector<DiGraph<SearchNode> >& sub_graphs: (input) Subgraphs for the//                                            ContextMaps//  Vector<SearchSymbol>& symbol_table: (input) Symbol Table (states)//  HashTable<SearchSymbol, Long>& symbol_hash: (input) Mapping from symbols//                                              to StatisticalModels//  Vector<StatisticalModel>& stat_models: (input) Pool of StatisticalModels//  Filename& ques_ans_file: (input) file for phonetic questions and answers//  HashTable<SearchSymbol, Long>& tied_symbol_hash: (output) mapping of tied//                                                   search-symbols to stat//                                                   models//  Vector<StatisticalModel>& tied_stat_models: (input) Pool of tied//                                              StatisticalModels//// return: a boolean value indicating status//// this method computes loads the necessary variables needed for// PhoneticDecisionTree class to train a decision-tree//boolean PhoneticDecisionTree::loadTrain(Vector<ContextMap>& context_map_a,					long& left_context_a,					long& right_context_a,					Vector<SearchSymbol>&					upper_symbol_table_a,					Vector<SearchSymbol>&					contextless_symbol_table_a,					Vector<DiGraph<SearchNode> >&					sub_graphs_a,					Vector<SearchSymbol>&					symbol_table_a,					HashTable<SearchSymbol,Long>&					symbol_hash_a,					Vector<StatisticalModel>&					stat_models_a,					Filename& ques_ans_file_a,					HashTable<SearchSymbol, Long>&					tied_symbol_hash_a,					Vector<StatisticalModel>&					tied_stat_models_a) {  // local variables  //  Data data;  boolean res = true;        // add the central-phone and state indices as the first two  // attributes. note that the PhoneticDecisionTree is first split  // using the central-symbol (phone) attribute, then using the  // symbol-position (state) and then recursively using the phonetic  // questions. this way we have n*m number of sub-trees.  //  Attribute temp_attribute;  String temp_cph;  temp_cph.assign(CPH);  String temp_pos;  temp_pos.assign(POS);  SingleLinkedList<String> temp_all_cph;  SingleLinkedList<String> temp_all_pos;      // get central phones that have context, don't include the last two  // symbols - NO_LEFT_CONTEXT and NO_RIGHT_CONTEXT  //  if (!getCentralSymbols(upper_symbol_table_a, contextless_symbol_table_a,			 temp_all_cph)) {    return Error::handle(name(), L"loadTrain", ERR, __FILE__, __LINE__);  }    // get the positions of the models  //  long context_len = (long)1 + left_context_a + right_context_a;    for (long l = 0; l < context_len; l++) {    String temp_pos;    temp_pos.assign(l);    temp_all_pos.insert(&temp_pos);  }    // set the central and position attributes  //  temp_attribute.assign(temp_cph, temp_all_cph);  attributes_d.insert(&temp_attribute);  temp_attribute.assign(temp_pos, temp_all_pos);  attributes_d.insert(&temp_attribute);    // get all possible answers and questions for phonetic-decision-trees  //  SingleLinkedList<Pair<Long, String> > questions;  HashTable<String, String>  answers;  if (!readQuestionAnswer(ques_ans_file_a, questions, answers)) {    return Error::handle(name(), L"loadTrain", ERR, __FILE__, __LINE__);  }  // find the statistical models that are already tied, we 'll not tie  // these using the state-tying procedure  //        // loop-over all the context-maps and pool the  // statistical-models. check if all the context-maps have the same  // length as expected  //  if (!poolStatisticalModel(context_map_a, contextless_symbol_table_a,			    sub_graphs_a, symbol_table_a, symbol_hash_a,			    stat_models_a, context_len, questions, answers,			    data, tied_symbol_hash_a, tied_stat_models_a)) {    return Error::handle(name(), L"loadTrain", ERR, __FILE__, __LINE__);  }    // add the data to the data at the root node  //  pdt_rootnode_d.setDataPoints(data);    // exit gracefully  //  return res;}// method: loadTest//// arguments://  Filename phonetic_dt_file: (input) file with the input decisiontree//// return: a boolean value indicating status//// this method loads the DecisionTree//boolean PhoneticDecisionTree::loadTest(Filename& phonetic_dt_file_a) {  // local variables  //  boolean res = true;    // load the decision-tree in binary format  //  if (phonetic_dt_file_a.length() == 0) {     return Error::handle(name(), L"loadTest - invalid decision-tree file", ERR, __FILE__, __LINE__);  }    // open the decision-tree sof file  //  Sof in_sof;  if(!in_sof.open(phonetic_dt_file_a, File::READ_ONLY, File::BINARY)) {    return Error::handle(phonetic_dt_file_a, L"open", ERR, __FILE__, __LINE__);  }    // read the decision-tree from an sof file  //  read(in_sof, long(0));    // close the input sof file  //  in_sof.close();    // exit gracefully  //  return res;}

⌨️ 快捷键说明

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