Commit 18e68e96c055173db8df2e6ffdd7ba281717e9b0
1 parent
aaee27f6
Exists in
master
and in
1 other branch
(VLibras-Box) Serviço de Reconhecimento(video) OK
Showing
4 changed files
with
76 additions
and
62 deletions
Show diff stats
main.cpp
| ... | ... | @@ -11,7 +11,6 @@ |
| 11 | 11 | * |
| 12 | 12 | * Edit on 03 de Fevereiro de 2014 |
| 13 | 13 | */ |
| 14 | - | |
| 15 | 14 | #include "serviceWindowGenerationFromSRT.h" |
| 16 | 15 | #include "serviceWindowGenerationFromREC.h" |
| 17 | 16 | #include "serviceWindowGenerationFromText.h" |
| ... | ... | @@ -21,10 +20,6 @@ |
| 21 | 20 | #include <sys/time.h> |
| 22 | 21 | #include <stdlib.h> |
| 23 | 22 | |
| 24 | -#define BLOQUEANTE 1 | |
| 25 | -#define NAO_BLOQUEANTE 2 | |
| 26 | -#define BOTH 3 | |
| 27 | - | |
| 28 | 23 | using namespace std; |
| 29 | 24 | |
| 30 | 25 | void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type); |
| ... | ... | @@ -37,6 +32,7 @@ void serviceText(char* service, char* path_text, char* transparency, char* id, c |
| 37 | 32 | |
| 38 | 33 | void help(); |
| 39 | 34 | void serviceHelp(int service); |
| 35 | +void setStatusOfReady(char* ready); | |
| 40 | 36 | void fail(string msg); |
| 41 | 37 | void hasFailed(); |
| 42 | 38 | void hasInvalid(); |
| ... | ... | @@ -52,15 +48,6 @@ int main(int argc, char* argv[]) { |
| 52 | 48 | gettimeofday(&tv1, NULL); |
| 53 | 49 | t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00; |
| 54 | 50 | |
| 55 | - /*try{ | |
| 56 | - PropertyHandler* reader = new PropertyHandler(); | |
| 57 | - service-type = reader->getAttributeValue("SERVICE-TYPE"); | |
| 58 | - }catch(RuntimeException &ex){ | |
| 59 | - return; // escrever log aki | |
| 60 | - }*/ | |
| 61 | - | |
| 62 | - //Util::Logger::Instance()->writeInfoLog("/home/wesnydy/.vlibras-conf/service/log-vbox", "VBox OK!"); | |
| 63 | - | |
| 64 | 51 | printf("\n################## VLIBRAS : LAVID ##################\n\n"); |
| 65 | 52 | |
| 66 | 53 | if(argc >= 2) { |
| ... | ... | @@ -75,23 +62,25 @@ int main(int argc, char* argv[]) { |
| 75 | 62 | hasInvalid(); |
| 76 | 63 | break; |
| 77 | 64 | } |
| 78 | - if(argc == 9) | |
| 65 | + if(argc == 9){ | |
| 66 | + setStatusOfReady("0"); | |
| 79 | 67 | serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], "user"); |
| 80 | - else | |
| 68 | + setStatusOfReady("1"); | |
| 69 | + }else | |
| 81 | 70 | serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); |
| 82 | 71 | |
| 83 | 72 | break; |
| 84 | 73 | case 2: |
| 85 | - printf("[INFO] Serviço em manutenção!!!\n"); | |
| 86 | - exit(0); | |
| 87 | 74 | if(argc < 8){ |
| 88 | 75 | serviceHelp(2); |
| 89 | 76 | hasInvalid(); |
| 90 | 77 | break; |
| 91 | 78 | } |
| 92 | - if(argc == 8) | |
| 79 | + if(argc == 8){ | |
| 80 | + setStatusOfReady("0"); | |
| 93 | 81 | serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], "user"); |
| 94 | - else | |
| 82 | + setStatusOfReady("1"); | |
| 83 | + }else | |
| 95 | 84 | serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]); |
| 96 | 85 | break; |
| 97 | 86 | case 3: |
| ... | ... | @@ -100,9 +89,11 @@ int main(int argc, char* argv[]) { |
| 100 | 89 | hasInvalid(); |
| 101 | 90 | break; |
| 102 | 91 | } |
| 103 | - if(argc == 5) | |
| 92 | + if(argc == 5){ | |
| 93 | + setStatusOfReady("0"); | |
| 104 | 94 | serviceText(argv[1], argv[2], argv[3], argv[4], "user"); |
| 105 | - else | |
| 95 | + setStatusOfReady("1"); | |
| 96 | + }else | |
| 106 | 97 | serviceText(argv[1], argv[2], argv[3], argv[4], argv[5]); |
| 107 | 98 | break; |
| 108 | 99 | case 4: |
| ... | ... | @@ -111,9 +102,11 @@ int main(int argc, char* argv[]) { |
| 111 | 102 | hasInvalid(); |
| 112 | 103 | break; |
| 113 | 104 | } |
| 114 | - if(argc == 5 ) | |
| 105 | + if(argc == 5 ){ | |
| 106 | + setStatusOfReady("0"); | |
| 115 | 107 | serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], "user"); |
| 116 | - else | |
| 108 | + setStatusOfReady("1"); | |
| 109 | + }else | |
| 117 | 110 | serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], argv[5]); |
| 118 | 111 | break; |
| 119 | 112 | case 5: |
| ... | ... | @@ -124,9 +117,11 @@ int main(int argc, char* argv[]) { |
| 124 | 117 | hasInvalid(); |
| 125 | 118 | break; |
| 126 | 119 | } |
| 127 | - if (argc == 5) | |
| 120 | + if (argc == 5){ | |
| 121 | + setStatusOfReady("0"); | |
| 128 | 122 | serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], "user"); |
| 129 | - else | |
| 123 | + setStatusOfReady("1"); | |
| 124 | + }else | |
| 130 | 125 | serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], argv[5]); |
| 131 | 126 | break; |
| 132 | 127 | default: |
| ... | ... | @@ -154,6 +149,13 @@ int main(int argc, char* argv[]) { |
| 154 | 149 | |
| 155 | 150 | } |
| 156 | 151 | |
| 152 | +void setStatusOfReady(char* ready){ | |
| 153 | + char* status = new char[256]; | |
| 154 | + strcpy(status, "READY="); | |
| 155 | + strcat(status,ready); | |
| 156 | + Util::Logger::Instance()->writeInfoLog("/home/wesnydy/.vlibras-conf/service/log-vbox", status); | |
| 157 | +} | |
| 158 | + | |
| 157 | 159 | void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, |
| 158 | 160 | char* size, char* transparency, char* id, char* client_type){ |
| 159 | 161 | ... | ... |
recognize/src/include/recognize.h
| ... | ... | @@ -23,7 +23,9 @@ |
| 23 | 23 | #define SIZE_BUFFER 256 |
| 24 | 24 | #define CONFIDENCE_RATE 0.10 |
| 25 | 25 | |
| 26 | +#define WEB_USER 1 | |
| 26 | 27 | #define PATH_API_UPLOADS "vlibras_user/vlibras-api/uploads/" |
| 28 | +#define PATH_VBOX_CONTENTS "vlibras_user/.vlibras-conf/contents/" | |
| 27 | 29 | #define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav" |
| 28 | 30 | #define PATH_AUDIO_PARTS "/audio/parts/" |
| 29 | 31 | #define FILENAME_RECOGNIZED_OUT "/audio/recognized.out" |
| ... | ... | @@ -47,7 +49,7 @@ class Recognize: public Thread { |
| 47 | 49 | |
| 48 | 50 | public: |
| 49 | 51 | |
| 50 | - Recognize(char* _pathVideo, char* id); | |
| 52 | + Recognize(char* _pathVideo, char* id, int client_type); | |
| 51 | 53 | Recognize(char* _pathVideo, char* id, char* rate); |
| 52 | 54 | Recognize(char* _pathVideo, int _inputType, char* id); |
| 53 | 55 | ~Recognize(); |
| ... | ... | @@ -76,6 +78,7 @@ public: |
| 76 | 78 | |
| 77 | 79 | private: |
| 78 | 80 | |
| 81 | + char* path_contents; | |
| 79 | 82 | char* pathVideo; |
| 80 | 83 | string id; |
| 81 | 84 | float confidenceRate; | ... | ... |
recognize/src/recognize.cpp
| 1 | 1 | #include <recognize.h> |
| 2 | 2 | |
| 3 | -Recognize::Recognize(char* _pathVideo, char* _id) { | |
| 3 | +Recognize::Recognize(char* _pathVideo, char* _id, int client_type) { | |
| 4 | 4 | |
| 5 | 5 | listeners = new list<RecognizeListener*>(); |
| 6 | 6 | pathVideo = _pathVideo; |
| ... | ... | @@ -11,6 +11,12 @@ Recognize::Recognize(char* _pathVideo, char* _id) { |
| 11 | 11 | ss << _id; |
| 12 | 12 | ss >> id; |
| 13 | 13 | confidenceRate=CONFIDENCE_RATE; |
| 14 | + if(client_type == WEB_USER){ | |
| 15 | + path_contents = (char*) PATH_API_UPLOADS; | |
| 16 | + }else{ | |
| 17 | + path_contents = (char*) PATH_VBOX_CONTENTS; | |
| 18 | + } | |
| 19 | + | |
| 14 | 20 | DPRINTF("Done!\n"); |
| 15 | 21 | } |
| 16 | 22 | |
| ... | ... | @@ -103,26 +109,22 @@ char* Recognize::extractAudioFromVideo() { |
| 103 | 109 | //command.append(strFreq).append(" -ac 1 -f wav ").append(PATH_AUDIO_ORIGIN).append(" &"); |
| 104 | 110 | command.append(strFreq). |
| 105 | 111 | append(" -ac 1 -f wav "). |
| 106 | - append(PATH_API_UPLOADS). | |
| 107 | - append(id). | |
| 108 | - append(PATH_AUDIO_ORIGIN). | |
| 109 | - | |
| 110 | - append(" -v quiet"); | |
| 112 | + append(path_contents).append(id). | |
| 113 | + append(PATH_AUDIO_ORIGIN).append(" -v quiet"); | |
| 111 | 114 | |
| 112 | 115 | /*string tmp = "echo "; |
| 113 | 116 | tmp.append(PATH_AUDIO_ORIGIN).append(" >> ").append(FILENAME_AUDIOLIST); |
| 114 | 117 | system(tmp.c_str());*/ |
| 115 | - | |
| 116 | 118 | system(command.c_str()); |
| 117 | - | |
| 118 | 119 | } |
| 119 | 120 | |
| 120 | 121 | |
| 121 | 122 | int Recognize::getTimeMediaSec() { |
| 122 | 123 | |
| 123 | 124 | string command = PROGRAM; |
| 124 | - command.append(" -i ").append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_ORIGIN); | |
| 125 | - command.append(" 2>&1 | grep Duration >> outfile"); | |
| 125 | + | |
| 126 | + command.append(" -i ").append(path_contents).append(id).append(PATH_AUDIO_ORIGIN) | |
| 127 | + .append(" 2>&1 | grep Duration >> outfile"); | |
| 126 | 128 | system(command.c_str()); |
| 127 | 129 | |
| 128 | 130 | ifstream in("outfile"); |
| ... | ... | @@ -183,7 +185,9 @@ void Recognize::breakVideoParts(int timeTotal) { |
| 183 | 185 | pts.push_back(convert_pts(ss_str)); |
| 184 | 186 | |
| 185 | 187 | command = "sox "; |
| 186 | - command.append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_ORIGIN).append(" ").append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_PARTS); | |
| 188 | + command.append(path_contents).append(id).append(PATH_AUDIO_ORIGIN).append(" ") | |
| 189 | + .append(path_contents).append(id).append(PATH_AUDIO_PARTS); | |
| 190 | + | |
| 187 | 191 | sprintf(tmp, "%i", count++); |
| 188 | 192 | filename.append(tmp).append(".wav"); |
| 189 | 193 | command.append(filename).append(" trim ").append(ss_str).append(" ").append(t_str); |
| ... | ... | @@ -191,7 +195,10 @@ void Recognize::breakVideoParts(int timeTotal) { |
| 191 | 195 | system(command.c_str()); |
| 192 | 196 | |
| 193 | 197 | string apcomm = "echo "; |
| 194 | - apcomm.append(PATH_API_UPLOADS).append(id).append(PATH_AUDIO_PARTS).append(filename).append(" >> ").append(PATH_API_UPLOADS).append(id).append(FILENAME_AUDIOLIST); | |
| 198 | + | |
| 199 | + apcomm.append(path_contents).append(id).append(PATH_AUDIO_PARTS).append(filename).append(" >> ") | |
| 200 | + .append(path_contents).append(id).append(FILENAME_AUDIOLIST); | |
| 201 | + | |
| 195 | 202 | system(apcomm.c_str()); |
| 196 | 203 | |
| 197 | 204 | filename = FILENAME_AUDIOPART; |
| ... | ... | @@ -208,19 +215,18 @@ void Recognize::executeJuliusEngine() { |
| 208 | 215 | char cfreq[10]; |
| 209 | 216 | |
| 210 | 217 | command = "julius -C vlibras_user/vlibras-core/recognize/src/julius.jconf -input "; |
| 211 | - if (inputType == 1) { | |
| 218 | + | |
| 219 | + if (inputType == 1) | |
| 212 | 220 | type = "rawfile"; |
| 213 | - command.append(type).append(" -filelist ").append(PATH_API_UPLOADS).append(id).append(FILENAME_AUDIOLIST); | |
| 214 | - } else { | |
| 215 | - type = "mic"; | |
| 216 | - } | |
| 221 | + else | |
| 222 | + type = "mic"; | |
| 223 | + | |
| 224 | + command.append(type).append(" -filelist ").append(path_contents).append(id).append(FILENAME_AUDIOLIST); | |
| 217 | 225 | sprintf(cfreq, "%i", frequency); |
| 218 | 226 | command.append(" -smpFreq "). |
| 219 | 227 | append(cfreq). |
| 220 | - append(" -nolog >> "). | |
| 221 | - append(PATH_API_UPLOADS).append(id). | |
| 222 | - append(FILENAME_RECOGNIZED_OUT); | |
| 223 | - | |
| 228 | + append(" -nolog >> "); | |
| 229 | + command.append(path_contents).append(id).append(FILENAME_RECOGNIZED_OUT); | |
| 224 | 230 | //Command of execute Julius |
| 225 | 231 | //printf("\n\nCommand for executeJuliusEngine: %s\n", command.c_str()); |
| 226 | 232 | system(command.c_str()); |
| ... | ... | @@ -230,14 +236,13 @@ void Recognize::executeJuliusEngine() { |
| 230 | 236 | void Recognize::generateConfidence() { |
| 231 | 237 | |
| 232 | 238 | string command = "cat "; |
| 233 | - command.append(PATH_API_UPLOADS).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). | |
| 234 | - append(FIND_CONFIDENCE).append(" >> ").append(PATH_API_UPLOADS).append(id).append(FILENAME_CONFIDENCEOUT); | |
| 235 | - | |
| 239 | + command.append(path_contents).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). | |
| 240 | + append(FIND_CONFIDENCE).append(" >> ").append(path_contents).append(id).append(FILENAME_CONFIDENCEOUT); | |
| 236 | 241 | system(command.c_str()); |
| 237 | 242 | //printf("\n\n---> command: %s\n\n", command.c_str()); |
| 238 | 243 | |
| 239 | 244 | string path; |
| 240 | - path.append(PATH_API_UPLOADS).append(id).append(FILENAME_CONFIDENCEOUT); | |
| 245 | + path.append(path_contents).append(id).append(FILENAME_CONFIDENCEOUT); | |
| 241 | 246 | ifstream in(path.c_str()); |
| 242 | 247 | |
| 243 | 248 | if (!in) { |
| ... | ... | @@ -307,16 +312,15 @@ void Recognize::filterOutputJulius() { |
| 307 | 312 | sentences = new std::list<char*>(); |
| 308 | 313 | |
| 309 | 314 | string command = "cat "; |
| 310 | - command.append(PATH_API_UPLOADS).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep -e "). | |
| 311 | - append(FIND_SENTENCE).append(" -e \"").append(AUDIO_SILENT).append("\"").append(" >> ").append(PATH_API_UPLOADS).append(id).append(FILENAME_FILTEROUT); | |
| 312 | - | |
| 315 | + command.append(path_contents).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep -e "). | |
| 316 | + append(FIND_SENTENCE).append(" -e \"").append(AUDIO_SILENT).append("\"").append(" >> ").append(path_contents).append(id).append(FILENAME_FILTEROUT); | |
| 313 | 317 | system(command.c_str()); |
| 314 | 318 | //printf("\n\n---> command: %s\n\n", command.c_str()); |
| 315 | 319 | |
| 316 | 320 | count_lines = 0; |
| 317 | 321 | |
| 318 | 322 | string path; |
| 319 | - path.append(PATH_API_UPLOADS).append(id).append(FILENAME_FILTEROUT); | |
| 323 | + path.append(path_contents).append(id).append(FILENAME_FILTEROUT); | |
| 320 | 324 | ifstream in(path.c_str()); |
| 321 | 325 | string strFilter; |
| 322 | 326 | |
| ... | ... | @@ -398,15 +402,16 @@ bool Recognize::isFinished() { |
| 398 | 402 | void Recognize::cleanFiles() { |
| 399 | 403 | |
| 400 | 404 | string command = "rm -r "; |
| 401 | - command.append(PATH_API_UPLOADS).append(id).append("/audio"); | |
| 405 | + command.append(path_contents).append(id).append("/audio"); | |
| 402 | 406 | system(command.c_str()); |
| 403 | 407 | } |
| 404 | 408 | |
| 405 | 409 | void Recognize::createDir(){ |
| 406 | 410 | |
| 407 | 411 | string command = "mkdir "; |
| 408 | - command.append(PATH_API_UPLOADS).append(id).append("/audio").append(" && mkdir "). | |
| 409 | - append(PATH_API_UPLOADS).append(id).append("/audio/parts").append(" && mkdir "). | |
| 410 | - append(PATH_API_UPLOADS).append(id).append("/audio/origin"); | |
| 412 | + command.append(path_contents).append(id) | |
| 413 | + .append(" && mkdir ").append(path_contents).append(id).append("/audio") | |
| 414 | + .append(" && mkdir ").append(path_contents).append(id).append("/audio/parts") | |
| 415 | + .append(" && mkdir ").append(path_contents).append(id).append("/audio/origin"); | |
| 411 | 416 | system(command.c_str()); |
| 412 | 417 | } | ... | ... |
servico/src/serviceWindowGenerationFromREC.cpp
| ... | ... | @@ -16,7 +16,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 19 | - char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int _serviceType) { | |
| 19 | + char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int serviceType) { | |
| 20 | 20 | |
| 21 | 21 | setPathInput(path_video); |
| 22 | 22 | setSubLanguage(sublanguage); |
| ... | ... | @@ -26,7 +26,11 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 26 | 26 | setServiceType(serviceType); |
| 27 | 27 | setClientType(client_type); |
| 28 | 28 | setUserId(id); |
| 29 | - rec = new Recognize(path_video, id); | |
| 29 | + if(strcmp(client_type, "web") == 0) | |
| 30 | + rec = new Recognize(path_video, id, 1);// parametro 1 indica que é um cliente web | |
| 31 | + else | |
| 32 | + rec = new Recognize(path_video, id, 0);// parametro 0 indica que é um cliente diferente, ex: cloud | |
| 33 | + | |
| 30 | 34 | finish = false; |
| 31 | 35 | DPRINTF("Done!\n"); |
| 32 | 36 | } | ... | ... |