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-05-12 14:58:36 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2024-05-12 14:58:36 +0800
Commit
db85b2c1d889fe6064ea3c13fa4a7860d2a6b86a
db85b2c1
1 parent
7322f4e0
Add Android APKs for NeMo CTC models. (#866)
显示空白字符变更
内嵌
并排对比
正在显示
9 个修改的文件
包含
210 行增加
和
3 行删除
.github/workflows/apk-vad-asr.yaml
kotlin-api-examples/run.sh
kotlin-api-examples/test_online_asr.kt
scripts/apk/generate-asr-apk-script.py
scripts/apk/generate-vad-asr-apk-script.py
sherpa-onnx/csrc/offline-ctc-model.cc
sherpa-onnx/jni/online-recognizer.cc
sherpa-onnx/kotlin-api/OfflineRecognizer.kt
sherpa-onnx/kotlin-api/OnlineRecognizer.kt
.github/workflows/apk-vad-asr.yaml
查看文件 @
db85b2c
...
...
@@ -23,8 +23,8 @@ jobs:
fail-fast
:
false
matrix
:
os
:
[
ubuntu-latest
]
total
:
[
"
3"
]
index
:
[
"
0"
,
"
1"
,
"
2"
]
total
:
[
"
5"
]
index
:
[
"
0"
,
"
1"
,
"
2"
,
"
3"
,
"
4"
]
steps
:
-
uses
:
actions/checkout@v4
...
...
kotlin-api-examples/run.sh
查看文件 @
db85b2c
...
...
@@ -63,6 +63,12 @@ function testOnlineAsr() {
git clone https://huggingface.co/csukuangfj/sherpa-onnx-streaming-zipformer-en-2023-02-21
fi
if
[
! -f ./sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms/tokens.txt
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms.tar.bz2
tar xvf sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms.tar.bz2
rm sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms.tar.bz2
fi
if
[
! -d ./sherpa-onnx-streaming-zipformer-ctc-multi-zh-hans-2023-12-13
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-ctc-multi-zh-hans-2023-12-13.tar.bz2
tar xvf sherpa-onnx-streaming-zipformer-ctc-multi-zh-hans-2023-12-13.tar.bz2
...
...
kotlin-api-examples/test_online_asr.kt
查看文件 @
db85b2c
...
...
@@ -4,6 +4,7 @@ fun main() {
testOnlineAsr("transducer")
testOnlineAsr("zipformer2-ctc")
testOnlineAsr("ctc-hlg")
testOnlineAsr("nemo-ctc")
}
fun testOnlineAsr(type: String) {
...
...
@@ -42,6 +43,17 @@ fun testOnlineAsr(type: String) {
debug = false,
)
}
"nemo-ctc" -> {
waveFilename = "./sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms/test_wavs/0.wav"
OnlineModelConfig(
neMoCtc = OnlineNeMoCtcModelConfig(
model = "./sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms/model.onnx",
),
tokens = "./sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms/tokens.txt",
numThreads = 1,
debug = false,
)
}
"ctc-hlg" -> {
waveFilename = "./sherpa-onnx-streaming-zipformer-ctc-small-2024-03-18/test_wavs/1.wav"
ctcFstDecoderConfig.graph = "./sherpa-onnx-streaming-zipformer-ctc-small-2024-03-18/HLG.fst"
...
...
scripts/apk/generate-asr-apk-script.py
查看文件 @
db85b2c
...
...
@@ -170,6 +170,48 @@ def get_models():
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms"
,
idx
=
11
,
lang
=
"en"
,
short_name
=
"nemo_ctc_80ms"
,
cmd
=
"""
pushd $model_name
rm -rf test_wavs
ls -lh
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-480ms"
,
idx
=
12
,
lang
=
"en"
,
short_name
=
"nemo_ctc_480ms"
,
cmd
=
"""
pushd $model_name
rm -rf test_wavs
ls -lh
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-1040ms"
,
idx
=
13
,
lang
=
"en"
,
short_name
=
"nemo_ctc_1040ms"
,
cmd
=
"""
pushd $model_name
rm -rf test_wavs
ls -lh
popd
"""
,
),
]
return
models
...
...
scripts/apk/generate-vad-asr-apk-script.py
查看文件 @
db85b2c
...
...
@@ -106,6 +106,66 @@ def get_models():
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-fast-conformer-ctc-be-de-en-es-fr-hr-it-pl-ru-uk-20k"
,
idx
=
7
,
lang
=
"be_de_en_es_fr_hr_it_pl_ru_uk"
,
short_name
=
"fast_conformer_ctc_20k"
,
cmd
=
"""
pushd $model_name
rm -rfv test_wavs
ls -lh
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-fast-conformer-ctc-en-24500"
,
idx
=
8
,
lang
=
"en"
,
short_name
=
"fast_conformer_ctc_24500"
,
cmd
=
"""
pushd $model_name
rm -rfv test_wavs
ls -lh
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-fast-conformer-ctc-en-de-es-fr-14288"
,
idx
=
9
,
lang
=
"en_des_es_fr"
,
short_name
=
"fast_conformer_ctc_14288"
,
cmd
=
"""
pushd $model_name
rm -rfv test_wavs
ls -lh
popd
"""
,
),
Model
(
model_name
=
"sherpa-onnx-nemo-fast-conformer-ctc-es-1424"
,
idx
=
10
,
lang
=
"es"
,
short_name
=
"fast_conformer_ctc_1424"
,
cmd
=
"""
pushd $model_name
rm -rfv test_wavs
ls -lh
popd
"""
,
),
]
return
models
...
...
sherpa-onnx/csrc/offline-ctc-model.cc
查看文件 @
db85b2c
...
...
@@ -163,7 +163,8 @@ std::unique_ptr<OfflineCtcModel> OfflineCtcModel::Create(
return
std
::
make_unique
<
OfflineNemoEncDecCtcModel
>
(
mgr
,
config
);
break
;
case
ModelType
:
:
kEncDecHybridRNNTCTCBPEModel
:
return
std
::
make_unique
<
OfflineNemoEncDecHybridRNNTCTCBPEModel
>
(
config
);
return
std
::
make_unique
<
OfflineNemoEncDecHybridRNNTCTCBPEModel
>
(
mgr
,
config
);
break
;
case
ModelType
:
:
kTdnn
:
return
std
::
make_unique
<
OfflineTdnnCtcModel
>
(
mgr
,
config
);
...
...
sherpa-onnx/jni/online-recognizer.cc
查看文件 @
db85b2c
...
...
@@ -159,6 +159,18 @@ static OnlineRecognizerConfig GetConfig(JNIEnv *env, jobject config) {
ans
.
model_config
.
zipformer2_ctc
.
model
=
p
;
env
->
ReleaseStringUTFChars
(
s
,
p
);
// streaming NeMo CTC
fid
=
env
->
GetFieldID
(
model_config_cls
,
"neMoCtc"
,
"Lcom/k2fsa/sherpa/onnx/OnlineNeMoCtcModelConfig;"
);
jobject
nemo_ctc_config
=
env
->
GetObjectField
(
model_config
,
fid
);
jclass
nemo_ctc_config_cls
=
env
->
GetObjectClass
(
nemo_ctc_config
);
fid
=
env
->
GetFieldID
(
nemo_ctc_config_cls
,
"model"
,
"Ljava/lang/String;"
);
s
=
(
jstring
)
env
->
GetObjectField
(
nemo_ctc_config
,
fid
);
p
=
env
->
GetStringUTFChars
(
s
,
nullptr
);
ans
.
model_config
.
nemo_ctc
.
model
=
p
;
env
->
ReleaseStringUTFChars
(
s
,
p
);
fid
=
env
->
GetFieldID
(
model_config_cls
,
"tokens"
,
"Ljava/lang/String;"
);
s
=
(
jstring
)
env
->
GetObjectField
(
model_config
,
fid
);
p
=
env
->
GetStringUTFChars
(
s
,
nullptr
);
...
...
sherpa-onnx/kotlin-api/OfflineRecognizer.kt
查看文件 @
db85b2c
...
...
@@ -231,6 +231,45 @@ fun getOfflineModelConfig(type: Int): OfflineModelConfig? {
)
}
7 -> {
val modelDir = "sherpa-onnx-nemo-fast-conformer-ctc-be-de-en-es-fr-hr-it-pl-ru-uk-20k"
return OfflineModelConfig(
nemo = OfflineNemoEncDecCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
8 -> {
val modelDir = "sherpa-onnx-nemo-fast-conformer-ctc-en-24500"
return OfflineModelConfig(
nemo = OfflineNemoEncDecCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
9 -> {
val modelDir = "sherpa-onnx-nemo-fast-conformer-ctc-en-de-es-fr-14288"
return OfflineModelConfig(
nemo = OfflineNemoEncDecCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
10 -> {
val modelDir = "sherpa-onnx-nemo-fast-conformer-ctc-es-1424"
return OfflineModelConfig(
nemo = OfflineNemoEncDecCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
}
return null
}
...
...
sherpa-onnx/kotlin-api/OnlineRecognizer.kt
查看文件 @
db85b2c
...
...
@@ -29,10 +29,15 @@ data class OnlineZipformer2CtcModelConfig(
var model: String = "",
)
data class OnlineNeMoCtcModelConfig(
var model: String = "",
)
data class OnlineModelConfig(
var transducer: OnlineTransducerModelConfig = OnlineTransducerModelConfig(),
var paraformer: OnlineParaformerModelConfig = OnlineParaformerModelConfig(),
var zipformer2Ctc: OnlineZipformer2CtcModelConfig = OnlineZipformer2CtcModelConfig(),
var neMoCtc: OnlineNeMoCtcModelConfig = OnlineNeMoCtcModelConfig(),
var tokens: String,
var numThreads: Int = 1,
var debug: Boolean = false,
...
...
@@ -318,6 +323,36 @@ fun getModelConfig(type: Int): OnlineModelConfig? {
modelType = "zipformer",
)
}
11 -> {
val modelDir = "sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-80ms"
return OnlineModelConfig(
neMoCtc = OnlineNeMoCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
12 -> {
val modelDir = "sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-480ms"
return OnlineModelConfig(
neMoCtc = OnlineNeMoCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
13 -> {
val modelDir = "sherpa-onnx-nemo-streaming-fast-conformer-ctc-en-1040ms"
return OnlineModelConfig(
neMoCtc = OnlineNeMoCtcModelConfig(
model = "$modelDir/model.onnx",
),
tokens = "$modelDir/tokens.txt",
)
}
}
return null
}
...
...
请
注册
或
登录
后发表评论