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
2025-07-12 12:36:31 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-07-12 12:36:31 +0800
Commit
f2df11672606a7be372259edaf1dbdf3469069f6
f2df1167
1 parent
ceb1bc5e
Add CXX API examples for ten-vad. (#2380)
显示空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
93 行增加
和
13 行删除
.github/workflows/cxx-api.yaml
cxx-api-examples/vad-cxx-api.cc
sherpa-onnx/c-api/cxx-api.h
.github/workflows/cxx-api.yaml
查看文件 @
f2df116
...
...
@@ -196,7 +196,7 @@ jobs:
rm $name
-
name
:
Test
VAD
-
name
:
Test
silero-vad
shell
:
bash
run
:
|
name=vad-cxx-api
...
...
@@ -223,17 +223,60 @@ jobs:
./$name
mkdir vad-test
cp -v lei-jun-test*.wav vad-test
mkdir vad-test-silero-vad
cp -v lei-jun-test*.wav vad-test-silero-vad
ls -lh vad-test
ls -lh vad-test
-silero-vad
rm $name
rm -fv *.onnx
rm -fv *.wav
-
uses
:
actions/upload-artifact@v4
with
:
name
:
vad-test-wavs-cxx-${{ matrix.os }}
path
:
./vad-test/*.wav
name
:
silero-vad-test-wavs-cxx-${{ matrix.os }}
path
:
./vad-test-silero-vad/*.wav
-
name
:
Test ten-vad
shell
:
bash
run
:
|
name=vad-cxx-api
g++ -std=c++17 -o $name ./cxx-api-examples/$name.cc \
-I ./build/install/include \
-L ./build/install/lib/ \
-l sherpa-onnx-cxx-api \
-l sherpa-onnx-c-api \
-l onnxruntime
ls -lh $name
export LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH
if [[ ${{ matrix.os }} == ubuntu-latest || ${{ matrix.os }} == ubuntu-22.04-arm ]]; then
ldd ./$name
echo "----"
readelf -d ./$name
fi
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/lei-jun-test.wav
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/ten-vad.onnx
./$name
mkdir vad-test-ten-vad
cp -v lei-jun-test*.wav vad-test-ten-vad
ls -lh vad-test-ten-vad
rm $name
rm -fv *.onnx
rm -rf *.wav
-
uses
:
actions/upload-artifact@v4
with
:
name
:
ten-vad-test-wavs-cxx-${{ matrix.os }}
path
:
./vad-test-ten-vad/*.wav
-
name
:
Test Speech Enhancement (GTCRN)
shell
:
bash
...
...
cxx-api-examples/vad-cxx-api.cc
查看文件 @
f2df116
...
...
@@ -6,7 +6,12 @@
// This file demonstrates how to use VAD to remove silences from a file
// clang-format off
//
// To use silero-vad:
// wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
//
// To use ten-vad:
// wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/ten-vad.onnx
//
// wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/lei-jun-test.wav
//
// clang-format on
...
...
@@ -19,14 +24,45 @@ int32_t main() {
using
namespace
sherpa_onnx
::
cxx
;
// NOLINT
std
::
string
wave_filename
=
"./lei-jun-test.wav"
;
std
::
string
vad_filename
=
"./silero_vad.onnx"
;
if
(
!
FileExists
(
wave_filename
))
{
fprintf
(
stderr
,
"Please download %s
\n
"
,
wave_filename
.
c_str
());
return
-
1
;
}
std
::
string
vad_filename
;
bool
use_silero_vad
=
false
;
bool
use_ten_vad
=
false
;
if
(
FileExists
(
"./silero_vad.onnx"
))
{
printf
(
"Use silero-vad
\n
"
);
vad_filename
=
"./silero_vad.onnx"
;
use_silero_vad
=
true
;
}
else
if
(
FileExists
(
"./ten-vad.onnx"
))
{
printf
(
"Use ten-vad
\n
"
);
vad_filename
=
"./ten-vad.onnx"
;
use_ten_vad
=
true
;
}
else
{
fprintf
(
stderr
,
"Please provide either silero_vad.onnx or ten-vad.onnx
\n
"
);
return
-
1
;
}
VadModelConfig
config
;
if
(
use_silero_vad
)
{
config
.
silero_vad
.
model
=
vad_filename
;
config
.
silero_vad
.
threshold
=
0.1
;
config
.
silero_vad
.
threshold
=
0.3
;
config
.
silero_vad
.
min_silence_duration
=
0.5
;
config
.
silero_vad
.
min_speech_duration
=
0.25
;
config
.
silero_vad
.
max_speech_duration
=
20
;
config
.
silero_vad
.
window_size
=
512
;
}
else
if
(
use_ten_vad
)
{
config
.
ten_vad
.
model
=
vad_filename
;
config
.
ten_vad
.
threshold
=
0.3
;
config
.
ten_vad
.
min_silence_duration
=
0.5
;
config
.
ten_vad
.
min_speech_duration
=
0.25
;
config
.
ten_vad
.
max_speech_duration
=
20
;
config
.
ten_vad
.
window_size
=
256
;
}
config
.
sample_rate
=
16000
;
config
.
debug
=
true
;
...
...
@@ -43,7 +79,8 @@ int32_t main() {
}
bool
is_eof
=
false
;
int32_t
i
=
0
;
int32_t
window_size
=
config
.
silero_vad
.
window_size
;
int32_t
window_size
=
use_silero_vad
?
config
.
silero_vad
.
window_size
:
config
.
ten_vad
.
window_size
;
int32_t
sample_rate
=
config
.
sample_rate
;
...
...
sherpa-onnx/c-api/cxx-api.h
查看文件 @
f2df116
...
...
@@ -649,10 +649,10 @@ class SHERPA_ONNX_API LinearResampler
explicit
LinearResampler
(
const
SherpaOnnxLinearResampler
*
p
);
};
std
::
string
GetVersionStr
();
std
::
string
GetGitSha1
();
std
::
string
GetGitDate
();
bool
FileExists
(
const
std
::
string
&
filename
);
SHERPA_ONNX_API
std
::
string
GetVersionStr
();
SHERPA_ONNX_API
std
::
string
GetGitSha1
();
SHERPA_ONNX_API
std
::
string
GetGitDate
();
SHERPA_ONNX_API
bool
FileExists
(
const
std
::
string
&
filename
);
}
// namespace sherpa_onnx::cxx
...
...
请
注册
或
登录
后发表评论