85 lines
1.6 KiB
Java
85 lines
1.6 KiB
Java
// Copyright 2024 Xiaomi Corporation
|
|
|
|
package com.k2fsa.sherpa.onnx;
|
|
|
|
public class Vad {
|
|
static {
|
|
System.loadLibrary("sherpa-onnx-jni");
|
|
}
|
|
|
|
private long ptr = 0;
|
|
|
|
public Vad(VadModelConfig config) {
|
|
ptr = newFromFile(config);
|
|
}
|
|
|
|
@Override
|
|
protected void finalize() throws Throwable {
|
|
release();
|
|
}
|
|
|
|
public void release() {
|
|
if (this.ptr == 0) {
|
|
return;
|
|
}
|
|
delete(this.ptr);
|
|
this.ptr = 0;
|
|
}
|
|
|
|
public void acceptWaveform(float[] samples) {
|
|
acceptWaveform(this.ptr, samples);
|
|
}
|
|
|
|
public boolean empty() {
|
|
return empty(this.ptr);
|
|
}
|
|
|
|
public void pop() {
|
|
pop(this.ptr);
|
|
}
|
|
|
|
public void clear() {
|
|
clear(this.ptr);
|
|
}
|
|
|
|
public void reset() {
|
|
reset(this.ptr);
|
|
}
|
|
|
|
public void flush() {
|
|
flush(this.ptr);
|
|
}
|
|
|
|
public SpeechSegment front() {
|
|
Object[] arr = front(this.ptr);
|
|
int start = (int) arr[0];
|
|
float[] samples = (float[]) arr[1];
|
|
|
|
return new SpeechSegment(start, samples);
|
|
}
|
|
|
|
public boolean isSpeechDetected() {
|
|
return isSpeechDetected(this.ptr);
|
|
}
|
|
|
|
private native void delete(long ptr);
|
|
|
|
private native long newFromFile(VadModelConfig config);
|
|
|
|
private native void acceptWaveform(long ptr, float[] samples);
|
|
|
|
private native boolean empty(long ptr);
|
|
|
|
private native void pop(long ptr);
|
|
|
|
private native void clear(long ptr);
|
|
|
|
private native Object[] front(long ptr);
|
|
|
|
private native boolean isSpeechDetected(long ptr);
|
|
|
|
private native void reset(long ptr);
|
|
|
|
private native void flush(long ptr);
|
|
}
|