nlsCsharpSdk/nlsCsharpSdkExtern/speechRecognizerExtern.h (229 lines of code) (raw):

/* * Copyright 2021 Alibaba Group Holding Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _NLSCPPSDK_RECOGNIZER_EXTERN_H_ #define _NLSCPPSDK_RECOGNIZER_EXTERN_H_ NLSAPI(int) SRstart(AlibabaNls::SpeechRecognizerRequest* request) { return request->start(); } NLSAPI(int) SRstop(AlibabaNls::SpeechRecognizerRequest* request) { return request->stop(); } NLSAPI(int) SRsendAudio(AlibabaNls::SpeechRecognizerRequest* request, uint8_t* data, uint64_t dataSize, int type) { return request->sendAudio(data, dataSize, (ENCODER_TYPE)type); } // 对外回调 static void onRecognitionStarted(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, srEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onRecognitionResultChanged(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, srEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onRecognitionCompleted(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, srEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onRecognitionClosed(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, srEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onRecognitionTaskFailed(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, srEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } NLSAPI(int) SRGetNlsEvent(NLS_EVENT_STRUCT& event) { WaitForSingleObject(event.eventMtx, INFINITE); event.statusCode = srEvent->statusCode; memcpy(event.msg, srEvent->msg, NLS_EVENT_RESPONSE_SIZE); event.msgType = srEvent->msgType; memcpy(event.taskId, srEvent->taskId, NLS_EVENT_ID_SIZE); memcpy(event.result, srEvent->result, NLS_EVENT_RESULT_SIZE); memcpy(event.displayText, srEvent->displayText, NLS_EVENT_TEXT_SIZE); memcpy(event.spokenText, srEvent->spokenText, NLS_EVENT_TEXT_SIZE); event.sentenceTimeOutStatus = srEvent->sentenceTimeOutStatus; event.sentenceIndex = srEvent->sentenceIndex; event.sentenceTime = srEvent->sentenceTime; event.sentenceBeginTime = srEvent->sentenceBeginTime; event.sentenceConfidence = srEvent->sentenceConfidence; event.wakeWordAccepted = srEvent->wakeWordAccepted; event.wakeWordKnown = srEvent->wakeWordKnown; memcpy(event.wakeWordUserId, srEvent->wakeWordUserId, NLS_EVENT_ID_SIZE); event.wakeWordGender = srEvent->wakeWordGender; memcpy(event.binaryData, srEvent->binaryData, NLS_EVENT_BINARY_SIZE); event.binaryDataSize = srEvent->binaryDataSize; event.stashResultSentenceId = srEvent->stashResultSentenceId; event.stashResultBeginTime = srEvent->stashResultBeginTime; memcpy(event.stashResultText, srEvent->stashResultText, NLS_EVENT_TEXT_SIZE); event.stashResultCurrentTime = srEvent->stashResultBeginTime; event.isValid = false; CleanNlsEvent(srEvent); ReleaseMutex(event.eventMtx); return 0; } // 设置回调 NLSAPI(int) SROnRecognitionStarted(AlibabaNls::SpeechRecognizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnRecognitionStarted(onRecognitionStarted, (void*)in_param); return 0; } NLSAPI(int) SROnRecognitionResultChanged(AlibabaNls::SpeechRecognizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnRecognitionResultChanged(onRecognitionResultChanged, (void*)in_param); return 0; } NLSAPI(int) SROnRecognitionCompleted(AlibabaNls::SpeechRecognizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnRecognitionCompleted(onRecognitionCompleted, (void*)in_param); return 0; } NLSAPI(int) SROnTaskFailed(AlibabaNls::SpeechRecognizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnTaskFailed(onRecognitionTaskFailed, (void*)in_param); return 0; } NLSAPI(int) SROnChannelClosed(AlibabaNls::SpeechRecognizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnChannelClosed(onRecognitionClosed, (void*)in_param); return 0; } // 设置参数 NLSAPI(int) SRsetUrl(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setUrl(value); } NLSAPI(int) SRsetAppKey(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setAppKey(value); } NLSAPI(int) SRsetToken(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setToken(value); } NLSAPI(int) SRsetFormat(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setFormat(value); } NLSAPI(int) SRsetSampleRate(AlibabaNls::SpeechRecognizerRequest* request, int value) { return request->setSampleRate(value); } NLSAPI(int) SRsetIntermediateResult(AlibabaNls::SpeechRecognizerRequest* request, bool value) { return request->setIntermediateResult(value); } NLSAPI(int) SRsetPunctuationPrediction(AlibabaNls::SpeechRecognizerRequest* request, bool value) { return request->setPunctuationPrediction(value); } NLSAPI(int) SRsetInverseTextNormalization(AlibabaNls::SpeechRecognizerRequest* request, bool value) { return request->setInverseTextNormalization(value); } NLSAPI(int) SRsetEnableVoiceDetection(AlibabaNls::SpeechRecognizerRequest* request, bool value) { return request->setEnableVoiceDetection(value); } NLSAPI(int) SRsetMaxStartSilence(AlibabaNls::SpeechRecognizerRequest* request, int value) { return request->setMaxStartSilence(value); } NLSAPI(int) SRsetMaxEndSilence(AlibabaNls::SpeechRecognizerRequest* request, int value) { return request->setMaxEndSilence(value); } NLSAPI(int) SRsetCustomizationId(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setCustomizationId(value); } NLSAPI(int) SRsetVocabularyId(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setVocabularyId(value); } NLSAPI(int) SRsetTimeout(AlibabaNls::SpeechRecognizerRequest* request, int value) { return request->setTimeout(value); } NLSAPI(int) SRsetOutputFormat(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setOutputFormat(value); } NLSAPI(const char*) SRGetOutputFormat(AlibabaNls::SpeechRecognizerRequest* request) { const char* format = request->getOutputFormat(); return format; } NLSAPI(int) SRsetPayloadParam(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setPayloadParam(value); } NLSAPI(int) SRsetContextParam(AlibabaNls::SpeechRecognizerRequest* request, const char* value) { return request->setContextParam(value); } NLSAPI(int) SRappendHttpHeaderParam(AlibabaNls::SpeechRecognizerRequest* request, const char* key, const char* value) { return request->AppendHttpHeaderParam(key, value); } #endif // _NLSCPPSDK_RECOGNIZER_EXTERN_H_