Add Java API for Matcha-TTS models. (#1673)

This commit is contained in:
Fangjun Kuang
2025-01-02 15:15:30 +08:00
committed by GitHub
parent f457baea42
commit a00d3b4821
11 changed files with 359 additions and 2 deletions

View File

@@ -0,0 +1,116 @@
// Copyright 2025 Xiaomi Corporation
package com.k2fsa.sherpa.onnx;
public class OfflineTtsMatchaModelConfig {
private final String acousticModel;
private final String vocoder;
private final String lexicon;
private final String tokens;
private final String dataDir;
private final String dictDir;
private final float noiseScale;
private final float lengthScale;
private OfflineTtsMatchaModelConfig(Builder builder) {
this.acousticModel = builder.acousticModel;
this.vocoder = builder.vocoder;
this.lexicon = builder.lexicon;
this.tokens = builder.tokens;
this.dataDir = builder.dataDir;
this.dictDir = builder.dictDir;
this.noiseScale = builder.noiseScale;
this.lengthScale = builder.lengthScale;
}
public static Builder builder() {
return new Builder();
}
public String getAcousticModel() {
return acousticModel;
}
public String getVocoder() {
return vocoder;
}
public String getLexicon() {
return lexicon;
}
public String getTokens() {
return tokens;
}
public String getDataDir() {
return dataDir;
}
public String getDictDir() {
return dictDir;
}
public float getLengthScale() {
return lengthScale;
}
public float getNoiseScale() {
return noiseScale;
}
public static class Builder {
private String acousticModel = "";
private String vocoder = "";
private String lexicon = "";
private String tokens = "";
private String dataDir = "";
private String dictDir = "";
private float noiseScale = 1.0f;
private float lengthScale = 1.0f;
public OfflineTtsMatchaModelConfig build() {
return new OfflineTtsMatchaModelConfig(this);
}
public Builder setAcousticModel(String acousticModel) {
this.acousticModel = acousticModel;
return this;
}
public Builder setVocoder(String vocoder) {
this.vocoder = vocoder;
return this;
}
public Builder setTokens(String tokens) {
this.tokens = tokens;
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 setNoiseScale(float noiseScale) {
this.noiseScale = noiseScale;
return this;
}
public Builder setLengthScale(float lengthScale) {
this.lengthScale = lengthScale;
return this;
}
}
}

View File

@@ -4,12 +4,14 @@ package com.k2fsa.sherpa.onnx;
public class OfflineTtsModelConfig {
private final OfflineTtsVitsModelConfig vits;
private final OfflineTtsMatchaModelConfig matcha;
private final int numThreads;
private final boolean debug;
private final String provider;
private OfflineTtsModelConfig(Builder builder) {
this.vits = builder.vits;
this.matcha = builder.matcha;
this.numThreads = builder.numThreads;
this.debug = builder.debug;
this.provider = builder.provider;
@@ -23,8 +25,13 @@ public class OfflineTtsModelConfig {
return vits;
}
public OfflineTtsMatchaModelConfig getMatcha() {
return matcha;
}
public static class Builder {
private OfflineTtsVitsModelConfig vits = OfflineTtsVitsModelConfig.builder().build();
private OfflineTtsMatchaModelConfig matcha = OfflineTtsMatchaModelConfig.builder().build();
private int numThreads = 1;
private boolean debug = true;
private String provider = "cpu";
@@ -38,6 +45,11 @@ public class OfflineTtsModelConfig {
return this;
}
public Builder setMatcha(OfflineTtsMatchaModelConfig matcha) {
this.matcha = matcha;
return this;
}
public Builder setNumThreads(int numThreads) {
this.numThreads = numThreads;
return this;

View File

@@ -60,9 +60,9 @@ public class OfflineTtsVitsModelConfig {
}
public static class Builder {
private String model;
private String model = "";
private String lexicon = "";
private String tokens;
private String tokens = "";
private String dataDir = "";
private String dictDir = "";
private float noiseScale = 0.667f;