Skip to content

Commit 640ceb5

Browse files
authored
JAVA-API: Manual Library Loading Support for Restricted Environments (k2-fsa#2253)
* feat: Added LibraryLoader that allows loading to be skipped * feat: Changed static call to new LibraryLoader * feat: Makefile adjustment
1 parent 2107afd commit 640ceb5

20 files changed

Lines changed: 44 additions & 73 deletions

sherpa-onnx/java-api/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ out_jar := $(out_dir)/sherpa-onnx.jar
66

77
package_dir := com/k2fsa/sherpa/onnx
88

9-
java_files := WaveReader.java
9+
java_files := LibraryLoader.java
10+
11+
java_files += WaveReader.java
1012
java_files += WaveWriter.java
1113
java_files += EndpointRule.java
1214
java_files += EndpointConfig.java

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/AudioTagging.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class AudioTagging {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private long ptr = 0;
117

128
public AudioTagging(AudioTaggingConfig config) {
9+
LibraryLoader.maybeLoad();
1310
ptr = newFromFile(config);
1411
}
1512

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/DenoisedAudio.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class DenoisedAudio {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private final float[] samples;
117
private final int sampleRate;
128

139
public DenoisedAudio(float[] samples, int sampleRate) {
10+
LibraryLoader.maybeLoad();
1411
this.samples = samples;
1512
this.sampleRate = sampleRate;
1613
}

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/GeneratedAudio.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class GeneratedAudio {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private final float[] samples;
117
private final int sampleRate;
128

139
public GeneratedAudio(float[] samples, int sampleRate) {
10+
LibraryLoader.maybeLoad();
1411
this.samples = samples;
1512
this.sampleRate = sampleRate;
1613
}

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/KeywordSpotter.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class KeywordSpotter {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private long ptr = 0;
117

128
public KeywordSpotter(KeywordSpotterConfig config) {
9+
LibraryLoader.maybeLoad();
1310
ptr = newFromFile(config);
1411
}
1512

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.k2fsa.sherpa.onnx;
2+
3+
public class LibraryLoader {
4+
private static volatile boolean autoLoadEnabled = true;
5+
private static volatile boolean isLoaded = false;
6+
7+
static synchronized void loadLibrary() {
8+
if (!isLoaded) {
9+
System.loadLibrary("sherpa-onnx-jni");
10+
isLoaded = true;
11+
}
12+
}
13+
14+
public static void setAutoLoadEnabled(boolean enabled) {
15+
autoLoadEnabled = enabled;
16+
}
17+
18+
static void maybeLoad() {
19+
if (autoLoadEnabled) {
20+
loadLibrary();
21+
}
22+
}
23+
}

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflinePunctuation.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class OfflinePunctuation {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private long ptr = 0;
117

128
public OfflinePunctuation(OfflinePunctuationConfig config) {
9+
LibraryLoader.maybeLoad();
1310
ptr = newFromFile(config);
1411
}
1512

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineRecognizer.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class OfflineRecognizer {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private long ptr = 0;
117

128
public OfflineRecognizer(OfflineRecognizerConfig config) {
9+
LibraryLoader.maybeLoad();
1310
ptr = newFromFile(config);
1411
}
1512

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineSpeakerDiarization.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class OfflineSpeakerDiarization {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private long ptr = 0;
117

128
public OfflineSpeakerDiarization(OfflineSpeakerDiarizationConfig config) {
9+
LibraryLoader.maybeLoad();
1310
ptr = newFromFile(config);
1411
}
1512

sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineSpeechDenoiser.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
package com.k2fsa.sherpa.onnx;
44

55
public class OfflineSpeechDenoiser {
6-
static {
7-
System.loadLibrary("sherpa-onnx-jni");
8-
}
9-
106
private long ptr = 0;
117

128
public OfflineSpeechDenoiser(OfflineSpeechDenoiserConfig config) {
9+
LibraryLoader.maybeLoad();
1310
ptr = newFromFile(config);
1411
}
1512

0 commit comments

Comments
 (0)