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
Wei Kang
2023-09-18 16:24:57 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2023-09-18 16:24:57 +0800
Commit
a5d1c908073e47569b80d54404306933b8391e11
a5d1c908
1 parent
bd18e073
Support c-api (#317)
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
61 行增加
和
7 行删除
c-api-examples/Makefile
c-api-examples/decode-file-c-api.c
c-api-examples/run.sh
sherpa-onnx/c-api/c-api.cc
sherpa-onnx/c-api/c-api.h
c-api-examples/Makefile
查看文件 @
a5d1c90
CUR_DIR
:=
$(
shell
pwd
)
CFLAGS
:=
-I ../
CFLAGS
:=
-I ../
-I ../build/_deps/cargs-src/include/
LDFLAGS
:=
-L ../build/lib
LDFLAGS
+=
-L ../build/_deps/onnxruntime-src/lib
LDFLAGS
+=
-lsherpa-onnx-c-api -lsherpa-onnx-core -lonnxruntime -lkaldi-native-fbank-core
LDFLAGS
+=
-lsherpa-onnx-c-api -lsherpa-onnx-core -lonnxruntime -lkaldi-native-fbank-core
-lcargs
LDFLAGS
+=
-Wl,-rpath,
${
CUR_DIR
}
/../build/lib
LDFLAGS
+=
-Wl,-rpath,
${
CUR_DIR
}
/../build/_deps/onnxruntime-src/lib
...
...
c-api-examples/decode-file-c-api.c
查看文件 @
a5d1c90
...
...
@@ -52,7 +52,21 @@ static struct cag_option options[] = {
.
access_name
=
"decoding-method"
,
.
value_name
=
"decoding-method"
,
.
description
=
"Decoding method: greedy_search (default), modified_beam_search"
}};
"Decoding method: greedy_search (default), modified_beam_search"
},
{.
identifier
=
'f'
,
.
access_letters
=
NULL
,
.
access_name
=
"hotwords-file"
,
.
value_name
=
"hotwords-file"
,
.
description
=
"The file containing hotwords, one words/phrases per line, "
"and for each phrase the bpe/cjkchar are separated by a "
"space. For example: ▁HE LL O ▁WORLD, 你 好 世 界"
},
{.
identifier
=
's'
,
.
access_letters
=
NULL
,
.
access_name
=
"hotwords-score"
,
.
value_name
=
"hotwords-score"
,
.
description
=
"The bonus score for each token in hotwords. Used only "
"when decoding_method is modified_beam_search"
},
};
const
char
*
kUsage
=
"
\n
"
...
...
@@ -130,6 +144,12 @@ int32_t main(int32_t argc, char *argv[]) {
case
'm'
:
config
.
decoding_method
=
value
;
break
;
case
'f'
:
config
.
hotwords_file
=
value
;
break
;
case
's'
:
config
.
hotwords_score
=
atof
(
value
);
break
;
case
'h'
:
{
fprintf
(
stderr
,
"%s
\n
"
,
kUsage
);
exit
(
0
);
...
...
c-api-examples/run.sh
查看文件 @
a5d1c90
...
...
@@ -27,8 +27,22 @@ if [ ! -f ./decode-file-c-api ]; then
fi
./decode-file-c-api
\
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt
\
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.onnx
\
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.onnx
\
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.onnx
\
--tokens
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt
\
--encoder
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.onnx
\
--decoder
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.onnx
\
--joiner
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.onnx
\
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/test_wavs/0.wav
# Run with hotwords
echo
"礼 拜 二"
> hotwords.txt
./decode-file-c-api
\
--tokens
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt
\
--encoder
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.onnx
\
--decoder
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.onnx
\
--joiner
=
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.onnx
\
--hotwords-file
=
hotwords.txt
\
--hotwords-score
=
1.5
\
--decoding-method
=
modified_beam_search
\
./sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/test_wavs/0.wav
...
...
sherpa-onnx/c-api/c-api.cc
查看文件 @
a5d1c90
...
...
@@ -80,6 +80,10 @@ SherpaOnnxOnlineRecognizer *CreateOnlineRecognizer(
recognizer_config
.
endpoint_config
.
rule3
.
min_utterance_length
=
SHERPA_ONNX_OR
(
config
->
rule3_min_utterance_length
,
20
);
recognizer_config
.
hotwords_file
=
SHERPA_ONNX_OR
(
config
->
hotwords_file
,
""
);
recognizer_config
.
hotwords_score
=
SHERPA_ONNX_OR
(
config
->
hotwords_score
,
1.5
);
if
(
config
->
model_config
.
debug
)
{
fprintf
(
stderr
,
"%s
\n
"
,
recognizer_config
.
ToString
().
c_str
());
}
...
...
@@ -297,6 +301,10 @@ SherpaOnnxOfflineRecognizer *CreateOfflineRecognizer(
recognizer_config
.
max_active_paths
=
SHERPA_ONNX_OR
(
config
->
max_active_paths
,
4
);
recognizer_config
.
hotwords_file
=
SHERPA_ONNX_OR
(
config
->
hotwords_file
,
""
);
recognizer_config
.
hotwords_score
=
SHERPA_ONNX_OR
(
config
->
hotwords_score
,
1.5
);
if
(
config
->
model_config
.
debug
)
{
fprintf
(
stderr
,
"%s
\n
"
,
recognizer_config
.
ToString
().
c_str
());
}
...
...
sherpa-onnx/c-api/c-api.h
查看文件 @
a5d1c90
...
...
@@ -111,6 +111,12 @@ SHERPA_ONNX_API typedef struct SherpaOnnxOnlineRecognizerConfig {
/// this value.
/// Used only when enable_endpoint is not 0.
float
rule3_min_utterance_length
;
/// Path to the hotwords.
const
char
*
hotwords_file
;
/// Bonus score for each token in hotwords.
float
hotwords_score
;
}
SherpaOnnxOnlineRecognizerConfig
;
SHERPA_ONNX_API
typedef
struct
SherpaOnnxOnlineRecognizerResult
{
...
...
@@ -335,6 +341,12 @@ SHERPA_ONNX_API typedef struct SherpaOnnxOfflineRecognizerConfig {
const
char
*
decoding_method
;
int32_t
max_active_paths
;
/// Path to the hotwords.
const
char
*
hotwords_file
;
/// Bonus score for each token in hotwords.
float
hotwords_score
;
}
SherpaOnnxOfflineRecognizerConfig
;
SHERPA_ONNX_API
typedef
struct
SherpaOnnxOfflineRecognizer
...
...
请
注册
或
登录
后发表评论