diff --git a/runtime/examples/silero_vad/.gitignore b/runtime/examples/silero_vad/.gitignore new file mode 100644 index 000000000..1269488f7 --- /dev/null +++ b/runtime/examples/silero_vad/.gitignore @@ -0,0 +1 @@ +data diff --git a/runtime/engine/vad/README.md b/runtime/examples/silero_vad/README.md similarity index 100% rename from runtime/engine/vad/README.md rename to runtime/examples/silero_vad/README.md diff --git a/runtime/engine/vad/README_CN.md b/runtime/examples/silero_vad/README_CN.md similarity index 100% rename from runtime/engine/vad/README_CN.md rename to runtime/examples/silero_vad/README_CN.md diff --git a/runtime/examples/silero_vad/local/build.sh b/runtime/examples/silero_vad/local/build.sh new file mode 100755 index 000000000..d35de5a2c --- /dev/null +++ b/runtime/examples/silero_vad/local/build.sh @@ -0,0 +1,14 @@ +ANDROID_NDK=/workspace/zhanghui/android-sdk/android-ndk-r25c +ANDROID_TOOLCHAIN=clang +FASTDEPLOY_INSTALL_DIR=./fdlib/fastdeploy-android-1.0.3-shared/ +TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake + +cmake -B build -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DCMAKE_BUILD_TYPE=Release \ + -DANDROID_ABI="arm64-v8a" \ + -DANDROID_NDK=${ANDROID_NDK} \ + -DANDROID_PLATFORM="android-21" \ + -DANDROID_STL=c++_shared \ + -DANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN} \ + -DFASTDEPLOY_INSTALL_DIR=${FASTDEPLOY_INSTALL_DIR} \ + -Wno-dev diff --git a/runtime/examples/silero_vad/local/build_android.sh b/runtime/examples/silero_vad/local/build_android.sh new file mode 100755 index 000000000..02aa6f9f0 --- /dev/null +++ b/runtime/examples/silero_vad/local/build_android.sh @@ -0,0 +1,31 @@ +ANDROID_NDK=/workspace/zhanghui/android-sdk/android-ndk-r25c +FASTDEPLOY_INSTALL_DIR=./fdlib/fastdeploy-android-1.0.4-shared/ + +# Setting up Android toolchanin +ANDROID_ABI=arm64-v8a # 'arm64-v8a', 'armeabi-v7a' +ANDROID_PLATFORM="android-21" # API >= 21 +ANDROID_STL=c++_shared # 'c++_shared', 'c++_static' +ANDROID_TOOLCHAIN=clang # 'clang' only +TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake + +# Create build directory +BUILD_ROOT=build/Android +BUILD_DIR=${BUILD_ROOT}/${ANDROID_ABI}-api-21 +#FASDEPLOY_INSTALL_DIR="${BUILD_DIR}/install" +#mkdir build && mkdir ${BUILD_ROOT} && mkdir ${BUILD_DIR} +mkdir -p ${BUILD_DIR} +cd ${BUILD_DIR} + +# CMake configuration with Android toolchain +cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DANDROID_ABI=${ANDROID_ABI} \ + -DANDROID_NDK=${ANDROID_NDK} \ + -DANDROID_PLATFORM=${ANDROID_PLATFORM} \ + -DANDROID_STL=${ANDROID_STL} \ + -DANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN} \ + -DFASTDEPLOY_INSTALL_DIR=${FASTDEPLOY_INSTALL_DIR} \ + -Wno-dev ../../.. + +# Build FastDeploy Android C++ SDK +make -j8 diff --git a/runtime/examples/silero_vad/local/decode.sh b/runtime/examples/silero_vad/local/decode.sh new file mode 100755 index 000000000..e69de29bb diff --git a/runtime/examples/silero_vad/local/download.sh b/runtime/examples/silero_vad/local/download.sh new file mode 100755 index 000000000..2f55e20a2 --- /dev/null +++ b/runtime/examples/silero_vad/local/download.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +mkdir -p data +cd data + +wget -c https://bj.bcebos.com/paddlehub/fastdeploy/silero_vad.tgz + +test -e silero_vad || tar zxvf silero_vad.tgz + +wget -c https://bj.bcebos.com/paddlehub/fastdeploy/silero_vad_sample.wav diff --git a/runtime/examples/silero_vad/path.sh b/runtime/examples/silero_vad/path.sh new file mode 100644 index 000000000..ad3a73584 --- /dev/null +++ b/runtime/examples/silero_vad/path.sh @@ -0,0 +1,18 @@ +# This contains the locations of binarys build required for running the examples. + +unset GREP_OPTIONS + +ENGINE_ROOT=$PWD/../../../ +ENGINE_BUILD=$ENGINE_ROOT/build/engine/asr + +ENGINE_TOOLS=$ENGINE_ROOT/tools +TOOLS_BIN=$ENGINE_TOOLS/valgrind/install/bin + +[ -d $ENGINE_BUILD ] || { echo "Error: 'build/runtime' directory not found. please ensure that the project build successfully"; } + +export LC_AL=C + +export PATH=$PATH:$TOOLS_BIN:$ENGINE_BUILD/nnet:$ENGINE_BUILD/decoder:$ENGINE_BUILD/../common/frontend/audio:$ENGINE_BUILD/recognizer + +#PADDLE_LIB_PATH=$(python -c "import os; import paddle; include_dir=paddle.sysconfig.get_include(); paddle_dir=os.path.split(include_dir)[0]; libs_dir=os.path.join(paddle_dir, 'libs'); fluid_dir=os.path.join(paddle_dir, 'fluid'); out=':'.join([libs_dir, fluid_dir]); print(out);") +export LD_LIBRARY_PATH=$PADDLE_LIB_PATH:$LD_LIBRARY_PATH diff --git a/runtime/examples/silero_vad/run.sh b/runtime/examples/silero_vad/run.sh new file mode 100644 index 000000000..9707df1bb --- /dev/null +++ b/runtime/examples/silero_vad/run.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -e + +. path.sh + +nj=40 +stage=-1 +stop_stage=100 + +. utils/parse_options.sh + +# input +data=data +exp=exp +mkdir -p $exp $data + +# 1. compile +if [ ! -d ${SPEECHX_BUILD} ]; then + pushd ${SPEECHX_ROOT} + bash build.sh + + # build for android armv8/armv7 + # bash build_android.sh + popd +fi + +ckpt_dir=$data/silero_vad +wav=$data/silero_vad_sample.wav + +if [ ${stage} -le 0 ] && [ ${stop_stage} -ge 0 ];then + ./local/download.sh +fi + + +if [ ${stage} -le 1 ] && [ ${stop_stage} -ge 1 ]; then + ./local/decode.sh +fi + diff --git a/runtime/examples/silero_vad/utils b/runtime/examples/silero_vad/utils new file mode 120000 index 000000000..973afe674 --- /dev/null +++ b/runtime/examples/silero_vad/utils @@ -0,0 +1 @@ +../../../utils \ No newline at end of file