Add Koltin and Java API for Kokoro TTS models (#1728)

This commit is contained in:
Fangjun Kuang
2025-01-17 17:36:13 +08:00
committed by GitHub
parent 3a1de0bfc1
commit 99cef4198b
18 changed files with 548 additions and 39 deletions

View File

@@ -0,0 +1,80 @@
// Copyright 2025 Xiaomi Corporation
package com.k2fsa.sherpa.onnx;
public class OfflineTtsKokoroModelConfig {
private final String model;
private final String voices;
private final String tokens;
private final String dataDir;
private final float lengthScale;
private OfflineTtsKokoroModelConfig(Builder builder) {
this.model = builder.model;
this.voices = builder.voices;
this.tokens = builder.tokens;
this.dataDir = builder.dataDir;
this.lengthScale = builder.lengthScale;
}
public static Builder builder() {
return new Builder();
}
public String getModel() {
return model;
}
public String getVoices() {
return voices;
}
public String getTokens() {
return tokens;
}
public String getDataDir() {
return dataDir;
}
public float getLengthScale() {
return lengthScale;
}
public static class Builder {
private String model = "";
private String voices = "";
private String tokens = "";
private String dataDir = "";
private float lengthScale = 1.0f;
public OfflineTtsKokoroModelConfig build() {
return new OfflineTtsKokoroModelConfig(this);
}
public Builder setModel(String model) {
this.model = model;
return this;
}
public Builder setVoices(String voices) {
this.voices = voices;
return this;
}
public Builder setTokens(String tokens) {
this.tokens = tokens;
return this;
}
public Builder setDataDir(String dataDir) {
this.dataDir = dataDir;
return this;
}
public Builder setLengthScale(float lengthScale) {
this.lengthScale = lengthScale;
return this;
}
}
}

View File

@@ -5,6 +5,7 @@ package com.k2fsa.sherpa.onnx;
public class OfflineTtsModelConfig {
private final OfflineTtsVitsModelConfig vits;
private final OfflineTtsMatchaModelConfig matcha;
private final OfflineTtsKokoroModelConfig kokoro;
private final int numThreads;
private final boolean debug;
private final String provider;
@@ -12,6 +13,7 @@ public class OfflineTtsModelConfig {
private OfflineTtsModelConfig(Builder builder) {
this.vits = builder.vits;
this.matcha = builder.matcha;
this.kokoro = builder.kokoro;
this.numThreads = builder.numThreads;
this.debug = builder.debug;
this.provider = builder.provider;
@@ -29,9 +31,14 @@ public class OfflineTtsModelConfig {
return matcha;
}
public OfflineTtsKokoroModelConfig getKokoro() {
return kokoro;
}
public static class Builder {
private OfflineTtsVitsModelConfig vits = OfflineTtsVitsModelConfig.builder().build();
private OfflineTtsMatchaModelConfig matcha = OfflineTtsMatchaModelConfig.builder().build();
private OfflineTtsKokoroModelConfig kokoro = OfflineTtsKokoroModelConfig.builder().build();
private int numThreads = 1;
private boolean debug = true;
private String provider = "cpu";
@@ -50,6 +57,11 @@ public class OfflineTtsModelConfig {
return this;
}
public Builder setKokoro(OfflineTtsKokoroModelConfig kokoro) {
this.kokoro = kokoro;
return this;
}
public Builder setNumThreads(int numThreads) {
this.numThreads = numThreads;
return this;