diff --git a/.gitignore b/.gitignore index 502b4db..3aa4db2 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ *.jar *.pyc *.srt +gtaaas_user +tamanho.txt +gtaaas diff --git a/main.cpp b/main.cpp index 379e995..a8d99bf 100644 --- a/main.cpp +++ b/main.cpp @@ -147,7 +147,8 @@ void serviceREC(char* path_video, char* sublanguage, (int) atoi(sublanguage), (int) atoi(position), (int) atoi(size), - (int) atoi(transparency), 3); + (int) atoi(transparency), + id, 3); try{ service_rec->initialize(); diff --git a/recognize/src/include/recognize.h b/recognize/src/include/recognize.h index e66eb4e..28ef835 100644 --- a/recognize/src/include/recognize.h +++ b/recognize/src/include/recognize.h @@ -16,8 +16,8 @@ class Recognize { public: - Recognize(char* _pathVideo); - Recognize(char* _pathVideo, int _inputType); + Recognize(char* _pathVideo, char* id); + Recognize(char* _pathVideo, int _inputType, char* id); ~Recognize(); /* @@ -42,6 +42,7 @@ public: private: char* pathVideo; + string id; bool finished; float sizeScores; @@ -63,5 +64,6 @@ private: void confidenceJulius(); void notifyListeners(char* text); void cleanFiles(); + void createDir(); }; diff --git a/recognize/src/recognize.cpp b/recognize/src/recognize.cpp index 6d264b8..b69dd51 100644 --- a/recognize/src/recognize.cpp +++ b/recognize/src/recognize.cpp @@ -8,6 +8,7 @@ #include #include +#include #include @@ -19,41 +20,47 @@ #define SIZE_BUFFER 256 #define CONFIDENCE_RATE 0.80 - -#define PATH_AUDIO_ORIGIN "gtaaas_user/gtaaas/recognize/src/audio/origin/audio_origin.wav" -#define PATH_AUDIO_PARTS "gtaaas_user/gtaaas/recognize/src/audio/parts/" -#define FILENAME_AUDIOPART "audio00" -#define FILENAME_AUDIOLIST "gtaaas_user/gtaaas/recognize/src/audio/audiolist" -#define FILENAME_FILTEROUT "gtaaas_user/gtaaas/recognize/src/audio/filter" -#define FILENAME_CONFIDENCEOUT "gtaaas_user/gtaaas/recognize/src/audio/confidence" -#define FILENAME_RECOGNIZED_OUT "gtaaas_user/gtaaas/recognize/src/audio/recognized.out" +#define PATH_GTAAAS_WEB "gtaaas_user/gtaaas_web/public/uploads/videos/" +#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 "\"pass1_best:\"" +#define FILENAME_AUDIOPART "audio00" + #define PROGRAM "ffmpeg" // ffmpeg #define PTS_PATTERN 1000 using namespace std; -Recognize::Recognize(char* _pathVideo) { +Recognize::Recognize(char* _pathVideo, char* _id) { listeners = new list(); pathVideo = _pathVideo; inputType = INPUT_PATTERN; frequency = FREQUENCY_PATTERN; sizeBlocs = BLOCS_PATTERN; + stringstream ss; + ss << _id; + ss >> id; + printf("ID: %s\n", id.c_str()); DPRINTF("Done!\n"); } -Recognize::Recognize(char* _pathVideo, int _inputType) { +Recognize::Recognize(char* _pathVideo, int _inputType, char* _id) { listeners = new list(); pathVideo = _pathVideo; inputType = _inputType; frequency = FREQUENCY_PATTERN; sizeBlocs = BLOCS_PATTERN; + id = _id; DPRINTF("Done!\n"); } @@ -79,6 +86,8 @@ void Recognize::initialize() { finished = false; + createDir(); + extractAudioFromVideo(); breakVideoParts(getTimeMediaSec()); @@ -124,7 +133,10 @@ char* Recognize::extractAudioFromVideo() { //command.append(strFreq).append(" -ac 1 -f wav ").append(PATH_AUDIO_ORIGIN).append(" &"); command.append(strFreq). append(" -ac 1 -f wav "). + append(PATH_GTAAAS_WEB). + append(id). append(PATH_AUDIO_ORIGIN). + append(" -v quiet"); /*string tmp = "echo "; @@ -139,7 +151,7 @@ char* Recognize::extractAudioFromVideo() { int Recognize::getTimeMediaSec() { string command = PROGRAM; - command.append(" -i ").append(PATH_AUDIO_ORIGIN); + command.append(" -i ").append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_ORIGIN); command.append(" 2>&1 | grep Duration >> outfile"); system(command.c_str()); @@ -171,7 +183,7 @@ void Recognize::breakVideoParts(int timeTotal) { int t = 0; bool consume = true; - string filename = FILENAME_AUDIOPART; + string filename= FILENAME_AUDIOPART; char tmp [filename.length()]; sprintf(tmp, "%i", ss); ss_str = tmp; @@ -198,7 +210,7 @@ void Recognize::breakVideoParts(int timeTotal) { ss_str = tmp; command = "sox "; - command.append(PATH_AUDIO_ORIGIN).append(" ").append(PATH_AUDIO_PARTS); + command.append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_ORIGIN).append(" ").append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_PARTS); sprintf(tmp, "%i", count++); filename.append(tmp).append(".wav"); command.append(filename).append(" trim ").append(ss_str).append(" ").append(t_str); @@ -206,7 +218,7 @@ void Recognize::breakVideoParts(int timeTotal) { system(command.c_str()); string apcomm = "echo "; - apcomm.append(PATH_AUDIO_PARTS).append(filename).append(" >> ").append(FILENAME_AUDIOLIST); + apcomm.append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_PARTS).append(filename).append(" >> ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_AUDIOLIST); system(apcomm.c_str()); filename = FILENAME_AUDIOPART; @@ -225,7 +237,7 @@ void Recognize::executeJuliusEngine() { command = "julius -C gtaaas_user/gtaaas/recognize/src/julius.jconf -input "; if (inputType == 1) { type = "rawfile"; - command.append(type).append(" -filelist ").append(FILENAME_AUDIOLIST); + command.append(type).append(" -filelist ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_AUDIOLIST); } else { type = "mic"; } @@ -233,6 +245,7 @@ void Recognize::executeJuliusEngine() { command.append(" -smpFreq "). append(cfreq). append(" -nolog >> "). + append(PATH_GTAAAS_WEB).append(id). append(FILENAME_RECOGNIZED_OUT); printf("\n\nCommand for executeJuliusEngine: %s\n", command.c_str()); @@ -243,13 +256,15 @@ void Recognize::executeJuliusEngine() { void Recognize::confidenceJulius() { string command = "cat "; - command.append(FILENAME_RECOGNIZED_OUT).append(" | grep "). - append(FIND_CONFIDENCE).append(" >> ").append(FILENAME_CONFIDENCEOUT); + command.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). + append(FIND_CONFIDENCE).append(" >> ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT); system(command.c_str()); printf("\n\n---> command: %s\n\n", command.c_str()); - ifstream in(FILENAME_CONFIDENCEOUT); + string path; + path.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT); + ifstream in(path.c_str()); if (!in) { perror("Error: "); @@ -275,10 +290,13 @@ void Recognize::confidenceJulius() { avgScores /= sizeScores; } + cout << "Média: " << avgScores << endl; - if (avgScores < CONFIDENCE_RATE) + if (avgScores < CONFIDENCE_RATE){ finished = true; - throw RecognizeException("Desculpe, não podemos concluir pois o vídeo tem baixa qualidade. Tente novamente com outro vídeo."); + cleanFiles(); + throw RecognizeException("O vídeo selecionado tem baixa qualidade. Tente novamente com outro vídeo."); + } } @@ -288,15 +306,17 @@ std::list* Recognize::filterOutputJulius() { sentences = new std::list(); string command = "cat "; - command.append(FILENAME_RECOGNIZED_OUT).append(" | grep "). - append(FIND_SENTENCE).append(" >> ").append(FILENAME_FILTEROUT); + command.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). + append(FIND_SENTENCE).append(" >> ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_FILTEROUT); system(command.c_str()); printf("\n\n---> command: %s\n\n", command.c_str()); int count_lines = 0; - ifstream in(FILENAME_FILTEROUT); + string path; + path.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT); + ifstream in(path.c_str()); string strFilter; if (!in) { @@ -349,13 +369,16 @@ bool Recognize::isFinished() { void Recognize::cleanFiles() { - string command = "rm "; - command.append(PATH_AUDIO_ORIGIN).append(" "). - append(FILENAME_AUDIOLIST).append(" "). - append(FILENAME_FILTEROUT).append(" "). - append(FILENAME_CONFIDENCEOUT).append(" "). - append(PATH_AUDIO_PARTS).append("* "). - append(FILENAME_RECOGNIZED_OUT); + string command = "rm -r "; + command.append(PATH_GTAAAS_WEB).append(id).append("/audio"); system(command.c_str()); +} +void Recognize::createDir(){ + string command = "mkdir "; + command.append(PATH_GTAAAS_WEB).append(id).append("/audio").append(" && mkdir "). + append(PATH_GTAAAS_WEB).append(id).append("/audio/parts").append(" && mkdir "). + append(PATH_GTAAAS_WEB).append(id).append("/audio/origin"); + printf("%s\n", command.c_str()); + system(command.c_str()); } diff --git a/servico/src/include/serviceWindowGenerationFromREC.h b/servico/src/include/serviceWindowGenerationFromREC.h index 4e9dd38..86becc8 100644 --- a/servico/src/include/serviceWindowGenerationFromREC.h +++ b/servico/src/include/serviceWindowGenerationFromREC.h @@ -17,10 +17,7 @@ private: public: - ServiceWindowGenerationFromREC( - char* path_video, int sublanguage, int position, int size, int transparency, int _serviceType); - - ServiceWindowGenerationFromREC(char* path_video, char* _video_path_file, int transparency, int _serviceType); + ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType); ~ServiceWindowGenerationFromREC(); void initialize(); diff --git a/servico/src/serviceWindowGenerationFromREC.cpp b/servico/src/serviceWindowGenerationFromREC.cpp index 8ee1729..67a5b3e 100644 --- a/servico/src/serviceWindowGenerationFromREC.cpp +++ b/servico/src/serviceWindowGenerationFromREC.cpp @@ -3,7 +3,7 @@ using namespace std; ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( - char* path_video, int sublanguage, int position, int size, int transparency, int _serviceType) { + char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType) { path_input = path_video; setSubLanguage(sublanguage); @@ -11,6 +11,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( setSize(size); setTransparency(transparency); setServiceType(_serviceType); + rec = new Recognize(path_input, id); DPRINTF("Done!\n"); } @@ -21,7 +22,6 @@ ServiceWindowGenerationFromREC::~ServiceWindowGenerationFromREC() { } void ServiceWindowGenerationFromREC::initialize() { - rec = new Recognize(path_input); rec->addListener(this); ServiceWindowGeneration::initialize(); -- libgit2 0.21.2