Fangjun Kuang
Committed by GitHub

Add CXX API examples for ten-vad. (#2380)

... ... @@ -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
... ...
... ... @@ -6,7 +6,12 @@
// This file demonstrates how to use VAD to remove silences from a file
// clang-format off
//
// wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
// 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;
config.silero_vad.model = vad_filename;
config.silero_vad.threshold = 0.1;
config.silero_vad.min_silence_duration = 0.5;
config.silero_vad.min_speech_duration = 0.25;
config.silero_vad.max_speech_duration = 20;
if (use_silero_vad) {
config.silero_vad.model = vad_filename;
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;
... ...
... ... @@ -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
... ...