Add C API for Kokoro TTS models (#1717)

This commit is contained in:
Fangjun Kuang
2025-01-16 15:07:26 +08:00
committed by GitHub
parent ffc6b480a0
commit af671e2b63
11 changed files with 255 additions and 0 deletions

View File

@@ -1092,6 +1092,18 @@ static sherpa_onnx::OfflineTtsConfig GetOfflineTtsConfig(
tts_config.model.matcha.dict_dir =
SHERPA_ONNX_OR(config->model.matcha.dict_dir, "");
// kokoro
tts_config.model.kokoro.model =
SHERPA_ONNX_OR(config->model.kokoro.model, "");
tts_config.model.kokoro.voices =
SHERPA_ONNX_OR(config->model.kokoro.voices, "");
tts_config.model.kokoro.tokens =
SHERPA_ONNX_OR(config->model.kokoro.tokens, "");
tts_config.model.kokoro.data_dir =
SHERPA_ONNX_OR(config->model.kokoro.data_dir, "");
tts_config.model.kokoro.length_scale =
SHERPA_ONNX_OR(config->model.kokoro.length_scale, 1.0);
tts_config.model.num_threads = SHERPA_ONNX_OR(config->model.num_threads, 1);
tts_config.model.debug = config->model.debug;
tts_config.model.provider = SHERPA_ONNX_OR(config->model.provider, "cpu");

View File

@@ -910,12 +910,22 @@ SHERPA_ONNX_API typedef struct SherpaOnnxOfflineTtsMatchaModelConfig {
const char *dict_dir;
} SherpaOnnxOfflineTtsMatchaModelConfig;
SHERPA_ONNX_API typedef struct SherpaOnnxOfflineTtsKokoroModelConfig {
const char *model;
const char *voices;
const char *tokens;
const char *data_dir;
float length_scale; // < 1, faster in speech speed; > 1, slower in speed
} SherpaOnnxOfflineTtsKokoroModelConfig;
SHERPA_ONNX_API typedef struct SherpaOnnxOfflineTtsModelConfig {
SherpaOnnxOfflineTtsVitsModelConfig vits;
int32_t num_threads;
int32_t debug;
const char *provider;
SherpaOnnxOfflineTtsMatchaModelConfig matcha;
SherpaOnnxOfflineTtsKokoroModelConfig kokoro;
} SherpaOnnxOfflineTtsModelConfig;
SHERPA_ONNX_API typedef struct SherpaOnnxOfflineTtsConfig {

View File

@@ -338,6 +338,12 @@ OfflineTts OfflineTts::Create(const OfflineTtsConfig &config) {
c.model.matcha.length_scale = config.model.matcha.length_scale;
c.model.matcha.dict_dir = config.model.matcha.dict_dir.c_str();
c.model.kokoro.model = config.model.kokoro.model.c_str();
c.model.kokoro.voices = config.model.kokoro.voices.c_str();
c.model.kokoro.tokens = config.model.kokoro.tokens.c_str();
c.model.kokoro.data_dir = config.model.kokoro.data_dir.c_str();
c.model.kokoro.length_scale = config.model.kokoro.length_scale;
c.model.num_threads = config.model.num_threads;
c.model.debug = config.model.debug;
c.model.provider = config.model.provider.c_str();

View File

@@ -338,9 +338,19 @@ struct OfflineTtsMatchaModelConfig {
float length_scale = 1.0; // < 1, faster in speed; > 1, slower in speed
};
struct OfflineTtsKokoroModelConfig {
std::string model;
std::string voices;
std::string tokens;
std::string data_dir;
float length_scale = 1.0; // < 1, faster in speed; > 1, slower in speed
};
struct OfflineTtsModelConfig {
OfflineTtsVitsModelConfig vits;
OfflineTtsMatchaModelConfig matcha;
OfflineTtsKokoroModelConfig kokoro;
int32_t num_threads = 1;
bool debug = false;
std::string provider = "cpu";