nlsCsharpSdk/nlsCsharpSdkExtern/speechSynthesizerExtern.h (222 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_SYNTHESIZER_EXTERN_H_ #define _NLSCPPSDK_SYNTHESIZER_EXTERN_H_ NLSAPI(int) SYstart(AlibabaNls::SpeechSynthesizerRequest* request) { return request->start(); } NLSAPI(int) SYstop(AlibabaNls::SpeechSynthesizerRequest* request) { return request->stop(); } NLSAPI(int) SYcancel(AlibabaNls::SpeechSynthesizerRequest* request) { return request->cancel(); } // 对外回调 static void onSynthesisTaskFailed(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, syEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onSynthesisClosed(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, syEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onSynthesisCompleted(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, syEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onSynthesisMetaInfo(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, syEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } static void onSynthesisDataReceived(AlibabaNls::NlsEvent* cbEvent, void* cbParam) { ConvertNlsEvent(cbEvent, syEvent); if (cbParam) { UserCallback* in_param = (UserCallback*)cbParam; if (in_param->delegate_callback) { in_param->delegate_callback(in_param->user_handler); } } return; } NLSAPI(int) SYGetNlsEvent(NLS_EVENT_STRUCT& event) { WaitForSingleObject(event.eventMtx, INFINITE); event.statusCode = syEvent->statusCode; memcpy(event.msg, syEvent->msg, NLS_EVENT_RESPONSE_SIZE); event.msgType = syEvent->msgType; memcpy(event.taskId, syEvent->taskId, NLS_EVENT_ID_SIZE); memcpy(event.result, syEvent->result, NLS_EVENT_RESULT_SIZE); memcpy(event.displayText, syEvent->displayText, NLS_EVENT_TEXT_SIZE); memcpy(event.spokenText, syEvent->spokenText, NLS_EVENT_TEXT_SIZE); event.sentenceTimeOutStatus = syEvent->sentenceTimeOutStatus; event.sentenceIndex = syEvent->sentenceIndex; event.sentenceTime = syEvent->sentenceTime; event.sentenceBeginTime = syEvent->sentenceBeginTime; event.sentenceConfidence = syEvent->sentenceConfidence; event.wakeWordAccepted = syEvent->wakeWordAccepted; event.wakeWordKnown = syEvent->wakeWordKnown; memcpy(event.wakeWordUserId, syEvent->wakeWordUserId, NLS_EVENT_ID_SIZE); event.wakeWordGender = syEvent->wakeWordGender; memcpy(event.binaryData, syEvent->binaryData, NLS_EVENT_BINARY_SIZE); event.binaryDataSize = syEvent->binaryDataSize; syEvent->binaryDataSize = 0; event.stashResultSentenceId = syEvent->stashResultSentenceId; event.stashResultBeginTime = syEvent->stashResultBeginTime; memcpy(event.stashResultText, syEvent->stashResultText, NLS_EVENT_TEXT_SIZE); event.stashResultCurrentTime = syEvent->stashResultBeginTime; event.isValid = false; CleanNlsEvent(syEvent); ReleaseMutex(event.eventMtx); return event.binaryDataSize; } // 设置回调 NLSAPI(int) SYOnSynthesisCompleted(AlibabaNls::SpeechSynthesizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnSynthesisCompleted(onSynthesisCompleted, (void*)in_param); return 0; } NLSAPI(int) SYOnTaskFailed(AlibabaNls::SpeechSynthesizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnTaskFailed(onSynthesisTaskFailed, (void*)in_param); return 0; } NLSAPI(int) SYOnChannelClosed(AlibabaNls::SpeechSynthesizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnChannelClosed(onSynthesisClosed, (void*)in_param); return 0; } NLSAPI(int) SYOnBinaryDataReceived(AlibabaNls::SpeechSynthesizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnBinaryDataReceived(onSynthesisDataReceived, (void*)in_param); return 0; } NLSAPI(int) SYOnMetaInfo(AlibabaNls::SpeechSynthesizerRequest* request, NlsCallbackDelegate c, void* user) { UserCallback* in_param = new UserCallback; in_param->delegate_callback = c; in_param->user_handler = user; request->setOnMetaInfo(onSynthesisMetaInfo, (void*)in_param); return 0; } // 设置参数 NLSAPI(int) SYsetUrl(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setUrl(value); } NLSAPI(int) SYsetAppKey(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setAppKey(value); } NLSAPI(int) SYsetToken(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setToken(value); } NLSAPI(int) SYsetFormat(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setFormat(value); } NLSAPI(int) SYsetSampleRate(AlibabaNls::SpeechSynthesizerRequest* request, int value) { return request->setSampleRate(value); } NLSAPI(int) SYsetText(AlibabaNls::SpeechSynthesizerRequest* request, uint8_t* text, uint32_t textSize) { char* textChar = new char[textSize + 1]; memset(textChar, 0, textSize + 1); memcpy(textChar, text, textSize); int result = request->setText((const char*)textChar); delete[] textChar; return result; } NLSAPI(int) SYsetVoice(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setVoice(value); } NLSAPI(int) SYsetVolume(AlibabaNls::SpeechSynthesizerRequest* request, int value) { return request->setVolume(value); } NLSAPI(int) SYsetSpeechRate(AlibabaNls::SpeechSynthesizerRequest* request, int value) { return request->setSpeechRate(value); } NLSAPI(int) SYsetPitchRate(AlibabaNls::SpeechSynthesizerRequest* request, int value) { return request->setPitchRate(value); } NLSAPI(int) SYsetMethod(AlibabaNls::SpeechSynthesizerRequest* request, int value) { return request->setMethod(value); } NLSAPI(int) SYsetEnableSubtitle(AlibabaNls::SpeechSynthesizerRequest* request, bool value) { return request->setEnableSubtitle(value); } NLSAPI(int) SYsetPayloadParam(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setPayloadParam(value); } NLSAPI(int) SYsetTimeout(AlibabaNls::SpeechSynthesizerRequest* request, int value) { return request->setTimeout(value); } NLSAPI(int) SYsetOutputFormat(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setOutputFormat(value); } NLSAPI(const char*) SYGetOutputFormat(AlibabaNls::SpeechSynthesizerRequest* request) { const char* format = request->getOutputFormat(); return format; } NLSAPI(int) SYsetContextParam(AlibabaNls::SpeechSynthesizerRequest* request, const char* value) { return request->setContextParam(value); } NLSAPI(int) SYappendHttpHeaderParam(AlibabaNls::SpeechSynthesizerRequest* request, const char* key, const char* value) { return request->AppendHttpHeaderParam(key, value); } #endif // _NLSCPPSDK_SYNTHESIZER_EXTERN_H_