#ifndef RECOGNIZE_H #define RECOGNIZE_H #include "jthread.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "logging.h" #include "recognizeListener.h" #include "recognizeException.h" #include "wavcut.h" #include "recognizer.h" #define FREQUENCY_PATTERN 22050 #define INPUT_PATTERN 1 /* 1 = Raw file, 2 = Mic */ #define BLOCS_PATTERN 10 #define SIZE_BUFFER 256 #define CONFIDENCE_RATE 0.10 #define RECOGNIZER_MODE 1 // 0 = Julius, 1 = Google #define PATH_JCONFIG "vlibras_user/vlibras-core/recognize/src/julius.jconf" #define PATH_WCONFIG "vlibras_user/vlibras-core/recognize/src/wavcut.jconf" #define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav" #define PATH_AUDIO_PARTS "/audio/parts/" #define FILENAME_RECOGNIZED_OUT "/audio/recognized.out" #define FILENAME_AUDIOLIST "/audio/audiolist" #define FILENAME_FILTEROUT "/audio/filter" #define FILENAME_CONFIDENCEOUT "/audio/confidence" #define FIND_CONFIDENCE "\"cmscore1:\"" #define FIND_SENTENCE "\"sentence1:\"" #define FILENAME_AUDIOPART "audio00" #define AUDIO_SILENT "" #define PROGRAM "ffmpeg" // ffmpeg #define PTS_PATTERN 1000 using namespace jthread; using namespace std; using namespace util; class Recognize: public Thread { public: Recognize(char* _pathVideo, char* id); Recognize(char* _pathVideo, char* id, char* rate); Recognize(char* _pathVideo, int _inputType, char* id); ~Recognize(); /* * Inicializa o processo de reconhecimento do áudio, considerando que * todos os parâmetros foram configurados. */ void initialize(); /* * Define a frenquencia do audio a ser analisada pelo Julius. * Necessário configurar o arquivo de configuração (.jconf). */ void setFrequency(int freq); /* * Define o tamanho em segundos de cada parte retirada do audio original. */ void setSizeAudioBlocs(int sec); void setPathAudioContents(char* path); void addListener(RecognizeListener* listener); bool isFinished(); void Run(); int count_lines; private: char* path_contents; char* pathVideo; string id; float confidenceRate; bool finish; vector scores; vector pts; /** inputType: 1 = RawFile, 2 = Mic */ int inputType, frequency, sizeBlocs; list *listeners; char* extractAudioFromVideo(); int getTimeMediaSec(); /* @Deprecated */ void breakVideoParts(int timeTotal); void executeJuliusEngine(); void filterOutputJulius(); void generateConfidence(); void notifyListeners(char* text, int64_t pts); void notifyEndExtraction(int sentences_size); void cleanFiles(); void createDir(); bool getConfidence(); int64_t calcula_pts(double msec); int64_t convert_pts(string pts); void executeGoogleEngine(); Jconf* load_config(); }; #endif // RECOGNIZE_H