recognize.h 1.3 KB
#include <iostream>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <list>
#include "dprintf.h"
#include "logger.h"

#include "recognizeListener.h"
#include "recognizeException.h"


using namespace std;

class Recognize {

public:	
	
	Recognize(char* _pathVideo);
	Recognize(char* _pathVideo, int _inputType);
	~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 addListener(RecognizeListener* listener);

	bool isFinished();

private:
	
	char* pathVideo;
	bool finished;

	float sizeScores;
	float avgScores;
	
	/** inputType: 1 = RawFile, 2 = Mic */
	int inputType, frequency, sizeBlocs;

	list<RecognizeListener*> *listeners;
	
	char* extractAudioFromVideo();
	int getTimeMediaSec();
	
	/* @Deprecated */
	void breakVideoParts(int timeTotal);

	void executeJuliusEngine();
	std::list<char*>* filterOutputJulius();
	void confidenceJulius();
	void notifyListeners(char* text);
	void cleanFiles();
	
};