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

📄 audb_05.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/asr/AudioDatabase/audb_05.cc// version: $Id: audb_05.cc,v 1.8 2003/04/02 03:52:09 alphonso Exp $//// isip include files//#include "AudioDatabase.h"// method: getRecord//// arguments://   String& identifier: (input) annotation graph id//   Filename& filename: (output) desired annotation graph//// return: logical error status//// this method retrieves the record from the database//boolean AudioDatabase::getRecord(String& identifier_a, Filename& filename_a) {  // declare local variables  //  Long* tag;    // determine if the identifier exists in the database  //  tag = hash_d.get(identifier_a);  if (tag == (Long*)NULL) {    return false;  }    // when the identifier exists in the database return a copy of the record  //  else {    if (!filename_a.read(database_sof_d, (long)*tag)) {      Error::handle(name(), L"getRecord", Error::NO_PARAM_FILE,		    __FILE__, __LINE__);          }  }  // exit gracefully  //  return true;  }// method: assign//// arguments://  const AudioDatabase& arg//// return: logical error status//// this method has assigns the input AudioDatabase object//boolean AudioDatabase::assign(const AudioDatabase& arg_a) {  // declare local variables  //  boolean status = false;  // assign the member data  //  status = name_d.assign(arg_a.name_d);  status &= hash_d.assign(arg_a.hash_d);    // return the status  //  return status;}// method: eq//// arguments://  const AudioDatabase& arg//// return: logical error status//// this method has determines if the AudioDatabase objects are equal//boolean AudioDatabase::eq(const AudioDatabase& arg_a) const {    // declare local variables  //  boolean status = false;    // determine if the objects are equal  //  status = name_d.eq(arg_a.name_d);  status &= hash_d.eq(arg_a.hash_d);    // return the status  //  return status;}// method: clear//// arguments://   Integral::CMODE cmode: (input) clear mode//// return: logical error status//// this method clears the content of the current object//boolean AudioDatabase::clear(Integral::CMODE cmode_a) {    // declare local variables  //  boolean status = false;  // clear the data members  //    status = name_d.clear(cmode_a);  status &= hash_d.clear(cmode_a);    // return the status  //  return status;}// method: load//// arguments://  Sdb& sdb: (input) sdb file list Filename//  Filename& file_list: (input) audio file list corresponding to above ID//                     list, one line per file//// return: logical error status//// this method has assigns the input transcription database//boolean AudioDatabase::load(Sdb& id_a, Sdb& file_list_a,			    Vector<Filename>& file_vec_a) {  // loop from start  //  if (!id_a.gotoFirst()) {    String msg(L"Error: no input file specified ");    Console::put(msg);    Error::handle(name(), L"load", Error::NO_PARAM_FILE,                  __FILE__, __LINE__);  }  if (!file_list_a.gotoFirst()) {    String msg(L"Error: no input file specified ");    Console::put(msg);    Error::handle(name(), L"load", Error::NO_PARAM_FILE,                  __FILE__, __LINE__);  }    Filename id;  Filename file_name;      Long num_file = 0;  // read the transcription file  //  do {    // get id and corresponding file name    //    id_a.getName(id);    file_vec_a.setLength((long)num_file + 1);    file_list_a.getName(file_vec_a(num_file));    // test the insert method    //    if (!insertRecord((String&)id, num_file)) {      return Error::handle(name(), L"load", Error::TEST, __FILE__, __LINE__);    }        // move one forward for file count    //    num_file++;  } while (id_a.gotoNext() && file_list_a.gotoNext());    return true;}// method: load//// arguments://  Filename& file_list: (input) audio file list//  Vector<Filename>& file_vec: (output) vector containing audio files//// return: a boolean value indicating status//// this method loads the audio database//boolean AudioDatabase::load(Filename& file_list_a,			    Vector<Filename>& file_vec_a) {  // local variables  //  boolean status = true;  Long num_file = 0;  String line;  File audio_file;  // debugging message  //  if (debug_level_d >= Integral::BRIEF) {    Console::increaseIndention();    String output;    output.assign(L"\nloading input audio file: ");    output.concat(file_list_a);    Console::put(output);    Console::decreaseIndention();  }  // open the audio list file  //  if (!audio_file.open(file_list_a, File::READ_ONLY)) {    String msg(L"Error: no input audio file specified ");    Console::put(msg);    Error::handle(name(), L"load", Error::ERR,                  __FILE__, __LINE__);  }  // read the audio list file line by line  //  while (audio_file.get(line)) {    // local variables    //    long pos = 0;    String id;    Filename file_name;    // get the number of fields (identifier and filename or just the    // filename)    //    long num_tokens = 0;    num_tokens = line.countTokens();        // skip any blank line    //    if (num_tokens == (long)0)      continue;        // parse the filename and derive the identifier as the line position    // the format is : filename    //    if (num_tokens == (long)1) {      line.tokenize(file_name, pos);      id.assign(num_file);    }        // else parse the filename and the identifier    // the format is: filename identifier    //    else if (num_tokens == (long)2) {      line.tokenize(file_name, pos);      line.tokenize(id, pos);    }        // else error    //    else if (num_tokens > (long)2) {      String msg(L"Error: check the audio file format: filename [identifier]");      Console::put(msg);      Error::handle(name(), L"load", Error::ERR,		    __FILE__, __LINE__);    }        // add the filename to the output filename vector    //    file_vec_a.setLength(num_file + (long)1);    file_vec_a((long)num_file).assign(file_name);    // insert the record in the database    //    if (!insertRecord((String&)id, num_file)) {      return Error::handle(name(), L"load", Error::TEST, __FILE__, __LINE__);    }        // increment the file count    //    num_file++;    // debugging message    //    if (debug_level_d >= Integral::BRIEF) {      Console::increaseIndention();      String output;      output.assign(L"number of the file processed: ");      output.concat(num_file);      output.concat(L"\nidentifier: ");      output.concat(id);      output.concat(L"\naudio feature file: ");      output.concat(file_name);      Console::put(output);      Console::decreaseIndention();    }      }    // debugging message  //  if (debug_level_d >= Integral::NONE) {      Console::increaseIndention();      String output;      output.assign(L"total number of file processed: ");      output.concat(num_file);      Console::put(output);      Console::decreaseIndention();  }        // close the input audio file  //  audio_file.close();  // exit gracefully  //  return status;}// method: store//// arguments://  Sdb& db_sof: (input) sof file//  long tag: (input) tag for the database object//  Vector<Filename>& file_vec: (input) vector containing audio files//// return:  a boolean value indicating status//// this method store the audio database to the sof file//boolean AudioDatabase::store(Sof& db_sof_a, long tag_a,			     Vector<Filename>& file_vec_a) {    // write audio database data  //  write(db_sof_a, tag_a);    // write the file name vector  //  long len = file_vec_a.length();    for (long i = 0; i < len; i++) {    file_vec_a(i).write(db_sof_a, i);  }  // exit gracefully  //  return true;}

⌨️ 快捷键说明

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