Add address sanitizer and undefined behavior sanitizer (#951)
This commit is contained in:
2
.github/workflows/android.yaml
vendored
2
.github/workflows/android.yaml
vendored
@@ -137,7 +137,7 @@ jobs:
|
|||||||
git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main
|
git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main
|
||||||
|
|
||||||
- name: Release android libs
|
- name: Release android libs
|
||||||
if: github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa' && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
|
if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
|
||||||
uses: svenstaro/upload-release-action@v2
|
uses: svenstaro/upload-release-action@v2
|
||||||
with:
|
with:
|
||||||
file_glob: true
|
file_glob: true
|
||||||
|
|||||||
8
.github/workflows/flutter-linux.yaml
vendored
8
.github/workflows/flutter-linux.yaml
vendored
@@ -217,3 +217,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: flutter-sherpa-onnx-linux-x64
|
name: flutter-sherpa-onnx-linux-x64
|
||||||
path: ./*.tar.bz2
|
path: ./*.tar.bz2
|
||||||
|
|
||||||
|
# - name: Release android libs
|
||||||
|
# if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
|
||||||
|
# uses: svenstaro/upload-release-action@v2
|
||||||
|
# with:
|
||||||
|
# file_glob: true
|
||||||
|
# overwrite: true
|
||||||
|
# file: flutter*.tar.bz2
|
||||||
|
|||||||
8
.github/workflows/flutter-macos.yaml
vendored
8
.github/workflows/flutter-macos.yaml
vendored
@@ -180,3 +180,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: flutter-sherpa-onnx-app-macos-${{ matrix.arch }}
|
name: flutter-sherpa-onnx-app-macos-${{ matrix.arch }}
|
||||||
path: ./*.tar.bz2
|
path: ./*.tar.bz2
|
||||||
|
|
||||||
|
- name: Release android libs
|
||||||
|
if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
|
||||||
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
with:
|
||||||
|
file_glob: true
|
||||||
|
overwrite: true
|
||||||
|
file: flutter*.tar.bz2
|
||||||
|
|||||||
8
.github/workflows/flutter-windows-x64.yaml
vendored
8
.github/workflows/flutter-windows-x64.yaml
vendored
@@ -157,3 +157,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: flutter-sherpa-onnx-windows-x64
|
name: flutter-sherpa-onnx-windows-x64
|
||||||
path: ./*.tar.bz2
|
path: ./*.tar.bz2
|
||||||
|
|
||||||
|
- name: Release android libs
|
||||||
|
if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
|
||||||
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
with:
|
||||||
|
file_glob: true
|
||||||
|
overwrite: true
|
||||||
|
file: flutter*.tar.bz2
|
||||||
|
|||||||
186
.github/workflows/sanitizer.yaml
vendored
Normal file
186
.github/workflows/sanitizer.yaml
vendored
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
name: sanitizer
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
schedule:
|
||||||
|
# minute (0-59)
|
||||||
|
# hour (0-23)
|
||||||
|
# day of the month (1-31)
|
||||||
|
# month (1-12)
|
||||||
|
# day of the week (0-6)
|
||||||
|
# nightly build at 22:50 UTC time every day
|
||||||
|
- cron: "50 22 * * *"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: sanitizer-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sanitizer:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
name: sanitizer
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: ccache
|
||||||
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
|
with:
|
||||||
|
key: ${{ matrix.os }}-sanitizer
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export CMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||||
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||||
|
cmake --version
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
|
||||||
|
cmake \
|
||||||
|
-DSHERPA_ONNX_ENABLE_PYTHON=ON \
|
||||||
|
-DSHERPA_ONNX_ENABLE_TESTS=ON \
|
||||||
|
-DSHERPA_ONNX_ENABLE_JNI=ON \
|
||||||
|
-DSHERPA_ONNX_ENABLE_SANITIZER=ON \
|
||||||
|
-D BUILD_SHARED_LIBS=ON \
|
||||||
|
-D CMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=./install \
|
||||||
|
..
|
||||||
|
|
||||||
|
- name: Build sherpa-onnx
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||||
|
|
||||||
|
cd build
|
||||||
|
make -j2
|
||||||
|
make install
|
||||||
|
|
||||||
|
ls -lh lib
|
||||||
|
ls -lh bin
|
||||||
|
|
||||||
|
file ./bin/sherpa-onnx
|
||||||
|
|
||||||
|
- name: Display dependencies of sherpa-onnx for macos
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
file bin/sherpa-onnx
|
||||||
|
otool -L build/bin/sherpa-onnx
|
||||||
|
otool -l build/bin/sherpa-onnx
|
||||||
|
|
||||||
|
- name: Test offline transducer
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline
|
||||||
|
|
||||||
|
.github/scripts/test-offline-transducer.sh
|
||||||
|
|
||||||
|
- name: Test online CTC
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx
|
||||||
|
|
||||||
|
.github/scripts/test-online-ctc.sh
|
||||||
|
|
||||||
|
- name: Test offline punctuation
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline-punctuation
|
||||||
|
|
||||||
|
.github/scripts/test-offline-punctuation.sh
|
||||||
|
|
||||||
|
- name: Test C API
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export SLID_EXE=spoken-language-identification-c-api
|
||||||
|
export SID_EXE=speaker-identification-c-api
|
||||||
|
export AT_EXE=audio-tagging-c-api
|
||||||
|
export PUNCT_EXE=add-punctuation-c-api
|
||||||
|
|
||||||
|
.github/scripts/test-c-api.sh
|
||||||
|
|
||||||
|
- name: Test Audio tagging
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline-audio-tagging
|
||||||
|
|
||||||
|
.github/scripts/test-audio-tagging.sh
|
||||||
|
|
||||||
|
- name: Test spoken language identification (C++ API)
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline-language-identification
|
||||||
|
|
||||||
|
.github/scripts/test-spoken-language-identification.sh
|
||||||
|
|
||||||
|
- name: Test transducer kws
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-keyword-spotter
|
||||||
|
|
||||||
|
.github/scripts/test-kws.sh
|
||||||
|
|
||||||
|
- name: Test offline TTS
|
||||||
|
if: matrix.with_tts == 'ON'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline-tts
|
||||||
|
|
||||||
|
.github/scripts/test-offline-tts.sh
|
||||||
|
|
||||||
|
- name: Test online paraformer
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx
|
||||||
|
|
||||||
|
.github/scripts/test-online-paraformer.sh
|
||||||
|
|
||||||
|
- name: Test offline Whisper
|
||||||
|
if: matrix.build_type != 'Debug'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline
|
||||||
|
|
||||||
|
.github/scripts/test-offline-whisper.sh
|
||||||
|
|
||||||
|
- name: Test offline CTC
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx-offline
|
||||||
|
|
||||||
|
.github/scripts/test-offline-ctc.sh
|
||||||
|
|
||||||
|
- name: Test online transducer
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=sherpa-onnx
|
||||||
|
|
||||||
|
.github/scripts/test-online-transducer.sh
|
||||||
|
|
||||||
|
- name: Test online transducer (C API)
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH=$PWD/build/bin:$PATH
|
||||||
|
export EXE=decode-file-c-api
|
||||||
|
|
||||||
|
.github/scripts/test-online-transducer.sh
|
||||||
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
|||||||
|
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14" CACHE STRING "Minimum OS X deployment version. Used only for macOS")
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14" CACHE STRING "Minimum OS X deployment version. Used only for macOS")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
project(sherpa-onnx)
|
project(sherpa-onnx)
|
||||||
|
|
||||||
set(SHERPA_ONNX_VERSION "1.9.26")
|
set(SHERPA_ONNX_VERSION "1.9.26")
|
||||||
@@ -32,6 +34,7 @@ option(SHERPA_ONNX_ENABLE_BINARY "Whether to build binaries" ON)
|
|||||||
option(SHERPA_ONNX_ENABLE_TTS "Whether to build TTS related code" ON)
|
option(SHERPA_ONNX_ENABLE_TTS "Whether to build TTS related code" ON)
|
||||||
option(SHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY "True to link libstdc++ statically. Used only when BUILD_SHARED_LIBS is OFF on Linux" ON)
|
option(SHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY "True to link libstdc++ statically. Used only when BUILD_SHARED_LIBS is OFF on Linux" ON)
|
||||||
option(SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE "True to use pre-installed onnxruntime if available" ON)
|
option(SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE "True to use pre-installed onnxruntime if available" ON)
|
||||||
|
option(SHERPA_ONNX_ENABLE_SANITIZER "Whether to enable ubsan and asan" OFF)
|
||||||
|
|
||||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
||||||
@@ -121,6 +124,7 @@ message(STATUS "SHERPA_ONNX_ENABLE_BINARY ${SHERPA_ONNX_ENABLE_BINARY}")
|
|||||||
message(STATUS "SHERPA_ONNX_ENABLE_TTS ${SHERPA_ONNX_ENABLE_TTS}")
|
message(STATUS "SHERPA_ONNX_ENABLE_TTS ${SHERPA_ONNX_ENABLE_TTS}")
|
||||||
message(STATUS "SHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY ${SHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY}")
|
message(STATUS "SHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY ${SHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY}")
|
||||||
message(STATUS "SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE ${SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE}")
|
message(STATUS "SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE ${SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE}")
|
||||||
|
message(STATUS "SHERPA_ONNX_ENABLE_SANITIZER: ${SHERPA_ONNX_ENABLE_SANITIZER}")
|
||||||
|
|
||||||
if(SHERPA_ONNX_ENABLE_TTS)
|
if(SHERPA_ONNX_ENABLE_TTS)
|
||||||
message(STATUS "TTS is enabled")
|
message(STATUS "TTS is enabled")
|
||||||
@@ -267,6 +271,33 @@ if(SHERPA_ONNX_ENABLE_TTS)
|
|||||||
include(cppjieba) # For Chinese TTS. It is a header-only C++ library
|
include(cppjieba) # For Chinese TTS. It is a header-only C++ library
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# if(NOT MSVC AND CMAKE_BUILD_TYPE STREQUAL Debug AND (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
|
||||||
|
if(SHERPA_ONNX_ENABLE_SANITIZER)
|
||||||
|
message(WARNING "enable ubsan and asan")
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES -lubsan -lasan)
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
|
||||||
|
set(flags -fsanitize=undefined )
|
||||||
|
string(APPEND flags " -fno-sanitize-recover=undefined ")
|
||||||
|
string(APPEND flags " -fsanitize=integer ")
|
||||||
|
string(APPEND flags " -fsanitize=nullability ")
|
||||||
|
string(APPEND flags " -fsanitize=implicit-conversion ")
|
||||||
|
string(APPEND flags " -fsanitize=bounds ")
|
||||||
|
string(APPEND flags " -fsanitize=address ")
|
||||||
|
|
||||||
|
if(OFF)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flags} -Wall -Wextra")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flags} -Wall -Wextra")
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flags}")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flags}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_EXECUTBLE_LINKER_FLAGS "${CMAKE_EXECUTBLE_LINKER_FLAGS} ${flags}")
|
||||||
|
|
||||||
|
add_compile_options(-fno-omit-frame-pointer)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(sherpa-onnx)
|
add_subdirectory(sherpa-onnx)
|
||||||
|
|
||||||
if(SHERPA_ONNX_ENABLE_C_API AND SHERPA_ONNX_ENABLE_BINARY)
|
if(SHERPA_ONNX_ENABLE_C_API AND SHERPA_ONNX_ENABLE_BINARY)
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ int32_t main() {
|
|||||||
const char *texts[] = {
|
const char *texts[] = {
|
||||||
"这是一个测试你好吗How are you我很好thank you are you ok谢谢你",
|
"这是一个测试你好吗How are you我很好thank you are you ok谢谢你",
|
||||||
"我们都是木头人不会说话不会动",
|
"我们都是木头人不会说话不会动",
|
||||||
"The African blogosphere is rapidly expanding bringing more voices "
|
("The African blogosphere is rapidly expanding bringing more voices "
|
||||||
"online in the form of commentaries opinions analyses rants and poetry",
|
"online in the form of commentaries opinions analyses rants and poetry"),
|
||||||
};
|
};
|
||||||
|
|
||||||
int32_t n = sizeof(texts) / sizeof(const char *);
|
int32_t n = sizeof(texts) / sizeof(const char *);
|
||||||
|
|||||||
@@ -179,8 +179,6 @@ int32_t main(int32_t argc, char *argv[]) {
|
|||||||
|
|
||||||
#define N 3200 // 0.2 s. Sample rate is fixed to 16 kHz
|
#define N 3200 // 0.2 s. Sample rate is fixed to 16 kHz
|
||||||
|
|
||||||
int16_t buffer[N];
|
|
||||||
float samples[N];
|
|
||||||
fprintf(stderr, "sample rate: %d, num samples: %d, duration: %.2f s\n",
|
fprintf(stderr, "sample rate: %d, num samples: %d, duration: %.2f s\n",
|
||||||
wave->sample_rate, wave->num_samples,
|
wave->sample_rate, wave->num_samples,
|
||||||
(float)wave->num_samples / wave->sample_rate);
|
(float)wave->num_samples / wave->sample_rate);
|
||||||
|
|||||||
@@ -65,8 +65,6 @@ int32_t main() {
|
|||||||
// simulate streaming. You can choose an arbitrary N
|
// simulate streaming. You can choose an arbitrary N
|
||||||
#define N 3200
|
#define N 3200
|
||||||
|
|
||||||
int16_t buffer[N];
|
|
||||||
float samples[N];
|
|
||||||
fprintf(stderr, "sample rate: %d, num samples: %d, duration: %.2f s\n",
|
fprintf(stderr, "sample rate: %d, num samples: %d, duration: %.2f s\n",
|
||||||
wave->sample_rate, wave->num_samples,
|
wave->sample_rate, wave->num_samples,
|
||||||
(float)wave->num_samples / wave->sample_rate);
|
(float)wave->num_samples / wave->sample_rate);
|
||||||
|
|||||||
@@ -14,10 +14,7 @@ function(download_espeak_ng_for_piper)
|
|||||||
set(USE_SPEECHPLAYER OFF CACHE BOOL "" FORCE)
|
set(USE_SPEECHPLAYER OFF CACHE BOOL "" FORCE)
|
||||||
set(EXTRA_cmn ON CACHE BOOL "" FORCE)
|
set(EXTRA_cmn ON CACHE BOOL "" FORCE)
|
||||||
set(EXTRA_ru ON CACHE BOOL "" FORCE)
|
set(EXTRA_ru ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
if(SHERPA_ONNX_ENABLE_WASM)
|
|
||||||
set(BUILD_ESPEAK_NG_EXE OFF CACHE BOOL "" FORCE)
|
set(BUILD_ESPEAK_NG_EXE OFF CACHE BOOL "" FORCE)
|
||||||
endif()
|
|
||||||
|
|
||||||
# If you don't have access to the Internet,
|
# If you don't have access to the Internet,
|
||||||
# please pre-download kaldi-decoder
|
# please pre-download kaldi-decoder
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ const SherpaOnnxOnlineRecognizerResult *GetOnlineStreamResult(
|
|||||||
r->text = pText;
|
r->text = pText;
|
||||||
|
|
||||||
// copy json
|
// copy json
|
||||||
const auto &json = result.AsJsonString();
|
std::string json = result.AsJsonString();
|
||||||
char *pJson = new char[json.size() + 1];
|
char *pJson = new char[json.size() + 1];
|
||||||
std::copy(json.begin(), json.end(), pJson);
|
std::copy(json.begin(), json.end(), pJson);
|
||||||
pJson[json.size()] = 0;
|
pJson[json.size()] = 0;
|
||||||
@@ -445,7 +445,7 @@ const SherpaOnnxOfflineRecognizerResult *GetOfflineStreamResult(
|
|||||||
r->text = pText;
|
r->text = pText;
|
||||||
|
|
||||||
// copy json
|
// copy json
|
||||||
const auto &json = result.AsJsonString();
|
std::string json = result.AsJsonString();
|
||||||
char *pJson = new char[json.size() + 1];
|
char *pJson = new char[json.size() + 1];
|
||||||
std::copy(json.begin(), json.end(), pJson);
|
std::copy(json.begin(), json.end(), pJson);
|
||||||
pJson[json.size()] = 0;
|
pJson[json.size()] = 0;
|
||||||
@@ -643,7 +643,7 @@ const SherpaOnnxKeywordResult *GetKeywordResult(
|
|||||||
r->keyword = pKeyword;
|
r->keyword = pKeyword;
|
||||||
|
|
||||||
// copy json
|
// copy json
|
||||||
const auto &json = result.AsJsonString();
|
std::string json = result.AsJsonString();
|
||||||
char *pJson = new char[json.size() + 1];
|
char *pJson = new char[json.size() + 1];
|
||||||
std::copy(json.begin(), json.end(), pJson);
|
std::copy(json.begin(), json.end(), pJson);
|
||||||
pJson[json.size()] = 0;
|
pJson[json.size()] = 0;
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class AudioTaggingCEDImpl : public AudioTaggingImpl {
|
|||||||
std::vector<float> f = s->GetFrames();
|
std::vector<float> f = s->GetFrames();
|
||||||
|
|
||||||
int32_t num_frames = f.size() / feat_dim;
|
int32_t num_frames = f.size() / feat_dim;
|
||||||
assert(feat_dim * num_frames == f.size());
|
assert(feat_dim * num_frames == static_cast<int32_t>(f.size()));
|
||||||
|
|
||||||
std::array<int64_t, 3> shape = {1, num_frames, feat_dim};
|
std::array<int64_t, 3> shape = {1, num_frames, feat_dim};
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void AudioTaggingLabels::Init(std::istream &is) {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i != names_.size()) {
|
if (i != static_cast<int32_t>(names_.size())) {
|
||||||
SHERPA_ONNX_LOGE(
|
SHERPA_ONNX_LOGE(
|
||||||
"Index should be sorted and contiguous. Expected index: %d, given: "
|
"Index should be sorted and contiguous. Expected index: %d, given: "
|
||||||
"%d.",
|
"%d.",
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class AudioTaggingZipformerImpl : public AudioTaggingImpl {
|
|||||||
|
|
||||||
int32_t num_frames = f.size() / feat_dim;
|
int32_t num_frames = f.size() / feat_dim;
|
||||||
|
|
||||||
assert(feat_dim * num_frames == f.size());
|
assert(feat_dim * num_frames == static_cast<int32_t>(f.size()));
|
||||||
|
|
||||||
std::array<int64_t, 3> shape = {1, num_frames, feat_dim};
|
std::array<int64_t, 3> shape = {1, num_frames, feat_dim};
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ Ort::Value Cat(OrtAllocator *allocator,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::move(ans);
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
template Ort::Value Cat<float>(OrtAllocator *allocator,
|
template Ort::Value Cat<float>(OrtAllocator *allocator,
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ void CircularBuffer::Resize(int32_t new_capacity) {
|
|||||||
new_buffer.begin() + dest);
|
new_buffer.begin() + dest);
|
||||||
} else {
|
} else {
|
||||||
int32_t first_part = new_capacity - dest;
|
int32_t first_part = new_capacity - dest;
|
||||||
int32_t second_part = part1_size - first_part;
|
|
||||||
std::copy(buffer_.begin() + start, buffer_.begin() + start + first_part,
|
std::copy(buffer_.begin() + start, buffer_.begin() + start + first_part,
|
||||||
new_buffer.begin() + dest);
|
new_buffer.begin() + dest);
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ void ContextGraph::Build(const std::vector<std::vector<int32_t>> &token_ids,
|
|||||||
if (!ac_thresholds.empty()) {
|
if (!ac_thresholds.empty()) {
|
||||||
SHERPA_ONNX_CHECK_EQ(token_ids.size(), ac_thresholds.size());
|
SHERPA_ONNX_CHECK_EQ(token_ids.size(), ac_thresholds.size());
|
||||||
}
|
}
|
||||||
for (int32_t i = 0; i < token_ids.size(); ++i) {
|
for (int32_t i = 0; i < static_cast<int32_t>(token_ids.size()); ++i) {
|
||||||
auto node = root_.get();
|
auto node = root_.get();
|
||||||
float score = scores.empty() ? 0.0f : scores[i];
|
float score = scores.empty() ? 0.0f : scores[i];
|
||||||
score = score == 0.0f ? context_score_ : score;
|
score = score == 0.0f ? context_score_ : score;
|
||||||
@@ -35,10 +35,10 @@ void ContextGraph::Build(const std::vector<std::vector<int32_t>> &token_ids,
|
|||||||
ac_threshold = ac_threshold == 0.0f ? ac_threshold_ : ac_threshold;
|
ac_threshold = ac_threshold == 0.0f ? ac_threshold_ : ac_threshold;
|
||||||
std::string phrase = phrases.empty() ? std::string() : phrases[i];
|
std::string phrase = phrases.empty() ? std::string() : phrases[i];
|
||||||
|
|
||||||
for (int32_t j = 0; j < token_ids[i].size(); ++j) {
|
for (int32_t j = 0; j < static_cast<int32_t>(token_ids[i].size()); ++j) {
|
||||||
int32_t token = token_ids[i][j];
|
int32_t token = token_ids[i][j];
|
||||||
if (0 == node->next.count(token)) {
|
if (0 == node->next.count(token)) {
|
||||||
bool is_end = j == token_ids[i].size() - 1;
|
bool is_end = j == (static_cast<int32_t>(token_ids[i].size()) - 1);
|
||||||
node->next[token] = std::make_unique<ContextState>(
|
node->next[token] = std::make_unique<ContextState>(
|
||||||
token, score, node->node_score + score,
|
token, score, node->node_score + score,
|
||||||
is_end ? node->node_score + score : 0, j + 1,
|
is_end ? node->node_score + score : 0, j + 1,
|
||||||
@@ -49,11 +49,11 @@ void ContextGraph::Build(const std::vector<std::vector<int32_t>> &token_ids,
|
|||||||
node->next[token]->token_score = token_score;
|
node->next[token]->token_score = token_score;
|
||||||
float node_score = node->node_score + token_score;
|
float node_score = node->node_score + token_score;
|
||||||
node->next[token]->node_score = node_score;
|
node->next[token]->node_score = node_score;
|
||||||
bool is_end =
|
bool is_end = (j == static_cast<int32_t>(token_ids[i].size()) - 1) ||
|
||||||
(j == token_ids[i].size() - 1) || node->next[token]->is_end;
|
node->next[token]->is_end;
|
||||||
node->next[token]->output_score = is_end ? node_score : 0.0f;
|
node->next[token]->output_score = is_end ? node_score : 0.0f;
|
||||||
node->next[token]->is_end = is_end;
|
node->next[token]->is_end = is_end;
|
||||||
if (j == token_ids[i].size() - 1) {
|
if (j == static_cast<int32_t>(token_ids[i].size()) - 1) {
|
||||||
node->next[token]->phrase = phrase;
|
node->next[token]->phrase = phrase;
|
||||||
node->next[token]->ac_threshold = ac_threshold;
|
node->next[token]->ac_threshold = ac_threshold;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,8 +129,8 @@ class Hypotheses {
|
|||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto begin() const { return hyps_dict_.begin(); }
|
auto begin() const { return hyps_dict_.begin(); }
|
||||||
const auto end() const { return hyps_dict_.end(); }
|
auto end() const { return hyps_dict_.end(); }
|
||||||
|
|
||||||
auto begin() { return hyps_dict_.begin(); }
|
auto begin() { return hyps_dict_.begin(); }
|
||||||
auto end() { return hyps_dict_.end(); }
|
auto end() { return hyps_dict_.end(); }
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ JiebaLexicon::JiebaLexicon(const std::string &lexicon,
|
|||||||
debug)) {}
|
debug)) {}
|
||||||
|
|
||||||
std::vector<std::vector<int64_t>> JiebaLexicon::ConvertTextToTokenIds(
|
std::vector<std::vector<int64_t>> JiebaLexicon::ConvertTextToTokenIds(
|
||||||
const std::string &text, const std::string &unused_voice /*= ""*/) const {
|
const std::string &text, const std::string & /*unused_voice = ""*/) const {
|
||||||
return impl_->ConvertTextToTokenIds(text);
|
return impl_->ConvertTextToTokenIds(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class OfflineCtTransformerModel::Impl {
|
|||||||
|
|
||||||
int32_t vocab_size;
|
int32_t vocab_size;
|
||||||
SHERPA_ONNX_READ_META_DATA(vocab_size, "vocab_size");
|
SHERPA_ONNX_READ_META_DATA(vocab_size, "vocab_size");
|
||||||
if (tokens.size() != vocab_size) {
|
if (static_cast<int32_t>(tokens.size()) != vocab_size) {
|
||||||
SHERPA_ONNX_LOGE("tokens.size() %d != vocab_size %d",
|
SHERPA_ONNX_LOGE("tokens.size() %d != vocab_size %d",
|
||||||
static_cast<int32_t>(tokens.size()), vocab_size);
|
static_cast<int32_t>(tokens.size()), vocab_size);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class OfflinePunctuationCtTransformerImpl : public OfflinePunctuationImpl {
|
|||||||
for (int32_t i = 0; i != num_segments; ++i) {
|
for (int32_t i = 0; i != num_segments; ++i) {
|
||||||
int32_t this_start = i * segment_size; // inclusive
|
int32_t this_start = i * segment_size; // inclusive
|
||||||
int32_t this_end = this_start + segment_size; // exclusive
|
int32_t this_end = this_start + segment_size; // exclusive
|
||||||
if (this_end > token_ids.size()) {
|
if (this_end > static_cast<int32_t>(token_ids.size())) {
|
||||||
this_end = token_ids.size();
|
this_end = token_ids.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ class OfflinePunctuationCtTransformerImpl : public OfflinePunctuationImpl {
|
|||||||
std::vector<std::string> words_punct;
|
std::vector<std::string> words_punct;
|
||||||
|
|
||||||
for (int32_t i = 0; i != static_cast<int32_t>(punctuations.size()); ++i) {
|
for (int32_t i = 0; i != static_cast<int32_t>(punctuations.size()); ++i) {
|
||||||
if (i >= tokens.size()) {
|
if (i >= static_cast<int32_t>(tokens.size())) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
std::string &w = tokens[i];
|
std::string &w = tokens[i];
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ OfflineTtsCharacterFrontend::OfflineTtsCharacterFrontend(
|
|||||||
|
|
||||||
std::vector<std::vector<int64_t>>
|
std::vector<std::vector<int64_t>>
|
||||||
OfflineTtsCharacterFrontend::ConvertTextToTokenIds(
|
OfflineTtsCharacterFrontend::ConvertTextToTokenIds(
|
||||||
const std::string &_text, const std::string &voice /*= ""*/) const {
|
const std::string &_text, const std::string & /*voice = ""*/) const {
|
||||||
// see
|
// see
|
||||||
// https://github.com/coqui-ai/TTS/blob/dev/TTS/tts/utils/text/tokenizer.py#L87
|
// https://github.com/coqui-ai/TTS/blob/dev/TTS/tts/utils/text/tokenizer.py#L87
|
||||||
int32_t use_eos_bos = meta_data_.use_eos_bos;
|
int32_t use_eos_bos = meta_data_.use_eos_bos;
|
||||||
@@ -151,7 +151,7 @@ OfflineTtsCharacterFrontend::ConvertTextToTokenIds(
|
|||||||
this_sentence.push_back(eos_id);
|
this_sentence.push_back(eos_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this_sentence.size() > 1 + use_eos_bos) {
|
if (static_cast<int32_t>(this_sentence.size()) > 1 + use_eos_bos) {
|
||||||
ans.push_back(std::move(this_sentence));
|
ans.push_back(std::move(this_sentence));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ class OfflineTtsVitsImpl : public OfflineTtsImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
batch.clear();
|
batch.clear();
|
||||||
while (k < x.size()) {
|
while (k < static_cast<int32_t>(x.size())) {
|
||||||
batch.push_back(std::move(x[k]));
|
batch.push_back(std::move(x[k]));
|
||||||
++k;
|
++k;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,8 +91,8 @@ struct OnlineRecognizerConfig {
|
|||||||
int32_t max_active_paths = 4;
|
int32_t max_active_paths = 4;
|
||||||
|
|
||||||
/// used only for modified_beam_search
|
/// used only for modified_beam_search
|
||||||
float hotwords_score = 1.5;
|
|
||||||
std::string hotwords_file;
|
std::string hotwords_file;
|
||||||
|
float hotwords_score = 1.5;
|
||||||
|
|
||||||
float blank_penalty = 0.0;
|
float blank_penalty = 0.0;
|
||||||
|
|
||||||
@@ -102,17 +102,12 @@ struct OnlineRecognizerConfig {
|
|||||||
|
|
||||||
OnlineRecognizerConfig(
|
OnlineRecognizerConfig(
|
||||||
const FeatureExtractorConfig &feat_config,
|
const FeatureExtractorConfig &feat_config,
|
||||||
const OnlineModelConfig &model_config,
|
const OnlineModelConfig &model_config, const OnlineLMConfig &lm_config,
|
||||||
const OnlineLMConfig &lm_config,
|
|
||||||
const EndpointConfig &endpoint_config,
|
const EndpointConfig &endpoint_config,
|
||||||
const OnlineCtcFstDecoderConfig &ctc_fst_decoder_config,
|
const OnlineCtcFstDecoderConfig &ctc_fst_decoder_config,
|
||||||
bool enable_endpoint,
|
bool enable_endpoint, const std::string &decoding_method,
|
||||||
const std::string &decoding_method,
|
int32_t max_active_paths, const std::string &hotwords_file,
|
||||||
int32_t max_active_paths,
|
float hotwords_score, float blank_penalty, float temperature_scale)
|
||||||
const std::string &hotwords_file,
|
|
||||||
float hotwords_score,
|
|
||||||
float blank_penalty,
|
|
||||||
float temperature_scale)
|
|
||||||
: feat_config(feat_config),
|
: feat_config(feat_config),
|
||||||
model_config(model_config),
|
model_config(model_config),
|
||||||
lm_config(lm_config),
|
lm_config(lm_config),
|
||||||
|
|||||||
@@ -95,15 +95,15 @@ class OnlineTransducerDecoder {
|
|||||||
* online decoding case, each utterance has the same number of frames
|
* online decoding case, each utterance has the same number of frames
|
||||||
* and there are no paddings.
|
* and there are no paddings.
|
||||||
*/
|
*/
|
||||||
virtual void Decode(Ort::Value encoder_out, OnlineStream **ss,
|
virtual void Decode(Ort::Value /*encoder_out*/, OnlineStream ** /*ss*/,
|
||||||
std::vector<OnlineTransducerDecoderResult> *result) {
|
std::vector<OnlineTransducerDecoderResult> * /*result*/) {
|
||||||
SHERPA_ONNX_LOGE(
|
SHERPA_ONNX_LOGE(
|
||||||
"This interface is for OnlineTransducerModifiedBeamSearchDecoder.");
|
"This interface is for OnlineTransducerModifiedBeamSearchDecoder.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// used for endpointing. We need to keep decoder_out after reset
|
// used for endpointing. We need to keep decoder_out after reset
|
||||||
virtual void UpdateDecoderOut(OnlineTransducerDecoderResult *result) {}
|
virtual void UpdateDecoderOut(OnlineTransducerDecoderResult * /*result*/) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace sherpa_onnx
|
} // namespace sherpa_onnx
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ void OnlineTransducerGreedySearchDecoder::Decode(
|
|||||||
std::vector<int64_t> encoder_out_shape =
|
std::vector<int64_t> encoder_out_shape =
|
||||||
encoder_out.GetTensorTypeAndShapeInfo().GetShape();
|
encoder_out.GetTensorTypeAndShapeInfo().GetShape();
|
||||||
|
|
||||||
if (encoder_out_shape[0] != result->size()) {
|
if (encoder_out_shape[0] != static_cast<int32_t>(result->size())) {
|
||||||
SHERPA_ONNX_LOGE(
|
SHERPA_ONNX_LOGE(
|
||||||
"Size mismatch! encoder_out.size(0) %d, result.size(0): %d",
|
"Size mismatch! encoder_out.size(0) %d, result.size(0): %d",
|
||||||
static_cast<int32_t>(encoder_out_shape[0]),
|
static_cast<int32_t>(encoder_out_shape[0]),
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class OnlineTransducerModel {
|
|||||||
* This has to be called before GetEncoderInitStates(), so the `encoder_embed`
|
* This has to be called before GetEncoderInitStates(), so the `encoder_embed`
|
||||||
* init state has the correct `embed_dim` of its output.
|
* init state has the correct `embed_dim` of its output.
|
||||||
*/
|
*/
|
||||||
virtual void SetFeatureDim(int32_t feature_dim) {}
|
virtual void SetFeatureDim(int32_t /*feature_dim*/) {}
|
||||||
|
|
||||||
/** Run the encoder.
|
/** Run the encoder.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace sherpa_onnx {
|
|||||||
static void UseCachedDecoderOut(
|
static void UseCachedDecoderOut(
|
||||||
const std::vector<int32_t> &hyps_row_splits,
|
const std::vector<int32_t> &hyps_row_splits,
|
||||||
const std::vector<OnlineTransducerDecoderResult> &results,
|
const std::vector<OnlineTransducerDecoderResult> &results,
|
||||||
int32_t context_size, Ort::Value *decoder_out) {
|
Ort::Value *decoder_out) {
|
||||||
std::vector<int64_t> shape =
|
std::vector<int64_t> shape =
|
||||||
decoder_out->GetTensorTypeAndShapeInfo().GetShape();
|
decoder_out->GetTensorTypeAndShapeInfo().GetShape();
|
||||||
|
|
||||||
@@ -80,7 +80,8 @@ void OnlineTransducerModifiedBeamSearchDecoder::Decode(
|
|||||||
std::vector<int64_t> encoder_out_shape =
|
std::vector<int64_t> encoder_out_shape =
|
||||||
encoder_out.GetTensorTypeAndShapeInfo().GetShape();
|
encoder_out.GetTensorTypeAndShapeInfo().GetShape();
|
||||||
|
|
||||||
if (encoder_out_shape[0] != result->size()) {
|
if (static_cast<int32_t>(encoder_out_shape[0]) !=
|
||||||
|
static_cast<int32_t>(result->size())) {
|
||||||
SHERPA_ONNX_LOGE(
|
SHERPA_ONNX_LOGE(
|
||||||
"Size mismatch! encoder_out.size(0) %d, result.size(0): %d\n",
|
"Size mismatch! encoder_out.size(0) %d, result.size(0): %d\n",
|
||||||
static_cast<int32_t>(encoder_out_shape[0]),
|
static_cast<int32_t>(encoder_out_shape[0]),
|
||||||
@@ -117,8 +118,7 @@ void OnlineTransducerModifiedBeamSearchDecoder::Decode(
|
|||||||
Ort::Value decoder_input = model_->BuildDecoderInput(prev);
|
Ort::Value decoder_input = model_->BuildDecoderInput(prev);
|
||||||
Ort::Value decoder_out = model_->RunDecoder(std::move(decoder_input));
|
Ort::Value decoder_out = model_->RunDecoder(std::move(decoder_input));
|
||||||
if (t == 0) {
|
if (t == 0) {
|
||||||
UseCachedDecoderOut(hyps_row_splits, *result, model_->ContextSize(),
|
UseCachedDecoderOut(hyps_row_splits, *result, &decoder_out);
|
||||||
&decoder_out);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ort::Value cur_encoder_out =
|
Ort::Value cur_encoder_out =
|
||||||
@@ -136,8 +136,7 @@ void OnlineTransducerModifiedBeamSearchDecoder::Decode(
|
|||||||
int32_t p_logit_items = vocab_size * num_hyps;
|
int32_t p_logit_items = vocab_size * num_hyps;
|
||||||
std::vector<float> logit_with_temperature(p_logit_items);
|
std::vector<float> logit_with_temperature(p_logit_items);
|
||||||
{
|
{
|
||||||
std::copy(p_logit,
|
std::copy(p_logit, p_logit + p_logit_items,
|
||||||
p_logit + p_logit_items,
|
|
||||||
logit_with_temperature.begin());
|
logit_with_temperature.begin());
|
||||||
for (float &elem : logit_with_temperature) {
|
for (float &elem : logit_with_temperature) {
|
||||||
elem /= temperature_scale_;
|
elem /= temperature_scale_;
|
||||||
@@ -242,7 +241,7 @@ void OnlineTransducerModifiedBeamSearchDecoder::Decode(
|
|||||||
|
|
||||||
void OnlineTransducerModifiedBeamSearchDecoder::UpdateDecoderOut(
|
void OnlineTransducerModifiedBeamSearchDecoder::UpdateDecoderOut(
|
||||||
OnlineTransducerDecoderResult *result) {
|
OnlineTransducerDecoderResult *result) {
|
||||||
if (result->tokens.size() == model_->ContextSize()) {
|
if (static_cast<int32_t>(result->tokens.size()) == model_->ContextSize()) {
|
||||||
result->decoder_out = Ort::Value{nullptr};
|
result->decoder_out = Ort::Value{nullptr};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class Client {
|
|||||||
c_.init_asio(&io_);
|
c_.init_asio(&io_);
|
||||||
c_.set_open_handler([this](connection_hdl hdl) { OnOpen(hdl); });
|
c_.set_open_handler([this](connection_hdl hdl) { OnOpen(hdl); });
|
||||||
c_.set_close_handler(
|
c_.set_close_handler(
|
||||||
[this](connection_hdl /*hdl*/) { SHERPA_ONNX_LOGE("Disconnected"); });
|
[](connection_hdl /*hdl*/) { SHERPA_ONNX_LOGE("Disconnected"); });
|
||||||
c_.set_message_handler(
|
c_.set_message_handler(
|
||||||
[this](connection_hdl hdl, message_ptr msg) { OnMessage(hdl, msg); });
|
[this](connection_hdl hdl, message_ptr msg) { OnMessage(hdl, msg); });
|
||||||
|
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ namespace sherpa_onnx {
|
|||||||
OnlineZipformer2TransducerModel::OnlineZipformer2TransducerModel(
|
OnlineZipformer2TransducerModel::OnlineZipformer2TransducerModel(
|
||||||
const OnlineModelConfig &config)
|
const OnlineModelConfig &config)
|
||||||
: env_(ORT_LOGGING_LEVEL_WARNING),
|
: env_(ORT_LOGGING_LEVEL_WARNING),
|
||||||
config_(config),
|
|
||||||
sess_opts_(GetSessionOptions(config)),
|
sess_opts_(GetSessionOptions(config)),
|
||||||
|
config_(config),
|
||||||
allocator_{} {
|
allocator_{} {
|
||||||
{
|
{
|
||||||
auto buf = ReadFile(config.transducer.encoder);
|
auto buf = ReadFile(config.transducer.encoder);
|
||||||
@@ -179,7 +179,6 @@ void OnlineZipformer2TransducerModel::InitJoiner(void *model_data,
|
|||||||
std::vector<Ort::Value> OnlineZipformer2TransducerModel::StackStates(
|
std::vector<Ort::Value> OnlineZipformer2TransducerModel::StackStates(
|
||||||
const std::vector<std::vector<Ort::Value>> &states) const {
|
const std::vector<std::vector<Ort::Value>> &states) const {
|
||||||
int32_t batch_size = static_cast<int32_t>(states.size());
|
int32_t batch_size = static_cast<int32_t>(states.size());
|
||||||
int32_t num_encoders = static_cast<int32_t>(num_encoder_layers_.size());
|
|
||||||
|
|
||||||
std::vector<const Ort::Value *> buf(batch_size);
|
std::vector<const Ort::Value *> buf(batch_size);
|
||||||
|
|
||||||
@@ -255,10 +254,9 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
const std::vector<Ort::Value> &states) const {
|
const std::vector<Ort::Value> &states) const {
|
||||||
int32_t m = std::accumulate(num_encoder_layers_.begin(),
|
int32_t m = std::accumulate(num_encoder_layers_.begin(),
|
||||||
num_encoder_layers_.end(), 0);
|
num_encoder_layers_.end(), 0);
|
||||||
assert(states.size() == m * 6 + 2);
|
assert(static_cast<int32_t>(states.size()) == m * 6 + 2);
|
||||||
|
|
||||||
int32_t batch_size = states[0].GetTensorTypeAndShapeInfo().GetShape()[1];
|
int32_t batch_size = states[0].GetTensorTypeAndShapeInfo().GetShape()[1];
|
||||||
int32_t num_encoders = num_encoder_layers_.size();
|
|
||||||
|
|
||||||
std::vector<std::vector<Ort::Value>> ans;
|
std::vector<std::vector<Ort::Value>> ans;
|
||||||
ans.resize(batch_size);
|
ans.resize(batch_size);
|
||||||
@@ -266,7 +264,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
for (int32_t i = 0; i != m; ++i) {
|
for (int32_t i = 0; i != m; ++i) {
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[i * 6], 1);
|
auto v = Unbind(allocator_, &states[i * 6], 1);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -274,7 +272,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[i * 6 + 1], 1);
|
auto v = Unbind(allocator_, &states[i * 6 + 1], 1);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -282,7 +280,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[i * 6 + 2], 1);
|
auto v = Unbind(allocator_, &states[i * 6 + 2], 1);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -290,7 +288,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[i * 6 + 3], 1);
|
auto v = Unbind(allocator_, &states[i * 6 + 3], 1);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -298,7 +296,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[i * 6 + 4], 0);
|
auto v = Unbind(allocator_, &states[i * 6 + 4], 0);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -306,7 +304,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[i * 6 + 5], 0);
|
auto v = Unbind(allocator_, &states[i * 6 + 5], 0);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -316,7 +314,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
|
|
||||||
{
|
{
|
||||||
auto v = Unbind(allocator_, &states[m * 6], 0);
|
auto v = Unbind(allocator_, &states[m * 6], 0);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
@@ -324,7 +322,7 @@ OnlineZipformer2TransducerModel::UnStackStates(
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto v = Unbind<int64_t>(allocator_, &states[m * 6 + 1], 0);
|
auto v = Unbind<int64_t>(allocator_, &states[m * 6 + 1], 0);
|
||||||
assert(v.size() == batch_size);
|
assert(static_cast<int32_t>(v.size()) == batch_size);
|
||||||
|
|
||||||
for (int32_t n = 0; n != batch_size; ++n) {
|
for (int32_t n = 0; n != batch_size; ++n) {
|
||||||
ans[n].push_back(std::move(v[n]));
|
ans[n].push_back(std::move(v[n]));
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ static bool MustBeQuoted(const std::string &str, ShellType st) {
|
|||||||
// Our aim is to print out the command line in such a way that if it's
|
// Our aim is to print out the command line in such a way that if it's
|
||||||
// pasted into a shell of ShellType "st" (only bash for now), it
|
// pasted into a shell of ShellType "st" (only bash for now), it
|
||||||
// will get passed to the program in the same way.
|
// will get passed to the program in the same way.
|
||||||
static std::string QuoteAndEscape(const std::string &str, ShellType st) {
|
static std::string QuoteAndEscape(const std::string &str, ShellType /*st*/) {
|
||||||
// Only Bash is supported (for the moment).
|
// Only Bash is supported (for the moment).
|
||||||
SHERPA_ONNX_CHECK_EQ(st, kBash) << "Invalid shell type.";
|
SHERPA_ONNX_CHECK_EQ(st, kBash) << "Invalid shell type.";
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
return stop ? paComplete : paContinue;
|
return stop ? paComplete : paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Handler(int32_t sig) {
|
static void Handler(int32_t /*sig*/) {
|
||||||
stop = true;
|
stop = true;
|
||||||
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
||||||
}
|
}
|
||||||
@@ -124,8 +124,6 @@ for a list of pre-trained models to download.
|
|||||||
mic_sample_rate = atof(pSampleRateStr);
|
mic_sample_rate = atof(pSampleRateStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
float sample_rate = 16000;
|
|
||||||
|
|
||||||
PaStream *stream;
|
PaStream *stream;
|
||||||
PaError err =
|
PaError err =
|
||||||
Pa_OpenStream(&stream, ¶m, nullptr, /* &outputParameters, */
|
Pa_OpenStream(&stream, ¶m, nullptr, /* &outputParameters, */
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
unsigned long frames_per_buffer, // NOLINT
|
unsigned long frames_per_buffer, // NOLINT
|
||||||
const PaStreamCallbackTimeInfo * /*time_info*/,
|
const PaStreamCallbackTimeInfo * /*time_info*/,
|
||||||
PaStreamCallbackFlags /*status_flags*/,
|
PaStreamCallbackFlags /*status_flags*/,
|
||||||
void *user_data) {
|
void * /*user_data*/) {
|
||||||
std::lock_guard<std::mutex> lock(samples_mutex);
|
std::lock_guard<std::mutex> lock(samples_mutex);
|
||||||
|
|
||||||
auto p = reinterpret_cast<const float *>(input_buffer);
|
auto p = reinterpret_cast<const float *>(input_buffer);
|
||||||
@@ -71,7 +71,7 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
return stop ? paComplete : paContinue;
|
return stop ? paComplete : paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Handler(int32_t sig) {
|
static void Handler(int32_t /*sig*/) {
|
||||||
stop = true;
|
stop = true;
|
||||||
fprintf(stderr, "\nCaught Ctrl + C. Press Enter to exit\n");
|
fprintf(stderr, "\nCaught Ctrl + C. Press Enter to exit\n");
|
||||||
}
|
}
|
||||||
@@ -165,8 +165,6 @@ for more models.
|
|||||||
mic_sample_rate = atof(pSampleRateStr);
|
mic_sample_rate = atof(pSampleRateStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
float sample_rate = 16000;
|
|
||||||
|
|
||||||
PaStream *stream;
|
PaStream *stream;
|
||||||
PaError err =
|
PaError err =
|
||||||
Pa_OpenStream(&stream, ¶m, nullptr, /* &outputParameters, */
|
Pa_OpenStream(&stream, ¶m, nullptr, /* &outputParameters, */
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
unsigned long frames_per_buffer, // NOLINT
|
unsigned long frames_per_buffer, // NOLINT
|
||||||
const PaStreamCallbackTimeInfo * /*time_info*/,
|
const PaStreamCallbackTimeInfo * /*time_info*/,
|
||||||
PaStreamCallbackFlags /*status_flags*/,
|
PaStreamCallbackFlags /*status_flags*/,
|
||||||
void *user_data) {
|
void * /*user_data*/) {
|
||||||
std::lock_guard<std::mutex> lock(samples_mutex);
|
std::lock_guard<std::mutex> lock(samples_mutex);
|
||||||
|
|
||||||
auto p = reinterpret_cast<const float *>(input_buffer);
|
auto p = reinterpret_cast<const float *>(input_buffer);
|
||||||
@@ -71,7 +71,7 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
return stop ? paComplete : paContinue;
|
return stop ? paComplete : paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Handler(int32_t sig) {
|
static void Handler(int32_t /*sig*/) {
|
||||||
stop = true;
|
stop = true;
|
||||||
fprintf(stderr, "\nCaught Ctrl + C. Press Enter to exit\n");
|
fprintf(stderr, "\nCaught Ctrl + C. Press Enter to exit\n");
|
||||||
}
|
}
|
||||||
@@ -180,7 +180,6 @@ for a list of pre-trained models to download.
|
|||||||
fprintf(stderr, "Use sample rate %f for mic\n", mic_sample_rate);
|
fprintf(stderr, "Use sample rate %f for mic\n", mic_sample_rate);
|
||||||
mic_sample_rate = atof(pSampleRateStr);
|
mic_sample_rate = atof(pSampleRateStr);
|
||||||
}
|
}
|
||||||
float sample_rate = 16000;
|
|
||||||
|
|
||||||
PaStream *stream;
|
PaStream *stream;
|
||||||
PaError err =
|
PaError err =
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
return stop ? paComplete : paContinue;
|
return stop ? paComplete : paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Handler(int32_t sig) {
|
static void Handler(int32_t /*sig*/) {
|
||||||
stop = true;
|
stop = true;
|
||||||
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ void AsrInference(const std::vector<std::vector<std::string>> &chunk_wav_paths,
|
|||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int chunk = wav_index.fetch_add(1);
|
int chunk = wav_index.fetch_add(1);
|
||||||
if (chunk >= chunk_wav_paths.size()) {
|
if (chunk >= static_cast<int32_t>(chunk_wav_paths.size())) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
const auto &wav_paths = chunk_wav_paths[chunk];
|
const auto &wav_paths = chunk_wav_paths[chunk];
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ static int PlayCallback(const void * /*in*/, void *out,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t k = 0;
|
int32_t k = 0;
|
||||||
for (; k < n && !g_buffer.samples.empty();) {
|
for (; k < static_cast<int32_t>(n) && !g_buffer.samples.empty();) {
|
||||||
int32_t this_block = n - k;
|
int32_t this_block = n - k;
|
||||||
|
|
||||||
auto &p = g_buffer.samples.front();
|
auto &p = g_buffer.samples.front();
|
||||||
@@ -99,7 +99,7 @@ static int PlayCallback(const void * /*in*/, void *out,
|
|||||||
|
|
||||||
k = n;
|
k = n;
|
||||||
|
|
||||||
if (p.consumed == p.data.size()) {
|
if (p.consumed == static_cast<int32_t>(p.data.size())) {
|
||||||
g_buffer.samples.pop();
|
g_buffer.samples.pop();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -110,7 +110,7 @@ static int PlayCallback(const void * /*in*/, void *out,
|
|||||||
g_buffer.samples.pop();
|
g_buffer.samples.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (k < n) {
|
if (k < static_cast<int32_t>(n)) {
|
||||||
std::fill_n(pout + k, n - k, 0);
|
std::fill_n(pout + k, n - k, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ static int PlayCallback(const void * /*in*/, void *out,
|
|||||||
return paContinue;
|
return paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PlayCallbackFinished(void *userData) { g_cv.notify_all(); }
|
static void PlayCallbackFinished(void * /*userData*/) { g_cv.notify_all(); }
|
||||||
|
|
||||||
static void StartPlayback(int32_t sample_rate) {
|
static void StartPlayback(int32_t sample_rate) {
|
||||||
int32_t frames_per_buffer = 1024;
|
int32_t frames_per_buffer = 1024;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#include "sherpa-onnx/csrc/parse-options.h"
|
#include "sherpa-onnx/csrc/parse-options.h"
|
||||||
#include "sherpa-onnx/csrc/wave-writer.h"
|
#include "sherpa-onnx/csrc/wave-writer.h"
|
||||||
|
|
||||||
void audioCallback(const float *samples, int32_t n, float progress) {
|
void audioCallback(const float * /*samples*/, int32_t n, float progress) {
|
||||||
printf("sample=%d, progress=%f\n", n, progress);
|
printf("sample=%d, progress=%f\n", n, progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
unsigned long frames_per_buffer, // NOLINT
|
unsigned long frames_per_buffer, // NOLINT
|
||||||
const PaStreamCallbackTimeInfo * /*time_info*/,
|
const PaStreamCallbackTimeInfo * /*time_info*/,
|
||||||
PaStreamCallbackFlags /*status_flags*/,
|
PaStreamCallbackFlags /*status_flags*/,
|
||||||
void *user_data) {
|
void * /*user_data*/) {
|
||||||
std::lock_guard<std::mutex> lock(mutex);
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
buffer.Push(reinterpret_cast<const float *>(input_buffer), frames_per_buffer);
|
buffer.Push(reinterpret_cast<const float *>(input_buffer), frames_per_buffer);
|
||||||
|
|
||||||
return stop ? paComplete : paContinue;
|
return stop ? paComplete : paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Handler(int32_t sig) {
|
static void Handler(int32_t /*sig*/) {
|
||||||
stop = true;
|
stop = true;
|
||||||
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ static int32_t RecordCallback(const void *input_buffer,
|
|||||||
unsigned long frames_per_buffer, // NOLINT
|
unsigned long frames_per_buffer, // NOLINT
|
||||||
const PaStreamCallbackTimeInfo * /*time_info*/,
|
const PaStreamCallbackTimeInfo * /*time_info*/,
|
||||||
PaStreamCallbackFlags /*status_flags*/,
|
PaStreamCallbackFlags /*status_flags*/,
|
||||||
void *user_data) {
|
void * /*user_data*/) {
|
||||||
std::lock_guard<std::mutex> lock(mutex);
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
buffer.Push(reinterpret_cast<const float *>(input_buffer), frames_per_buffer);
|
buffer.Push(reinterpret_cast<const float *>(input_buffer), frames_per_buffer);
|
||||||
|
|
||||||
return stop ? paComplete : paContinue;
|
return stop ? paComplete : paContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Handler(int32_t sig) {
|
static void Handler(int32_t /*sig*/) {
|
||||||
stop = true;
|
stop = true;
|
||||||
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
fprintf(stderr, "\nCaught Ctrl + C. Exiting...\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ Ort::Value Slice(OrtAllocator *allocator, const Ort::Value *v,
|
|||||||
assert(dim1_start < dim1_end);
|
assert(dim1_start < dim1_end);
|
||||||
assert(dim1_end <= shape[1]);
|
assert(dim1_end <= shape[1]);
|
||||||
|
|
||||||
const T *src = v->GetTensorData<T>();
|
|
||||||
|
|
||||||
std::array<int64_t, 3> ans_shape{dim0_end - dim0_start, dim1_end - dim1_start,
|
std::array<int64_t, 3> ans_shape{dim0_end - dim0_start, dim1_end - dim1_start,
|
||||||
shape[2]};
|
shape[2]};
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class SpeakerEmbeddingManager::Impl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const auto &x : embedding_list) {
|
for (const auto &x : embedding_list) {
|
||||||
if (x.size() != dim_) {
|
if (static_cast<int32_t>(x.size()) != dim_) {
|
||||||
SHERPA_ONNX_LOGE("Given dim: %d, expected dim: %d",
|
SHERPA_ONNX_LOGE("Given dim: %d, expected dim: %d",
|
||||||
static_cast<int32_t>(x.size()), dim_);
|
static_cast<int32_t>(x.size()), dim_);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ std::vector<Ort::Value> Unbind(OrtAllocator *allocator, const Ort::Value *value,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::move(ans);
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
template std::vector<Ort::Value> Unbind<float>(OrtAllocator *allocator,
|
template std::vector<Ort::Value> Unbind<float>(OrtAllocator *allocator,
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ std::vector<float> ReadWaveImpl(std::istream &is, int32_t *sampling_rate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::vector<float> ans(samples.size());
|
std::vector<float> ans(samples.size());
|
||||||
for (int32_t i = 0; i != ans.size(); ++i) {
|
for (int32_t i = 0; i != static_cast<int32_t>(ans.size()); ++i) {
|
||||||
ans[i] = samples[i] / 32768.;
|
ans[i] = samples[i] / 32768.;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -146,13 +146,13 @@ JNIEXPORT jlong JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_newFromFile(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::KeywordSpotter *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::KeywordSpotter *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_decode(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_decode(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
||||||
auto kws = reinterpret_cast<sherpa_onnx::KeywordSpotter *>(ptr);
|
auto kws = reinterpret_cast<sherpa_onnx::KeywordSpotter *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ JNIEXPORT jlong JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_createStream(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_isReady(
|
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_KeywordSpotter_isReady(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
||||||
auto kws = reinterpret_cast<sherpa_onnx::KeywordSpotter *>(ptr);
|
auto kws = reinterpret_cast<sherpa_onnx::KeywordSpotter *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ Java_com_k2fsa_sherpa_onnx_OfflinePunctuation_newFromFile(JNIEnv *env,
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflinePunctuation_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflinePunctuation_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::OfflinePunctuation *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::OfflinePunctuation *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -220,13 +220,13 @@ Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_newFromFile(JNIEnv *env,
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::OfflineRecognizer *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::OfflineRecognizer *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jlong JNICALL
|
JNIEXPORT jlong JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_createStream(JNIEnv *env,
|
Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_createStream(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto recognizer = reinterpret_cast<sherpa_onnx::OfflineRecognizer *>(ptr);
|
auto recognizer = reinterpret_cast<sherpa_onnx::OfflineRecognizer *>(ptr);
|
||||||
@@ -242,7 +242,7 @@ Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_createStream(JNIEnv *env,
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_decode(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineRecognizer_decode(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong streamPtr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong streamPtr) {
|
||||||
auto recognizer = reinterpret_cast<sherpa_onnx::OfflineRecognizer *>(ptr);
|
auto recognizer = reinterpret_cast<sherpa_onnx::OfflineRecognizer *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OfflineStream *>(streamPtr);
|
auto stream = reinterpret_cast<sherpa_onnx::OfflineStream *>(streamPtr);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineStream_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineStream_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::OfflineStream *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::OfflineStream *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -136,19 +136,19 @@ JNIEXPORT jlong JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_newFromFile(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jint JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_getSampleRate(
|
JNIEXPORT jint JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_getSampleRate(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
return reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr)->SampleRate();
|
return reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr)->SampleRate();
|
||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jint JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_getNumSpeakers(
|
JNIEXPORT jint JNICALL Java_com_k2fsa_sherpa_onnx_OfflineTts_getNumSpeakers(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
return reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr)->NumSpeakers();
|
return reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr)->NumSpeakers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -284,13 +284,13 @@ JNIEXPORT jlong JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_newFromFile(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_reset(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_reset(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
||||||
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
||||||
recognizer->Reset(stream);
|
recognizer->Reset(stream);
|
||||||
@@ -298,7 +298,7 @@ JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_reset(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_isReady(
|
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_isReady(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
||||||
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
||||||
|
|
||||||
@@ -307,7 +307,7 @@ JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_isReady(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_isEndpoint(
|
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_isEndpoint(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
||||||
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
||||||
|
|
||||||
@@ -316,7 +316,7 @@ JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_isEndpoint(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_decode(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineRecognizer_decode(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr, jlong stream_ptr) {
|
||||||
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
auto recognizer = reinterpret_cast<sherpa_onnx::OnlineRecognizer *>(ptr);
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(stream_ptr);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineStream_delete(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineStream_delete(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::OnlineStream *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::OnlineStream *>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineStream_acceptWaveform(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineStream_inputFinished(
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_OnlineStream_inputFinished(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(ptr);
|
auto stream = reinterpret_cast<sherpa_onnx::OnlineStream *>(ptr);
|
||||||
stream->InputFinished();
|
stream->InputFinished();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_newFromFile(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_delete(JNIEnv *env,
|
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_delete(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::SpeakerEmbeddingExtractor *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::SpeakerEmbeddingExtractor *>(ptr);
|
||||||
@@ -86,7 +86,7 @@ Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_delete(JNIEnv *env,
|
|||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jlong JNICALL
|
JNIEXPORT jlong JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_createStream(
|
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_createStream(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
std::unique_ptr<sherpa_onnx::OnlineStream> s =
|
std::unique_ptr<sherpa_onnx::OnlineStream> s =
|
||||||
reinterpret_cast<sherpa_onnx::SpeakerEmbeddingExtractor *>(ptr)
|
reinterpret_cast<sherpa_onnx::SpeakerEmbeddingExtractor *>(ptr)
|
||||||
->CreateStream();
|
->CreateStream();
|
||||||
@@ -101,7 +101,7 @@ Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_createStream(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jboolean JNICALL
|
JNIEXPORT jboolean JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_isReady(JNIEnv *env,
|
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_isReady(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr,
|
jlong ptr,
|
||||||
jlong stream_ptr) {
|
jlong stream_ptr) {
|
||||||
@@ -130,7 +130,7 @@ Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_compute(JNIEnv *env,
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jint JNICALL Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_dim(
|
JNIEXPORT jint JNICALL Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingExtractor_dim(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
auto extractor =
|
auto extractor =
|
||||||
reinterpret_cast<sherpa_onnx::SpeakerEmbeddingExtractor *>(ptr);
|
reinterpret_cast<sherpa_onnx::SpeakerEmbeddingExtractor *>(ptr);
|
||||||
return extractor->Dim();
|
return extractor->Dim();
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingManager_create(JNIEnv *env,
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingManager_delete(JNIEnv *env,
|
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingManager_delete(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto manager = reinterpret_cast<sherpa_onnx::SpeakerEmbeddingManager *>(ptr);
|
auto manager = reinterpret_cast<sherpa_onnx::SpeakerEmbeddingManager *>(ptr);
|
||||||
@@ -178,7 +178,7 @@ Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingManager_contains(JNIEnv *env,
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingManager_numSpeakers(JNIEnv *env,
|
Java_com_k2fsa_sherpa_onnx_SpeakerEmbeddingManager_numSpeakers(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto manager = reinterpret_cast<sherpa_onnx::SpeakerEmbeddingManager *>(ptr);
|
auto manager = reinterpret_cast<sherpa_onnx::SpeakerEmbeddingManager *>(ptr);
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ Java_com_k2fsa_sherpa_onnx_SpokenLanguageIdentification_newFromFile(
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpokenLanguageIdentification_delete(JNIEnv *env,
|
Java_com_k2fsa_sherpa_onnx_SpokenLanguageIdentification_delete(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::SpokenLanguageIdentification *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::SpokenLanguageIdentification *>(ptr);
|
||||||
@@ -110,7 +110,7 @@ Java_com_k2fsa_sherpa_onnx_SpokenLanguageIdentification_delete(JNIEnv *env,
|
|||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT jlong JNICALL
|
JNIEXPORT jlong JNICALL
|
||||||
Java_com_k2fsa_sherpa_onnx_SpokenLanguageIdentification_createStream(
|
Java_com_k2fsa_sherpa_onnx_SpokenLanguageIdentification_createStream(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
auto slid =
|
auto slid =
|
||||||
reinterpret_cast<sherpa_onnx::SpokenLanguageIdentification *>(ptr);
|
reinterpret_cast<sherpa_onnx::SpokenLanguageIdentification *>(ptr);
|
||||||
std::unique_ptr<sherpa_onnx::OfflineStream> s = slid->CreateStream();
|
std::unique_ptr<sherpa_onnx::OfflineStream> s = slid->CreateStream();
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ JNIEXPORT jlong JNICALL Java_com_k2fsa_sherpa_onnx_Vad_newFromFile(
|
|||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_delete(JNIEnv *env,
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_delete(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
delete reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
delete reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
||||||
@@ -117,7 +117,7 @@ JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_acceptWaveform(
|
|||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_Vad_empty(JNIEnv *env,
|
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_Vad_empty(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
||||||
@@ -125,7 +125,7 @@ JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_Vad_empty(JNIEnv *env,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_pop(JNIEnv *env,
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_pop(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
||||||
@@ -133,7 +133,7 @@ JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_pop(JNIEnv *env,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_clear(JNIEnv *env,
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_clear(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
||||||
@@ -161,13 +161,13 @@ Java_com_k2fsa_sherpa_onnx_Vad_front(JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
|||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_Vad_isSpeechDetected(
|
JNIEXPORT bool JNICALL Java_com_k2fsa_sherpa_onnx_Vad_isSpeechDetected(
|
||||||
JNIEnv *env, jobject /*obj*/, jlong ptr) {
|
JNIEnv * /*env*/, jobject /*obj*/, jlong ptr) {
|
||||||
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
||||||
return model->IsSpeechDetected();
|
return model->IsSpeechDetected();
|
||||||
}
|
}
|
||||||
|
|
||||||
SHERPA_ONNX_EXTERN_C
|
SHERPA_ONNX_EXTERN_C
|
||||||
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_reset(JNIEnv *env,
|
JNIEXPORT void JNICALL Java_com_k2fsa_sherpa_onnx_Vad_reset(JNIEnv * /*env*/,
|
||||||
jobject /*obj*/,
|
jobject /*obj*/,
|
||||||
jlong ptr) {
|
jlong ptr) {
|
||||||
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
auto model = reinterpret_cast<sherpa_onnx::VoiceActivityDetector *>(ptr);
|
||||||
|
|||||||
@@ -63,8 +63,12 @@ if(APPLE)
|
|||||||
OUTPUT_VARIABLE PYTHON_SITE_PACKAGE_DIR
|
OUTPUT_VARIABLE PYTHON_SITE_PACKAGE_DIR
|
||||||
)
|
)
|
||||||
message(STATUS "PYTHON_SITE_PACKAGE_DIR: ${PYTHON_SITE_PACKAGE_DIR}")
|
message(STATUS "PYTHON_SITE_PACKAGE_DIR: ${PYTHON_SITE_PACKAGE_DIR}")
|
||||||
|
if(PYTHON_SITE_PACKAGE_DIR STREQUAL "")
|
||||||
|
message(WARNING "PYTHON_SITE_PACKAGE_DIR is empty!")
|
||||||
|
else()
|
||||||
target_link_libraries(_sherpa_onnx PRIVATE "-Wl,-rpath,${PYTHON_SITE_PACKAGE_DIR}")
|
target_link_libraries(_sherpa_onnx PRIVATE "-Wl,-rpath,${PYTHON_SITE_PACKAGE_DIR}")
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
target_link_libraries(_sherpa_onnx PRIVATE "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/sherpa_onnx/lib")
|
target_link_libraries(_sherpa_onnx PRIVATE "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/sherpa_onnx/lib")
|
||||||
|
|||||||
Reference in New Issue
Block a user