Add Kotlin and Java API for online punctuation models (#1936)

This commit is contained in:
Fangjun Kuang
2025-02-27 16:52:36 +08:00
committed by GitHub
parent 815ebac8f9
commit f5dfcf8d2f
16 changed files with 474 additions and 13 deletions

View File

@@ -0,0 +1,39 @@
// Copyright 2024 Xiaomi Corporation
package com.k2fsa.sherpa.onnx;
public class OnlinePunctuation {
static {
System.loadLibrary("sherpa-onnx-jni");
}
private long ptr = 0;
public OnlinePunctuation(OnlinePunctuationConfig config) {
ptr = newFromFile(config);
}
public String addPunctuation(String text) {
return addPunctuation(ptr, text);
}
@Override
protected void finalize() throws Throwable {
release();
}
// You'd better call it manually if it is not used anymore
public void release() {
if (this.ptr == 0) {
return;
}
delete(this.ptr);
this.ptr = 0;
}
private native void delete(long ptr);
private native long newFromFile(OnlinePunctuationConfig config);
private native String addPunctuation(long ptr, String text);
}

View File

@@ -0,0 +1,33 @@
// Copyright 2024 Xiaomi Corporation
package com.k2fsa.sherpa.onnx;
public class OnlinePunctuationConfig {
private final OnlinePunctuationModelConfig model;
private OnlinePunctuationConfig(Builder builder) {
this.model = builder.model;
}
public static Builder builder() {
return new Builder();
}
public OnlinePunctuationModelConfig getModel() {
return model;
}
public static class Builder {
private OnlinePunctuationModelConfig model = OnlinePunctuationModelConfig.builder().build();
public OnlinePunctuationConfig build() {
return new OnlinePunctuationConfig(this);
}
public Builder setModel(OnlinePunctuationModelConfig model) {
this.model = model;
return this;
}
}
}

View File

@@ -0,0 +1,68 @@
// Copyright 2024 Xiaomi Corporation
package com.k2fsa.sherpa.onnx;
public class OnlinePunctuationModelConfig {
private final String cnnBilstm;
private final String bpeVocab;
private final int numThreads;
private final boolean debug;
private final String provider;
private OnlinePunctuationModelConfig(Builder builder) {
this.cnnBilstm = builder.cnnBilstm;
this.bpeVocab = builder.bpeVocab;
this.numThreads = builder.numThreads;
this.debug = builder.debug;
this.provider = builder.provider;
}
public static Builder builder() {
return new Builder();
}
public String getCnnBilstm() {
return cnnBilstm;
}
public String getBpeVocab() {
return bpeVocab;
}
public static class Builder {
private String cnnBilstm = "";
private String bpeVocab = "";
private int numThreads = 1;
private boolean debug = true;
private String provider = "cpu";
public OnlinePunctuationModelConfig build() {
return new OnlinePunctuationModelConfig(this);
}
public Builder setCnnBilstm(String cnnBilstm) {
this.cnnBilstm = cnnBilstm;
return this;
}
public Builder setBpeVocab(String bpeVocab) {
this.bpeVocab = bpeVocab;
return this;
}
public Builder setNumThreads(int numThreads) {
this.numThreads = numThreads;
return this;
}
public Builder setDebug(boolean debug) {
this.debug = debug;
return this;
}
public Builder setProvider(String provider) {
this.provider = provider;
return this;
}
}
}