// 错误码 export enum ASRErrorCode { SUCCESS = 0, DEFAULT_ERROR = 240999, CONFIG_INVALID = 240001, ILLEGAL_PARAM = 240002, ILLEGAL_INIT_PARAM = 240003, NECESSARY_PARAM_LACK = 240004, NULL_PARAM_ERROR = 240005, NULL_LISTENER_ERROR = 240006, NULL_DIALOG_ERROR = 240007, NULL_ENGINE_ERROR = 240008, ILLEGAL_DATA = 240009, ILLEGAL_REENTRANT = 240010, SDK_NOT_INIT = 240011, SDK_ALREADY_INIT = 240012, DIALOG_INVALID_STATE = 240013, STATE_INVALID = 240014, ILLEGAL_FUNC_CALL = 240015, MEM_ALLOC_ERROR = 240020, FILE_ACCESS_FAIL = 240021, CREATE_DIR_ERROR = 240022, CREATE_NUI_ERROR = 240030, TEXT_DIALOG_START_FAIL = 240031, TEXT_DIALOG_CANCEL_FAIL = 240032, WUW_DUPLICATE = 240033, CEI_INIT_FAIL = 240040, CEI_SET_PARAM_FAIL = 240041, CEI_COMPILE_GRAMMAR_FAIL = 240042, CEI_STOP_FAIL = 240043, CEI_CANCEL_FAIL = 240044, CEI_UNLOAD_KWS_FAIL = 240045, GET_WUW_ERROR = 240046, CEI_CHECK_BIN_FAIL = 240047, SELECT_RECORDER_ERROR = 240050, UPDATE_AUDIO_ERROR = 240051, MIC_ERROR = 240052, CREATE_DA_REQUEST_ERROR = 240060, START_DA_REQUEST_ERROR = 240061, DEFAULT_NLS_ERROR = 240062, SSL_ERROR = 240063, SSL_CONNECT_FAILED = 240064, HTTP_CONNECT_FAILED = 240065, DNS_FAILED = 240066, CONNECT_FAILED = 240067, SERVER_NOT_ACCESS = 240068, SOCKET_CLOSED = 240069, AUTH_FAILED = 240070, HTTPDNS_FAILED = 240071, HTTP_SEND_FAILED = 240072, HTTP_RECEIVE_FAILED = 240073, HTTP_RESPONSE_ERROR = 240074, HTTP_SERVER_ERROR = 240075, ENGINE_INIT_TIMEOUT = 240080, SET_PARAM_TIMEOUT = 240081, UPDATE_CONTEXT_TIMEOUT = 240090, CONNECTION_TIMEOUT = 240091, PARTIAL_ASR_TIMEOUT = 240092, ASR_TIMEOUT = 240093, DIALOG_TIMEOUT = 240094, WAIT_TIMEOUT = 240100, RESAMPLE_ERR = 240140, FILE_TRANS_TASK_LIMIT = 240150, FILE_TRANS_ENCODER_FAIL = 240151, THREAD_CREATE_FAILD = 240200, } // VAD 模式 - 仅保留与语音识别相关的模式 export enum VadMode { MODE_VAD = 0, MODE_P2T = 1, MODE_KWS = 2, MODE_PARALLEL = 3, MODE_KWS2PARALLEL = 4, MODE_AUTO_CONTINUAL = 5, MODE_KWS_CONTINUAL = 6, MODE_KWS2TALK = 7, MODE_ONLY_KWS = 8, } // 日志级别 export enum LogLevel { VERBOSE = 0, DEBUG = 1, INFO = 2, WARNING = 3, ERROR = 4, NONE = 5, } // 录音状态 export enum ASRAudioState { OPEN = 0, PAUSE = 1, CLOSE = 2, } export type AndroidRecorderStrategy = 'sdk' | 'user' | 'auto'; export type AndroidRecorderSource = | 'voiceRecognition' | 'mic' | 'default' | 'camcorder'; export interface AndroidAudioConfig { recorderStrategy?: AndroidRecorderStrategy; recorderSource?: AndroidRecorderSource; recorderSourceFallbacks?: AndroidRecorderSource[]; huaweiCompatibility?: boolean; } // 回调事件 - 仅保留语音识别相关事件 export enum ASREvent { VAD_START = 0, VAD_TIMEOUT = 1, VAD_END = 2, WUW = 3, WUW_TRUSTED = 4, WUW_CONFIRMED = 5, WUW_REJECTED = 6, WUW_END = 7, ASR_PARTIAL_RESULT = 8, ASR_RESULT = 9, ASR_ERROR = 10, DIALOG_ERROR = 11, ONESHOT_TIMEOUT = 12, DIALOG_RESULT = 13, WUW_HINT = 14, VPR_RESULT = 15, TEXT2ACTION_DIALOG_RESULT = 16, TEXT2ACTION_ERROR = 17, ATTR_RESULT = 18, MIC_ERROR = 19, DIALOG_EX = 20, WUW_ERROR = 21, BEFORE_CONNECTION = 22, SENTENCE_START = 23, SENTENCE_END = 24, SENTENCE_SEMANTICS = 25, RESULT_TRANSLATED = 26, TRANSCRIBER_COMPLETE = 27, FILE_TRANS_CONNECTED = 28, FILE_TRANS_UPLOADED = 29, FILE_TRANS_RESULT = 30, FILE_TRANS_UPLOAD_PROGRESS = 31, TRANSCRIBER_STARTED = 32, ASR_STARTED = 33, FILE_TRANS_QUERY_RESULT = 34, WUW_START = 35, WUW_DATA = 36, } // 初始化配置 export interface ASRInitConfig { appKey: string; token: string; url?: string; deviceId?: string; workspace?: string; sampleRate?: number; format?: 'opus' | 'pcm'; enableVad?: boolean; enableRecorderByUser?: boolean; serviceType?: 'asr' | 'speechTranscriber'; androidAudioConfig?: AndroidAudioConfig; logAllEvents?: boolean; logLevel?: LogLevel; saveLog?: boolean; } // 识别参数 export interface ASRDialogParams { token?: string; vocabularyId?: string; maxSentenceSilence?: number; } // 识别结果 export interface ASRResult { text?: string | null; confidence?: number; isFinal: boolean; sentenceId?: number; rawText?: string | null; rawJson?: Record | null; duration?: number; } // 事件回调数据 export interface ASREventData { event: ASREvent; eventName?: string; result?: ASRResult; errorCode?: number; errorMessage?: string; wakeWord?: string; dialogId?: number; isFinish?: boolean; } // 录音状态回调数据 export interface ASRAudioStateData { state: ASRAudioState; stateName?: string; sampleRate16kBufferSize?: number; sampleRate8kBufferSize?: number; hasRecordAudioPermission?: boolean; usingUserRecorder?: boolean; currentRecorderSource?: string; recorderState?: number; recorderRecordingState?: number; } // 事件回调函数类型 export type ASREventCallback = (data: ASREventData) => void; export type ASRAudioStateCallback = (data: ASRAudioStateData) => void;