diff --git a/.github/scripts/test-c-api.sh b/.github/scripts/test-c-api.sh index 43ee6f5d8f..4809773648 100755 --- a/.github/scripts/test-c-api.sh +++ b/.github/scripts/test-c-api.sh @@ -8,6 +8,9 @@ log() { echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*" } +log "test version" +./build/bin/version-c-api + echo "SLID_EXE is $SLID_EXE" echo "SID_EXE is $SID_EXE" echo "AT_EXE is $AT_EXE" diff --git a/.github/scripts/test-dart.sh b/.github/scripts/test-dart.sh index ef7a51537e..0af6a5f5d5 100755 --- a/.github/scripts/test-dart.sh +++ b/.github/scripts/test-dart.sh @@ -4,6 +4,11 @@ set -ex cd dart-api-examples +echo '----------Version----------' +pushd version +./run.sh +popd + pushd non-streaming-asr echo '----------Cohere Transcribe----------' diff --git a/.github/scripts/test-python.sh b/.github/scripts/test-python.sh index 4870260902..cf2c2d4790 100755 --- a/.github/scripts/test-python.sh +++ b/.github/scripts/test-python.sh @@ -8,6 +8,9 @@ log() { echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*" } +log "test version" +python3 ./python-api-examples/version-test.py + log "test Cohere Transcribe" curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-cohere-transcribe-14-lang-int8-2026-04-01.tar.bz2 diff --git a/.github/workflows/c-api.yaml b/.github/workflows/c-api.yaml index 5ab54fbcdf..b147b70157 100644 --- a/.github/workflows/c-api.yaml +++ b/.github/workflows/c-api.yaml @@ -92,6 +92,19 @@ jobs: echo "LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV echo "DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + - name: Test version + shell: bash + run: | + name=version-c-api + gcc -o $name ./c-api-examples/$name.c \ + -I ./build/install/include \ + -L ./build/install/lib/ \ + -l sherpa-onnx-c-api \ + -l onnxruntime + + ls -lh $name + ./$name + - name: Test Cohere Transcribe shell: bash run: | diff --git a/.github/workflows/cxx-api.yaml b/.github/workflows/cxx-api.yaml index e6c578a86c..6af16f6bdb 100644 --- a/.github/workflows/cxx-api.yaml +++ b/.github/workflows/cxx-api.yaml @@ -107,6 +107,20 @@ jobs: echo "LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV echo "DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + - name: Test version + shell: bash + run: | + name=version-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 + ./$name + - name: Test Cohere Transcribe shell: bash run: | diff --git a/.github/workflows/pascal.yaml b/.github/workflows/pascal.yaml index 65644b6f2e..707966195c 100644 --- a/.github/workflows/pascal.yaml +++ b/.github/workflows/pascal.yaml @@ -118,6 +118,7 @@ jobs: cp -v install/lib/*.dll ../pascal-api-examples/tts cp -v install/lib/*.dll ../pascal-api-examples/vad cp -v install/lib/*.dll ../pascal-api-examples/vad-with-non-streaming-asr + cp -v install/lib/*.dll ../pascal-api-examples/version cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/non-streaming-asr cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/read-wav @@ -130,8 +131,18 @@ jobs: cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/tts cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/vad cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/vad-with-non-streaming-asr + cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/version fi + - name: Run Pascal version test + shell: bash + run: | + cd ./pascal-api-examples + + pushd version + ./run.sh + popd + - name: Run Pascal test (Cohere Transcribe) shell: bash run: | diff --git a/.github/workflows/test-dart.yaml b/.github/workflows/test-dart.yaml index 0a554dc377..32d5cb73e2 100644 --- a/.github/workflows/test-dart.yaml +++ b/.github/workflows/test-dart.yaml @@ -132,6 +132,7 @@ jobs: cp scripts/dart/streaming-speech-enhancement-gtcrn-pubspec.yaml dart-api-examples/streaming-speech-enhancement-gtcrn/pubspec.yaml cp scripts/dart/streaming-speech-enhancement-dpdfnet-pubspec.yaml dart-api-examples/streaming-speech-enhancement-dpdfnet/pubspec.yaml cp scripts/dart/slid-pubspec.yaml dart-api-examples/spoken-language-identification/pubspec.yaml + cp scripts/dart/version-pubspec.yaml dart-api-examples/version/pubspec.yaml cp scripts/dart/sherpa-onnx-pubspec.yaml flutter/sherpa_onnx/pubspec.yaml diff --git a/.github/workflows/test-go.yaml b/.github/workflows/test-go.yaml index 2bd6e037c4..9ae17bfb9b 100644 --- a/.github/workflows/test-go.yaml +++ b/.github/workflows/test-go.yaml @@ -127,6 +127,7 @@ jobs: cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/zero-shot-pocket-tts cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/source-separation cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/supertonic-tts + cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll ../scripts/go/_internal/version cp -v ../scripts/go/_internal/lib/x86_64-pc-windows-gnu/*.dll $upload_dir else @@ -155,6 +156,18 @@ jobs: name: ${{ matrix.os }}-libs path: to-upload/ + - name: Test version + shell: bash + run: | + cd scripts/go/_internal/version + ls -lh + go mod tidy + cat go.mod + go build + ls -lh + + ./run.sh + - name: Test source separation (Spleeter & UVR) shell: bash run: | diff --git a/c-api-examples/CMakeLists.txt b/c-api-examples/CMakeLists.txt index bcb96d45eb..ae1463ab4c 100644 --- a/c-api-examples/CMakeLists.txt +++ b/c-api-examples/CMakeLists.txt @@ -1,6 +1,9 @@ include(cargs) include_directories(${PROJECT_SOURCE_DIR}) +add_executable(version-c-api version-c-api.c) +target_link_libraries(version-c-api sherpa-onnx-c-api) + add_executable(decode-file-c-api decode-file-c-api.c) target_link_libraries(decode-file-c-api sherpa-onnx-c-api cargs) diff --git a/c-api-examples/version-c-api.c b/c-api-examples/version-c-api.c new file mode 100644 index 0000000000..ea18165700 --- /dev/null +++ b/c-api-examples/version-c-api.c @@ -0,0 +1,16 @@ +// c-api-examples/version-c-api.c +// +// Copyright (c) 2026 Xiaomi Corporation + +#include + +#include "sherpa-onnx/c-api/c-api.h" + +int32_t main() { + printf("sherpa-onnx version : %s\n", SherpaOnnxGetVersionStr()); + printf("sherpa-onnx Git SHA1: %s\n", SherpaOnnxGetGitSha1()); + printf("sherpa-onnx Git date: %s\n", SherpaOnnxGetGitDate()); + printf("onnxruntime version : %s\n", SherpaOnnxGetOnnxruntimeVersionStr()); + + return 0; +} diff --git a/cxx-api-examples/CMakeLists.txt b/cxx-api-examples/CMakeLists.txt index 2de7e6188a..23884ed9ac 100644 --- a/cxx-api-examples/CMakeLists.txt +++ b/cxx-api-examples/CMakeLists.txt @@ -1,5 +1,8 @@ include_directories(${PROJECT_SOURCE_DIR}) +add_executable(version-cxx-api ./version-cxx-api.cc) +target_link_libraries(version-cxx-api sherpa-onnx-cxx-api) + add_executable(streaming-zipformer-cxx-api ./streaming-zipformer-cxx-api.cc) target_link_libraries(streaming-zipformer-cxx-api sherpa-onnx-cxx-api) diff --git a/cxx-api-examples/version-cxx-api.cc b/cxx-api-examples/version-cxx-api.cc new file mode 100644 index 0000000000..727adaa686 --- /dev/null +++ b/cxx-api-examples/version-cxx-api.cc @@ -0,0 +1,18 @@ +// cxx-api-examples/version-cxx-api.cc +// +// Copyright (c) 2026 Xiaomi Corporation + +#include + +#include "sherpa-onnx/c-api/cxx-api.h" + +auto main() -> int { + std::cout << "sherpa-onnx version : " << sherpa_onnx::GetVersionStr() + << "\n"; + std::cout << "sherpa-onnx Git SHA1: " << sherpa_onnx::GetGitSha1() << "\n"; + std::cout << "sherpa-onnx Git date: " << sherpa_onnx::GetGitDate() << "\n"; + std::cout << "onnxruntime version : " << sherpa_onnx::GetOnnxruntimeVersionStr() + << "\n"; + + return 0; +} diff --git a/dart-api-examples/version/bin/main.dart b/dart-api-examples/version/bin/main.dart new file mode 100644 index 0000000000..809158e682 --- /dev/null +++ b/dart-api-examples/version/bin/main.dart @@ -0,0 +1,10 @@ +// Copyright (c) 2026 Xiaomi Corporation + +import 'package:sherpa_onnx/src/version.dart' as sherpa_onnx; + +void main() { + print('sherpa-onnx version: ${sherpa_onnx.getVersion()}'); + print('sherpa-onnx git sha1: ${sherpa_onnx.getGitSha1()}'); + print('sherpa-onnx git date: ${sherpa_onnx.getGitDate()}'); + print('onnxruntime version: ${sherpa_onnx.getOnnxruntimeVersion()}'); +} diff --git a/dart-api-examples/version/pubspec.yaml b/dart-api-examples/version/pubspec.yaml new file mode 100644 index 0000000000..1b86a0605a --- /dev/null +++ b/dart-api-examples/version/pubspec.yaml @@ -0,0 +1,14 @@ +name: version +description: > + Print sherpa-onnx version info. + +version: 1.0.0 + +environment: + sdk: ">=3.0.0 <4.0.0" + +dependencies: + sherpa_onnx: ^1.13.4 + +dev_dependencies: + lints: ^3.0.0 diff --git a/dart-api-examples/version/run.sh b/dart-api-examples/version/run.sh new file mode 100755 index 0000000000..9be7070dd1 --- /dev/null +++ b/dart-api-examples/version/run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -ex + +dart pub get + +dart run ./bin/main.dart diff --git a/dotnet-examples/version-test/Program.cs b/dotnet-examples/version-test/Program.cs index 732fc87794..aed3aa8ecb 100644 --- a/dotnet-examples/version-test/Program.cs +++ b/dotnet-examples/version-test/Program.cs @@ -8,9 +8,11 @@ static void Main(string[] args) var version = VersionInfo.Version; var gitSha1 = VersionInfo.GitSha1; var gitDate = VersionInfo.GitDate; + var onnxruntimeVersion = VersionInfo.OnnxruntimeVersion; Console.WriteLine("sherpa-onnx version: {0}", version); Console.WriteLine("sherpa-onnx gitSha1: {0}", gitSha1); Console.WriteLine("sherpa-onnx gitDate: {0}", gitDate); + Console.WriteLine("onnxruntime version: {0}", onnxruntimeVersion); } } diff --git a/flutter/sherpa_onnx/lib/src/sherpa_onnx_bindings.dart b/flutter/sherpa_onnx/lib/src/sherpa_onnx_bindings.dart index 6ee7b7fac3..446e18393f 100644 --- a/flutter/sherpa_onnx/lib/src/sherpa_onnx_bindings.dart +++ b/flutter/sherpa_onnx/lib/src/sherpa_onnx_bindings.dart @@ -1860,6 +1860,9 @@ typedef SherpaOnnxGetGitSha1 = SherpaOnnxGetGitSha1Native; typedef SherpaOnnxGetGitDateNative = Pointer Function(); typedef SherpaOnnxGetGitDate = SherpaOnnxGetGitDateNative; +typedef SherpaOnnxGetOnnxruntimeVersionStrNative = Pointer Function(); +typedef SherpaOnnxGetOnnxruntimeVersionStr = SherpaOnnxGetOnnxruntimeVersionStrNative; + class SherpaOnnxBindings { static SherpaOnnxCreateOfflineSpeechDenoiser? sherpaOnnxCreateOfflineSpeechDenoiser; @@ -2102,6 +2105,7 @@ class SherpaOnnxBindings { static SherpaOnnxGetVersionStr? getVersionStr; static SherpaOnnxGetGitSha1? getGitSha1; static SherpaOnnxGetGitDate? getGitDate; + static SherpaOnnxGetOnnxruntimeVersionStr? getOnnxruntimeVersionStr; static void init(DynamicLibrary dynamicLibrary) { sherpaOnnxCreateOfflineSpeechDenoiser ??= dynamicLibrary @@ -2882,5 +2886,11 @@ class SherpaOnnxBindings { 'SherpaOnnxGetGitDate', ) .asFunction(); + + getOnnxruntimeVersionStr ??= dynamicLibrary + .lookup>( + 'SherpaOnnxGetOnnxruntimeVersionStr', + ) + .asFunction(); } } diff --git a/flutter/sherpa_onnx/lib/src/version.dart b/flutter/sherpa_onnx/lib/src/version.dart index a61de18a94..4eeb918bb7 100644 --- a/flutter/sherpa_onnx/lib/src/version.dart +++ b/flutter/sherpa_onnx/lib/src/version.dart @@ -32,3 +32,14 @@ String getGitDate() { return gitDate.toDartString(); } + +/// Return the onnxruntime version string used by the native library. +String getOnnxruntimeVersion() { + Pointer version = + SherpaOnnxBindings.getOnnxruntimeVersionStr?.call() ?? nullptr; + if (version == nullptr) { + return ''; + } + + return version.toDartString(); +} diff --git a/go-api-examples/streaming-decode-files/main.go b/go-api-examples/streaming-decode-files/main.go index 5d060eae60..99e14af5c8 100644 --- a/go-api-examples/streaming-decode-files/main.go +++ b/go-api-examples/streaming-decode-files/main.go @@ -12,6 +12,7 @@ func main() { log.Printf("sherpa-onnx version: %v\n", sherpa.GetVersion()) log.Printf("sherpa-onnx gitSha1: %v\n", sherpa.GetGitSha1()) log.Printf("sherpa-onnx gitDate: %v\n", sherpa.GetGitDate()) + log.Printf("onnxruntime version: %v\n", sherpa.GetOnnxruntimeVersion()) log.SetFlags(log.LstdFlags | log.Lmicroseconds) diff --git a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/version.cc b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/version.cc index ab9ce5229f..bcb6ab53e3 100644 --- a/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/version.cc +++ b/harmony-os/SherpaOnnxHar/sherpa_onnx/src/main/cpp/version.cc @@ -10,8 +10,11 @@ void InitVersion(Napi::Env env, Napi::Object exports) { Napi::String version = Napi::String::New(env, SherpaOnnxGetVersionStr()); Napi::String git_sha1 = Napi::String::New(env, SherpaOnnxGetGitSha1()); Napi::String git_date = Napi::String::New(env, SherpaOnnxGetGitDate()); + Napi::String onnxruntime_version = + Napi::String::New(env, SherpaOnnxGetOnnxruntimeVersionStr()); exports.Set(Napi::String::New(env, "version"), version); exports.Set(Napi::String::New(env, "gitSha1"), git_sha1); exports.Set(Napi::String::New(env, "gitDate"), git_date); + exports.Set(Napi::String::New(env, "onnxruntimeVersion"), onnxruntime_version); } diff --git a/java-api-examples/VersionTest.java b/java-api-examples/VersionTest.java index 7ea54ffc04..94da02d406 100644 --- a/java-api-examples/VersionTest.java +++ b/java-api-examples/VersionTest.java @@ -7,5 +7,6 @@ public static void main(String[] args) { System.out.printf("sherpa-onnx version: %s\n", VersionInfo.getVersion()); System.out.printf("sherpa-onnx gitSha1: %s\n", VersionInfo.getGitSha1()); System.out.printf("sherpa-onnx gitDate: %s\n", VersionInfo.getGitDate()); + System.out.printf("onnxruntime version: %s\n", VersionInfo.getOnnxruntimeVersion()); } } diff --git a/java-api-examples/gradle-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java b/java-api-examples/gradle-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java index f5a0b36e7d..d0412f45a0 100644 --- a/java-api-examples/gradle-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java +++ b/java-api-examples/gradle-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java @@ -9,5 +9,6 @@ public static void main(String[] args) { System.out.printf("sherpa-onnx version: %s\n", VersionInfo.getVersion()); System.out.printf("sherpa-onnx gitSha1: %s\n", VersionInfo.getGitSha1()); System.out.printf("sherpa-onnx gitDate: %s\n", VersionInfo.getGitDate()); + System.out.printf("onnxruntime version: %s\n", VersionInfo.getOnnxruntimeVersion()); } } diff --git a/java-api-examples/gradle-kts-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java b/java-api-examples/gradle-kts-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java index f5a0b36e7d..d0412f45a0 100644 --- a/java-api-examples/gradle-kts-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java +++ b/java-api-examples/gradle-kts-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java @@ -9,5 +9,6 @@ public static void main(String[] args) { System.out.printf("sherpa-onnx version: %s\n", VersionInfo.getVersion()); System.out.printf("sherpa-onnx gitSha1: %s\n", VersionInfo.getGitSha1()); System.out.printf("sherpa-onnx gitDate: %s\n", VersionInfo.getGitDate()); + System.out.printf("onnxruntime version: %s\n", VersionInfo.getOnnxruntimeVersion()); } } diff --git a/java-api-examples/maven-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java b/java-api-examples/maven-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java index f5a0b36e7d..d0412f45a0 100644 --- a/java-api-examples/maven-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java +++ b/java-api-examples/maven-examples/src/main/java/com/k2fsa/sherpa/onnx/example/VersionTest.java @@ -9,5 +9,6 @@ public static void main(String[] args) { System.out.printf("sherpa-onnx version: %s\n", VersionInfo.getVersion()); System.out.printf("sherpa-onnx gitSha1: %s\n", VersionInfo.getGitSha1()); System.out.printf("sherpa-onnx gitDate: %s\n", VersionInfo.getGitDate()); + System.out.printf("onnxruntime version: %s\n", VersionInfo.getOnnxruntimeVersion()); } } diff --git a/kotlin-api-examples/test_version.kt b/kotlin-api-examples/test_version.kt index baf3eb83fa..9d21d44883 100644 --- a/kotlin-api-examples/test_version.kt +++ b/kotlin-api-examples/test_version.kt @@ -4,5 +4,6 @@ fun main() { println("sherpa-onnx version: ${VersionInfo.version}"); println("sherpa-onnx gitSha1: ${VersionInfo.gitSha1}"); println("sherpa-onnx gitDate: ${VersionInfo.gitDate}"); + println("onnxruntime version: ${VersionInfo.onnxruntimeVersion}"); } diff --git a/pascal-api-examples/version/run.sh b/pascal-api-examples/version/run.sh new file mode 100755 index 0000000000..34daaf2046 --- /dev/null +++ b/pascal-api-examples/version/run.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +set -ex + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +SHERPA_ONNX_DIR=$(cd $SCRIPT_DIR/../.. && pwd) + +echo "SHERPA_ONNX_DIR: $SHERPA_ONNX_DIR" + +if [[ ! -f ../../build/install/lib/libsherpa-onnx-c-api.dylib && ! -f ../../build/install/lib/libsherpa-onnx-c-api.so && ! -f ../../build/install/lib/sherpa-onnx-c-api.dll ]]; then + mkdir -p ../../build + pushd ../../build + cmake \ + -DCMAKE_INSTALL_PREFIX=./install \ + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ + -DSHERPA_ONNX_ENABLE_TESTS=OFF \ + -DSHERPA_ONNX_ENABLE_CHECK=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ + .. + + cmake --build . --target install --config Release + popd +fi + +fpc \ + -dSHERPA_ONNX_USE_SHARED_LIBS \ + -Fu$SHERPA_ONNX_DIR/sherpa-onnx/pascal-api \ + -Fl$SHERPA_ONNX_DIR/build/install/lib \ + ./version.pas + +export LD_LIBRARY_PATH=$SHERPA_ONNX_DIR/build/install/lib:$LD_LIBRARY_PATH +export DYLD_LIBRARY_PATH=$SHERPA_ONNX_DIR/build/install/lib:$DYLD_LIBRARY_PATH + +./version diff --git a/pascal-api-examples/version/version.pas b/pascal-api-examples/version/version.pas new file mode 100644 index 0000000000..bbd38343ca --- /dev/null +++ b/pascal-api-examples/version/version.pas @@ -0,0 +1,15 @@ +// pascal-api-examples/version/version.pas +// +// Copyright (c) 2026 Xiaomi Corporation + +program version; + +uses + sherpa_onnx; + +begin + WriteLn('sherpa-onnx version : ', SherpaOnnxGetVersionStr()); + WriteLn('sherpa-onnx Git SHA1: ', SherpaOnnxGetGitSha1()); + WriteLn('sherpa-onnx Git date: ', SherpaOnnxGetGitDate()); + WriteLn('onnxruntime version : ', SherpaOnnxGetOnnxruntimeVersionStr()); +end. diff --git a/python-api-examples/version-test.py b/python-api-examples/version-test.py new file mode 100644 index 0000000000..197661a532 --- /dev/null +++ b/python-api-examples/version-test.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2026 Xiaomi Corporation + +import sherpa_onnx + + +def main(): + print(f"sherpa-onnx version: {sherpa_onnx.version}") + print(f"sherpa-onnx git sha1: {sherpa_onnx.git_sha1}") + print(f"sherpa-onnx git date: {sherpa_onnx.git_date}") + print(f"onnxruntime version: {sherpa_onnx.onnxruntime_version}") + + +if __name__ == "__main__": + main() diff --git a/rust-api-examples/examples/version.rs b/rust-api-examples/examples/version.rs index 594f17c104..cec6326011 100644 --- a/rust-api-examples/examples/version.rs +++ b/rust-api-examples/examples/version.rs @@ -4,4 +4,5 @@ fn main() { println!("Version : {}", sherpa_onnx::version()); println!("Git SHA1: {}", sherpa_onnx::git_sha1()); println!("Git date: {}", sherpa_onnx::git_date()); + println!("Onnxruntime version: {}", sherpa_onnx::onnxruntime_version()); } diff --git a/scripts/dart/version-pubspec.yaml b/scripts/dart/version-pubspec.yaml new file mode 100644 index 0000000000..58e83d5b61 --- /dev/null +++ b/scripts/dart/version-pubspec.yaml @@ -0,0 +1,16 @@ +name: version + +description: > + Print sherpa-onnx version info. + +version: 1.0.0 + +environment: + sdk: ">=3.0.0 <4.0.0" + +dependencies: + sherpa_onnx: + path: ../../flutter/sherpa_onnx + +dev_dependencies: + lints: ^3.0.0 diff --git a/scripts/dotnet/VersionInfo.cs b/scripts/dotnet/VersionInfo.cs index 02248d7434..d0f3d63d12 100644 --- a/scripts/dotnet/VersionInfo.cs +++ b/scripts/dotnet/VersionInfo.cs @@ -107,6 +107,42 @@ public static String GitDate } } + /// + /// Return the onnxruntime version string used by the library. + /// + public static String OnnxruntimeVersion + { + get + { + IntPtr p = SherpaOnnxGetOnnxruntimeVersionStr(); + + string s = ""; + int length = 0; + + unsafe + { + byte* b = (byte*)p; + if (b != null) + { + while (*b != 0) + { + ++b; + length += 1; + } + } + } + + if (length > 0) + { + byte[] stringBuffer = new byte[length]; + Marshal.Copy(p, stringBuffer, 0, length); + s = Encoding.UTF8.GetString(stringBuffer); + } + + return s; + } + } + [DllImport(Dll.Filename)] private static extern IntPtr SherpaOnnxGetVersionStr(); @@ -116,5 +152,8 @@ public static String GitDate [DllImport(Dll.Filename)] private static extern IntPtr SherpaOnnxGetGitDate(); + + [DllImport(Dll.Filename)] + private static extern IntPtr SherpaOnnxGetOnnxruntimeVersionStr(); } } diff --git a/scripts/go/_internal/version/go.mod b/scripts/go/_internal/version/go.mod new file mode 100644 index 0000000000..71c9e04445 --- /dev/null +++ b/scripts/go/_internal/version/go.mod @@ -0,0 +1,5 @@ +module version + +go 1.17 + +replace github.com/k2-fsa/sherpa-onnx-go/sherpa_onnx => ../ diff --git a/scripts/go/_internal/version/main.go b/scripts/go/_internal/version/main.go new file mode 100644 index 0000000000..2b38b8bf10 --- /dev/null +++ b/scripts/go/_internal/version/main.go @@ -0,0 +1,14 @@ +package main + +import ( + "log" + + sherpa "github.com/k2-fsa/sherpa-onnx-go/sherpa_onnx" +) + +func main() { + log.Printf("sherpa-onnx version: %v\n", sherpa.GetVersion()) + log.Printf("sherpa-onnx gitSha1: %v\n", sherpa.GetGitSha1()) + log.Printf("sherpa-onnx gitDate: %v\n", sherpa.GetGitDate()) + log.Printf("onnxruntime version: %v\n", sherpa.GetOnnxruntimeVersion()) +} diff --git a/scripts/go/_internal/version/run.sh b/scripts/go/_internal/version/run.sh new file mode 100755 index 0000000000..d34c0ad47c --- /dev/null +++ b/scripts/go/_internal/version/run.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +go build +./version diff --git a/scripts/go/sherpa_onnx.go b/scripts/go/sherpa_onnx.go index fd456a6c1c..a6938ad2d5 100644 --- a/scripts/go/sherpa_onnx.go +++ b/scripts/go/sherpa_onnx.go @@ -2750,6 +2750,11 @@ func GetGitDate() string { return C.GoString(C.SherpaOnnxGetGitDate()) } +// GetOnnxruntimeVersion returns the onnxruntime version string used by the library. +func GetOnnxruntimeVersion() string { + return C.GoString(C.SherpaOnnxGetOnnxruntimeVersionStr()) +} + type OfflineSourceSeparationSpleeterModelConfig struct { Vocals string Accompaniment string diff --git a/scripts/node-addon-api/lib/sherpa-onnx.js b/scripts/node-addon-api/lib/sherpa-onnx.js index 963e42be98..31460d0162 100644 --- a/scripts/node-addon-api/lib/sherpa-onnx.js +++ b/scripts/node-addon-api/lib/sherpa-onnx.js @@ -45,4 +45,5 @@ module.exports = { version : addon.version, gitSha1 : addon.gitSha1, gitDate : addon.gitDate, + onnxruntimeVersion : addon.onnxruntimeVersion, } diff --git a/scripts/nodejs/index.js b/scripts/nodejs/index.js index c904b39437..6554902aa5 100644 --- a/scripts/nodejs/index.js +++ b/scripts/nodejs/index.js @@ -94,6 +94,12 @@ function getGitDate() { return wasmModule.UTF8ToString(v); } +// Return the onnxruntime version string used by the library. +function getOnnxruntimeVersion() { + const v = wasmModule._SherpaOnnxGetOnnxruntimeVersionStr(); + return wasmModule.UTF8ToString(v); +} + // Note: online means streaming and offline means non-streaming here. // Both of them don't require internet connection. module.exports = { @@ -114,4 +120,5 @@ module.exports = { version: getVersion(), gitSha1: getGitSha1(), gitDate: getGitDate(), + onnxruntimeVersion: getOnnxruntimeVersion(), }; diff --git a/sherpa-onnx/c-api/c-api.cc b/sherpa-onnx/c-api/c-api.cc index 4648bbce67..e776d4f51a 100644 --- a/sherpa-onnx/c-api/c-api.cc +++ b/sherpa-onnx/c-api/c-api.cc @@ -53,6 +53,9 @@ const char *SherpaOnnxGetVersionStr() { return sherpa_onnx::GetVersionStr(); } const char *SherpaOnnxGetGitSha1() { return sherpa_onnx::GetGitSha1(); } const char *SherpaOnnxGetGitDate() { return sherpa_onnx::GetGitDate(); } +const char *SherpaOnnxGetOnnxruntimeVersionStr() { + return sherpa_onnx::GetOnnxruntimeVersionStr(); +} struct SherpaOnnxOnlineRecognizer { std::unique_ptr impl; diff --git a/sherpa-onnx/c-api/c-api.h b/sherpa-onnx/c-api/c-api.h index b0155da16d..f961035d9b 100644 --- a/sherpa-onnx/c-api/c-api.h +++ b/sherpa-onnx/c-api/c-api.h @@ -150,6 +150,16 @@ SHERPA_ONNX_API const char *SherpaOnnxGetGitSha1(); */ SHERPA_ONNX_API const char *SherpaOnnxGetGitDate(); +/** + * @brief Return the onnxruntime version string used by the library. + * + * The returned pointer refers to statically allocated memory owned by the + * library. Do not free it and do not modify it. + * + * @return Onnxruntime version string, for example `"1.22.0"`. + */ +SHERPA_ONNX_API const char *SherpaOnnxGetOnnxruntimeVersionStr(); + /** * @brief Check whether a file exists. * diff --git a/sherpa-onnx/c-api/cxx-api.cc b/sherpa-onnx/c-api/cxx-api.cc index 073124847e..e31fe2679c 100644 --- a/sherpa-onnx/c-api/cxx-api.cc +++ b/sherpa-onnx/c-api/cxx-api.cc @@ -1052,6 +1052,10 @@ std::string GetGitSha1() { return SherpaOnnxGetGitSha1(); } std::string GetGitDate() { return SherpaOnnxGetGitDate(); } +std::string GetOnnxruntimeVersionStr() { + return SherpaOnnxGetOnnxruntimeVersionStr(); +} + bool FileExists(const std::string &filename) { return SherpaOnnxFileExists(filename.c_str()); } diff --git a/sherpa-onnx/c-api/cxx-api.h b/sherpa-onnx/c-api/cxx-api.h index 3ef05bddfc..30b255fed3 100644 --- a/sherpa-onnx/c-api/cxx-api.h +++ b/sherpa-onnx/c-api/cxx-api.h @@ -1492,6 +1492,8 @@ SHERPA_ONNX_API std::string GetVersionStr(); SHERPA_ONNX_API std::string GetGitSha1(); /** @brief Return the build Git date as a C++ string. */ SHERPA_ONNX_API std::string GetGitDate(); +/** @brief Return the onnxruntime version string as a C++ string. */ +SHERPA_ONNX_API std::string GetOnnxruntimeVersionStr(); /** @brief Return `true` if a file exists. */ SHERPA_ONNX_API bool FileExists(const std::string &filename); diff --git a/sherpa-onnx/c-api/sherpa-onnx-symbols-c.exp b/sherpa-onnx/c-api/sherpa-onnx-symbols-c.exp index 9dec82c942..7fb988c18b 100644 --- a/sherpa-onnx/c-api/sherpa-onnx-symbols-c.exp +++ b/sherpa-onnx/c-api/sherpa-onnx-symbols-c.exp @@ -87,6 +87,7 @@ _SherpaOnnxGetOfflineStreamResult _SherpaOnnxGetOfflineStreamResultAsJson _SherpaOnnxGetOnlineStreamResult _SherpaOnnxGetOnlineStreamResultAsJson +_SherpaOnnxGetOnnxruntimeVersionStr _SherpaOnnxGetVersionStr _SherpaOnnxIsKeywordStreamReady _SherpaOnnxIsOnlineStreamReady diff --git a/sherpa-onnx/csrc/CMakeLists.txt b/sherpa-onnx/csrc/CMakeLists.txt index 47052c6473..598c6b6510 100755 --- a/sherpa-onnx/csrc/CMakeLists.txt +++ b/sherpa-onnx/csrc/CMakeLists.txt @@ -544,6 +544,7 @@ if(SHERPA_ONNX_ENABLE_BINARY) sherpa-onnx-vad sherpa-onnx-vad-with-offline-asr sherpa-onnx-vad-with-online-asr + sherpa-onnx-version ) if(SHERPA_ONNX_ENABLE_TTS) list(APPEND main_exes @@ -585,7 +586,6 @@ if(SHERPA_ONNX_ENABLE_BINARY) install( TARGETS ${main_exes} - sherpa-onnx-version DESTINATION bin ) diff --git a/sherpa-onnx/csrc/sherpa-onnx-version.cc b/sherpa-onnx/csrc/sherpa-onnx-version.cc index 8c2a640b9c..74fdcc7c35 100644 --- a/sherpa-onnx/csrc/sherpa-onnx-version.cc +++ b/sherpa-onnx/csrc/sherpa-onnx-version.cc @@ -12,6 +12,7 @@ int32_t main() { printf("sherpa-onnx version : %s\n", sherpa_onnx::GetVersionStr()); printf("sherpa-onnx Git SHA1: %s\n", sherpa_onnx::GetGitSha1()); printf("sherpa-onnx Git date: %s\n", sherpa_onnx::GetGitDate()); + printf("onnxruntime version : %s\n", sherpa_onnx::GetOnnxruntimeVersionStr()); return 0; } diff --git a/sherpa-onnx/csrc/version.cc b/sherpa-onnx/csrc/version.cc index b3cc549af2..e6a81ddaa6 100644 --- a/sherpa-onnx/csrc/version.cc +++ b/sherpa-onnx/csrc/version.cc @@ -4,6 +4,8 @@ #include "sherpa-onnx/csrc/version.h" +#include "onnxruntime_c_api.h" // NOLINT + namespace sherpa_onnx { const char *GetGitDate() { @@ -21,4 +23,8 @@ const char *GetVersionStr() { return version; } +const char *GetOnnxruntimeVersionStr() { + return OrtGetApiBase()->GetVersionString(); +} + } // namespace sherpa_onnx diff --git a/sherpa-onnx/csrc/version.h b/sherpa-onnx/csrc/version.h index c351ab5c3b..e1a2baa62e 100644 --- a/sherpa-onnx/csrc/version.h +++ b/sherpa-onnx/csrc/version.h @@ -24,6 +24,9 @@ const char *GetGitSha1(); // The memory pointed by the returned pointer is statically allocated. const char *GetGitDate(); +// The memory pointed by the returned pointer is statically allocated. +const char *GetOnnxruntimeVersionStr(); + } // namespace sherpa_onnx #endif // SHERPA_ONNX_CSRC_VERSION_H_ diff --git a/sherpa-onnx/java-api/src/main/java/com/k2fsa/sherpa/onnx/VersionInfo.java b/sherpa-onnx/java-api/src/main/java/com/k2fsa/sherpa/onnx/VersionInfo.java index ecf0e1cd25..2fdb9dded8 100644 --- a/sherpa-onnx/java-api/src/main/java/com/k2fsa/sherpa/onnx/VersionInfo.java +++ b/sherpa-onnx/java-api/src/main/java/com/k2fsa/sherpa/onnx/VersionInfo.java @@ -17,7 +17,13 @@ public static String getGitDate() { return getGitDate2(); } + public static String getOnnxruntimeVersion() { + LibraryLoader.maybeLoad(); + return getOnnxruntimeVersionStr2(); + } + private static native String getVersionStr2(); private static native String getGitSha12(); private static native String getGitDate2(); + private static native String getOnnxruntimeVersionStr2(); } diff --git a/sherpa-onnx/jni/sherpa-onnx-symbols.exp b/sherpa-onnx/jni/sherpa-onnx-symbols.exp index 7353a2b603..e7c74f3b9d 100644 --- a/sherpa-onnx/jni/sherpa-onnx-symbols.exp +++ b/sherpa-onnx/jni/sherpa-onnx-symbols.exp @@ -121,9 +121,11 @@ _Java_com_k2fsa_sherpa_onnx_Vad_pop _Java_com_k2fsa_sherpa_onnx_Vad_reset _Java_com_k2fsa_sherpa_onnx_VersionInfo_00024Companion_getGitDate2 _Java_com_k2fsa_sherpa_onnx_VersionInfo_00024Companion_getGitSha12 +_Java_com_k2fsa_sherpa_onnx_VersionInfo_00024Companion_getOnnxruntimeVersionStr2 _Java_com_k2fsa_sherpa_onnx_VersionInfo_00024Companion_getVersionStr2 _Java_com_k2fsa_sherpa_onnx_VersionInfo_getGitDate2 _Java_com_k2fsa_sherpa_onnx_VersionInfo_getGitSha12 +_Java_com_k2fsa_sherpa_onnx_VersionInfo_getOnnxruntimeVersionStr2 _Java_com_k2fsa_sherpa_onnx_VersionInfo_getVersionStr2 _Java_com_k2fsa_sherpa_onnx_WaveReader_00024Companion_readWaveFromAsset _Java_com_k2fsa_sherpa_onnx_WaveReader_00024Companion_readWaveFromFile diff --git a/sherpa-onnx/jni/version.cc b/sherpa-onnx/jni/version.cc index edb371d843..9b99a4cff7 100644 --- a/sherpa-onnx/jni/version.cc +++ b/sherpa-onnx/jni/version.cc @@ -46,4 +46,18 @@ JNIEXPORT jstring JNICALL Java_com_k2fsa_sherpa_onnx_VersionInfo_getGitDate2( return SafeNewStringUTF(env, GetGitDate()); } +SHERPA_ONNX_EXTERN_C +JNIEXPORT jstring JNICALL +Java_com_k2fsa_sherpa_onnx_VersionInfo_00024Companion_getOnnxruntimeVersionStr2( + JNIEnv *env, jclass /*cls*/) { + return SafeNewStringUTF(env, GetOnnxruntimeVersionStr()); +} + +SHERPA_ONNX_EXTERN_C +JNIEXPORT jstring JNICALL +Java_com_k2fsa_sherpa_onnx_VersionInfo_getOnnxruntimeVersionStr2( + JNIEnv *env, jclass /*cls*/) { + return SafeNewStringUTF(env, GetOnnxruntimeVersionStr()); +} + } // namespace sherpa_onnx diff --git a/sherpa-onnx/kotlin-api/VersionInfo.kt b/sherpa-onnx/kotlin-api/VersionInfo.kt index f80b118fb3..2623341136 100644 --- a/sherpa-onnx/kotlin-api/VersionInfo.kt +++ b/sherpa-onnx/kotlin-api/VersionInfo.kt @@ -15,8 +15,12 @@ class VersionInfo { val gitDate: String get() = getGitDate2() + val onnxruntimeVersion: String + get() = getOnnxruntimeVersionStr2() + external fun getVersionStr2(): String external fun getGitSha12(): String external fun getGitDate2(): String + external fun getOnnxruntimeVersionStr2(): String } } diff --git a/sherpa-onnx/pascal-api/sherpa_onnx.pas b/sherpa-onnx/pascal-api/sherpa_onnx.pas index 691d91124b..3008ba402d 100644 --- a/sherpa-onnx/pascal-api/sherpa_onnx.pas +++ b/sherpa-onnx/pascal-api/sherpa_onnx.pas @@ -805,6 +805,7 @@ TSherpaOnnxOnlineSpeechDenoiser = class function SherpaOnnxGetVersionStr(): AnsiString; function SherpaOnnxGetGitSha1(): AnsiString; function SherpaOnnxGetGitDate(): AnsiString; + function SherpaOnnxGetOnnxruntimeVersionStr(): AnsiString; implementation @@ -1364,6 +1365,14 @@ function SherpaOnnxGetGitDate(): AnsiString; Result := SherpaOnnxGetGitDateWrapper(); end; +function SherpaOnnxGetOnnxruntimeVersionStrWrapper(): PAnsiChar; cdecl; + external SherpaOnnxLibName name 'SherpaOnnxGetOnnxruntimeVersionStr'; + +function SherpaOnnxGetOnnxruntimeVersionStr(): AnsiString; +begin + Result := SherpaOnnxGetOnnxruntimeVersionStrWrapper(); +end; + procedure SherpaOnnxDestroyLinearResampler(P: Pointer); cdecl; external SherpaOnnxLibName; diff --git a/sherpa-onnx/python/csrc/version.cc b/sherpa-onnx/python/csrc/version.cc index ee689261bd..4d022328a5 100644 --- a/sherpa-onnx/python/csrc/version.cc +++ b/sherpa-onnx/python/csrc/version.cc @@ -14,12 +14,15 @@ void PybindVersion(py::module *m) { m->attr("version") = std::string(GetVersionStr()); m->attr("git_sha1") = std::string(GetGitSha1()); m->attr("git_date") = std::string(GetGitDate()); + m->attr("onnxruntime_version") = std::string(GetOnnxruntimeVersionStr()); m->attr("__doc_version") = "str: The version of sherpa-onnx."; m->attr("__doc_git_sha1") = "str: The git commit SHA1 used to build sherpa-onnx."; m->attr("__doc_git_date") = "str: The git commit date used to build sherpa-onnx."; + m->attr("__doc_onnxruntime_version") = + "str: The version of onnxruntime used by sherpa-onnx."; } } // namespace sherpa_onnx diff --git a/sherpa-onnx/python/sherpa_onnx/__init__.py b/sherpa-onnx/python/sherpa_onnx/__init__.py index d7ad0c347d..eeea51ffc5 100644 --- a/sherpa-onnx/python/sherpa_onnx/__init__.py +++ b/sherpa-onnx/python/sherpa_onnx/__init__.py @@ -20,7 +20,6 @@ OfflineDolphinModelConfig, OfflineFireRedAsrModelConfig, OfflineFunASRNanoModelConfig, - OfflineQwen3ASRModelConfig, OfflineLMConfig, OfflineModelConfig, OfflineMoonshineModelConfig, @@ -29,6 +28,7 @@ OfflinePunctuation, OfflinePunctuationConfig, OfflinePunctuationModelConfig, + OfflineQwen3ASRModelConfig, OfflineRecognizerConfig, OfflineSenseVoiceModelConfig, OfflineSourceSeparation, @@ -85,6 +85,7 @@ VoiceActivityDetector, git_date, git_sha1, + onnxruntime_version, version, write_wave, ) diff --git a/sherpa-onnx/rust/sherpa-onnx-sys/src/lib.rs b/sherpa-onnx/rust/sherpa-onnx-sys/src/lib.rs index b4161cc616..e7f19f94db 100644 --- a/sherpa-onnx/rust/sherpa-onnx-sys/src/lib.rs +++ b/sherpa-onnx/rust/sherpa-onnx-sys/src/lib.rs @@ -8,6 +8,7 @@ extern "C" { pub fn SherpaOnnxGetVersionStr() -> *const c_char; pub fn SherpaOnnxGetGitSha1() -> *const c_char; pub fn SherpaOnnxGetGitDate() -> *const c_char; + pub fn SherpaOnnxGetOnnxruntimeVersionStr() -> *const c_char; pub fn SherpaOnnxFileExists(filename: *const c_char) -> i32; } diff --git a/sherpa-onnx/rust/sherpa-onnx/src/utils.rs b/sherpa-onnx/rust/sherpa-onnx/src/utils.rs index de3facf261..d10bac8e01 100644 --- a/sherpa-onnx/rust/sherpa-onnx/src/utils.rs +++ b/sherpa-onnx/rust/sherpa-onnx/src/utils.rs @@ -36,6 +36,12 @@ pub fn git_date() -> &'static str { c_str_to_static_str(ptr) } +/// Return the onnxruntime version string used by the native library. +pub fn onnxruntime_version() -> &'static str { + let ptr = unsafe { sys::SherpaOnnxGetOnnxruntimeVersionStr() }; + c_str_to_static_str(ptr) +} + /// Return `true` if `filename` exists according to the native helper. pub fn file_exists(filename: &str) -> bool { let cstr = match CString::new(filename) { diff --git a/swift-api-examples/SherpaOnnx.swift b/swift-api-examples/SherpaOnnx.swift index bb6ac36bea..9a12584771 100644 --- a/swift-api-examples/SherpaOnnx.swift +++ b/swift-api-examples/SherpaOnnx.swift @@ -2108,6 +2108,11 @@ func getSherpaOnnxGitSha1() -> String { func getSherpaOnnxGitDate() -> String { return String(cString: SherpaOnnxGetGitDate()) } + +/// Return the onnxruntime version string used by the library. +func getSherpaOnnxOnnxruntimeVersion() -> String { + return String(cString: SherpaOnnxGetOnnxruntimeVersionStr()) +} //--------------------------- // Source separation //--------------------------- diff --git a/swift-api-examples/test-version.swift b/swift-api-examples/test-version.swift index c516a430f1..7e18510b2d 100644 --- a/swift-api-examples/test-version.swift +++ b/swift-api-examples/test-version.swift @@ -2,9 +2,11 @@ func run() { let version = getSherpaOnnxVersion() let gitSha1 = getSherpaOnnxGitSha1() let gitDate = getSherpaOnnxGitDate() + let onnxruntimeVersion = getSherpaOnnxOnnxruntimeVersion() print("sherpa-onnx version: \(version)") print("sherpa-onnx gitSha1: \(gitSha1)") print("sherpa-onnx gitDate: \(gitDate)") + print("onnxruntime version: \(onnxruntimeVersion)") } @main