|
|
|
|
#ifndef LVCSR_API_H
|
|
|
|
|
#define LVCSR_API_H
|
|
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
|
#define LVCSR_LIBRARY_API __declspec(dllexport)
|
|
|
|
|
#define snprintf sprintf_s
|
|
|
|
|
#else
|
|
|
|
|
#define LVCSR_LIBRARY_API
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define MAX_CHANNEL 5000
|
|
|
|
|
#define MAX_NAME_SIZE 128
|
|
|
|
|
|
|
|
|
|
/** module */
|
|
|
|
|
#define MODULE_USE_ENGINE_GENERAL 0X0001 // 1
|
|
|
|
|
#define MODULE_USE_ENGINE_SPACING 0X0002 // 2
|
|
|
|
|
|
|
|
|
|
#define MODULE_USE_PLUGIN_KWD 0x0010 // 16
|
|
|
|
|
#define MODULE_USE_PLUGIN_ADDR 0x0020 // 32
|
|
|
|
|
#define MODULE_USE_PLUGIN_PHONICS 0x0030 // 48
|
|
|
|
|
#define MODULE_USE_PLUGIN_ITN 0x0040 // 64
|
|
|
|
|
|
|
|
|
|
#define MODULE_USE_ENGINE_GENERAL_PLUGIN_NONE 0X0001 // 1
|
|
|
|
|
#define MODULE_USE_ENGINE_GENERAL_PLUGIN_KWD 0X0011 // 17
|
|
|
|
|
#define MODULE_USE_ENGINE_GENERAL_PLUGIN_ADDR 0X0021 // 33
|
|
|
|
|
#define MODULE_USE_ENGINE_GENERAL_PLUGIN_PHONICS 0X0031 // 49
|
|
|
|
|
#define MODULE_USE_ENGINE_GENERAL_PLUGIN_ITN 0X0041 // 65
|
|
|
|
|
|
|
|
|
|
#define MODULE_USE_ENGINE_SPACING_PLUGIN_NONE 0X0002 // 2
|
|
|
|
|
#define MODULE_USE_ENGINE_SPACING_PLUGIN_KWD 0X0012 // 18
|
|
|
|
|
#define MODULE_USE_ENGINE_SPACING_PLUGIN_ADDR 0X0022 // 34
|
|
|
|
|
#define MODULE_USE_ENGINE_SPACING_PLUGIN_PHONICS 0X0032 // 50
|
|
|
|
|
#define MODULE_USE_ENGINE_SPACING_PLUGIN_ITN 0X0042 // 66
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_RESULT
|
|
|
|
|
{
|
|
|
|
|
LVCSR_SUCCESS = 0, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_FAIL = -1, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_TIMEOUT = -2, // <20>ð<EFBFBD><C3B0>ʰ<EFBFBD>
|
|
|
|
|
} LVCSR_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_EPD_INFO
|
|
|
|
|
{
|
|
|
|
|
RECEIV_OK = 0, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ް<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
|
|
|
|
RECEIV_OK_SPEECH = 1, // Start Point Detect - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ް<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> <20≯<EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20>Ǵܵ<C7B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
|
|
|
|
EPD_FOUND = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
|
|
|
|
START_TIME_OVER = 3, // ù<><C3B9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ù<><C3B9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>п<EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
|
|
|
|
DURATION_TIME_OVER = 4, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>п<EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
|
|
|
|
SECTION_FOUND = 5, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD>(<28><><EFBFBD><EFBFBD> EPD Ȱ<><C8B0>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û.
|
|
|
|
|
EPD_ERROR = 9, // EPD <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
|
|
|
|
} LVCSR_EPD_INFO;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_TYPE_CODEC
|
|
|
|
|
{
|
|
|
|
|
CODEC_RAW_8K = 0, // 8KHz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>̾<EFBFBD><CCBE><EFBFBD>)
|
|
|
|
|
CODEC_RAW_16K = 1, // 16KHz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>̾<EFBFBD><CCBE><EFBFBD>) - 16K <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
CODEC_ULAW_8K = 2, // G.711 <20>ڵ<EFBFBD><DAB5><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5> ä<><C3A4> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
CODEC_ALAW_8K = 3, // G.711 <20>ڵ<EFBFBD><DAB5><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϾƸ<C6B8>ī <20><> <20>Ϻ<EFBFBD> <20><EFBFBD><EEBFA1> ǥ<><C7A5> ä<><C3A4> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
CODEC_SPEEX_16K = 4, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ߵ<EFBFBD> <20><>Ư<EFBFBD><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_TYPE_CODEC;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_SET_CHAR
|
|
|
|
|
{
|
|
|
|
|
CHAR_SET_EUCKR = 0, // EUC-KR
|
|
|
|
|
CHAR_SET_UTF8 = 1, // UTF-8
|
|
|
|
|
} LVCSR_SET_CHARSET;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_USED_EPD
|
|
|
|
|
{
|
|
|
|
|
EPD_USED_OFF = 0, // EPD <20><><EFBFBD><EFBFBD> <20>̻<EFBFBD><CCBB><EFBFBD>
|
|
|
|
|
SERVER_EPD_USED_ON = 1, // SERVER EPD ON(LVCSR_RECOG_MID_RESULT <20><EFBFBD><F3BCBCB0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
ENGINE_EPD_USED_WITH_DETECTOR_MID_RESULT = 2, // ENGINE EPD ON(LVCSR_RECOG_MID_RESULT <20><EFBFBD><F3BCBCB0><EFBFBD> <20><><EFBFBD><EFBFBD> - ENGINE EPD <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
ENGINE_EPD_USED_WITH_CONTINUE_MID_RESULT = 3, // ENGINE EPD ON(LVCSR_RECOG_MID_RESULT <20><EFBFBD><F3BCBCB0><EFBFBD> <20><><EFBFBD><EFBFBD> - ENGINE EPD <20><><EFBFBD><EFBFBD><<3C><><EFBFBD><EFBFBD>>)
|
|
|
|
|
|
|
|
|
|
} LVCSR_USED_EPD;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_USED_SCORE
|
|
|
|
|
{
|
|
|
|
|
SCORE_USED_OFF = 0, // <20><><EFBFBD><EFBFBD> <20>̻<EFBFBD><CCBB><EFBFBD>
|
|
|
|
|
SCORE_USED_ON = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_USED_SCORE;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_USED_WORD
|
|
|
|
|
{
|
|
|
|
|
WORD_USED_OFF = 0, // <20><><EFBFBD><EFBFBD> <20>νķ<CEBD> <20><><EFBFBD><EFBFBD>(<28>ܾ<EFBFBD> <20>νķ<CEBD> <20>̻<EFBFBD><CCBB><EFBFBD>)
|
|
|
|
|
WORD_USED_ON = 1, // <20>ܾ<EFBFBD> <20>νķ<CEBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_USED_WORD;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_TYPE_ADDR
|
|
|
|
|
{
|
|
|
|
|
TYPE_NONE = 0, // <20><> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
JIBUN_ADDR = 1, // <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> POI)
|
|
|
|
|
JIBUN_ADDR_KEY = 2, // <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
ROAD_ADDR = 3, // <20><><EFBFBD>θ<EFBFBD><CEB8>ּ<EFBFBD>(<28>ǹ<EFBFBD><C7B9><EFBFBD>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> POI)
|
|
|
|
|
ROAD_ADDR_KEY = 4, // <20><><EFBFBD>θ<EFBFBD><CEB8>ּ<EFBFBD>(<28>ǹ<EFBFBD><C7B9><EFBFBD>ȣ<EFBFBD><C8A3> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
} LVCSR_TYPE_ADDR;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_TYPE_CHANNEL
|
|
|
|
|
{
|
|
|
|
|
ASR_STAT_IDLE = 0, // <20><><EFBFBD><EFBFBD><DEBB><EFBFBD>
|
|
|
|
|
ASR_STAT_WAIT = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ASR_STAT_WORK = 2, // <20>νĻ<CEBD><C4BB><EFBFBD>
|
|
|
|
|
ASR_STAT_FAIL = 3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_TYPE_CHANNEL;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_USED_SSL {
|
|
|
|
|
SSL_USED_OFF = 0, // SSL <20>̻<EFBFBD><CCBB><EFBFBD>
|
|
|
|
|
SSL_USED_ON = 1, // SSL <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_USED_SSL;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_SSL_RESULT {
|
|
|
|
|
SSL_SUCCESS = 1, // SSL <20><><EFBFBD><EFBFBD>
|
|
|
|
|
SSL_FAIL = -1, // SSL <20><><EFBFBD><EFBFBD>
|
|
|
|
|
SSL_NOT_FOUND_CRT = -2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_SSL_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_USED_CRT_CHECK {
|
|
|
|
|
CRT_CHECK_OFF = 0, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>üũ
|
|
|
|
|
CRT_CHECK_ON = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
|
|
|
|
|
} LVCSR_USED_CRT_CHECK;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_RESULT_CODE
|
|
|
|
|
{
|
|
|
|
|
STT_WARNING = -1, // STT <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
STT_FAILED = 0, // STT <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
STT_SUCCESS = 1, // STT <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_RESULT_CODE;
|
|
|
|
|
|
|
|
|
|
typedef enum _LVCSR_RESULT_TYPE
|
|
|
|
|
{
|
|
|
|
|
STT_TYPE = 0, // STT <20><><EFBFBD><EFBFBD> STT Ÿ<><C5B8>
|
|
|
|
|
PHONICS_TYPE = 1, // STT <20><><EFBFBD><EFBFBD> PHONICS Ÿ<><C5B8>
|
|
|
|
|
} LVCSR_RESULT_TYPE;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_PHONEME
|
|
|
|
|
{
|
|
|
|
|
long long nPhTokenLen; // <20><><EFBFBD><EFBFBD> <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pPhToken; // <20><><EFBFBD><EFBFBD> <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nDuration; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
double dScore; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_PHONEME;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_RESULT
|
|
|
|
|
{
|
|
|
|
|
long long nTokenLen; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pTokenStr; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nStart; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
long long nEnd; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
double dScore; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nResultPhCnt; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_PHONEME* pResultPhoneme; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_DATA_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_EPD
|
|
|
|
|
{
|
|
|
|
|
long long nStart; // EPD <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
long long nEnd; // EPD <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
} LVCSR_DATA_EPD;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_CHAR_TIME
|
|
|
|
|
{
|
|
|
|
|
long long nCharSec; // <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>( Sec )
|
|
|
|
|
} LVCSR_DATA_CHAR_TIME;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_WAVE_FORM
|
|
|
|
|
{
|
|
|
|
|
long long nWaveFormSize; // <20><><EFBFBD><EFBFBD> ũ<><C5A9> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_WAVE_FORM;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_CHAR_INFO
|
|
|
|
|
{
|
|
|
|
|
long long nCharacterSecSum; // <20>ʴ<EFBFBD> <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double dCharacterPerSec; // <20>ʴ<EFBFBD> <20>ܾ<EFBFBD> <20><EFBFBD> <20>ӵ<EFBFBD>
|
|
|
|
|
} LVCSR_DATA_CHAR_INFO;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_RECOG_ADD_INFO
|
|
|
|
|
{
|
|
|
|
|
long long nCharacterSum; // <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nEpsTime; // <20><><EFBFBD><EFBFBD> <20><> <20>ð<EFBFBD>
|
|
|
|
|
long long nNoiseTime; // <20><EFBFBD> <20><> <20>ð<EFBFBD>
|
|
|
|
|
long long nTotalTime; // <20><>ü <20>ð<EFBFBD>
|
|
|
|
|
double dCharacterTotPerSec; // <20>ʴ<EFBFBD> <20><EFBFBD> <20>ӵ<EFBFBD>
|
|
|
|
|
long long nCount; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_WAVE_FORM* pDataWaveForm; // <20><><EFBFBD><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nCharCount; // <20>ʴ<EFBFBD> <20><EFBFBD> <20>ӵ<EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_CHAR_INFO* pDataCharInfo; // <20>ʴ<EFBFBD> <20><EFBFBD> <20>ӵ<EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_RECOG_ADD_INFO;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_NBEST_RESULT
|
|
|
|
|
{
|
|
|
|
|
long long nResultLen; // <20>νİ<CEBD><C4B0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pResult; // <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double dConfidScore; // <20>ν<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD>
|
|
|
|
|
long long nCount; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_RESULT* pDataResult; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_DATA_NBEST_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_RECOG_NBEST_RESULT
|
|
|
|
|
{
|
|
|
|
|
long long nCount; // <20>νİ<CEBD><C4B0><EFBFBD> NBEST <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_NBEST_RESULT* pDataNbestResult; // <20>νİ<CEBD><C4B0><EFBFBD> NBEST <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
LVCSR_DATA_EPD* pResultEPD; // EPD <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_RECOG_NBEST_RESULT;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// PHONICS <20>߰<EFBFBD>
|
|
|
|
|
typedef struct _LVCSR_DATA_PHONICS
|
|
|
|
|
{
|
|
|
|
|
long long nPhonicsLen; // Phonics <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pPhonicsStr; // Phonics <20>ؽ<EFBFBD>Ʈ
|
|
|
|
|
} LVCSR_DATA_PHONICS;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_RECOG_PHONICS_RESULT
|
|
|
|
|
{
|
|
|
|
|
long long nResultLen; // <20>νİ<CEBD><C4B0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pResult; // <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nJsonLen; // Json <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pJson; // Json <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double dConfidScore; // <20>ν<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD>
|
|
|
|
|
long long nDataCnt; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_RESULT* pDataResult; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
LVCSR_DATA_EPD* pResultEPD; // EPD <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_RECOG_PHONICS_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_SEP_ADDR
|
|
|
|
|
{
|
|
|
|
|
long long nSidoLen; // <20><>/<2F><> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pSidoStr; // <20><>/<2F><>
|
|
|
|
|
long long nSigunguMainLen; // <20><>/<2F><>/<2F><> main <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pSigunguMainStr; // <20><>/<2F><>/<2F><> main
|
|
|
|
|
long long nSigunguSubLen; // <20><>/<2F><>/<2F><> sub <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pSigunguSubStr; // <20><>/<2F><>/<2F><> sub
|
|
|
|
|
long long nDongLen; // <20><>/<2F><>/<2F><> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pDongStr; // <20><>/<2F><>/<2F><>
|
|
|
|
|
long long nLiLen; // <20><> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pLiStr; // <20><>
|
|
|
|
|
long long nJibunLen; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pJibunStr; // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nRoadNameLen; // <20><><EFBFBD>θ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pRoadNameStr; // <20><><EFBFBD>θ<EFBFBD>
|
|
|
|
|
long long nBldgNoLen; // <20>ǹ<EFBFBD><C7B9><EFBFBD>ȣ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pBldgNoStr; // <20>ǹ<EFBFBD><C7B9><EFBFBD>ȣ
|
|
|
|
|
long long nPoiNameLen; // POI<4F><49> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pPoiNameStr; // POI<4F><49>
|
|
|
|
|
} LVCSR_DATA_SEP_ADDR;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_ADDR
|
|
|
|
|
{
|
|
|
|
|
LVCSR_TYPE_ADDR nCorrectType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nZipcodeLen; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pZipcodeStr; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ
|
|
|
|
|
long long nMainAddressLen; // <20>⺻<EFBFBD>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pMainAddressStr; // <20>⺻<EFBFBD>ּ<EFBFBD>
|
|
|
|
|
long long nAuxAddressLen; // <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pAuxAddressStr; // <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD>
|
|
|
|
|
long long nAdditionalSpeechLen; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>(<28>߰<EFBFBD><DFB0><EFBFBD><DFBC>ּ<EFBFBD>)
|
|
|
|
|
char* pAdditionalSpeechStr; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD>
|
|
|
|
|
LVCSR_DATA_SEP_ADDR pSepAddr; // <20>и<EFBFBD><D0B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_DATA_ADDR;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_KWD
|
|
|
|
|
{
|
|
|
|
|
long long nTokenLen; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pTokenStr; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nSymbolLen; // <20>ɺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pSymbolStr; // <20>ɺ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nStart; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
long long nEnd; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>( ms )
|
|
|
|
|
double dScore; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_KWD;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_SMI
|
|
|
|
|
{
|
|
|
|
|
long long nSmiLen; // <20>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pSmiStr; // <20>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_SMI;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_RECOG_RESULT
|
|
|
|
|
{
|
|
|
|
|
long long nResultLen; // <20>νİ<CEBD><C4B0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pResult; // <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double dConfidScore; // <20>ν<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD>
|
|
|
|
|
long long nCount; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_RESULT* pDataResult; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nSentCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_RESULT* pDataSentResult; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
LVCSR_DATA_EPD* pResultEPD; // EPD <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nAddrUsed; // ADDR Used
|
|
|
|
|
LVCSR_DATA_ADDR* pResultADDR; // ADDR <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nKWDCount; // KWD <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_KWD* pResultKWD; // KWD <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nSMIUsed; // SMI <20><><EFBFBD>뿩<EFBFBD><EBBFA9>
|
|
|
|
|
LVCSR_DATA_SMI* pResultSMI; // SMI <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_RECOG_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_RECOG_MID_RESULT
|
|
|
|
|
{
|
|
|
|
|
long long nResultLen; // <20>߰<EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pResult; // <20>߰<EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD>
|
|
|
|
|
int bEngineDetectionFlag; // Engine EPD Flag
|
|
|
|
|
long long nCount; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_RESULT* pDataResult; // <20>νİ<CEBD><C4B0><EFBFBD> <20><EFBFBD><F3BCBCB3><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_RECOG_MID_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_TIMEOUT
|
|
|
|
|
{
|
|
|
|
|
long long nStartTimeout; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Էµ<D4B7><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
|
|
|
|
long long nDurationTimeout; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20>Ѱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_TIMEOUT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_MARGIN
|
|
|
|
|
{
|
|
|
|
|
float fEpdMargin; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>ð<EFBFBD>
|
|
|
|
|
} LVCSR_DATA_MARGIN;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_TRANSACTION
|
|
|
|
|
{
|
|
|
|
|
long long nTransactionIdLen; // TransactionId <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pTransactionId; // TransactionId <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_TRANSACTION;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_SERVERTIMEOUT
|
|
|
|
|
{
|
|
|
|
|
long long nASRTimeOut; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TimeOut <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nMGRTimeOut; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TimeOut <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_SERVERTIMEOUT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_AUTHENTICATION
|
|
|
|
|
{
|
|
|
|
|
long long nAuthenticationLen; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pAuthentication; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_AUTHENTICATION;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_READTIMEOUT
|
|
|
|
|
{
|
|
|
|
|
long long nReadTimeOut; // ReadTimeOut <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_READTIMEOUT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_INFO
|
|
|
|
|
{
|
|
|
|
|
long long nModelId; // <20><><EFBFBD><EFBFBD> ID
|
|
|
|
|
long long nKwdId; // KWD<57><44><EFBFBD><EFBFBD> ID
|
|
|
|
|
LVCSR_TYPE_CODEC nCodecType; // CODEC Ÿ<><C5B8>
|
|
|
|
|
LVCSR_SET_CHARSET nCharSet; // ij<><C4B3><EFBFBD><EFBFBD> <20><>
|
|
|
|
|
LVCSR_USED_EPD bEpdUsed; // EPD <20><><EFBFBD>뿩<EFBFBD><EBBFA9>
|
|
|
|
|
LVCSR_USED_SCORE bScoreUsed; // SCORE <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_INFO;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_RESOURCE
|
|
|
|
|
{
|
|
|
|
|
double dNetworkUsage; // Network <20><><EFBFBD>뷮
|
|
|
|
|
int nCPUUsage; // CPU <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int nGPUUsage; // GPU <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int nMemUsage; // MEM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int nDiskUsage; // DISK <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_RESOURCE;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_CHANNEL_LIST
|
|
|
|
|
{
|
|
|
|
|
long long nChannelID; // ä<><C3A4> ID
|
|
|
|
|
LVCSR_TYPE_CHANNEL nChannelStat; // ä<><C3A4> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_CHANNEL_LIST;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_CHANNEL
|
|
|
|
|
{
|
|
|
|
|
long long nChannelCnt; // <20><>ü ä<><C3A4> <20><>
|
|
|
|
|
long long nUsedCnt; // <20><><EFBFBD><EFBFBD> ä<><C3A4> <20><>
|
|
|
|
|
LVCSR_CHANNEL_LIST* pChannelInfo; // ä<><C3A4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_CHANNEL;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_KWD_LIST
|
|
|
|
|
{
|
|
|
|
|
long long nKwdID; // KWD<57><44><EFBFBD><EFBFBD> ID
|
|
|
|
|
long long nKwdNameLen; // KWD<57><44><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pKwdName; // KWD<57><44><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|
|
|
|
} LVCSR_KWD_LIST;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_MODEL_LIST
|
|
|
|
|
{
|
|
|
|
|
long long nModelID; // <20>νĸ<CEBD><C4B8><EFBFBD> ID
|
|
|
|
|
long long nModelNameLen; // <20>νĸ<CEBD><C4B8><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pModelName; // <20>νĸ<CEBD><C4B8><EFBFBD> <20≯<EFBFBD>
|
|
|
|
|
long long nModelType; // <20>νĸ<CEBD><C4B8><EFBFBD> Ÿ<><C5B8>(<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
long long nSamplingRate; // <20>νĸ<CEBD><C4B8><EFBFBD> SampleRate
|
|
|
|
|
float fAcousticScale; // <20><><EFBFBD>Ⱑ<EFBFBD><E2B0A1>ġ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nKwdCnt; // KWD <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_KWD_LIST* pKwdInfo; // KWD <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_MODEL_LIST;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_MODEL
|
|
|
|
|
{
|
|
|
|
|
long long nModelCnt; // <20><><EFBFBD><EFBFBD> <20><>
|
|
|
|
|
LVCSR_MODEL_LIST* pModelInfo; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_MODEL;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_DATETERM
|
|
|
|
|
{
|
|
|
|
|
long long nStartDate; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
long long nEndDate; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_DATETERM;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_STATDATE_LIST
|
|
|
|
|
{
|
|
|
|
|
long long nStatTime; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
|
|
|
|
unsigned int nTotalSuccess; // <20><> <20><><EFBFBD><EFBFBD> <20>Ǽ<EFBFBD>
|
|
|
|
|
unsigned int nTotalFail; // <20><> <20><><EFBFBD><EFBFBD> <20>Ǽ<EFBFBD>
|
|
|
|
|
unsigned int nMaxClientFail; // <20><> <20><><EFBFBD><EFBFBD> <20>Ǽ<EFBFBD>(max client error)
|
|
|
|
|
unsigned int nEtcFail; // <20><> <20><><EFBFBD><EFBFBD> <20>Ǽ<EFBFBD>(max client error<6F><72> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
unsigned long nTotalBytes; // <20><> <20><><EFBFBD><EFBFBD> ũ<><C5A9> (Bytes)
|
|
|
|
|
float fTotalElapsedTime; // <20><> <20>νİ<CEBD><C4B0><EFBFBD> <20>ҿ<EFBFBD><D2BF>ð<EFBFBD>
|
|
|
|
|
float fMaxElapsedTime; // <20>ִ<EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD> <20>ҿ<EFBFBD> <20>ð<EFBFBD>
|
|
|
|
|
unsigned int nMaxElapsedBytes; // <20>ִ<EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD> <20>ҿ<EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9> (Bytes)
|
|
|
|
|
unsigned int nMaxBytesSize; // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9> (Bytes)
|
|
|
|
|
float fMaxBytesElapsed; // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9> <20><><EFBFBD><EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD> <20>ҿ<EFBFBD> <20>ð<EFBFBD>
|
|
|
|
|
} LVCSR_STATDATE_LIST;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_STATDATE
|
|
|
|
|
{
|
|
|
|
|
long long nStatDateCnt; // <20><><EFBFBD><EFBFBD> <20><>
|
|
|
|
|
LVCSR_STATDATE_LIST* pStatDateInfo; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_STATDATE;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_KWD_RESULT
|
|
|
|
|
{
|
|
|
|
|
char szToken[MAX_NAME_SIZE]; // <20>ܾ<EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD>
|
|
|
|
|
char szSymbol[MAX_NAME_SIZE]; // <20>ɺ<EFBFBD> <20>νİ<CEBD><C4B0><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_KWD_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_WORD
|
|
|
|
|
{
|
|
|
|
|
long long nModelId; // <20>νĸ<CEBD><C4B8><EFBFBD> ID
|
|
|
|
|
long long nKWDNameLen; // KWD<57><44><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pKWDName; // KWD<57><44><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|
|
|
|
long long nKWDResultCnt; // KWD <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_DATA_KWD_RESULT* pKWDResult; // KWD <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_DATA_WORD;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_WORD_KWD
|
|
|
|
|
{
|
|
|
|
|
long long nModelId; // <20>νĸ<CEBD><C4B8><EFBFBD> ID
|
|
|
|
|
long long nKWDNameLen; // KWD<57><44><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pKWDName; // KWD<57><44><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|
|
|
|
} LVCSR_DATA_WORD_KWD;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_LSTM
|
|
|
|
|
{
|
|
|
|
|
long long nRefLen; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pRefStr; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nHypLen; // <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pHypStr; // <20>ν<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_SET_CHARSET nCharSet; // ij<><C4B3><EFBFBD><EFBFBD> <20><>
|
|
|
|
|
LVCSR_USED_WORD bWordUsed; // <20>ܾ<EFBFBD> <20>νķ<CEBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_LSTM;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_LSTM_SUMMARY
|
|
|
|
|
{
|
|
|
|
|
long long nTotal; // <20><>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nInsert; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nDelete; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nSubstitute; // <20><>ġ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nMatch; // <20><>ġ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
double dErrorRate; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
double dRecgRate; // <20>νķ<CEBD>
|
|
|
|
|
long long nDistance; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_LSTM_SUMMARY;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_ALIGN
|
|
|
|
|
{
|
|
|
|
|
char pTokenStr; // Align <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_ALIGN;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_DATA_VECTOR
|
|
|
|
|
{
|
|
|
|
|
long long nTokenLen; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pTokenStr; // <20>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_DATA_VECTOR;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_LSTM_MATCH
|
|
|
|
|
{
|
|
|
|
|
long long pMatchCnt; // <20><><EFBFBD><EFBFBD>ü <20><><EFBFBD><EFBFBD>
|
|
|
|
|
long long nAlignLen; // Align <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
char* pAlignStr; // Align <20><><EFBFBD>ڿ<EFBFBD>
|
|
|
|
|
LVCSR_DATA_ALIGN* pDataAlign; // Align <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nRefLen; // Ref <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pRefStr; // Ref <20><><EFBFBD>ڿ<EFBFBD>
|
|
|
|
|
LVCSR_DATA_VECTOR* pRefResult; // Ref <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
long long nHypLen; // Hyp <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
char* pHypStr; // Hyp <20><><EFBFBD>ڿ<EFBFBD>
|
|
|
|
|
LVCSR_DATA_VECTOR* pHypResult; // Hyp <20><><EFBFBD><EFBFBD>ü
|
|
|
|
|
} LVCSR_LSTM_MATCH;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_LSTM_RESULT
|
|
|
|
|
{
|
|
|
|
|
LVCSR_LSTM_SUMMARY pLstmSummary; // Levenshtein <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_LSTM_MATCH pLstmMatch; // Levenshtein <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
} LVCSR_LSTM_RESULT;
|
|
|
|
|
|
|
|
|
|
typedef struct _CASR_HEAD_PACK
|
|
|
|
|
{
|
|
|
|
|
char CHID[6];
|
|
|
|
|
char RVD1;
|
|
|
|
|
char TYPE;
|
|
|
|
|
char RVD2;
|
|
|
|
|
char LENG[10];
|
|
|
|
|
char RVD3;
|
|
|
|
|
} CASR_HEAD_PACK;
|
|
|
|
|
|
|
|
|
|
typedef struct _CRES_HEAD_PACK
|
|
|
|
|
{
|
|
|
|
|
char CHID[6]; //socket
|
|
|
|
|
char RVD1; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
char TYPE; //S
|
|
|
|
|
char RVD2; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
char KIND; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
char RVD3; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
char USED[2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
char RVD4; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
char LENG[10]; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
char RVD5;
|
|
|
|
|
} CRES_HEAD_PACK;
|
|
|
|
|
|
|
|
|
|
typedef struct ssl_st SSL;
|
|
|
|
|
typedef struct ssl_ctx_st SSL_CTX;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_SOCK_TIMEOUT
|
|
|
|
|
{
|
|
|
|
|
long long nConnTIMEOUT; // Connection TimeOut(Sec)
|
|
|
|
|
long long nReadTIMEOUT; // Read TimeOut(Sec)
|
|
|
|
|
} LVCSR_SOCK_TIMEOUT;
|
|
|
|
|
|
|
|
|
|
typedef struct _LVCSR_SOCK_HEAD
|
|
|
|
|
{
|
|
|
|
|
long uSock; // <20><><EFBFBD><EFBFBD> ID
|
|
|
|
|
SSL* pSSL; // SSL <20><><EFBFBD><EFBFBD> // SSL <20>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD> NULL<4C><4C>
|
|
|
|
|
SSL_CTX* pContext; // SSL Context <20><><EFBFBD><EFBFBD> // SSL <20>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD> NULL<4C><4C>
|
|
|
|
|
LVCSR_USED_SSL nFlag; // SSL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_USED_CRT_CHECK nCheck; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
LVCSR_SOCK_TIMEOUT pTimeOut; // <20><><EFBFBD><EFBFBD> Ÿ<>Ӿƿ<D3BE>
|
|
|
|
|
long nError; // SSL <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // SSL <20>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD> 0<><30>
|
|
|
|
|
} LVCSR_SOCK_HEAD;
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_VERSION();
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_SSL(char* pCRT, char* pKEY, char* pCA, char* pPASS, LVCSR_SOCK_HEAD* pHEAD);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_OPEN(char* cHOST, long nPORT, long nConnTIMEOUT, long nReadTIMEOUT, LVCSR_SOCK_HEAD* pHEAD);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_CLOS(LVCSR_SOCK_HEAD* pHEAD);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_OPEN(LVCSR_SOCK_HEAD* pHEAD);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_CLOS(LVCSR_SOCK_HEAD* pHEAD);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_DATA(LVCSR_SOCK_HEAD* pHEAD, char* cBUFF, long nLENG, long bEND, LVCSR_EPD_INFO* pEpdInfo);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_STR_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_WORD_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SENT_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_ADDR_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_KWD_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SMI_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_ADD_INFO(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_CHAR_TIME* pCharTime, LVCSR_RECOG_ADD_INFO* pRecgAddInfo);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_ADD_INFO_FREE(LVCSR_DATA_CHAR_TIME* pCharTime, LVCSR_RECOG_ADD_INFO* pRecgAddInfo);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SET_PHONICS_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_PHONICS* pDataPhonics, LVCSR_RECOG_MID_RESULT* pRecgMidResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SET_PHONICS_PROC_FREE(LVCSR_DATA_PHONICS* pDataPhonics, LVCSR_RECOG_MID_RESULT* pRecgMidResult);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_NBEST_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_NBEST_RESULT* pRecgNbestResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_PHONICS_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_PHONICS_RESULT* pRecgPhonicsResult);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_LIST_VIEW(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_MODEL* pDataModel);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_MID_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_MID_RESULT* pRecgMidResult);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_MID_PHONICS_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_MID_RESULT* pRecgMidResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_DET_PHONICS_PROC(LVCSR_SOCK_HEAD* pHEAD, LVCSR_RECOG_PHONICS_RESULT* pRecgPhonicsResult);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_SET_AUTH(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_AUTHENTICATION* pDataAuthentication);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_SET_READTIME(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_READTIMEOUT* pDataReadtimeout);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_SET_TRANS(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_TRANSACTION* pDataTransaction);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SET_LIST(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_INFO* pDataInfo);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SET_EPD_TIMEOUT(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_TIMEOUT* pDataTimeOut);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SET_EPD_MARGIN(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_MARGIN* pDataMargin);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_SET_PHONICS(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_PHONICS* pDataPhonics);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RESOURCE(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_RESOURCE* pDataResource);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_CHANNEL(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_CHANNEL* pDataChannel);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_MODEL(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_MODEL* pDataModel);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_TIMEOUT(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_SERVERTIMEOUT* pDataServertimeout);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_STAT(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_DATETERM* pDataTerm, LVCSR_DATA_STATDATE* pDataStatDate);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_CREATE_WORD(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_WORD* pDataWord);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_DELETE_WORD(LVCSR_SOCK_HEAD* pHEAD, LVCSR_DATA_WORD_KWD* pDataWordKwd);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_CHANNEL_FREE(LVCSR_DATA_CHANNEL* pDataChannel);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_MODEL_FREE(LVCSR_DATA_MODEL* pDataModel);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_STAT_FREE(LVCSR_DATA_DATETERM* pDataTerm, LVCSR_DATA_STATDATE* pDataStatDate);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_LIST_VIEW_FREE(LVCSR_DATA_MODEL* pDataModel);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_MID_PROC_FREE(LVCSR_RECOG_MID_RESULT* pRecgMidResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_PROC_FREE(LVCSR_RECOG_RESULT* pRecgResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_NBEST_PROC_FREE(LVCSR_RECOG_NBEST_RESULT* pRecgNbestResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_RECG_PHONICS_PROC_FREE(LVCSR_RECOG_PHONICS_RESULT* pRecgPhonicsResult);
|
|
|
|
|
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_LSTM(LVCSR_DATA_LSTM* pDataLstm, LVCSR_LSTM_RESULT* pDataLstmResult);
|
|
|
|
|
LVCSR_RESULT LVCSR_LIBRARY_API ASR_SVC_LSTM_FREE(LVCSR_DATA_LSTM* pDataLstm, LVCSR_LSTM_RESULT* pDataLstmResult);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|