Commit 8c83f30951f649bf94c535a8e2a2c392edffa027

Authored by Erickson Silva
1 parent 7d325c52
Exists in master and in 2 other branches api, devel

Recognizer gerando seus arquivos na pasta gtaaas_web de acordo seu ID.

.gitignore
... ... @@ -10,3 +10,6 @@
10 10 *.jar
11 11 *.pyc
12 12 *.srt
  13 +gtaaas_user
  14 +tamanho.txt
  15 +gtaaas
... ...
main.cpp
... ... @@ -147,7 +147,8 @@ void serviceREC(char* path_video, char* sublanguage,
147 147 (int) atoi(sublanguage),
148 148 (int) atoi(position),
149 149 (int) atoi(size),
150   - (int) atoi(transparency), 3);
  150 + (int) atoi(transparency),
  151 + id, 3);
151 152  
152 153 try{
153 154 service_rec->initialize();
... ...
recognize/src/include/recognize.h
... ... @@ -16,8 +16,8 @@ class Recognize {
16 16  
17 17 public:
18 18  
19   - Recognize(char* _pathVideo);
20   - Recognize(char* _pathVideo, int _inputType);
  19 + Recognize(char* _pathVideo, char* id);
  20 + Recognize(char* _pathVideo, int _inputType, char* id);
21 21 ~Recognize();
22 22  
23 23 /*
... ... @@ -42,6 +42,7 @@ public:
42 42 private:
43 43  
44 44 char* pathVideo;
  45 + string id;
45 46 bool finished;
46 47  
47 48 float sizeScores;
... ... @@ -63,5 +64,6 @@ private:
63 64 void confidenceJulius();
64 65 void notifyListeners(char* text);
65 66 void cleanFiles();
  67 + void createDir();
66 68  
67 69 };
... ...
recognize/src/recognize.cpp
... ... @@ -8,6 +8,7 @@
8 8  
9 9 #include <iostream>
10 10 #include <string>
  11 +#include <sys/stat.h>
11 12  
12 13 #include <lavidlib/io/FileIO.h>
13 14  
... ... @@ -19,41 +20,47 @@
19 20 #define SIZE_BUFFER 256
20 21 #define CONFIDENCE_RATE 0.80
21 22  
22   -
23   -#define PATH_AUDIO_ORIGIN "gtaaas_user/gtaaas/recognize/src/audio/origin/audio_origin.wav"
24   -#define PATH_AUDIO_PARTS "gtaaas_user/gtaaas/recognize/src/audio/parts/"
25   -#define FILENAME_AUDIOPART "audio00"
26   -#define FILENAME_AUDIOLIST "gtaaas_user/gtaaas/recognize/src/audio/audiolist"
27   -#define FILENAME_FILTEROUT "gtaaas_user/gtaaas/recognize/src/audio/filter"
28   -#define FILENAME_CONFIDENCEOUT "gtaaas_user/gtaaas/recognize/src/audio/confidence"
29   -#define FILENAME_RECOGNIZED_OUT "gtaaas_user/gtaaas/recognize/src/audio/recognized.out"
  23 +#define PATH_GTAAAS_WEB "gtaaas_user/gtaaas_web/public/uploads/videos/"
  24 +#define PATH_AUDIO_ORIGIN "/audio/origin/audio_origin.wav"
  25 +#define PATH_AUDIO_PARTS "/audio/parts/"
  26 +#define FILENAME_RECOGNIZED_OUT "/audio/recognized.out"
  27 +#define FILENAME_AUDIOLIST "/audio/audiolist"
  28 +#define FILENAME_FILTEROUT "/audio/filter"
  29 +#define FILENAME_CONFIDENCEOUT "/audio/confidence"
30 30  
31 31 #define FIND_CONFIDENCE "\"cmscore1:\""
32 32 #define FIND_SENTENCE "\"pass1_best:\""
33 33  
  34 +#define FILENAME_AUDIOPART "audio00"
  35 +
34 36 #define PROGRAM "ffmpeg" // ffmpeg
35 37 #define PTS_PATTERN 1000
36 38  
37 39 using namespace std;
38 40  
39 41  
40   -Recognize::Recognize(char* _pathVideo) {
  42 +Recognize::Recognize(char* _pathVideo, char* _id) {
41 43  
42 44 listeners = new list<RecognizeListener*>();
43 45 pathVideo = _pathVideo;
44 46 inputType = INPUT_PATTERN;
45 47 frequency = FREQUENCY_PATTERN;
46 48 sizeBlocs = BLOCS_PATTERN;
  49 + stringstream ss;
  50 + ss << _id;
  51 + ss >> id;
  52 + printf("ID: %s\n", id.c_str());
47 53 DPRINTF("Done!\n");
48 54 }
49 55  
50   -Recognize::Recognize(char* _pathVideo, int _inputType) {
  56 +Recognize::Recognize(char* _pathVideo, int _inputType, char* _id) {
51 57  
52 58 listeners = new list<RecognizeListener*>();
53 59 pathVideo = _pathVideo;
54 60 inputType = _inputType;
55 61 frequency = FREQUENCY_PATTERN;
56 62 sizeBlocs = BLOCS_PATTERN;
  63 + id = _id;
57 64 DPRINTF("Done!\n");
58 65 }
59 66  
... ... @@ -79,6 +86,8 @@ void Recognize::initialize() {
79 86  
80 87 finished = false;
81 88  
  89 + createDir();
  90 +
82 91 extractAudioFromVideo();
83 92  
84 93 breakVideoParts(getTimeMediaSec());
... ... @@ -124,7 +133,10 @@ char* Recognize::extractAudioFromVideo() {
124 133 //command.append(strFreq).append(" -ac 1 -f wav ").append(PATH_AUDIO_ORIGIN).append(" &");
125 134 command.append(strFreq).
126 135 append(" -ac 1 -f wav ").
  136 + append(PATH_GTAAAS_WEB).
  137 + append(id).
127 138 append(PATH_AUDIO_ORIGIN).
  139 +
128 140 append(" -v quiet");
129 141  
130 142 /*string tmp = "echo ";
... ... @@ -139,7 +151,7 @@ char* Recognize::extractAudioFromVideo() {
139 151 int Recognize::getTimeMediaSec() {
140 152  
141 153 string command = PROGRAM;
142   - command.append(" -i ").append(PATH_AUDIO_ORIGIN);
  154 + command.append(" -i ").append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_ORIGIN);
143 155 command.append(" 2>&1 | grep Duration >> outfile");
144 156 system(command.c_str());
145 157  
... ... @@ -171,7 +183,7 @@ void Recognize::breakVideoParts(int timeTotal) {
171 183 int t = 0;
172 184 bool consume = true;
173 185  
174   - string filename = FILENAME_AUDIOPART;
  186 + string filename= FILENAME_AUDIOPART;
175 187 char tmp [filename.length()];
176 188 sprintf(tmp, "%i", ss);
177 189 ss_str = tmp;
... ... @@ -198,7 +210,7 @@ void Recognize::breakVideoParts(int timeTotal) {
198 210 ss_str = tmp;
199 211  
200 212 command = "sox ";
201   - command.append(PATH_AUDIO_ORIGIN).append(" ").append(PATH_AUDIO_PARTS);
  213 + command.append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_ORIGIN).append(" ").append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_PARTS);
202 214 sprintf(tmp, "%i", count++);
203 215 filename.append(tmp).append(".wav");
204 216 command.append(filename).append(" trim ").append(ss_str).append(" ").append(t_str);
... ... @@ -206,7 +218,7 @@ void Recognize::breakVideoParts(int timeTotal) {
206 218 system(command.c_str());
207 219  
208 220 string apcomm = "echo ";
209   - apcomm.append(PATH_AUDIO_PARTS).append(filename).append(" >> ").append(FILENAME_AUDIOLIST);
  221 + apcomm.append(PATH_GTAAAS_WEB).append(id).append(PATH_AUDIO_PARTS).append(filename).append(" >> ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_AUDIOLIST);
210 222 system(apcomm.c_str());
211 223  
212 224 filename = FILENAME_AUDIOPART;
... ... @@ -225,7 +237,7 @@ void Recognize::executeJuliusEngine() {
225 237 command = "julius -C gtaaas_user/gtaaas/recognize/src/julius.jconf -input ";
226 238 if (inputType == 1) {
227 239 type = "rawfile";
228   - command.append(type).append(" -filelist ").append(FILENAME_AUDIOLIST);
  240 + command.append(type).append(" -filelist ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_AUDIOLIST);
229 241 } else {
230 242 type = "mic";
231 243 }
... ... @@ -233,6 +245,7 @@ void Recognize::executeJuliusEngine() {
233 245 command.append(" -smpFreq ").
234 246 append(cfreq).
235 247 append(" -nolog >> ").
  248 + append(PATH_GTAAAS_WEB).append(id).
236 249 append(FILENAME_RECOGNIZED_OUT);
237 250  
238 251 printf("\n\nCommand for executeJuliusEngine: %s\n", command.c_str());
... ... @@ -243,13 +256,15 @@ void Recognize::executeJuliusEngine() {
243 256 void Recognize::confidenceJulius() {
244 257  
245 258 string command = "cat ";
246   - command.append(FILENAME_RECOGNIZED_OUT).append(" | grep ").
247   - append(FIND_CONFIDENCE).append(" >> ").append(FILENAME_CONFIDENCEOUT);
  259 + command.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep ").
  260 + append(FIND_CONFIDENCE).append(" >> ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT);
248 261  
249 262 system(command.c_str());
250 263 printf("\n\n---> command: %s\n\n", command.c_str());
251 264  
252   - ifstream in(FILENAME_CONFIDENCEOUT);
  265 + string path;
  266 + path.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT);
  267 + ifstream in(path.c_str());
253 268  
254 269 if (!in) {
255 270 perror("Error: ");
... ... @@ -275,10 +290,13 @@ void Recognize::confidenceJulius() {
275 290 avgScores /= sizeScores;
276 291 }
277 292  
  293 + cout << "Média: " << avgScores << endl;
278 294  
279   - if (avgScores < CONFIDENCE_RATE)
  295 + if (avgScores < CONFIDENCE_RATE){
280 296 finished = true;
281   - throw RecognizeException("Desculpe, não podemos concluir pois o vídeo tem baixa qualidade. Tente novamente com outro vídeo.");
  297 + cleanFiles();
  298 + throw RecognizeException("O vídeo selecionado tem baixa qualidade. Tente novamente com outro vídeo.");
  299 + }
282 300 }
283 301  
284 302  
... ... @@ -288,15 +306,17 @@ std::list&lt;char*&gt;* Recognize::filterOutputJulius() {
288 306 sentences = new std::list<char*>();
289 307  
290 308 string command = "cat ";
291   - command.append(FILENAME_RECOGNIZED_OUT).append(" | grep ").
292   - append(FIND_SENTENCE).append(" >> ").append(FILENAME_FILTEROUT);
  309 + command.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_RECOGNIZED_OUT).append(" | grep ").
  310 + append(FIND_SENTENCE).append(" >> ").append(PATH_GTAAAS_WEB).append(id).append(FILENAME_FILTEROUT);
293 311  
294 312 system(command.c_str());
295 313 printf("\n\n---> command: %s\n\n", command.c_str());
296 314  
297 315 int count_lines = 0;
298 316  
299   - ifstream in(FILENAME_FILTEROUT);
  317 + string path;
  318 + path.append(PATH_GTAAAS_WEB).append(id).append(FILENAME_CONFIDENCEOUT);
  319 + ifstream in(path.c_str());
300 320 string strFilter;
301 321  
302 322 if (!in) {
... ... @@ -349,13 +369,16 @@ bool Recognize::isFinished() {
349 369  
350 370 void Recognize::cleanFiles() {
351 371  
352   - string command = "rm ";
353   - command.append(PATH_AUDIO_ORIGIN).append(" ").
354   - append(FILENAME_AUDIOLIST).append(" ").
355   - append(FILENAME_FILTEROUT).append(" ").
356   - append(FILENAME_CONFIDENCEOUT).append(" ").
357   - append(PATH_AUDIO_PARTS).append("* ").
358   - append(FILENAME_RECOGNIZED_OUT);
  372 + string command = "rm -r ";
  373 + command.append(PATH_GTAAAS_WEB).append(id).append("/audio");
359 374 system(command.c_str());
  375 +}
360 376  
  377 +void Recognize::createDir(){
  378 + string command = "mkdir ";
  379 + command.append(PATH_GTAAAS_WEB).append(id).append("/audio").append(" && mkdir ").
  380 + append(PATH_GTAAAS_WEB).append(id).append("/audio/parts").append(" && mkdir ").
  381 + append(PATH_GTAAAS_WEB).append(id).append("/audio/origin");
  382 + printf("%s\n", command.c_str());
  383 + system(command.c_str());
361 384 }
... ...
servico/src/include/serviceWindowGenerationFromREC.h
... ... @@ -17,10 +17,7 @@ private:
17 17  
18 18 public:
19 19  
20   - ServiceWindowGenerationFromREC(
21   - char* path_video, int sublanguage, int position, int size, int transparency, int _serviceType);
22   -
23   - ServiceWindowGenerationFromREC(char* path_video, char* _video_path_file, int transparency, int _serviceType);
  20 + ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType);
24 21  
25 22 ~ServiceWindowGenerationFromREC();
26 23 void initialize();
... ...
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, int _serviceType) {
  6 + char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType) {
7 7  
8 8 path_input = path_video;
9 9 setSubLanguage(sublanguage);
... ... @@ -11,6 +11,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC(
11 11 setSize(size);
12 12 setTransparency(transparency);
13 13 setServiceType(_serviceType);
  14 + rec = new Recognize(path_input, id);
14 15 DPRINTF("Done!\n");
15 16 }
16 17  
... ... @@ -21,7 +22,6 @@ ServiceWindowGenerationFromREC::~ServiceWindowGenerationFromREC() {
21 22 }
22 23  
23 24 void ServiceWindowGenerationFromREC::initialize() {
24   - rec = new Recognize(path_input);
25 25 rec->addListener(this);
26 26  
27 27 ServiceWindowGeneration::initialize();
... ...