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

📄 ngmp_02.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/mmedia/NGramParser/ngmp_02.cc// version: $Id: ngmp_02.cc,v 1.5 2002/06/27 16:36:36 zheng Exp $//// isip include files//#include "NGramParser.h"#include <Console.h>// method: diagnose//// arguments://  Integral::DEBUG level: (input) debug level for diagnostics//// return: a boolean value indicating status//boolean NGramParser::diagnose(Integral::DEBUG level_a) {  level_a = Integral::ALL;  //---------------------------------------------------------------------  //  // 0. preliminaries  //  //---------------------------------------------------------------------  // output the class name  //  if (level_a > Integral::NONE) {    String output(L"diagnosing class ");    output.concat(CLASS_NAME);    output.concat(L": ");    Console::put(output);    Console::increaseIndention();  }   //--------------------------------------------------------------------  //  // 1. required public methods  //  //--------------------------------------------------------------------  // set indentation  //  if (level_a > Integral::NONE) {    Console::put(L"testing required public methods...\n");    Console::increaseIndention();  }  // test destructor/constructor(s)  //  NGramParser np0;  NGramParser np1(np0);    if (!np1.eq(np0)) {    return Error::handle(name(), L"copy constructor", Error::TEST,			 __FILE__, __LINE__);  }  // test large allocation construction and deletion  //  if (level_a > Integral::BRIEF) {        Console::put(L"testing large chunk memory allocation and deletion:\n");        // set the memory to a strange block size so we can hopefully catch any    // frame overrun errors    //    NGramParser::setGrowSize((long)500);        NGramParser* pft = new NGramParser();        for (long j = 1; j <= 100; j++) {      NGramParser** pfts = new NGramParser*[j * 100];            // create the objects      //      for (long i = 0; i < j * 100; i++) {	pfts[i] = new NGramParser();      }          // delete objects      //      for (long i = (j * 100) - 1; i >= 0; i--) {	delete pfts[i];      }          delete [] pfts;    }     delete pft;  }  // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }    //--------------------------------------------------------------------------  //  // 2. class-specific public methods:  //     algorithm methods  //  //--------------------------------------------------------------------------  // set indentation  //  if (level_a > Integral::NONE) {    Console::put(L"testing class-specific public methods: computational methods...\n");    Console::increaseIndention();  }  // declare local variables  //  NGramParser np(3);  HashTable<Long, NGramNode> gram_hash;  Sof sof;  // convert SearchLevel's SearchSymbol hash table to String hash table  //  String all_symbol(L"!SENT_START !SENT_END ZERO ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE OH");  Vector<String> symbol_table;  String symbol;  long pos = 0;  Long index(0);  String file_name;    while(all_symbol.tokenize(symbol, pos)) {    symbol.trim();    if (!symbol.eq(String::DEF_VALUE)) {      symbol_table.setLength((long)index + 1);      symbol_table(index).assign(symbol);      index++;    }  }    // open the language model file  //  file_name.assign(L"../../../doc/examples/data/models/tidigits_trigram.arpa");  if (!sof.open(file_name, File::READ_ONLY)) {    return Error::handle(file_name, L"open", Error::FILE_NOTFND,			 __FILE__, __LINE__);  }  // load a trigram file into hash table  //  np.load(sof, gram_hash, symbol_table, 1, L"NGramModel");  // close file  //  sof.close();    // write the instance of the object into the Sof file  //  file_name.assign(L"trigram.sof");  if (!sof.open(file_name, File::WRITE_ONLY)) {        return Error::handle(file_name, L"open", Error::FILE_NOTFND,			 __FILE__, __LINE__);  }  // store hash table to a trigram file  //    np.store(sof, gram_hash, symbol_table, 1, L"NGramModel");  File::remove(file_name);  // close file  //  sof.close();    // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }  // --------------------------------------------------------------------  //  // 3. print completion message  //  // --------------------------------------------------------------------  // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }    if (level_a > Integral::NONE) {    String output(L"diagnostics passed for class ");    output.concat(name());    output.concat(L"\n");    Console::put(output);  }  // exit gracefully  //  return true;}

⌨️ 快捷键说明

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