Add JavaScript API (node-addon) for Kokoro TTS models (#1725)

This commit is contained in:
Fangjun Kuang
2025-01-16 18:33:47 +08:00
committed by GitHub
parent 46f2e32e8a
commit e8d499d218
4 changed files with 101 additions and 0 deletions

View File

@@ -53,6 +53,25 @@ static SherpaOnnxOfflineTtsMatchaModelConfig GetOfflineTtsMatchaModelConfig(
return c;
}
static SherpaOnnxOfflineTtsKokoroModelConfig GetOfflineTtsKokoroModelConfig(
Napi::Object obj) {
SherpaOnnxOfflineTtsKokoroModelConfig c;
memset(&c, 0, sizeof(c));
if (!obj.Has("kokoro") || !obj.Get("kokoro").IsObject()) {
return c;
}
Napi::Object o = obj.Get("kokoro").As<Napi::Object>();
SHERPA_ONNX_ASSIGN_ATTR_STR(model, model);
SHERPA_ONNX_ASSIGN_ATTR_STR(voices, voices);
SHERPA_ONNX_ASSIGN_ATTR_STR(tokens, tokens);
SHERPA_ONNX_ASSIGN_ATTR_STR(data_dir, dataDir);
SHERPA_ONNX_ASSIGN_ATTR_FLOAT(length_scale, lengthScale);
return c;
}
static SherpaOnnxOfflineTtsModelConfig GetOfflineTtsModelConfig(
Napi::Object obj) {
SherpaOnnxOfflineTtsModelConfig c;
@@ -66,6 +85,7 @@ static SherpaOnnxOfflineTtsModelConfig GetOfflineTtsModelConfig(
c.vits = GetOfflineTtsVitsModelConfig(o);
c.matcha = GetOfflineTtsMatchaModelConfig(o);
c.kokoro = GetOfflineTtsKokoroModelConfig(o);
SHERPA_ONNX_ASSIGN_ATTR_INT32(num_threads, numThreads);
@@ -180,6 +200,22 @@ static Napi::External<SherpaOnnxOfflineTts> CreateOfflineTtsWrapper(
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;
}