Add Java and Koltin API for Kokoro TTS 1.0 (#1798)
This commit is contained in:
@@ -5,14 +5,18 @@ public class OfflineTtsKokoroModelConfig {
|
||||
private final String model;
|
||||
private final String voices;
|
||||
private final String tokens;
|
||||
private final String lexicon;
|
||||
private final String dataDir;
|
||||
private final String dictDir;
|
||||
private final float lengthScale;
|
||||
|
||||
private OfflineTtsKokoroModelConfig(Builder builder) {
|
||||
this.model = builder.model;
|
||||
this.voices = builder.voices;
|
||||
this.tokens = builder.tokens;
|
||||
this.lexicon = builder.lexicon;
|
||||
this.dataDir = builder.dataDir;
|
||||
this.dictDir = builder.dictDir;
|
||||
this.lengthScale = builder.lengthScale;
|
||||
}
|
||||
|
||||
@@ -45,7 +49,9 @@ public class OfflineTtsKokoroModelConfig {
|
||||
private String model = "";
|
||||
private String voices = "";
|
||||
private String tokens = "";
|
||||
private String lexicon = "";
|
||||
private String dataDir = "";
|
||||
private String dictDir = "";
|
||||
private float lengthScale = 1.0f;
|
||||
|
||||
public OfflineTtsKokoroModelConfig build() {
|
||||
@@ -67,11 +73,21 @@ public class OfflineTtsKokoroModelConfig {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setLexicon(String lexicon) {
|
||||
this.lexicon = lexicon;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setDataDir(String dataDir) {
|
||||
this.dataDir = dataDir;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setDictDir(String dictDir) {
|
||||
this.dictDir = dictDir;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setLengthScale(float lengthScale) {
|
||||
this.lengthScale = lengthScale;
|
||||
return this;
|
||||
|
||||
@@ -137,12 +137,24 @@ static OfflineTtsConfig GetOfflineTtsConfig(JNIEnv *env, jobject config) {
|
||||
ans.model.kokoro.tokens = p;
|
||||
env->ReleaseStringUTFChars(s, p);
|
||||
|
||||
fid = env->GetFieldID(kokoro_cls, "lexicon", "Ljava/lang/String;");
|
||||
s = (jstring)env->GetObjectField(kokoro, fid);
|
||||
p = env->GetStringUTFChars(s, nullptr);
|
||||
ans.model.kokoro.lexicon = p;
|
||||
env->ReleaseStringUTFChars(s, p);
|
||||
|
||||
fid = env->GetFieldID(kokoro_cls, "dataDir", "Ljava/lang/String;");
|
||||
s = (jstring)env->GetObjectField(kokoro, fid);
|
||||
p = env->GetStringUTFChars(s, nullptr);
|
||||
ans.model.kokoro.data_dir = p;
|
||||
env->ReleaseStringUTFChars(s, p);
|
||||
|
||||
fid = env->GetFieldID(kokoro_cls, "dictDir", "Ljava/lang/String;");
|
||||
s = (jstring)env->GetObjectField(kokoro, fid);
|
||||
p = env->GetStringUTFChars(s, nullptr);
|
||||
ans.model.kokoro.dict_dir = p;
|
||||
env->ReleaseStringUTFChars(s, p);
|
||||
|
||||
fid = env->GetFieldID(kokoro_cls, "lengthScale", "F");
|
||||
ans.model.kokoro.length_scale = env->GetFloatField(kokoro, fid);
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ data class OfflineTtsKokoroModelConfig(
|
||||
var voices: String = "",
|
||||
var tokens: String = "",
|
||||
var dataDir: String = "",
|
||||
var lexicon: String = "",
|
||||
var dictDir: String = "",
|
||||
var lengthScale: Float = 1.0f,
|
||||
)
|
||||
|
||||
@@ -254,6 +256,8 @@ fun getOfflineTtsConfig(
|
||||
voices = "$modelDir/$voices",
|
||||
tokens = "$modelDir/tokens.txt",
|
||||
dataDir = dataDir,
|
||||
lexicon = if ("," in lexicon) lexicon else "$modelDir/$lexicon",
|
||||
dictDir = dictDir,
|
||||
)
|
||||
} else {
|
||||
OfflineTtsKokoroModelConfig()
|
||||
|
||||
Reference in New Issue
Block a user