Commit 8123bb944c91f685929a2cece52154ffae8e1e4a
1 parent
8c83f309
Exists in
master
and in
2 other branches
Definicao da taxa de confiabilidade na chamada do CORE implementada.
Showing
6 changed files
with
99 additions
and
42 deletions
Show diff stats
.gitignore
main.cpp
| ... | ... | @@ -25,7 +25,9 @@ using namespace std; |
| 25 | 25 | void serviceCC(); |
| 26 | 26 | void serviceSRT(char* path_in, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* username); |
| 27 | 27 | void serviceOnlySRT(char* path_file, char* transparency, char* username); |
| 28 | +void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username, char* rate); | |
| 28 | 29 | void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username); |
| 30 | + | |
| 29 | 31 | void serviceText(char* path_text, char* transparency, char* username, char* client_type); |
| 30 | 32 | void serviceREC2(); |
| 31 | 33 | void help(); |
| ... | ... | @@ -41,7 +43,7 @@ bool isFailed; |
| 41 | 43 | |
| 42 | 44 | int main(int argc, char* argv[]) { |
| 43 | 45 | |
| 44 | - | |
| 46 | + cout << argc << endl; | |
| 45 | 47 | struct timeval tv1, tv2; |
| 46 | 48 | double t1, t2; |
| 47 | 49 | |
| ... | ... | @@ -71,8 +73,12 @@ int main(int argc, char* argv[]) { |
| 71 | 73 | help(); |
| 72 | 74 | return 1; |
| 73 | 75 | } |
| 76 | + if (argc == 8) | |
| 74 | 77 | serviceREC(argv[2], argv[3], argv[4], argv[5], |
| 75 | 78 | argv[6], argv[7]); |
| 79 | + else | |
| 80 | + serviceREC(argv[2], argv[3], argv[4], argv[5], | |
| 81 | + argv[6], argv[7], argv[8]); | |
| 76 | 82 | break; |
| 77 | 83 | case 4: |
| 78 | 84 | if(argc <= 5){ |
| ... | ... | @@ -137,6 +143,34 @@ void serviceCC(){ |
| 137 | 143 | } |
| 138 | 144 | |
| 139 | 145 | void serviceREC(char* path_video, char* sublanguage, |
| 146 | + char* position, char* size, char* transparency, char* id, char* rate){ | |
| 147 | + | |
| 148 | + filename = createFileToResponse(id); | |
| 149 | + | |
| 150 | + ServiceWindowGenerationFromREC * service_rec; | |
| 151 | + service_rec = new ServiceWindowGenerationFromREC( | |
| 152 | + path_video, | |
| 153 | + (int) atoi(sublanguage), | |
| 154 | + (int) atoi(position), | |
| 155 | + (int) atoi(size), | |
| 156 | + (int) atoi(transparency), | |
| 157 | + id, 3, rate); | |
| 158 | + | |
| 159 | + try{ | |
| 160 | + service_rec->initialize(); | |
| 161 | + }catch(ServiceException ex){ | |
| 162 | + fail(ex.getMessage()); | |
| 163 | + hasFailed(); | |
| 164 | + return; | |
| 165 | + } | |
| 166 | + while(service_rec->isRunning()){ | |
| 167 | + sleep(2); | |
| 168 | + } | |
| 169 | + updateRequestStatus(filename.c_str(), id, "true"); | |
| 170 | + delete service_rec; | |
| 171 | +} | |
| 172 | + | |
| 173 | +void serviceREC(char* path_video, char* sublanguage, | |
| 140 | 174 | char* position, char* size, char* transparency, char* id){ |
| 141 | 175 | |
| 142 | 176 | filename = createFileToResponse(id); | ... | ... |
recognize/src/include/recognize.h
| ... | ... | @@ -15,8 +15,9 @@ using namespace std; |
| 15 | 15 | class Recognize { |
| 16 | 16 | |
| 17 | 17 | public: |
| 18 | - | |
| 19 | - Recognize(char* _pathVideo, char* id); | |
| 18 | + | |
| 19 | + Recognize(char* _pathVideo, char* id); | |
| 20 | + Recognize(char* _pathVideo, char* id, char* rate); | |
| 20 | 21 | Recognize(char* _pathVideo, int _inputType, char* id); |
| 21 | 22 | ~Recognize(); |
| 22 | 23 | |
| ... | ... | @@ -43,10 +44,9 @@ private: |
| 43 | 44 | |
| 44 | 45 | char* pathVideo; |
| 45 | 46 | string id; |
| 47 | + float confidenceRate; | |
| 46 | 48 | bool finished; |
| 47 | - | |
| 48 | - float sizeScores; | |
| 49 | - float avgScores; | |
| 49 | + vector<float> scores; | |
| 50 | 50 | |
| 51 | 51 | /** inputType: 1 = RawFile, 2 = Mic */ |
| 52 | 52 | int inputType, frequency, sizeBlocs; |
| ... | ... | @@ -60,10 +60,11 @@ private: |
| 60 | 60 | void breakVideoParts(int timeTotal); |
| 61 | 61 | |
| 62 | 62 | void executeJuliusEngine(); |
| 63 | - std::list<char*>* filterOutputJulius(); | |
| 64 | - void confidenceJulius(); | |
| 63 | + void filterOutputJulius(); | |
| 64 | + void generateConfidence(); | |
| 65 | 65 | void notifyListeners(char* text); |
| 66 | 66 | void cleanFiles(); |
| 67 | 67 | void createDir(); |
| 68 | + bool getConfidence(int i); | |
| 68 | 69 | |
| 69 | 70 | }; | ... | ... |
recognize/src/recognize.cpp
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | #define INPUT_PATTERN 1 /* 1 = Raw file, 2 = Mic */ |
| 19 | 19 | #define BLOCS_PATTERN 10 |
| 20 | 20 | #define SIZE_BUFFER 256 |
| 21 | -#define CONFIDENCE_RATE 0.80 | |
| 21 | +#define CONFIDENCE_RATE 0.40 | |
| 22 | 22 | |
| 23 | 23 | #define PATH_GTAAAS_WEB "gtaaas_user/gtaaas_web/public/uploads/videos/" |
| 24 | 24 | #define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav" |
| ... | ... | @@ -29,7 +29,7 @@ |
| 29 | 29 | #define FILENAME_CONFIDENCEOUT "/audio/confidence" |
| 30 | 30 | |
| 31 | 31 | #define FIND_CONFIDENCE "\"cmscore1:\"" |
| 32 | -#define FIND_SENTENCE "\"pass1_best:\"" | |
| 32 | +#define FIND_SENTENCE "\"sentence1:\"" | |
| 33 | 33 | |
| 34 | 34 | #define FILENAME_AUDIOPART "audio00" |
| 35 | 35 | |
| ... | ... | @@ -49,7 +49,23 @@ Recognize::Recognize(char* _pathVideo, char* _id) { |
| 49 | 49 | stringstream ss; |
| 50 | 50 | ss << _id; |
| 51 | 51 | ss >> id; |
| 52 | - printf("ID: %s\n", id.c_str()); | |
| 52 | + confidenceRate=CONFIDENCE_RATE; | |
| 53 | + DPRINTF("Done!\n"); | |
| 54 | +} | |
| 55 | + | |
| 56 | +Recognize::Recognize(char* _pathVideo, char* _id, char* rate) { | |
| 57 | + | |
| 58 | + listeners = new list<RecognizeListener*>(); | |
| 59 | + pathVideo = _pathVideo; | |
| 60 | + inputType = INPUT_PATTERN; | |
| 61 | + frequency = FREQUENCY_PATTERN; | |
| 62 | + sizeBlocs = BLOCS_PATTERN; | |
| 63 | + stringstream ss; | |
| 64 | + ss << _id; | |
| 65 | + ss >> id; | |
| 66 | + istringstream(rate) >> confidenceRate; | |
| 67 | + if (confidenceRate == 0) | |
| 68 | + confidenceRate=CONFIDENCE_RATE; | |
| 53 | 69 | DPRINTF("Done!\n"); |
| 54 | 70 | } |
| 55 | 71 | |
| ... | ... | @@ -87,24 +103,15 @@ void Recognize::initialize() { |
| 87 | 103 | finished = false; |
| 88 | 104 | |
| 89 | 105 | createDir(); |
| 90 | - | |
| 91 | 106 | extractAudioFromVideo(); |
| 92 | - | |
| 93 | 107 | breakVideoParts(getTimeMediaSec()); |
| 94 | - | |
| 95 | 108 | executeJuliusEngine(); |
| 109 | + generateConfidence(); | |
| 110 | + filterOutputJulius(); | |
| 111 | + cleanFiles(); | |
| 96 | 112 | |
| 97 | - confidenceJulius(); | |
| 98 | - | |
| 99 | - std::list<char*> *list_sentences; | |
| 100 | - list_sentences = filterOutputJulius(); | |
| 101 | - | |
| 102 | - std::list<char*>::iterator it; | |
| 103 | - for (it = list_sentences->begin(); it != list_sentences->end(); it++) | |
| 104 | - notifyListeners((*it)); | |
| 105 | - | |
| 106 | 113 | finished = true; |
| 107 | - cleanFiles(); | |
| 114 | + | |
| 108 | 115 | } |
| 109 | 116 | |
| 110 | 117 | |
| ... | ... | @@ -253,7 +260,7 @@ void Recognize::executeJuliusEngine() { |
| 253 | 260 | |
| 254 | 261 | } |
| 255 | 262 | |
| 256 | -void Recognize::confidenceJulius() { | |
| 263 | +void Recognize::generateConfidence() { | |
| 257 | 264 | |
| 258 | 265 | string command = "cat "; |
| 259 | 266 | command.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep "). |
| ... | ... | @@ -271,36 +278,35 @@ void Recognize::confidenceJulius() { |
| 271 | 278 | } else { |
| 272 | 279 | string line; |
| 273 | 280 | float tmp; |
| 274 | - avgScores = 0; | |
| 275 | 281 | do { |
| 276 | 282 | getline(in, line); |
| 277 | 283 | std::istringstream buf(line); |
| 278 | 284 | if (line.length() > 0) { |
| 279 | 285 | istream_iterator<std::string> beg(buf), end; |
| 280 | 286 | vector<string> tokens(beg, end); |
| 287 | + float sizeScores = 0; | |
| 288 | + float avgScores = 0; | |
| 281 | 289 | int i; |
| 282 | 290 | for(i=2; i < tokens.size()-1; i++){ |
| 283 | 291 | istringstream(tokens[i]) >> tmp; |
| 284 | 292 | avgScores += tmp; |
| 285 | 293 | sizeScores++; |
| 286 | 294 | } |
| 295 | + scores.push_back(avgScores/sizeScores); | |
| 287 | 296 | } |
| 288 | 297 | } while (!in.eof()); |
| 289 | 298 | in.close(); |
| 290 | - avgScores /= sizeScores; | |
| 291 | 299 | } |
| 300 | +} | |
| 292 | 301 | |
| 293 | - cout << "Média: " << avgScores << endl; | |
| 294 | - | |
| 295 | - if (avgScores < CONFIDENCE_RATE){ | |
| 296 | - finished = true; | |
| 297 | - cleanFiles(); | |
| 298 | - throw RecognizeException("O vídeo selecionado tem baixa qualidade. Tente novamente com outro vídeo."); | |
| 299 | - } | |
| 302 | +bool Recognize::getConfidence(int i){ | |
| 303 | + if (scores[i] < confidenceRate) | |
| 304 | + return false; | |
| 305 | + return true; | |
| 300 | 306 | } |
| 301 | 307 | |
| 302 | 308 | |
| 303 | -std::list<char*>* Recognize::filterOutputJulius() { | |
| 309 | +void Recognize::filterOutputJulius() { | |
| 304 | 310 | |
| 305 | 311 | std::list<char*> *sentences; |
| 306 | 312 | sentences = new std::list<char*>(); |
| ... | ... | @@ -315,7 +321,7 @@ std::list<char*>* Recognize::filterOutputJulius() { |
| 315 | 321 | int count_lines = 0; |
| 316 | 322 | |
| 317 | 323 | string path; |
| 318 | - path.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT); | |
| 324 | + path.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_FILTEROUT); | |
| 319 | 325 | ifstream in(path.c_str()); |
| 320 | 326 | string strFilter; |
| 321 | 327 | |
| ... | ... | @@ -332,8 +338,12 @@ std::list<char*>* Recognize::filterOutputJulius() { |
| 332 | 338 | strFilter = line.substr(strlen(FIND_SENTENCE), sizeLine); |
| 333 | 339 | sentence_ptr = new char[strFilter.length()+1]; |
| 334 | 340 | strcpy(sentence_ptr, (char*) strFilter.c_str()); |
| 335 | - sentences->push_back(sentence_ptr); | |
| 341 | + if(getConfidence(count_lines)) | |
| 342 | + notifyListeners(sentence_ptr); | |
| 343 | + else | |
| 344 | + notifyListeners((char*) "SENTENCA_COM_BAIXA_QUALIDADE"); | |
| 336 | 345 | } |
| 346 | + count_lines++; | |
| 337 | 347 | } while (!in.eof()); |
| 338 | 348 | in.close(); |
| 339 | 349 | } |
| ... | ... | @@ -341,9 +351,6 @@ std::list<char*>* Recognize::filterOutputJulius() { |
| 341 | 351 | /*char* ptr_strFilter; |
| 342 | 352 | ptr_strFilter = (char*) malloc (strFilter.length()+1); |
| 343 | 353 | strcpy(ptr_strFilter, (char*) strFilter.c_str());*/ |
| 344 | - | |
| 345 | - return sentences; | |
| 346 | - | |
| 347 | 354 | } |
| 348 | 355 | |
| 349 | 356 | ... | ... |
servico/src/include/serviceWindowGenerationFromREC.h
| ... | ... | @@ -17,6 +17,8 @@ private: |
| 17 | 17 | |
| 18 | 18 | public: |
| 19 | 19 | |
| 20 | + ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType, char* rate); | |
| 21 | + | |
| 20 | 22 | ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType); |
| 21 | 23 | |
| 22 | 24 | ~ServiceWindowGenerationFromREC(); | ... | ... |
servico/src/serviceWindowGenerationFromREC.cpp
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | using namespace std; |
| 4 | 4 | |
| 5 | 5 | ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 6 | - char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType) { | |
| 6 | + char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType, char* rate) { | |
| 7 | 7 | |
| 8 | 8 | path_input = path_video; |
| 9 | 9 | setSubLanguage(sublanguage); |
| ... | ... | @@ -11,10 +11,22 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( |
| 11 | 11 | setSize(size); |
| 12 | 12 | setTransparency(transparency); |
| 13 | 13 | setServiceType(_serviceType); |
| 14 | - rec = new Recognize(path_input, id); | |
| 14 | + rec = new Recognize(path_input, id, rate); | |
| 15 | 15 | DPRINTF("Done!\n"); |
| 16 | 16 | } |
| 17 | 17 | |
| 18 | +ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC( | |
| 19 | + char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType) { | |
| 20 | + | |
| 21 | + path_input = path_video; | |
| 22 | + setSubLanguage(sublanguage); | |
| 23 | + setPosition(position); | |
| 24 | + setSize(size); | |
| 25 | + setTransparency(transparency); | |
| 26 | + setServiceType(_serviceType); | |
| 27 | + rec = new Recognize(path_input, id); | |
| 28 | + DPRINTF("Done!\n"); | |
| 29 | +} | |
| 18 | 30 | |
| 19 | 31 | ServiceWindowGenerationFromREC::~ServiceWindowGenerationFromREC() { |
| 20 | 32 | delete rec; | ... | ... |