Add Kotlin and Java API for Dolphin CTC models (#2086)
This commit is contained in:
@@ -30,6 +30,7 @@ java_files += OfflineFireRedAsrModelConfig.java
|
||||
java_files += OfflineMoonshineModelConfig.java
|
||||
java_files += OfflineNemoEncDecCtcModelConfig.java
|
||||
java_files += OfflineSenseVoiceModelConfig.java
|
||||
java_files += OfflineDolphinModelConfig.java
|
||||
java_files += OfflineModelConfig.java
|
||||
java_files += OfflineRecognizerConfig.java
|
||||
java_files += OfflineRecognizerResult.java
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
// Copyright 2025 Xiaomi Corporation
|
||||
|
||||
package com.k2fsa.sherpa.onnx;
|
||||
|
||||
public class OfflineDolphinModelConfig {
|
||||
private final String model;
|
||||
|
||||
private OfflineDolphinModelConfig(Builder builder) {
|
||||
this.model = builder.model;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public String getModel() {
|
||||
return model;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
private String model = "";
|
||||
|
||||
public OfflineDolphinModelConfig build() {
|
||||
return new OfflineDolphinModelConfig(this);
|
||||
}
|
||||
|
||||
public Builder setModel(String model) {
|
||||
this.model = model;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ public class OfflineModelConfig {
|
||||
private final OfflineMoonshineModelConfig moonshine;
|
||||
private final OfflineNemoEncDecCtcModelConfig nemo;
|
||||
private final OfflineSenseVoiceModelConfig senseVoice;
|
||||
private final OfflineDolphinModelConfig dolphin;
|
||||
private final String teleSpeech;
|
||||
private final String tokens;
|
||||
private final int numThreads;
|
||||
@@ -28,6 +29,7 @@ public class OfflineModelConfig {
|
||||
this.moonshine = builder.moonshine;
|
||||
this.nemo = builder.nemo;
|
||||
this.senseVoice = builder.senseVoice;
|
||||
this.dolphin = builder.dolphin;
|
||||
this.teleSpeech = builder.teleSpeech;
|
||||
this.tokens = builder.tokens;
|
||||
this.numThreads = builder.numThreads;
|
||||
@@ -62,6 +64,10 @@ public class OfflineModelConfig {
|
||||
return senseVoice;
|
||||
}
|
||||
|
||||
public OfflineDolphinModelConfig getDolphin() {
|
||||
return dolphin;
|
||||
}
|
||||
|
||||
public String getTokens() {
|
||||
return tokens;
|
||||
}
|
||||
@@ -102,6 +108,7 @@ public class OfflineModelConfig {
|
||||
private OfflineMoonshineModelConfig moonshine = OfflineMoonshineModelConfig.builder().build();
|
||||
private OfflineNemoEncDecCtcModelConfig nemo = OfflineNemoEncDecCtcModelConfig.builder().build();
|
||||
private OfflineSenseVoiceModelConfig senseVoice = OfflineSenseVoiceModelConfig.builder().build();
|
||||
private OfflineDolphinModelConfig dolphin = OfflineDolphinModelConfig.builder().build();
|
||||
private String teleSpeech = "";
|
||||
private String tokens = "";
|
||||
private int numThreads = 1;
|
||||
@@ -120,6 +127,11 @@ public class OfflineModelConfig {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setDolphin(OfflineDolphinModelConfig dolphin) {
|
||||
this.dolphin = dolphin;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setParaformer(OfflineParaformerModelConfig paraformer) {
|
||||
this.paraformer = paraformer;
|
||||
return this;
|
||||
|
||||
@@ -265,6 +265,19 @@ static OfflineRecognizerConfig GetOfflineConfig(JNIEnv *env, jobject config) {
|
||||
ans.model_config.nemo_ctc.model = p;
|
||||
env->ReleaseStringUTFChars(s, p);
|
||||
|
||||
// dolphin
|
||||
fid = env->GetFieldID(model_config_cls, "dolphin",
|
||||
"Lcom/k2fsa/sherpa/onnx/OfflineDolphinModelConfig;");
|
||||
jobject dolphin_config = env->GetObjectField(model_config, fid);
|
||||
jclass dolphin_config_cls = env->GetObjectClass(dolphin_config);
|
||||
|
||||
fid = env->GetFieldID(nemo_config_cls, "model", "Ljava/lang/String;");
|
||||
|
||||
s = (jstring)env->GetObjectField(dolphin_config, fid);
|
||||
p = env->GetStringUTFChars(s, nullptr);
|
||||
ans.model_config.dolphin.model = p;
|
||||
env->ReleaseStringUTFChars(s, p);
|
||||
|
||||
fid = env->GetFieldID(model_config_cls, "teleSpeech", "Ljava/lang/String;");
|
||||
s = (jstring)env->GetObjectField(model_config, fid);
|
||||
p = env->GetStringUTFChars(s, nullptr);
|
||||
|
||||
@@ -25,6 +25,10 @@ data class OfflineNemoEncDecCtcModelConfig(
|
||||
var model: String = "",
|
||||
)
|
||||
|
||||
data class OfflineDolphinModelConfig(
|
||||
var model: String = "",
|
||||
)
|
||||
|
||||
data class OfflineWhisperModelConfig(
|
||||
var encoder: String = "",
|
||||
var decoder: String = "",
|
||||
@@ -59,6 +63,7 @@ data class OfflineModelConfig(
|
||||
var moonshine: OfflineMoonshineModelConfig = OfflineMoonshineModelConfig(),
|
||||
var nemo: OfflineNemoEncDecCtcModelConfig = OfflineNemoEncDecCtcModelConfig(),
|
||||
var senseVoice: OfflineSenseVoiceModelConfig = OfflineSenseVoiceModelConfig(),
|
||||
var dolphin: OfflineDolphinModelConfig = OfflineDolphinModelConfig(),
|
||||
var teleSpeech: String = "",
|
||||
var numThreads: Int = 1,
|
||||
var debug: Boolean = false,
|
||||
@@ -481,6 +486,16 @@ fun getOfflineModelConfig(type: Int): OfflineModelConfig? {
|
||||
tokens = "$modelDir/tokens.txt",
|
||||
)
|
||||
}
|
||||
|
||||
25 -> {
|
||||
val modelDir = "sherpa-onnx-dolphin-base-ctc-multi-lang-int8-2025-04-02"
|
||||
return OfflineModelConfig(
|
||||
dolphin = OfflineDolphinModelConfig(
|
||||
model = "$modelDir/model.int8.onnx",
|
||||
),
|
||||
tokens = "$modelDir/tokens.txt",
|
||||
)
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -374,6 +374,26 @@ fun getModelConfig(type: Int): OnlineModelConfig? {
|
||||
modelType = "zipformer",
|
||||
)
|
||||
}
|
||||
|
||||
15 -> {
|
||||
val modelDir = "sherpa-onnx-streaming-zipformer-small-ctc-zh-int8-2025-04-01"
|
||||
return OnlineModelConfig(
|
||||
zipformer2Ctc = OnlineZipformer2CtcModelConfig(
|
||||
model = "$modelDir/model.int8.onnx",
|
||||
),
|
||||
tokens = "$modelDir/tokens.txt",
|
||||
)
|
||||
}
|
||||
|
||||
16 -> {
|
||||
val modelDir = "sherpa-onnx-streaming-zipformer-small-ctc-zh-2025-04-01"
|
||||
return OnlineModelConfig(
|
||||
zipformer2Ctc = OnlineZipformer2CtcModelConfig(
|
||||
model = "$modelDir/model.onnx",
|
||||
),
|
||||
tokens = "$modelDir/tokens.txt",
|
||||
)
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user