Add C/CXX/JavaScript API for NeMo Canary models (#2357)
This PR introduces support for NeMo Canary models across C, C++, and JavaScript APIs by adding new Canary configuration structures, updating bindings, extending examples, and enhancing CI workflows. - Add OfflineCanaryModelConfig to all language bindings (C, C++, JS, ETS). - Implement SetConfig methods and NAPI wrappers for updating recognizer config at runtime. - Update examples and CI scripts to demonstrate and test NeMo Canary model usage.
This commit is contained in:
@@ -193,7 +193,7 @@ void OfflineStream::AcceptWaveform(int32_t sample_rate, const float *samples,
|
||||
SherpaOnnxAcceptWaveformOffline(p_, sample_rate, samples, n);
|
||||
}
|
||||
|
||||
OfflineRecognizer OfflineRecognizer::Create(
|
||||
static SherpaOnnxOfflineRecognizerConfig Convert(
|
||||
const OfflineRecognizerConfig &config) {
|
||||
struct SherpaOnnxOfflineRecognizerConfig c;
|
||||
memset(&c, 0, sizeof(c));
|
||||
@@ -256,6 +256,12 @@ OfflineRecognizer OfflineRecognizer::Create(
|
||||
c.model_config.zipformer_ctc.model =
|
||||
config.model_config.zipformer_ctc.model.c_str();
|
||||
|
||||
c.model_config.canary.encoder = config.model_config.canary.encoder.c_str();
|
||||
c.model_config.canary.decoder = config.model_config.canary.decoder.c_str();
|
||||
c.model_config.canary.src_lang = config.model_config.canary.src_lang.c_str();
|
||||
c.model_config.canary.tgt_lang = config.model_config.canary.tgt_lang.c_str();
|
||||
c.model_config.canary.use_pnc = config.model_config.canary.use_pnc;
|
||||
|
||||
c.lm_config.model = config.lm_config.model.c_str();
|
||||
c.lm_config.scale = config.lm_config.scale;
|
||||
|
||||
@@ -273,10 +279,22 @@ OfflineRecognizer OfflineRecognizer::Create(
|
||||
c.hr.lexicon = config.hr.lexicon.c_str();
|
||||
c.hr.rule_fsts = config.hr.rule_fsts.c_str();
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
OfflineRecognizer OfflineRecognizer::Create(
|
||||
const OfflineRecognizerConfig &config) {
|
||||
auto c = Convert(config);
|
||||
|
||||
auto p = SherpaOnnxCreateOfflineRecognizer(&c);
|
||||
return OfflineRecognizer(p);
|
||||
}
|
||||
|
||||
void OfflineRecognizer::SetConfig(const OfflineRecognizerConfig &config) const {
|
||||
auto c = Convert(config);
|
||||
SherpaOnnxOfflineRecognizerSetConfig(p_, &c);
|
||||
}
|
||||
|
||||
OfflineRecognizer::OfflineRecognizer(const SherpaOnnxOfflineRecognizer *p)
|
||||
: MoveOnly<OfflineRecognizer, SherpaOnnxOfflineRecognizer>(p) {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user