Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
sherpaonnx
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Fangjun Kuang
2024-02-26 13:49:37 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2024-02-26 13:49:37 +0800
Commit
fb04366179269413adc7361f72c0d52353699e62
fb043661
1 parent
ee37d9bd
Fix #608 (#610)
Fix java tests.
显示空白字符变更
内嵌
并排对比
正在显示
15 个修改的文件
包含
78 行增加
和
49 行删除
java-api-examples/.gitignore
java-api-examples/Makefile
sherpa-onnx/java-api/.gitignore
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/EndpointConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/EndpointRule.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/FeatureConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineLMConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineModelConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineParaformerModelConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineRecognizer.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineRecognizerConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineStream.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineTransducerModelConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineZipformer2CtcModelConfig.java
sherpa-onnx/jni/jni.cc
java-api-examples/.gitignore
0 → 100644
查看文件 @
fb04366
lib
hs_err*
...
...
java-api-examples/Makefile
查看文件 @
fb04366
...
...
@@ -9,10 +9,11 @@ LIB_FILES = \
$(LIB_SRC_DIR)
/OnlineLMConfig.java
\
$(LIB_SRC_DIR)
/OnlineTransducerModelConfig.java
\
$(LIB_SRC_DIR)
/OnlineParaformerModelConfig.java
\
$(LIB_SRC_DIR)
/OnlineZipformer2CtcModelConfig.java
\
$(LIB_SRC_DIR)
/OnlineModelConfig.java
\
$(LIB_SRC_DIR)
/OnlineRecognizerConfig.java
\
$(LIB_SRC_DIR)
/OnlineStream.java
\
$(LIB_SRC_DIR)
/OnlineRecognizer.java
\
$(LIB_SRC_DIR)
/OnlineRecognizer.java
WEBSOCKET_DIR
:=
./src/websocketsrv
WEBSOCKET_FILES
=
\
...
...
@@ -63,7 +64,7 @@ clean:
mkdir -p
$(BUILD_DIR)
mkdir -p ./lib
runfile
:
runfile
:
packjar buildfile
java -cp ./lib/sherpaonnx.jar:build
$(RUNJFLAGS)
DecodeFile test.wav
runhotwords
:
...
...
@@ -85,7 +86,6 @@ buildlib: $(LIB_FILES:.java=.class)
%.class
:
%.java
$(JAVAC)
-cp
$(BUILD_DIR)
-d
$(BUILD_DIR)
-encoding UTF-8
$<
buildwebsocket
:
$(WEBSOCKET_FILES:.java=.class)
...
...
@@ -95,7 +95,7 @@ buildwebsocket: $(WEBSOCKET_FILES:.java=.class)
$(JAVAC) -cp $(BUILD_DIR)
:
lib/slf4j-simple-1.7.25.jar:lib/slf4j-api-1.7.25.jar:lib/Java-WebSocket-1.5.3.jar:../lib/sherpaonnx.jar -d $(BUILD_DIR) -encoding UTF-8 $<
packjar
:
packjar
:
buildlib
jar cvfe lib/sherpaonnx.jar . -C
$(BUILD_DIR)
.
all
:
clean buildlib packjar buildfile buildmic downjar buildwebsocket
...
...
sherpa-onnx/java-api/.gitignore
0 → 100644
查看文件 @
fb04366
.idea
java-api.iml
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/EndpointConfig.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/EndpointRule.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/FeatureConfig.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineLMConfig.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineModelConfig.java
查看文件 @
fb04366
...
...
@@ -7,6 +7,7 @@ package com.k2fsa.sherpa.onnx;
public
class
OnlineModelConfig
{
private
final
OnlineParaformerModelConfig
paraformer
;
private
final
OnlineTransducerModelConfig
transducer
;
private
final
OnlineZipformer2CtcModelConfig
zipformer2Ctc
;
private
final
String
tokens
;
private
final
int
numThreads
;
private
final
boolean
debug
;
...
...
@@ -19,7 +20,9 @@ public class OnlineModelConfig {
boolean
debug
,
String
modelType
,
OnlineParaformerModelConfig
paraformer
,
OnlineTransducerModelConfig
transducer
)
{
OnlineTransducerModelConfig
transducer
,
OnlineZipformer2CtcModelConfig
zipformer2Ctc
)
{
this
.
tokens
=
tokens
;
this
.
numThreads
=
numThreads
;
...
...
@@ -27,6 +30,7 @@ public class OnlineModelConfig {
this
.
modelType
=
modelType
;
this
.
paraformer
=
paraformer
;
this
.
transducer
=
transducer
;
this
.
zipformer2Ctc
=
zipformer2Ctc
;
}
public
OnlineParaformerModelConfig
getParaformer
()
{
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineParaformerModelConfig.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineRecognizer.java
查看文件 @
fb04366
...
...
@@ -32,8 +32,14 @@ usage example:
*/
package
com
.
k2fsa
.
sherpa
.
onnx
;
import
java.io.*
;
import
java.util.*
;
import
java.io.BufferedInputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.InputStream
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Properties
;
public
class
OnlineRecognizer
{
private
long
ptr
=
0
;
// this is the asr engine ptrss
...
...
@@ -71,6 +77,7 @@ public class OnlineRecognizer {
proMap
.
getOrDefault
(
"encoder"
,
""
).
trim
(),
proMap
.
getOrDefault
(
"decoder"
,
""
).
trim
(),
proMap
.
getOrDefault
(
"joiner"
,
""
).
trim
());
OnlineZipformer2CtcModelConfig
zipformer2CtcConfig
=
new
OnlineZipformer2CtcModelConfig
(
""
);
OnlineModelConfig
modelCfg
=
new
OnlineModelConfig
(
proMap
.
getOrDefault
(
"tokens"
,
""
).
trim
(),
...
...
@@ -78,7 +85,7 @@ public class OnlineRecognizer {
false
,
proMap
.
getOrDefault
(
"model_type"
,
"zipformer"
).
trim
(),
modelParaCfg
,
modelTranCf
g
);
modelTranCfg
,
zipformer2CtcConfi
g
);
FeatureConfig
featConfig
=
new
FeatureConfig
(
sampleRate
,
Integer
.
parseInt
(
proMap
.
getOrDefault
(
"feature_dim"
,
"80"
).
trim
()));
...
...
@@ -136,6 +143,7 @@ public class OnlineRecognizer {
proMap
.
getOrDefault
(
"encoder"
,
""
).
trim
(),
proMap
.
getOrDefault
(
"decoder"
,
""
).
trim
(),
proMap
.
getOrDefault
(
"joiner"
,
""
).
trim
());
OnlineZipformer2CtcModelConfig
zipformer2CtcConfig
=
new
OnlineZipformer2CtcModelConfig
(
""
);
OnlineModelConfig
modelCfg
=
new
OnlineModelConfig
(
...
...
@@ -144,7 +152,7 @@ public class OnlineRecognizer {
false
,
proMap
.
getOrDefault
(
"model_type"
,
"zipformer"
).
trim
(),
modelParaCfg
,
modelTranCf
g
);
modelTranCfg
,
zipformer2CtcConfi
g
);
FeatureConfig
featConfig
=
new
FeatureConfig
(
sampleRate
,
Integer
.
parseInt
(
proMap
.
getOrDefault
(
"feature_dim"
,
"80"
).
trim
()));
...
...
@@ -201,8 +209,9 @@ public class OnlineRecognizer {
OnlineParaformerModelConfig
modelParaCfg
=
new
OnlineParaformerModelConfig
(
encoder
,
decoder
);
OnlineTransducerModelConfig
modelTranCfg
=
new
OnlineTransducerModelConfig
(
encoder
,
decoder
,
joiner
);
OnlineZipformer2CtcModelConfig
zipformer2CtcConfig
=
new
OnlineZipformer2CtcModelConfig
(
""
);
OnlineModelConfig
modelCfg
=
new
OnlineModelConfig
(
tokens
,
numThreads
,
false
,
modelType
,
modelParaCfg
,
modelTranCf
g
);
new
OnlineModelConfig
(
tokens
,
numThreads
,
false
,
modelType
,
modelParaCfg
,
modelTranCfg
,
zipformer2CtcConfi
g
);
FeatureConfig
featConfig
=
new
FeatureConfig
(
sampleRate
,
featureDim
);
OnlineLMConfig
onlineLmConfig
=
new
OnlineLMConfig
(
lm_model
,
lm_scale
);
OnlineRecognizerConfig
rcgCfg
=
...
...
@@ -220,6 +229,32 @@ public class OnlineRecognizer {
this
.
ptr
=
createOnlineRecognizer
(
new
Object
(),
rcgCfg
);
}
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
float
[]
floatData
=
(
float
[])
data
;
return
floatData
;
}
// load the libsherpa-onnx-jni.so lib
public
static
void
loadSoLib
(
String
soPath
)
{
// load libsherpa-onnx-jni.so lib from the path
System
.
out
.
println
(
"so lib path="
+
soPath
+
"\n"
);
System
.
load
(
soPath
.
trim
());
System
.
out
.
println
(
"load so lib succeed\n"
);
}
public
static
void
setSoPath
(
String
soPath
)
{
OnlineRecognizer
.
loadSoLib
(
soPath
);
OnlineStream
.
loadSoLib
(
soPath
);
}
private
static
native
Object
[]
readWave
(
String
fileName
);
// static
private
Map
<
String
,
String
>
readProperties
(
String
modelCfgPath
)
{
// read and parse config file
Properties
props
=
new
Properties
();
...
...
@@ -302,30 +337,6 @@ public class OnlineRecognizer {
return
stream
;
}
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
float
[]
floatData
=
(
float
[])
data
;
return
floatData
;
}
// load the libsherpa-onnx-jni.so lib
public
static
void
loadSoLib
(
String
soPath
)
{
// load libsherpa-onnx-jni.so lib from the path
System
.
out
.
println
(
"so lib path="
+
soPath
+
"\n"
);
System
.
load
(
soPath
.
trim
());
System
.
out
.
println
(
"load so lib succeed\n"
);
}
public
static
void
setSoPath
(
String
soPath
)
{
OnlineRecognizer
.
loadSoLib
(
soPath
);
OnlineStream
.
loadSoLib
(
soPath
);
}
protected
void
finalize
()
throws
Throwable
{
release
();
}
...
...
@@ -337,15 +348,13 @@ public class OnlineRecognizer {
this
.
ptr
=
0
;
}
// JNI interface libsherpa-onnx-jni.so
// stream release, you'd better call it manually if not use anymore
public
void
releaseStream
(
OnlineStream
s
)
{
s
.
release
();
}
// JNI interface libsherpa-onnx-jni.so
private
static
native
Object
[]
readWave
(
String
fileName
);
// static
private
native
String
getResult
(
long
ptr
,
long
streamPtr
);
private
native
void
decodeStream
(
long
ptr
,
long
streamPtr
);
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineRecognizerConfig.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineStream.java
查看文件 @
fb04366
...
...
@@ -4,19 +4,22 @@
// Stream is used for feeding data to the asr engine
package
com
.
k2fsa
.
sherpa
.
onnx
;
import
java.io.*
;
import
java.util.*
;
public
class
OnlineStream
{
private
long
ptr
=
0
;
// this is the stream ptr
private
int
sampleRate
=
16000
;
// assign ptr to this stream in construction
public
OnlineStream
(
long
ptr
,
int
sampleRate
)
{
this
.
ptr
=
ptr
;
this
.
sampleRate
=
sampleRate
;
}
public
static
void
loadSoLib
(
String
soPath
)
{
// load .so lib from the path
System
.
load
(
soPath
.
trim
());
// ("sherpa-onnx-jni-java");
}
public
long
getPtr
()
{
return
ptr
;
}
...
...
@@ -31,18 +34,13 @@ public class OnlineStream {
public
void
inputFinished
()
{
// add some tail padding
int
padLen
=
(
int
)
(
this
.
sampleRate
*
0.3
);
// 0.3 seconds at 16 kHz sample rate
float
tailPaddings
[]
=
new
float
[
padLen
];
// default value is 0
float
[]
tailPaddings
=
new
float
[
padLen
];
// default value is 0
acceptWaveform
(
this
.
ptr
,
this
.
sampleRate
,
tailPaddings
);
// tell the engine all data are feeded
inputFinished
(
this
.
ptr
);
}
public
static
void
loadSoLib
(
String
soPath
)
{
// load .so lib from the path
System
.
load
(
soPath
.
trim
());
// ("sherpa-onnx-jni-java");
}
public
void
release
()
{
// stream object must be release after used
if
(
this
.
ptr
==
0
)
return
;
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineTransducerModelConfig.java
查看文件 @
fb04366
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OnlineZipformer2CtcModelConfig.java
0 → 100644
查看文件 @
fb04366
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
OnlineZipformer2CtcModelConfig
{
private
final
String
model
;
public
OnlineZipformer2CtcModelConfig
(
String
model
)
{
this
.
model
=
model
;
}
public
String
getModel
()
{
return
model
;
}
}
...
...
sherpa-onnx/jni/jni.cc
查看文件 @
fb04366
...
...
@@ -1522,8 +1522,8 @@ JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_SherpaOnnxOffline_delete(
SHERPA_ONNX_EXTERN_C
JNIEXPORT
void
JNICALL
Java_com_k2fsa_sherpa_onnx_SherpaOnnx_reset
(
JNIEnv
*
env
,
jobject
/*obj*/
,
jlong
ptr
,
jboolean
recreate
,
jstring
keywords
)
{
JNIEnv
*
env
,
jobject
/*obj*/
,
jlong
ptr
,
jboolean
recreate
,
jstring
keywords
)
{
auto
model
=
reinterpret_cast
<
sherpa_onnx
::
SherpaOnnx
*>
(
ptr
);
const
char
*
p_keywords
=
env
->
GetStringUTFChars
(
keywords
,
nullptr
);
model
->
Reset
(
recreate
,
p_keywords
);
...
...
请
注册
或
登录
后发表评论