recognize.h
2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef RECOGNIZE_H
#define RECOGNIZE_H
#include "jthread.h"
#include <iostream>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <list>
#include <fstream>
#include <stdio.h>
#include <sstream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <sys/stat.h>
#include <lavidlib/io/FileIO.h>
#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 "<input rejected by short input>"
#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<float> scores;
vector<int64_t> pts;
/** inputType: 1 = RawFile, 2 = Mic */
int inputType, frequency, sizeBlocs;
list<RecognizeListener*> *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