You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

615 lines
24 KiB
C

#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, // 성공
LVCSR_FAIL = -1, // 실패
LVCSR_TIMEOUT = -2, // 시간초과
} LVCSR_RESULT;
typedef enum _LVCSR_EPD_INFO
{
RECEIV_OK = 0, // 전송 성공 - 보내준 압축음성을 받고 계속 보내라는 메시지
RECEIV_OK_SPEECH = 1, // Start Point Detect - 보내준 압축음성을 받고 계속 보내라는 메시지 이며 "음성이라고 판단된 시점부터 나온다.
EPD_FOUND = 2, // 음성의 끝 검출 - 음성인식 서버에서 음성 끝점을 검출하여 녹음 종료하라는 메시지
START_TIME_OVER = 3, // 첫음 검출 실패 - 정해진 시간동안 음성이 없어 첫음 검출 실패에 대한 메시지
DURATION_TIME_OVER = 4, // 끝점 검출 실패 - 정해진 시간동안 끝점 검출 실패에 대한 메시지
SECTION_FOUND = 5, // 구간 음성검출 완료(엔진 EPD 활성화시 리턴). 계속 데이터 전송 요청.
EPD_ERROR = 9, // EPD 오류 발생
} LVCSR_EPD_INFO;
typedef enum _LVCSR_TYPE_CODEC
{
CODEC_RAW_8K = 0, // 8KHz 오디오 포맷(미압축)
CODEC_RAW_16K = 1, // 16KHz 오디오 포맷(미압축) - 16K 엔진인 경우 사용 가능
CODEC_ULAW_8K = 2, // G.711 코덱을 이용한 압축 방법으로 유럽에서 표준 채택 사용
CODEC_ALAW_8K = 3, // G.711 코덱을 이용한 압축 방법으로 북아메리카 및 일본 등에서 표준 채택 사용
CODEC_SPEEX_16K = 4, // 음성을 위해 개발된 무특허 오디오 압축 포맷
} 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 모듈 미사용
SERVER_EPD_USED_ON = 1, // SERVER EPD ON(LVCSR_RECOG_MID_RESULT 상세결과 미 제공)
ENGINE_EPD_USED_WITH_DETECTOR_MID_RESULT = 2, // ENGINE EPD ON(LVCSR_RECOG_MID_RESULT 상세결과 제공 - ENGINE EPD 검출)
ENGINE_EPD_USED_WITH_CONTINUE_MID_RESULT = 3, // ENGINE EPD ON(LVCSR_RECOG_MID_RESULT 상세결과 제공 - ENGINE EPD 무관<계속>)
} LVCSR_USED_EPD;
typedef enum _LVCSR_USED_SCORE
{
SCORE_USED_OFF = 0, // 점수 미사용
SCORE_USED_ON = 1, // 점수 사용
} LVCSR_USED_SCORE;
typedef enum _LVCSR_USED_WORD
{
WORD_USED_OFF = 0, // 음절 인식률 사용(단어 인식률 미사용)
WORD_USED_ON = 1, // 단어 인식률 사용
} LVCSR_USED_WORD;
typedef enum _LVCSR_TYPE_ADDR
{
TYPE_NONE = 0, // 값 없음
JIBUN_ADDR = 1, // 지번주소(법정동/행정동 주소체계이며 지번 없는 경우 또는 POI)
JIBUN_ADDR_KEY = 2, // 지번주소(법정동/행정동 주소체계이며 지번이 있는 경우)
ROAD_ADDR = 3, // 도로명주소(건물번호가 없는 경우 또는 POI)
ROAD_ADDR_KEY = 4, // 도로명주소(건물번호가 있는 경우)
} LVCSR_TYPE_ADDR;
typedef enum _LVCSR_TYPE_CHANNEL
{
ASR_STAT_IDLE = 0, // 유휴상태
ASR_STAT_WAIT = 1, // 대기상태
ASR_STAT_WORK = 2, // 인식상태
ASR_STAT_FAIL = 3, // 오류상태
} LVCSR_TYPE_CHANNEL;
typedef enum _LVCSR_USED_SSL {
SSL_USED_OFF = 0, // SSL 미사용
SSL_USED_ON = 1, // SSL 사용
} LVCSR_USED_SSL;
typedef enum _LVCSR_SSL_RESULT {
SSL_SUCCESS = 1, // SSL 성공
SSL_FAIL = -1, // SSL 실패
SSL_NOT_FOUND_CRT = -2, // 인증서 실패
} LVCSR_SSL_RESULT;
typedef enum _LVCSR_USED_CRT_CHECK {
CRT_CHECK_OFF = 0, // 인증서 미체크
CRT_CHECK_ON = 1, // 인증서 체크
} LVCSR_USED_CRT_CHECK;
typedef enum _LVCSR_RESULT_CODE
{
STT_WARNING = -1, // STT 모듈 경고
STT_FAILED = 0, // STT 모듈 실패
STT_SUCCESS = 1, // STT 모듈 성공
} LVCSR_RESULT_CODE;
typedef enum _LVCSR_RESULT_TYPE
{
STT_TYPE = 0, // STT 모듈 STT 타입
PHONICS_TYPE = 1, // STT 모듈 PHONICS 타입
} LVCSR_RESULT_TYPE;
typedef struct _LVCSR_DATA_PHONEME
{
long long nPhTokenLen; // 음소 인식 결과 길이
char* pPhToken; // 음소 인식 결과
long long nDuration; // 재생 시작 정보( ms )
double dScore; // 음소 점수
} LVCSR_DATA_PHONEME;
typedef struct _LVCSR_DATA_RESULT
{
long long nTokenLen; // 단어 결과 길이
char* pTokenStr; // 단어 결과
long long nStart; // 구간 시작 정보( ms )
long long nEnd; // 구간 종료 정보( ms )
double dScore; // 단어 점수
long long nResultPhCnt; // 음소 정보 구조체 개수
LVCSR_DATA_PHONEME* pResultPhoneme; // 음소 정보 구조체
} LVCSR_DATA_RESULT;
typedef struct _LVCSR_DATA_EPD
{
long long nStart; // EPD 시작 정보( ms )
long long nEnd; // EPD 종료 정보( ms )
} LVCSR_DATA_EPD;
typedef struct _LVCSR_DATA_CHAR_TIME
{
long long nCharSec; // 발성 구분 시간( Sec )
} LVCSR_DATA_CHAR_TIME;
typedef struct _LVCSR_DATA_WAVE_FORM
{
long long nWaveFormSize; // 파형 크기 정보
} LVCSR_DATA_WAVE_FORM;
typedef struct _LVCSR_DATA_CHAR_INFO
{
long long nCharacterSecSum; // 초당 인식 결과 글자 개수
double dCharacterPerSec; // 초당 단어 발성 속도
} LVCSR_DATA_CHAR_INFO;
typedef struct _LVCSR_RECOG_ADD_INFO
{
long long nCharacterSum; // 인식 결과 글자 개수
long long nEpsTime; // 묵음 총 시간
long long nNoiseTime; // 발성 총 시간
long long nTotalTime; // 전체 시간
double dCharacterTotPerSec; // 초당 발성 속도
long long nCount; // 파형 구조체 개수
LVCSR_DATA_WAVE_FORM* pDataWaveForm; // 파형 상세내용 구조체
long long nCharCount; // 초당 발성 속도 구조체 개수
LVCSR_DATA_CHAR_INFO* pDataCharInfo; // 초당 발성 속도 상세내용 구조체
} LVCSR_RECOG_ADD_INFO;
typedef struct _LVCSR_DATA_NBEST_RESULT
{
long long nResultLen; // 인식결과 길이
char* pResult; // 인식 결과
double dConfidScore; // 인식 확률값
long long nCount; // 인식결과 상세내용 구조체 개수
LVCSR_DATA_RESULT* pDataResult; // 인식결과 상세내용 구조체
} LVCSR_DATA_NBEST_RESULT;
typedef struct _LVCSR_RECOG_NBEST_RESULT
{
long long nCount; // 인식결과 NBEST 구조체 개수
LVCSR_DATA_NBEST_RESULT* pDataNbestResult; // 인식결과 NBEST 구조체
LVCSR_DATA_EPD* pResultEPD; // EPD 구조체
} LVCSR_RECOG_NBEST_RESULT;
// PHONICS 추가
typedef struct _LVCSR_DATA_PHONICS
{
long long nPhonicsLen; // Phonics 텍스트 길이
char* pPhonicsStr; // Phonics 텍스트
} LVCSR_DATA_PHONICS;
typedef struct _LVCSR_RECOG_PHONICS_RESULT
{
long long nResultLen; // 인식결과 길이
char* pResult; // 인식 결과
long long nJsonLen; // Json 길이
char* pJson; // Json 결과
double dConfidScore; // 인식 확률값
long long nDataCnt; // 인식결과 상세내용 구조체 개수
LVCSR_DATA_RESULT* pDataResult; // 인식결과 상세내용 구조체
LVCSR_DATA_EPD* pResultEPD; // EPD 구조체
} LVCSR_RECOG_PHONICS_RESULT;
typedef struct _LVCSR_DATA_SEP_ADDR
{
long long nSidoLen; // 시/도 길이
char* pSidoStr; // 시/도
long long nSigunguMainLen; // 시/군/구 main 길이
char* pSigunguMainStr; // 시/군/구 main
long long nSigunguSubLen; // 시/군/구 sub 길이
char* pSigunguSubStr; // 시/군/구 sub
long long nDongLen; // 읍/면/동 길이
char* pDongStr; // 읍/면/동
long long nLiLen; // 리 길이
char* pLiStr; // 리
long long nJibunLen; // 지번 길이
char* pJibunStr; // 지번
long long nRoadNameLen; // 도로명 길이
char* pRoadNameStr; // 도로명
long long nBldgNoLen; // 건물번호 길이
char* pBldgNoStr; // 건물번호
long long nPoiNameLen; // POI명 길이
char* pPoiNameStr; // POI명
} LVCSR_DATA_SEP_ADDR;
typedef struct _LVCSR_DATA_ADDR
{
LVCSR_TYPE_ADDR nCorrectType; // 보정 유형
long long nZipcodeLen; // 우편번호 길이
char* pZipcodeStr; // 우편번호
long long nMainAddressLen; // 기본주소 길이
char* pMainAddressStr; // 기본주소
long long nAuxAddressLen; // 상세주소 길이
char* pAuxAddressStr; // 상세주소
long long nAdditionalSpeechLen; // 미정제주소 길이(추가발성주소)
char* pAdditionalSpeechStr; // 미정제주소
LVCSR_DATA_SEP_ADDR pSepAddr; // 분리된 결과 주소 구조체
} LVCSR_DATA_ADDR;
typedef struct _LVCSR_DATA_KWD
{
long long nTokenLen; // 단어 결과 길이
char* pTokenStr; // 단어 결과
long long nSymbolLen; // 심볼 결과 길이
char* pSymbolStr; // 심볼 결과
long long nStart; // 구간 시작 정보( ms )
long long nEnd; // 구간 종료 정보( ms )
double dScore; // 단어 점수
} LVCSR_DATA_KWD;
typedef struct _LVCSR_DATA_SMI
{
long long nSmiLen; // 자막 결과 길이
char* pSmiStr; // 자막 결과
} LVCSR_DATA_SMI;
typedef struct _LVCSR_RECOG_RESULT
{
long long nResultLen; // 인식결과 길이
char* pResult; // 인식 결과
double dConfidScore; // 인식 확률값
long long nCount; // 인식결과 상세내용 구조체 개수
LVCSR_DATA_RESULT* pDataResult; // 인식결과 상세내용 구조체
long long nSentCount; // 문장결과 상세내용 구조체 개수
LVCSR_DATA_RESULT* pDataSentResult; // 문장결과 상세내용 구조체
LVCSR_DATA_EPD* pResultEPD; // EPD 구조체
long long nAddrUsed; // ADDR Used
LVCSR_DATA_ADDR* pResultADDR; // ADDR 구조체
long long nKWDCount; // KWD 구조체 개수
LVCSR_DATA_KWD* pResultKWD; // KWD 구조체
long long nSMIUsed; // SMI 사용여부
LVCSR_DATA_SMI* pResultSMI; // SMI 구조체
} LVCSR_RECOG_RESULT;
typedef struct _LVCSR_RECOG_MID_RESULT
{
long long nResultLen; // 중간 인식결과 길이
char* pResult; // 중간 인식결과
int bEngineDetectionFlag; // Engine EPD Flag
long long nCount; // 인식결과 상세내용 구조체 개수
LVCSR_DATA_RESULT* pDataResult; // 인식결과 상세내용 구조체
} LVCSR_RECOG_MID_RESULT;
typedef struct _LVCSR_DATA_TIMEOUT
{
long long nStartTimeout; // 설정된 시간 동안 음성이 입력되지 않을 경우 발생
long long nDurationTimeout; // 설정된 시간을 넘겨 음성이 계속 들어올 경우 발생
} LVCSR_DATA_TIMEOUT;
typedef struct _LVCSR_DATA_MARGIN
{
float fEpdMargin; // 끝점 검출 최대 시간
} LVCSR_DATA_MARGIN;
typedef struct _LVCSR_DATA_TRANSACTION
{
long long nTransactionIdLen; // TransactionId 길이
char* pTransactionId; // TransactionId 정보
} LVCSR_DATA_TRANSACTION;
typedef struct _LVCSR_DATA_SERVERTIMEOUT
{
long long nASRTimeOut; // 서비스 TimeOut 정보
long long nMGRTimeOut; // 모니터링 TimeOut 정보
} LVCSR_DATA_SERVERTIMEOUT;
typedef struct _LVCSR_DATA_AUTHENTICATION
{
long long nAuthenticationLen; // 인증정보 길이
char* pAuthentication; // 인증정보
} LVCSR_DATA_AUTHENTICATION;
typedef struct _LVCSR_DATA_READTIMEOUT
{
long long nReadTimeOut; // ReadTimeOut 정보
} LVCSR_DATA_READTIMEOUT;
typedef struct _LVCSR_DATA_INFO
{
long long nModelId; // 모델 ID
long long nKwdId; // KWD모델 ID
LVCSR_TYPE_CODEC nCodecType; // CODEC 타입
LVCSR_SET_CHARSET nCharSet; // 캐릭터 셋
LVCSR_USED_EPD bEpdUsed; // EPD 사용여부
LVCSR_USED_SCORE bScoreUsed; // SCORE 사용 여부
} LVCSR_DATA_INFO;
typedef struct _LVCSR_DATA_RESOURCE
{
double dNetworkUsage; // Network 사용량
int nCPUUsage; // CPU 사용율
int nGPUUsage; // GPU 사용율
int nMemUsage; // MEM 사용율
int nDiskUsage; // DISK 사용율
} LVCSR_DATA_RESOURCE;
typedef struct _LVCSR_CHANNEL_LIST
{
long long nChannelID; // 채널 ID
LVCSR_TYPE_CHANNEL nChannelStat; // 채널 상태
} LVCSR_CHANNEL_LIST;
typedef struct _LVCSR_DATA_CHANNEL
{
long long nChannelCnt; // 전체 채널 수
long long nUsedCnt; // 사용 채널 수
LVCSR_CHANNEL_LIST* pChannelInfo; // 채널 상태 정보
} LVCSR_DATA_CHANNEL;
typedef struct _LVCSR_KWD_LIST
{
long long nKwdID; // KWD모델 ID
long long nKwdNameLen; // KWD모델 이름 길이
char* pKwdName; // KWD모델 이름
} LVCSR_KWD_LIST;
typedef struct _LVCSR_MODEL_LIST
{
long long nModelID; // 인식모델 ID
long long nModelNameLen; // 인식모델 이름 길이
char* pModelName; // 인식모델 이름
long long nModelType; // 인식모델 타입(지원 기능)
long long nSamplingRate; // 인식모델 SampleRate
float fAcousticScale; // 음향가중치 정보
long long nKwdCnt; // KWD 모델 개수
LVCSR_KWD_LIST* pKwdInfo; // KWD 모델 정보
} LVCSR_MODEL_LIST;
typedef struct _LVCSR_DATA_MODEL
{
long long nModelCnt; // 모델 수
LVCSR_MODEL_LIST* pModelInfo; // 모델 정보
} LVCSR_DATA_MODEL;
typedef struct _LVCSR_DATA_DATETERM
{
long long nStartDate; // 시작일자
long long nEndDate; // 종료일자
} LVCSR_DATA_DATETERM;
typedef struct _LVCSR_STATDATE_LIST
{
long long nStatTime; // 기록 시각
unsigned int nTotalSuccess; // 총 성공 건수
unsigned int nTotalFail; // 총 실패 건수
unsigned int nMaxClientFail; // 총 실패 건수(max client error)
unsigned int nEtcFail; // 총 실패 건수(max client error를 제외한 에러)
unsigned long nTotalBytes; // 총 음성 크기 (Bytes)
float fTotalElapsedTime; // 총 인식결과 소요시간
float fMaxElapsedTime; // 최대 인식결과 소요 시간
unsigned int nMaxElapsedBytes; // 최대 인식결과 소요 시간 당시 음성 크기 (Bytes)
unsigned int nMaxBytesSize; // 최대 음성 크기 (Bytes)
float fMaxBytesElapsed; // 최대 음성 크기 당시 인식결과 소요 시간
} LVCSR_STATDATE_LIST;
typedef struct _LVCSR_DATA_STATDATE
{
long long nStatDateCnt; // 통계 수
LVCSR_STATDATE_LIST* pStatDateInfo; // 통계 정보
} LVCSR_DATA_STATDATE;
typedef struct _LVCSR_DATA_KWD_RESULT
{
char szToken[MAX_NAME_SIZE]; // 단어 인식결과
char szSymbol[MAX_NAME_SIZE]; // 심볼 인식결과
} LVCSR_DATA_KWD_RESULT;
typedef struct _LVCSR_DATA_WORD
{
long long nModelId; // 인식모델 ID
long long nKWDNameLen; // KWD모델 이름 길이
char* pKWDName; // KWD모델 이름
long long nKWDResultCnt; // KWD 구조체 개수
LVCSR_DATA_KWD_RESULT* pKWDResult; // KWD 구조체
} LVCSR_DATA_WORD;
typedef struct _LVCSR_DATA_WORD_KWD
{
long long nModelId; // 인식모델 ID
long long nKWDNameLen; // KWD모델 이름 길이
char* pKWDName; // KWD모델 이름
} LVCSR_DATA_WORD_KWD;
typedef struct _LVCSR_DATA_LSTM
{
long long nRefLen; // 정답 결과 길이
char* pRefStr; // 정답 결과
long long nHypLen; // 인식 결과 길이
char* pHypStr; // 인식 결과
LVCSR_SET_CHARSET nCharSet; // 캐릭터 셋
LVCSR_USED_WORD bWordUsed; // 단어 인식률 사용 여부
} LVCSR_DATA_LSTM;
typedef struct _LVCSR_LSTM_SUMMARY
{
long long nTotal; // 전체 개수
long long nInsert; // 삽입 개수
long long nDelete; // 삭제 개수
long long nSubstitute; // 대치 개수
long long nMatch; // 일치 개수
double dErrorRate; // 오류률
double dRecgRate; // 인식률
long long nDistance; // 오류 개수
} LVCSR_LSTM_SUMMARY;
typedef struct _LVCSR_DATA_ALIGN
{
char pTokenStr; // Align 결과
} LVCSR_DATA_ALIGN;
typedef struct _LVCSR_DATA_VECTOR
{
long long nTokenLen; // 단어 결과 길이
char* pTokenStr; // 단어 결과
} LVCSR_DATA_VECTOR;
typedef struct _LVCSR_LSTM_MATCH
{
long long pMatchCnt; // 구조체 개수
long long nAlignLen; // Align 문자열길이
char* pAlignStr; // Align 문자열
LVCSR_DATA_ALIGN* pDataAlign; // Align 구조체
long long nRefLen; // Ref 문자열 길이
char* pRefStr; // Ref 문자열
LVCSR_DATA_VECTOR* pRefResult; // Ref 구조체
long long nHypLen; // Hyp 문자열 길이
char* pHypStr; // Hyp 문자열
LVCSR_DATA_VECTOR* pHypResult; // Hyp 구조체
} LVCSR_LSTM_MATCH;
typedef struct _LVCSR_LSTM_RESULT
{
LVCSR_LSTM_SUMMARY pLstmSummary; // Levenshtein 요약 정보
LVCSR_LSTM_MATCH pLstmMatch; // Levenshtein 정렬 정보
} 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; //공백
char TYPE; //S
char RVD2; //공백
char KIND; //종류
char RVD3; //공백
char USED[2]; //성공여부
char RVD4; //공백
char LENG[10]; //문자
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; // 소켓 ID
SSL* pSSL; // SSL 정보 // SSL 미사용시 NULL값
SSL_CTX* pContext; // SSL Context 정보 // SSL 미사용시 NULL값
LVCSR_USED_SSL nFlag; // SSL 사용 유무
LVCSR_USED_CRT_CHECK nCheck; // 인증서 체크 유무
LVCSR_SOCK_TIMEOUT pTimeOut; // 소켓 타임아웃
long nError; // SSL 에러 정보 // SSL 미사용시 0값
} 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