Add java websocket support (#137)
* add decode example for mic * some changes to README.md * add java websocket srv * change to readwav to static * make some changes to code comments * little change for readme.md * fix bug about multiple threads * made little modification * add protocol in readme, removed static Queue and add lmConfig --------- Co-authored-by: root <root@localhost.localdomain>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* // Copyright 2022-2023 by zhaoming
|
||||
*/
|
||||
|
||||
package com.k2fsa.sherpa.onnx;
|
||||
|
||||
public class OnlineLMConfig {
|
||||
private final String model;
|
||||
private final float scale;
|
||||
|
||||
public OnlineLMConfig(String model, float scale) {
|
||||
this.model = model;
|
||||
this.scale = scale;
|
||||
}
|
||||
|
||||
public String getModel() {
|
||||
return model;
|
||||
}
|
||||
|
||||
public float getScale() {
|
||||
return scale;
|
||||
}
|
||||
}
|
||||
@@ -65,11 +65,14 @@ public class OnlineRecognizer {
|
||||
false);
|
||||
FeatureConfig featConfig =
|
||||
new FeatureConfig(sampleRate, Integer.parseInt(proMap.get("feature_dim").trim()));
|
||||
OnlineRecognizerConfig rcgCfg =
|
||||
OnlineLMConfig onlineLmConfig=new OnlineLMConfig(proMap.get("lm_model").trim(),Float.parseFloat(proMap.get("lm_scale").trim()));
|
||||
|
||||
OnlineRecognizerConfig rcgCfg =
|
||||
new OnlineRecognizerConfig(
|
||||
featConfig,
|
||||
modelCfg,
|
||||
endCfg,
|
||||
onlineLmConfig,
|
||||
Boolean.parseBoolean(proMap.get("enable_endpoint_detection").trim()),
|
||||
proMap.get("decoding_method").trim(),
|
||||
Integer.parseInt(proMap.get("max_active_paths").trim()));
|
||||
@@ -107,11 +110,15 @@ public class OnlineRecognizer {
|
||||
false);
|
||||
FeatureConfig featConfig =
|
||||
new FeatureConfig(sampleRate, Integer.parseInt(proMap.get("feature_dim").trim()));
|
||||
OnlineRecognizerConfig rcgCfg =
|
||||
|
||||
OnlineLMConfig onlineLmConfig=new OnlineLMConfig(proMap.get("lm_model").trim(),Float.parseFloat(proMap.get("lm_scale").trim()));
|
||||
|
||||
OnlineRecognizerConfig rcgCfg =
|
||||
new OnlineRecognizerConfig(
|
||||
featConfig,
|
||||
modelCfg,
|
||||
endCfg,
|
||||
onlineLmConfig,
|
||||
Boolean.parseBoolean(proMap.get("enable_endpoint_detection").trim()),
|
||||
proMap.get("decoding_method").trim(),
|
||||
Integer.parseInt(proMap.get("max_active_paths").trim()));
|
||||
@@ -137,6 +144,8 @@ public class OnlineRecognizer {
|
||||
float rule2MinTrailingSilence,
|
||||
float rule3MinUtteranceLength,
|
||||
String decodingMethod,
|
||||
String lm_model,
|
||||
float lm_scale,
|
||||
int maxActivePaths) {
|
||||
this.sampleRate = sampleRate;
|
||||
EndpointRule rule1 = new EndpointRule(false, rule1MinTrailingSilence, 0.0F);
|
||||
@@ -146,14 +155,10 @@ public class OnlineRecognizer {
|
||||
OnlineTransducerModelConfig modelCfg =
|
||||
new OnlineTransducerModelConfig(encoder, decoder, joiner, tokens, numThreads, false);
|
||||
FeatureConfig featConfig = new FeatureConfig(sampleRate, featureDim);
|
||||
OnlineRecognizerConfig rcgCfg =
|
||||
OnlineLMConfig onlineLmConfig=new OnlineLMConfig(lm_model,lm_scale);
|
||||
OnlineRecognizerConfig rcgCfg =
|
||||
new OnlineRecognizerConfig(
|
||||
featConfig,
|
||||
modelCfg,
|
||||
endCfg,
|
||||
enableEndpointDetection,
|
||||
decodingMethod,
|
||||
maxActivePaths);
|
||||
featConfig, modelCfg, endCfg, onlineLmConfig,enableEndpointDetection, decodingMethod, maxActivePaths);
|
||||
// create a new Recognizer, first parameter kept for android asset_manager ANDROID_API__ >= 9
|
||||
this.ptr = createOnlineRecognizer(new Object(), rcgCfg);
|
||||
}
|
||||
@@ -241,7 +246,7 @@ public class OnlineRecognizer {
|
||||
return stream;
|
||||
}
|
||||
|
||||
public float[] readWavFile(String fileName) {
|
||||
public static float[] readWavFile(String fileName) {
|
||||
// read data from the filename
|
||||
Object[] wavdata = readWave(fileName);
|
||||
Object data = wavdata[0]; // data[0] is float data, data[1] sample rate
|
||||
@@ -281,7 +286,7 @@ public class OnlineRecognizer {
|
||||
}
|
||||
// JNI interface libsherpa-onnx-jni.so
|
||||
|
||||
private native Object[] readWave(String fileName);
|
||||
private static native Object[] readWave(String fileName); // static
|
||||
|
||||
private native String getResult(long ptr, long streamPtr);
|
||||
|
||||
|
||||
@@ -8,25 +8,33 @@ public class OnlineRecognizerConfig {
|
||||
private final FeatureConfig featConfig;
|
||||
private final OnlineTransducerModelConfig modelConfig;
|
||||
private final EndpointConfig endpointConfig;
|
||||
private final OnlineLMConfig lmConfig;
|
||||
private final boolean enableEndpoint;
|
||||
private final String decodingMethod;
|
||||
private final int maxActivePaths;
|
||||
|
||||
|
||||
public OnlineRecognizerConfig(
|
||||
FeatureConfig featConfig,
|
||||
OnlineTransducerModelConfig modelConfig,
|
||||
EndpointConfig endpointConfig,
|
||||
OnlineLMConfig lmConfig,
|
||||
boolean enableEndpoint,
|
||||
String decodingMethod,
|
||||
int maxActivePaths) {
|
||||
this.featConfig = featConfig;
|
||||
this.modelConfig = modelConfig;
|
||||
this.endpointConfig = endpointConfig;
|
||||
this.lmConfig = lmConfig;
|
||||
this.enableEndpoint = enableEndpoint;
|
||||
this.decodingMethod = decodingMethod;
|
||||
this.maxActivePaths = maxActivePaths;
|
||||
}
|
||||
|
||||
public OnlineLMConfig getLmConfig() {
|
||||
return lmConfig;
|
||||
}
|
||||
|
||||
public FeatureConfig getFeatConfig() {
|
||||
return featConfig;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user