Refactor node-addon C++ code. (#1768)

Use macros to delete pointers.
This commit is contained in:
Fangjun Kuang
2025-01-25 22:23:12 +08:00
committed by GitHub
parent 030aaa7bb9
commit 73c3695287
9 changed files with 64 additions and 243 deletions

View File

@@ -82,21 +82,10 @@ static Napi::External<SherpaOnnxAudioTagging> CreateAudioTaggingWrapper(
const SherpaOnnxAudioTagging *at = SherpaOnnxCreateAudioTagging(&c); const SherpaOnnxAudioTagging *at = SherpaOnnxCreateAudioTagging(&c);
if (c.model.zipformer.model) { SHERPA_ONNX_DELETE_C_STR(c.model.zipformer.model);
delete[] c.model.zipformer.model; SHERPA_ONNX_DELETE_C_STR(c.model.ced);
} SHERPA_ONNX_DELETE_C_STR(c.model.provider);
SHERPA_ONNX_DELETE_C_STR(c.labels);
if (c.model.ced) {
delete[] c.model.ced;
}
if (c.model.provider) {
delete[] c.model.provider;
}
if (c.labels) {
delete[] c.labels;
}
if (!at) { if (!at) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -47,50 +47,20 @@ static Napi::External<SherpaOnnxKeywordSpotter> CreateKeywordSpotterWrapper(
SHERPA_ONNX_ASSIGN_ATTR_INT32(keywords_buf_size, keywordsBufSize); SHERPA_ONNX_ASSIGN_ATTR_INT32(keywords_buf_size, keywordsBufSize);
const SherpaOnnxKeywordSpotter *kws = SherpaOnnxCreateKeywordSpotter(&c); const SherpaOnnxKeywordSpotter *kws = SherpaOnnxCreateKeywordSpotter(&c);
SHERPA_ONNX_DELETE_C_STR(c.model_config.transducer.encoder);
SHERPA_ONNX_DELETE_C_STR(c.model_config.transducer.decoder);
SHERPA_ONNX_DELETE_C_STR(c.model_config.transducer.joiner);
if (c.model_config.transducer.encoder) { SHERPA_ONNX_DELETE_C_STR(c.model_config.paraformer.encoder);
delete[] c.model_config.transducer.encoder; SHERPA_ONNX_DELETE_C_STR(c.model_config.paraformer.decoder);
}
if (c.model_config.transducer.decoder) { SHERPA_ONNX_DELETE_C_STR(c.model_config.zipformer2_ctc.model);
delete[] c.model_config.transducer.decoder;
}
if (c.model_config.transducer.joiner) { SHERPA_ONNX_DELETE_C_STR(c.model_config.tokens);
delete[] c.model_config.transducer.joiner; SHERPA_ONNX_DELETE_C_STR(c.model_config.provider);
} SHERPA_ONNX_DELETE_C_STR(c.model_config.model_type);
SHERPA_ONNX_DELETE_C_STR(c.keywords_file);
if (c.model_config.paraformer.encoder) { SHERPA_ONNX_DELETE_C_STR(c.keywords_buf);
delete[] c.model_config.paraformer.encoder;
}
if (c.model_config.paraformer.decoder) {
delete[] c.model_config.paraformer.decoder;
}
if (c.model_config.zipformer2_ctc.model) {
delete[] c.model_config.zipformer2_ctc.model;
}
if (c.model_config.tokens) {
delete[] c.model_config.tokens;
}
if (c.model_config.provider) {
delete[] c.model_config.provider;
}
if (c.model_config.model_type) {
delete[] c.model_config.model_type;
}
if (c.keywords_file) {
delete[] c.keywords_file;
}
if (c.keywords_buf) {
delete[] c.keywords_buf;
}
if (!kws) { if (!kws) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -154,21 +154,10 @@ CreateOfflineSpeakerDiarizationWrapper(const Napi::CallbackInfo &info) {
SherpaOnnxCreateOfflineSpeakerDiarization(&c); SherpaOnnxCreateOfflineSpeakerDiarization(&c);
#endif #endif
if (c.segmentation.pyannote.model) { SHERPA_ONNX_DELETE_C_STR(c.segmentation.pyannote.model);
delete[] c.segmentation.pyannote.model; SHERPA_ONNX_DELETE_C_STR(c.segmentation.provider);
} SHERPA_ONNX_DELETE_C_STR(c.embedding.model);
SHERPA_ONNX_DELETE_C_STR(c.embedding.provider);
if (c.segmentation.provider) {
delete[] c.segmentation.provider;
}
if (c.embedding.model) {
delete[] c.embedding.model;
}
if (c.embedding.provider) {
delete[] c.embedding.provider;
}
if (!sd) { if (!sd) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -155,78 +155,28 @@ static Napi::External<SherpaOnnxOfflineTts> CreateOfflineTtsWrapper(
#else #else
const SherpaOnnxOfflineTts *tts = SherpaOnnxCreateOfflineTts(&c); const SherpaOnnxOfflineTts *tts = SherpaOnnxCreateOfflineTts(&c);
#endif #endif
SHERPA_ONNX_DELETE_C_STR(c.model.vits.model);
SHERPA_ONNX_DELETE_C_STR(c.model.vits.lexicon);
SHERPA_ONNX_DELETE_C_STR(c.model.vits.tokens);
SHERPA_ONNX_DELETE_C_STR(c.model.vits.data_dir);
SHERPA_ONNX_DELETE_C_STR(c.model.vits.dict_dir);
if (c.model.vits.model) { SHERPA_ONNX_DELETE_C_STR(c.model.matcha.acoustic_model);
delete[] c.model.vits.model; SHERPA_ONNX_DELETE_C_STR(c.model.matcha.vocoder);
} SHERPA_ONNX_DELETE_C_STR(c.model.matcha.lexicon);
SHERPA_ONNX_DELETE_C_STR(c.model.matcha.tokens);
SHERPA_ONNX_DELETE_C_STR(c.model.matcha.data_dir);
SHERPA_ONNX_DELETE_C_STR(c.model.matcha.dict_dir);
if (c.model.vits.lexicon) { SHERPA_ONNX_DELETE_C_STR(c.model.kokoro.model);
delete[] c.model.vits.lexicon; SHERPA_ONNX_DELETE_C_STR(c.model.kokoro.voices);
} SHERPA_ONNX_DELETE_C_STR(c.model.kokoro.tokens);
SHERPA_ONNX_DELETE_C_STR(c.model.kokoro.data_dir);
if (c.model.vits.tokens) { SHERPA_ONNX_DELETE_C_STR(c.model.provider);
delete[] c.model.vits.tokens;
}
if (c.model.vits.data_dir) { SHERPA_ONNX_DELETE_C_STR(c.rule_fsts);
delete[] c.model.vits.data_dir; SHERPA_ONNX_DELETE_C_STR(c.rule_fars);
}
if (c.model.vits.dict_dir) {
delete[] c.model.vits.dict_dir;
}
if (c.model.matcha.acoustic_model) {
delete[] c.model.matcha.acoustic_model;
}
if (c.model.matcha.vocoder) {
delete[] c.model.matcha.vocoder;
}
if (c.model.matcha.lexicon) {
delete[] c.model.matcha.lexicon;
}
if (c.model.matcha.tokens) {
delete[] c.model.matcha.tokens;
}
if (c.model.matcha.data_dir) {
delete[] c.model.matcha.data_dir;
}
if (c.model.matcha.dict_dir) {
delete[] c.model.matcha.dict_dir;
}
if (c.model.kokoro.model) {
delete[] c.model.kokoro.model;
}
if (c.model.kokoro.voices) {
delete[] c.model.kokoro.voices;
}
if (c.model.kokoro.tokens) {
delete[] c.model.kokoro.tokens;
}
if (c.model.kokoro.data_dir) {
delete[] c.model.kokoro.data_dir;
}
if (c.model.provider) {
delete[] c.model.provider;
}
if (c.rule_fsts) {
delete[] c.rule_fsts;
}
if (c.rule_fars) {
delete[] c.rule_fars;
}
if (!tts) { if (!tts) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -63,13 +63,8 @@ CreateOfflinePunctuationWrapper(const Napi::CallbackInfo &info) {
const SherpaOnnxOfflinePunctuation *punct = const SherpaOnnxOfflinePunctuation *punct =
SherpaOnnxCreateOfflinePunctuation(&c); SherpaOnnxCreateOfflinePunctuation(&c);
if (c.model.ct_transformer) { SHERPA_ONNX_DELETE_C_STR(c.model.ct_transformer);
delete[] c.model.ct_transformer; SHERPA_ONNX_DELETE_C_STR(c.model.provider);
}
if (c.model.provider) {
delete[] c.model.provider;
}
if (!punct) { if (!punct) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -70,14 +70,8 @@ CreateSpeakerEmbeddingExtractorWrapper(const Napi::CallbackInfo &info) {
const SherpaOnnxSpeakerEmbeddingExtractor *extractor = const SherpaOnnxSpeakerEmbeddingExtractor *extractor =
SherpaOnnxCreateSpeakerEmbeddingExtractor(&c); SherpaOnnxCreateSpeakerEmbeddingExtractor(&c);
#endif #endif
SHERPA_ONNX_DELETE_C_STR(c.model);
if (c.model) { SHERPA_ONNX_DELETE_C_STR(c.provider);
delete[] c.model;
}
if (c.provider) {
delete[] c.provider;
}
if (!extractor) { if (!extractor) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -66,17 +66,9 @@ CreateSpokenLanguageIdentificationWrapper(const Napi::CallbackInfo &info) {
const SherpaOnnxSpokenLanguageIdentification *slid = const SherpaOnnxSpokenLanguageIdentification *slid =
SherpaOnnxCreateSpokenLanguageIdentification(&c); SherpaOnnxCreateSpokenLanguageIdentification(&c);
if (c.whisper.encoder) { SHERPA_ONNX_DELETE_C_STR(c.whisper.encoder);
delete[] c.whisper.encoder; SHERPA_ONNX_DELETE_C_STR(c.whisper.decoder);
} SHERPA_ONNX_DELETE_C_STR(c.provider);
if (c.whisper.decoder) {
delete[] c.whisper.decoder;
}
if (c.provider) {
delete[] c.provider;
}
if (!slid) { if (!slid) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -222,78 +222,26 @@ static Napi::External<SherpaOnnxOnlineRecognizer> CreateOnlineRecognizerWrapper(
const SherpaOnnxOnlineRecognizer *recognizer = const SherpaOnnxOnlineRecognizer *recognizer =
SherpaOnnxCreateOnlineRecognizer(&c); SherpaOnnxCreateOnlineRecognizer(&c);
#endif #endif
SHERPA_ONNX_DELETE_C_STR(c.model_config.transducer.encoder);
SHERPA_ONNX_DELETE_C_STR(c.model_config.transducer.decoder);
SHERPA_ONNX_DELETE_C_STR(c.model_config.transducer.joiner);
if (c.model_config.transducer.encoder) { SHERPA_ONNX_DELETE_C_STR(c.model_config.paraformer.encoder);
delete[] c.model_config.transducer.encoder; SHERPA_ONNX_DELETE_C_STR(c.model_config.paraformer.decoder);
}
if (c.model_config.transducer.decoder) { SHERPA_ONNX_DELETE_C_STR(c.model_config.zipformer2_ctc.model);
delete[] c.model_config.transducer.decoder; SHERPA_ONNX_DELETE_C_STR(c.model_config.tokens);
} SHERPA_ONNX_DELETE_C_STR(c.model_config.provider);
SHERPA_ONNX_DELETE_C_STR(c.model_config.model_type);
if (c.model_config.transducer.joiner) { SHERPA_ONNX_DELETE_C_STR(c.model_config.modeling_unit);
delete[] c.model_config.transducer.joiner; SHERPA_ONNX_DELETE_C_STR(c.model_config.bpe_vocab);
} SHERPA_ONNX_DELETE_C_STR(c.model_config.tokens_buf);
SHERPA_ONNX_DELETE_C_STR(c.decoding_method);
if (c.model_config.paraformer.encoder) { SHERPA_ONNX_DELETE_C_STR(c.hotwords_file);
delete[] c.model_config.paraformer.encoder; SHERPA_ONNX_DELETE_C_STR(c.rule_fsts);
} SHERPA_ONNX_DELETE_C_STR(c.rule_fars);
SHERPA_ONNX_DELETE_C_STR(c.hotwords_buf);
if (c.model_config.paraformer.decoder) { SHERPA_ONNX_DELETE_C_STR(c.ctc_fst_decoder_config.graph);
delete[] c.model_config.paraformer.decoder;
}
if (c.model_config.zipformer2_ctc.model) {
delete[] c.model_config.zipformer2_ctc.model;
}
if (c.model_config.tokens) {
delete[] c.model_config.tokens;
}
if (c.model_config.provider) {
delete[] c.model_config.provider;
}
if (c.model_config.model_type) {
delete[] c.model_config.model_type;
}
if (c.model_config.modeling_unit) {
delete[] c.model_config.modeling_unit;
}
if (c.model_config.bpe_vocab) {
delete[] c.model_config.bpe_vocab;
}
if (c.model_config.tokens_buf) {
delete[] c.model_config.tokens_buf;
}
if (c.decoding_method) {
delete[] c.decoding_method;
}
if (c.hotwords_file) {
delete[] c.hotwords_file;
}
if (c.rule_fsts) {
delete[] c.rule_fsts;
}
if (c.rule_fars) {
delete[] c.rule_fars;
}
if (c.hotwords_buf) {
delete[] c.hotwords_buf;
}
if (c.ctc_fst_decoder_config.graph) {
delete[] c.ctc_fst_decoder_config.graph;
}
if (!recognizer) { if (!recognizer) {
Napi::TypeError::New(env, "Please check your config!") Napi::TypeError::New(env, "Please check your config!")

View File

@@ -367,14 +367,8 @@ CreateVoiceActivityDetectorWrapper(const Napi::CallbackInfo &info) {
SherpaOnnxVoiceActivityDetector *vad = SherpaOnnxVoiceActivityDetector *vad =
SherpaOnnxCreateVoiceActivityDetector(&c, buffer_size_in_seconds); SherpaOnnxCreateVoiceActivityDetector(&c, buffer_size_in_seconds);
#endif #endif
SHERPA_ONNX_DELETE_C_STR(c.silero_vad.model);
if (c.silero_vad.model) { SHERPA_ONNX_DELETE_C_STR(c.provider);
delete[] c.silero_vad.model;
}
if (c.provider) {
delete[] c.provider;
}
return Napi::External<SherpaOnnxVoiceActivityDetector>::New( return Napi::External<SherpaOnnxVoiceActivityDetector>::New(
env, vad, [](Napi::Env env, SherpaOnnxVoiceActivityDetector *p) { env, vad, [](Napi::Env env, SherpaOnnxVoiceActivityDetector *p) {