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

📄 audiofrontend.h

📁 这是一个从音频信号里提取特征参量的程序
💻 H
字号:
// file: $isip/class/sp/AudioFrontEnd/AudioFrontEnd.h// version: $Id: AudioFrontEnd.h,v 1.72 2002/10/17 19:31:41 gao Exp $//// this file defines the AudioFrontEnd class//// make sure definitions are only made once//#ifndef ISIP_AUDIO_FRONT_END#define ISIP_AUDIO_FRONT_END// isip include files//#ifndef ISIP_FRONTEND_BASE#include <FrontEndBase.h>#endif#ifndef ISIP_FTR_BUFFER#include <FtrBuffer.h>#endif#ifndef ISIP_ALGORITHM_BASE#include <AlgorithmBase.h>#endif#ifndef ISIP_AUDIO_FILE#include <AudioFile.h>#endif#ifndef ISIP_FEATURE_FILE#include <FeatureFile.h>#endif#ifndef ISIP_FILENAME#include <Filename.h>#endif#ifndef ISIP_RECIPE#include <Recipe.h>#endif#ifndef ISIP_VECTOR#include <Vector.h>#endif#ifndef ISIP_SINGLE_LINKED_LIST#include <SingleLinkedList.h>#endif#ifndef ISIP_COMPONENT#include <Component.h>#endif#ifndef ISIP_STRING#include <String.h>#endif#ifndef ISIP_FLOAT#include <Float.h>#endif#ifndef ISIP_LONG#include <Long.h>#endif#ifndef ISIP_BOOLEAN#include <Boolean.h>#endif// forward class definitions//class VectorFloat;// AudioFrontEnd: a class for multichannel audio signals. this class implements// a general front end for audio signal data processing. signals can be// in many different formats, precisions, encodings, etc.//class AudioFrontEnd : public FrontEndBase {  //---------------------------------------------------------------------------  //  // public constants  //  //---------------------------------------------------------------------------public:  // define the class name  //  static const String CLASS_NAME;    //----------------------------------------  //  // i/o related constants  //  //----------------------------------------  static const String PARAM_INPUT_DATA_TYPE;  static const String PARAM_INPUT_FLAG;    static const String PARAM_AUDIO_INPUT;  static const String PARAM_FEATURE_INPUT;  static const String PARAM_FRAME_DURATION;  static const String PARAM_SIGNAL_DURATION;  static const String PARAM_NUMBER_OF_FEATURES;  static const String PARAM_START_TIME;  static const String PARAM_END_TIME;  static const String PARAM_CONTEXT_WINDOW;  static const String PARAM_CHANNEL_INDEX;    static const String PARAM_COMPONENT_LIST;  static const String PARAM_COEF_NAME;  static const String PARAM_DATA_MODE;  //----------------------------------------  //  // default values and arguments  //  //----------------------------------------    // default values for i/o related parameters  //  static const FrontEndBase::DATA_TYPE DEF_INPUT_DATA_TYPE = FrontEndBase::DEF_DATA_TYPE;  static const boolean DEF_INPUT_FLAG = true;  static const boolean DEF_OUTPUT_TYPE_FLAG = false;  static const boolean DEF_PARTIAL_PROCESS = false;    static const float DEF_FRAME_DURATION = 0.01;  static const float DEF_SIGNAL_DURATION = 0.1;  static const long DEF_NUMBER_OF_FEATURES = 39;    static const long DEF_OFFSET_FRAME = 0;  static const float ALL_TIME = -1;  static const float DEF_START_TIME = 0;  static const float DEF_END_TIME = ALL_TIME;  static const float DEF_CONTEXT_WINDOW = ALL_TIME;  // other signal processing related parameters  //  static const float DEF_SAMPLE_FREQ = 8000.0;  static const long DEF_NUM_CHANNELS = AudioFile::DEF_NUM_CHANNELS;  static const long DEF_CHANNEL_INDEX = AudioFile::CHANNEL_TAG_ALL; // (= -2);    // default arguments to methods  //  static const String DEF_COEF_NAME;  static const String DEF_COMPONENT_LIST;  // define some internal names used to facilitate recipe processing  //  static const String SAMPLED_DATA_NAME;  static const Long SAMPLED_DATA_TAG;  // miscellaneous parameters  //  static const long DEF_COEF_BUF_CAPACITY = 512;  //----------------------------------------  //  // error codes  //  //----------------------------------------      static const long ERR = 80000;  static const long ERR_NOVEC = 80001;  static const long ERR_EMPTY = 80002;    //---------------------------------------------------------------------------  //  // protected data  //  //---------------------------------------------------------------------------protected:  // hold all features in a circular buffer  //  FtrBuffer buf_d;  // input data type  //  DATA_TYPE input_data_type_d;  // define the data processing mode  //  AlgorithmBase::DMODE data_mode_d;      // define a audio file  //  AudioFile audio_input_d;    // define a feature file  //  FeatureFile feature_input_d;    // define variables to handle the recipe  //  Filename component_list_d;  Recipe recipe_d;  // define an ordered list of the components we will apply.  the first  // element is the list of components that can be applied with zero  // latency, the second with one frame of latency, etc.  //  Vector< SingleLinkedList<Component> > coef_components_d;  // the name of the required output  //  String coef_name_d;  // parameters for excising  //  Float start_time_d;  Float end_time_d;  Long channel_index_d;  long offset_frame_d;  // how far out of the excised window should we look for signal  // analysis?  //  Float context_window_d;    // other signal processing related parameters  //  Float frame_duration_d;  Float sample_frequency_d;    Float signal_duration_d;  Long number_of_features_d;  long num_channels_d;  // output file specification  //  String output_extension_d;  File::TYPE output_type_d;  // do we need reset output type  //  boolean output_type_flag_d;    // are we out of data ?  //  boolean end_of_data_d;  // do we need an input file?  //  Boolean input_flag_d;  // do we process partial data  //  Boolean partial_process_d;    // id for output, generally it is the basename of input file  //  String id_d;    // the memory manager  //  static MemoryManager mgr_d;    //---------------------------------------------------------------------------  //  // required public methods  //  //---------------------------------------------------------------------------public:  // method: name  //  static const String& name() {    return CLASS_NAME;  }    static boolean diagnose(Integral::DEBUG level);  // method: setDebug  //  boolean setDebug(Integral::DEBUG level) {    debug_level_d = level;    recipe_d.setDebug(level);    buf_d.setDebug(level);    return true;  }    // other debug methods  //  boolean debug(const unichar* message) const;  // method: destructor  //  ~AudioFrontEnd() {    clear();  }  // other constructors:  //  AudioFrontEnd();  AudioFrontEnd(const AudioFrontEnd& arg);  // assign methods  //  boolean assign(const AudioFrontEnd& arg);  // i/o methods  //  long sofSize() const;  boolean read(Sof& sof_a, long tag, const String& name = CLASS_NAME);  boolean write(Sof& sof_a, long tag, const String& name = CLASS_NAME) const;  boolean readData(Sof& sof_a, const String& pname = String::getEmptyString(),		   long size = SofParser::FULL_OBJECT,		   boolean param = true,		   boolean nested = false);  boolean writeData(Sof& sof_a,		    const String& param = String::getEmptyString()) const;  boolean setParser(SofParser* parser);  // equality methods  //  boolean eq(const AudioFrontEnd& arg) const;  // method: new  //  static void* operator new(size_t size) {    return mgr_d.get();  }  // method: new[]  //  static void* operator new[](size_t size) {    return mgr_d.getBlock(size);  }  // method: delete  //  static void operator delete(void* ptr) {    mgr_d.release(ptr);  }  // method: delete[]  //  static void operator delete[](void* ptr) {    mgr_d.releaseBlock(ptr);  }  // method: setGrowSize  //  static boolean setGrowSize(long grow_size) {    return mgr_d.setGrow(grow_size);  }  // clear methods  //  boolean clear(Integral::CMODE cmode = Integral::DEF_CMODE);    //---------------------------------------------------------------------------  //  // class-specific public methods:  //  set methods  //  //---------------------------------------------------------------------------  // method: setInputDataType  //  boolean setInputDataType(FrontEndBase::DATA_TYPE data_type) {    input_data_type_d = data_type;    return true;  }    // method: setInputFlag  //  boolean setInputFlag(Boolean arg) {    input_flag_d = arg;    return true;    }    // method: setAudioInput  //    boolean setAudioInput(AudioFile& arg)  {    return audio_input_d.assign(arg);  }    // method: setFrameDuration  //  boolean setFrameDuration(float arg) {    frame_duration_d = arg;    return true;  }  // method: setSignalDuration  //  boolean setSignalDuration(float arg) {    signal_duration_d = arg;    return true;  }  // method: setSampleFrequency  //  boolean setSampleFrequency(float arg) {    sample_frequency_d = arg;    return true;  }    // method: setNumChannels  //  boolean setNumChannels(long arg) {    num_channels_d = arg;    return resetBuffer();  }  // method: setOutputExtension  //  boolean setOutputExtension(String& extension) {    output_extension_d = extension;    return true;  }  // method: setOutputType  //  boolean setOutputType(File::TYPE& type) {    output_type_d = type;    output_type_flag_d = true;    return true;  }    // set the name of the required features  //  boolean setCoefName(const String& name);  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  get methods  //  //---------------------------------------------------------------------------  // method: getInputFlag  //  boolean getInputFlag() const {    return input_flag_d;  }  // method: getAudioInput  //  AudioFile getAudioInput() {    return audio_input_d;  }  // method: getAudioInput  //    const AudioFile getAudioInput() const {    return audio_input_d;  }  // method: getFrameDuration  //  float getFrameDuration() const {    return frame_duration_d;  }  // method: getSignalDuration  //  float getSignalDuration() const {    return signal_duration_d;  }  // method: getSampleFrequency  //  float getSampleFrequency() const {    return sample_frequency_d;  }  // method: getNumChannels  //  long getNumChannels() const {    return num_channels_d;  }  // method: getOutputExtension  //  const boolean getOutputExtension(String& extension) const {    extension = output_extension_d;    return true;  }  // method: getOutputType  //  const File::TYPE& getOutputType() const {    return output_type_d;  }      // get the total number of frames of the input file  //  long getNumFrames();  // get the total number of features after processing a certain component  //  long getNumFeatures();    // method: getCoefName  //  const String& getCoefName() const {    return coef_name_d;  }    // method: getID  //  const String& getID() const {    if (audio_input_d.isOpen()) {      return audio_input_d.getID();    }    else if (feature_input_d.isOpen()) {      return feature_input_d.getID();    }    return id_d;  }    // determine if a given coefficient is an input  //  boolean isNameInput(const String& name) const;  //---------------------------------------------------------------------------  //  // class-specific public methods:  //  FrontEndBase interface contract methods  //  //---------------------------------------------------------------------------  // assignment and equality  //  boolean eq(const FrontEndBase& arg) const;  boolean assign(const FrontEndBase& arg);    // method: className  //  const String& className() const {    return CLASS_NAME;  }  // get the coeff vector for a given frame  //  boolean getVector(VectorFloat& coeffs, long channel, long frame_index);  // method: getVector  //  boolean getVector(Vector<VectorFloat>& coeffs, long frame_index);  // open or close the input file  //  boolean open(const Filename& input);  boolean close();    // process an entire file at a time  //  boolean run(const Filename& output, const Filename& input);  // parameters initialization for audio frontend  //  boolean init(float start_time, float stop_time, int channel);  //---------------------------------------------------------------------------  //  // private methods  //  //---------------------------------------------------------------------------private:    // process the next frame and add it to the buffer  //  boolean processNextFrame();    // what processing can be done for the current frame in isolation?  //  boolean processFrame(long frame_index);  // what processing can be done for the last frames  //  boolean finishFrames();  // reset the buffer of data  //  boolean resetBuffer();  // method: getFirstFrame  //  get the boundaries of the current buffer  //  long getFirstFrame() const {    return buf_d.getFrameIndex() - buf_d.getBuffer()(0).getNumElements();  }  // method: getLastFrame  //  long getLastFrame() const {    return buf_d.getFrameIndex();  }  // the three stages in Component computation  //  boolean readInput(long& new_offset, long frame_index);  boolean processComponents(long offset, long pad_offset,			    boolean append_data = false);  boolean configureComponents();  // other configuration methods  //  boolean getInputNames(Vector<String>& names);  boolean makeBuffers(SingleLinkedList<Component>& Component);    // used by the run method  //  boolean outputFeatures(const Filename& output_filename);  // process target methods  //  boolean processTarget();  boolean processTarget(Vector<String>& names);};// end of include file//#endif

⌨️ 快捷键说明

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