Add C API for Kokoro TTS models (#1717)
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user