mirror of
https://github.com/k2-fsa/sherpa-onnx.git
synced 2026-11-10 13:04:05 +08:00
Unify sherpa-onnx init API for Flutter and Dart CLI (#3875)
This commit is contained in:
1 parent
e1edbfee66
commit
8c0c1b02ca
139 files changed
+919
-758
No files matched your search
@@ -11,6 +11,18 @@ popd
|
||||
|
||||
pushd non-streaming-asr
|
||||
|
||||
echo '----------Moonshine v2----------'
|
||||
./run-moonshine-v2.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------Wenet CTC----------'
|
||||
./run-wenet-ctc.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------Zipformer CTC----------'
|
||||
./run-zipformer-ctc.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------Cohere Transcribe----------'
|
||||
./run-cohere-transcribe.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
@@ -19,10 +31,6 @@ echo '----------Qwen3 ASR----------'
|
||||
./run-qwen3-asr.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------Moonshine v2----------'
|
||||
./run-moonshine-v2.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------FireRedASR CTC----------'
|
||||
./run-fire-red-asr-ctc.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
@@ -39,14 +47,6 @@ echo '----------Omnilingual ASR CTC----------'
|
||||
./run-omnilingual-asr-ctc.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------Wenet CTC----------'
|
||||
./run-wenet-ctc.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------Zipformer CTC----------'
|
||||
./run-zipformer-ctc.sh
|
||||
rm -rf sherpa-onnx-*
|
||||
|
||||
echo '----------SenseVoice----------'
|
||||
./run-sense-voice-with-hr.sh
|
||||
./run-sense-voice.sh
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, ubuntu-24.04-arm] #, windows-2022]
|
||||
os: [ubuntu-latest, macos-latest, ubuntu-24.04-arm, windows-2022]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -125,9 +125,9 @@ jobs:
|
||||
- name: Copy xcframework
|
||||
shell: bash
|
||||
run: |
|
||||
cp -av build-macos-shared-sherpa-with-static-onnxruntime/sherpa-onnx.xcframework flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/SherpaOnnxC.xcframework
|
||||
cp -av build-macos-shared-sherpa-with-static-onnxruntime/sherpa-onnx.xcframework flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/sherpa-onnx.xcframework
|
||||
|
||||
ls -lh flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/SherpaOnnxC.xcframework/
|
||||
ls -lh flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/sherpa-onnx.xcframework/
|
||||
|
||||
- name: Run tests
|
||||
shell: bash
|
||||
|
||||
@@ -20,13 +20,42 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, ubuntu-24.04-arm] #, windows-2022]
|
||||
os: [ubuntu-latest, macos-latest, ubuntu-24.04-arm, windows-2022]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Clean stale onnxruntime (Windows)
|
||||
if: matrix.os == 'windows-2022'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Searching for stale onnxruntime.dll..."
|
||||
search_dirs=(
|
||||
"/c/Windows/System32"
|
||||
"/c/Program Files"
|
||||
"/c/Program Files (x86)"
|
||||
"/c/Users"
|
||||
"/c/hostedtoolcache"
|
||||
)
|
||||
count=0
|
||||
for dir in "${search_dirs[@]}"; do
|
||||
if [ -d "$dir" ]; then
|
||||
while IFS= read -r f; do
|
||||
[ -z "$f" ] && continue
|
||||
echo "Deleting: $f"
|
||||
rm -f "$f" || true
|
||||
count=$((count + 1))
|
||||
done < <(find "$dir" -name "onnxruntime.dll" -type f 2>/dev/null || true)
|
||||
fi
|
||||
done
|
||||
if [ "$count" -eq 0 ]; then
|
||||
echo "No stale onnxruntime.dll found"
|
||||
else
|
||||
echo "Deleted $count onnxruntime.dll file(s)"
|
||||
fi
|
||||
|
||||
- name: Update version
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -34,6 +63,7 @@ jobs:
|
||||
git diff .
|
||||
|
||||
- name: ccache
|
||||
if: matrix.os != 'windows-2022'
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ matrix.os }}-dart
|
||||
@@ -58,11 +88,13 @@ jobs:
|
||||
- name: Build sherpa-onnx
|
||||
shell: bash
|
||||
run: |
|
||||
export CMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
if [[ "${{ matrix.os }}" != "windows-2022" ]]; then
|
||||
export CMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
fi
|
||||
cmake --version
|
||||
|
||||
if [[ ${{ matrix.os }} == macos-latest ]]; then
|
||||
if [[ "${{ matrix.os }}" == macos-latest ]]; then
|
||||
./build-macos-shared-sherpa-with-static-onnxruntime.sh
|
||||
else
|
||||
mkdir build
|
||||
@@ -96,9 +128,13 @@ jobs:
|
||||
echo "os: $os"
|
||||
|
||||
if [[ $os == macos ]]; then
|
||||
cp -av build-macos-shared-sherpa-with-static-onnxruntime/sherpa-onnx.xcframework flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/SherpaOnnxC.xcframework
|
||||
cp -av build-macos-shared-sherpa-with-static-onnxruntime/sherpa-onnx.xcframework flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/sherpa-onnx.xcframework
|
||||
elif [[ $os == windows ]]; then
|
||||
cp -fv build/install/lib/*.dll ./flutter/sherpa_onnx_$os/$os
|
||||
echo "Contents of flutter/sherpa_onnx_windows/windows/:"
|
||||
ls -lh ./flutter/sherpa_onnx_windows/windows/
|
||||
echo "Checking DLL dependencies with objdump:"
|
||||
objdump -p ./flutter/sherpa_onnx_windows/windows/sherpa-onnx-c-api.dll | grep -i "DLL Name" || true
|
||||
elif [[ $os == linux-x64 ]]; then
|
||||
cp -fv build/install/lib/lib* ./flutter/sherpa_onnx_linux/linux/x64
|
||||
elif [[ $os == linux-aarch64 ]]; then
|
||||
@@ -110,7 +146,7 @@ jobs:
|
||||
if [[ $os == linux-x64 || $os == linux-aarch64 ]]; then
|
||||
ls -lh ./flutter/sherpa_onnx_linux/linux/*
|
||||
elif [[ $os == macos ]]; then
|
||||
ls -lh ./flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/SherpaOnnxC.xcframework/
|
||||
ls -lh ./flutter/sherpa_onnx_macos/macos/sherpa_onnx_macos/sherpa-onnx.xcframework/
|
||||
else
|
||||
ls -lh ./flutter/sherpa_onnx_$os/$os
|
||||
fi
|
||||
@@ -118,6 +154,14 @@ jobs:
|
||||
- name: Run tests
|
||||
shell: bash
|
||||
run: |
|
||||
# Add DLL directory to PATH on Windows so onnxruntime.dll is found
|
||||
if [[ "${{ matrix.os }}" == "windows-2022" ]]; then
|
||||
export PATH="$PWD/flutter/sherpa_onnx_windows/windows:$PATH"
|
||||
echo "PATH includes: $PWD/flutter/sherpa_onnx_windows/windows"
|
||||
echo "Checking DLLs in flutter/sherpa_onnx_windows/windows/:"
|
||||
ls -lh flutter/sherpa_onnx_windows/windows/
|
||||
fi
|
||||
|
||||
cp scripts/dart/vad-pubspec.yaml dart-api-examples/vad/pubspec.yaml
|
||||
cp scripts/dart/non-streaming-asr-pubspec.yaml dart-api-examples/non-streaming-asr/pubspec.yaml
|
||||
cp scripts/dart/streaming-asr-pubspec.yaml dart-api-examples/streaming-asr/pubspec.yaml
|
||||
|
||||
+125
-23
@@ -1,37 +1,139 @@
|
||||
# Introduction
|
||||
# Dart API Examples
|
||||
|
||||
This directory contains examples for Dart API.
|
||||
This directory contains examples for the [sherpa_onnx](https://pub.dev/packages/sherpa_onnx) Dart API.
|
||||
|
||||
You can find the package at
|
||||
https://pub.dev/packages/sherpa_onnx
|
||||
All examples can also be used in Flutter apps, even though they are pure Dart
|
||||
CLI programs here.
|
||||
|
||||
## Description
|
||||
> **Start here:** Read the [`version/`](./version) example first. It
|
||||
> demonstrates all initialization patterns (sync, async, and isolate) that
|
||||
> every other example depends on.
|
||||
|
||||
> **For Flutter users:** Read [`hello_world`](../flutter-examples/hello_world)
|
||||
> for initialization, then [`vad-from-microphone`](../flutter-examples/vad-from-microphone)
|
||||
> or [`vad-from-file`](../flutter-examples/vad-from-file) for how to copy
|
||||
> model files from assets to a writable directory and build a complete app.
|
||||
|
||||
## Initialization
|
||||
|
||||
All examples use the same simple initialization — no extra files needed:
|
||||
|
||||
```dart
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
// Sync (Flutter and Dart CLI):
|
||||
sherpa_onnx.initBindings();
|
||||
|
||||
// Or async (Flutter, Dart CLI, and web):
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
```
|
||||
|
||||
No path argument is required. The library auto-resolves the native library
|
||||
location for both Flutter apps and pure Dart CLI programs.
|
||||
|
||||
**Isolates:** If you use Dart isolates, you must call `initBindings()` or
|
||||
`initBindingsAsync()` in every isolate that uses sherpa-onnx. See
|
||||
[`version/`](./version/) for examples.
|
||||
|
||||
## Using in Flutter apps
|
||||
|
||||
These examples use model files from disk directly (e.g., `./model.onnx`).
|
||||
In Flutter apps, model files must be bundled as assets and copied to a
|
||||
writable location before use, because Flutter apps run in a sandbox and
|
||||
cannot access arbitrary file paths.
|
||||
|
||||
**Steps to use a model in Flutter:**
|
||||
|
||||
1. Add the model file to your `pubspec.yaml`:
|
||||
|
||||
```yaml
|
||||
flutter:
|
||||
assets:
|
||||
- assets/model.onnx
|
||||
```
|
||||
|
||||
2. Copy the model from the asset bundle to a writable directory at runtime:
|
||||
|
||||
```dart
|
||||
import 'dart:io';
|
||||
import 'package:flutter/services.dart' show rootBundle;
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
|
||||
Future<String> copyAsset(String assetPath, String fileName) async {
|
||||
final dir = await getApplicationDocumentsDirectory();
|
||||
final file = File('${dir.path}/$fileName');
|
||||
if (!await file.exists()) {
|
||||
final data = await rootBundle.load(assetPath);
|
||||
await file.writeAsBytes(data.buffer.asUint8List());
|
||||
}
|
||||
return file.path;
|
||||
}
|
||||
```
|
||||
|
||||
3. Pass the copied file path to the sherpa-onnx config:
|
||||
|
||||
```dart
|
||||
final modelPath = await copyAsset('assets/model.onnx', 'model.onnx');
|
||||
final config = sherpa_onnx.OfflineRecognizerConfig(
|
||||
model: sherpa_onnx.OfflineModelConfig(
|
||||
paraformer: sherpa_onnx.OfflineParaformerModelConfig(model: modelPath),
|
||||
),
|
||||
);
|
||||
```
|
||||
|
||||
For concrete Flutter examples, see
|
||||
[`flutter-examples/`](../flutter-examples/) in the repository.
|
||||
|
||||
## Examples
|
||||
|
||||
| Directory | Description |
|
||||
|-----------|-------------|
|
||||
| [./speaker-diarization](./speaker-diarization)| Example for speaker diarization.|
|
||||
| [./add-punctuations](./add-punctuations)| Example for adding punctuations to text.|
|
||||
| [./audio-tagging](./audio-tagging)| Example for audio tagging.|
|
||||
| [./keyword-spotter](./keyword-spotter)| Example for keyword spotting|
|
||||
| [./non-streaming-asr](./non-streaming-asr)| Example for non-streaming speech recognition|
|
||||
| [./speaker-identification](./speaker-identification)| Example for speaker identification and verification.|
|
||||
| [./streaming-asr](./streaming-asr)| Example for streaming speech recognition|
|
||||
| [./tts](./tts)| Example for text to speech|
|
||||
| [./vad-with-non-streaming-asr](./vad-with-non-streaming-asr)| Example for voice activity detection with non-streaming speech recognition. You can use it to generate subtitles.|
|
||||
| [./vad](./vad)| Example for voice activity detection|
|
||||
| [./speech-enhancement-gtcrn](./speech-enhancement-gtcrn)| Example for speech enhancement/denoising with GTCRN.|
|
||||
| [./speech-enhancement-dpdfnet](./speech-enhancement-dpdfnet)| Example for speech enhancement/denoising with DPDFNet, including the 16 kHz family (`dpdfnet_baseline`, `dpdfnet2`, `dpdfnet4`, `dpdfnet8`).|
|
||||
| [./streaming-speech-enhancement-gtcrn](./streaming-speech-enhancement-gtcrn)| Example for streaming speech enhancement/denoising with GTCRN.|
|
||||
| [./streaming-speech-enhancement-dpdfnet](./streaming-speech-enhancement-dpdfnet)| Example for streaming speech enhancement/denoising with DPDFNet.|
|
||||
| [version](./version) | Version info — demonstrates sync, async, and isolate initialization |
|
||||
| [vad](./vad) | Voice activity detection |
|
||||
| [vad-with-non-streaming-asr](./vad-with-non-streaming-asr) | VAD with non-streaming speech recognition (useful for subtitles) |
|
||||
| [non-streaming-asr](./non-streaming-asr) | Non-streaming (offline) speech recognition |
|
||||
| [streaming-asr](./streaming-asr) | Streaming (online) speech recognition |
|
||||
| [tts](./tts) | Text to speech |
|
||||
| [speaker-diarization](./speaker-diarization) | Speaker diarization |
|
||||
| [speaker-identification](./speaker-identification) | Speaker identification and verification |
|
||||
| [spoken-language-identification](./spoken-language-identification) | Spoken language identification |
|
||||
| [audio-tagging](./audio-tagging) | Audio tagging |
|
||||
| [keyword-spotter](./keyword-spotter) | Keyword spotting |
|
||||
| [add-punctuations](./add-punctuations) | Adding punctuations to text |
|
||||
| [speech-enhancement-gtcrn](./speech-enhancement-gtcrn) | Speech enhancement/denoising with GTCRN |
|
||||
| [speech-enhancement-dpdfnet](./speech-enhancement-dpdfnet) | Speech enhancement/denoising with DPDFNet (16 kHz family) |
|
||||
| [streaming-speech-enhancement-gtcrn](./streaming-speech-enhancement-gtcrn) | Streaming speech enhancement with GTCRN |
|
||||
| [streaming-speech-enhancement-dpdfnet](./streaming-speech-enhancement-dpdfnet) | Streaming speech enhancement with DPDFNet |
|
||||
|
||||
## How to create an example in this folder
|
||||
## Running an example
|
||||
|
||||
```bash
|
||||
dart create vad
|
||||
cd vad
|
||||
dart pub get
|
||||
dart run ./bin/vad.dart --help
|
||||
```
|
||||
|
||||
# Edit pubspec.yaml and add sherpa_onnx to dependencies
|
||||
## Creating a new example
|
||||
|
||||
```bash
|
||||
dart create my-example
|
||||
cd my-example
|
||||
|
||||
# Add sherpa_onnx to pubspec.yaml:
|
||||
# dependencies:
|
||||
# sherpa_onnx: ^1.13.5
|
||||
# path: ^1.9.0
|
||||
|
||||
dart pub get
|
||||
dart run
|
||||
```
|
||||
|
||||
In your `main.dart`:
|
||||
|
||||
```dart
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main() async {
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
// Use sherpa-onnx APIs here...
|
||||
}
|
||||
```
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to model.onnx')
|
||||
|
||||
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()..addOption('model', help: 'Path to model.onnx');
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the zipformer model')
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the zipformer model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the encoder model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the encoder model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the Dolphin CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the FireRedASR CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the FireRedAsr encoder model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder-adaptor', help: 'Path to the encoder adaptor model')
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the MedASR CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('preprocessor',
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the moonshine v2 encoder model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the NeMo Canary encoder model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the NeMo CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the encoder model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the Omnilingual ASR CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the paraformer model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the paraformer model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('conv-frontend', help: 'Path to the conv frontend model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
print('sherpa-onnx version: ${sherpa_onnx.getVersion()}');
|
||||
print('sherpa-onnx gitSha1: ${sherpa_onnx.getGitSha1()}');
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the SenseVoice model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the telespeech CTC model')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the Wenet CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the whisper encoder model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the Zipformer CTC model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the encoder model')
|
||||
|
||||
@@ -6,7 +6,7 @@ version: 1.0.0
|
||||
# repository: https://github.com/my_org/my_repo
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -4,10 +4,10 @@ import 'dart:typed_data';
|
||||
import 'dart:ffi';
|
||||
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
/* Please use the following commands to download files used in this file
|
||||
Step 1: Download a speaker segmentation model
|
||||
|
||||
@@ -5,7 +5,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -4,7 +4,7 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
Float32List computeEmbedding(
|
||||
{required sherpa_onnx.SpeakerEmbeddingExtractor extractor,
|
||||
@@ -27,7 +27,7 @@ Float32List computeEmbedding(
|
||||
}
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()..addOption('model', help: 'Path to model.onnx');
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to a DPDFNet onnx model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to a GTCRN onnx model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
+2
-2
@@ -3,10 +3,10 @@ import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the whisper encoder model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the encoder model')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the model')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the model')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the model')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('encoder', help: 'Path to the encoder model')
|
||||
|
||||
@@ -7,7 +7,7 @@ version: 1.0.0
|
||||
# repository: https://github.com/my_org/my_repo
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
+2
-2
@@ -4,10 +4,10 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to a DPDFNet onnx model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
+2
-2
@@ -4,10 +4,10 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to a GTCRN onnx model')
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the ONNX model')
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the onnx model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the onnx model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the onnx model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('acoustic-model', help: 'Path to the acoustic model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('acoustic-model', help: 'Path to the acoustic model')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the ONNX model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('lm-flow', help: 'Path to the lm flow model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('duration-predictor',
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('model', help: 'Path to the ONNX model')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('tokens', help: 'Path to tokens.txt')
|
||||
|
||||
@@ -4,7 +4,7 @@ version: 1.0.0
|
||||
# repository: https://github.com/my_org/my_repo
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -6,10 +6,10 @@ import 'dart:io';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -5,10 +5,10 @@ import 'dart:typed_data';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -7,7 +7,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
// Copyright (c) 2024 Xiaomi Corporation
|
||||
import 'dart:io';
|
||||
import 'dart:isolate';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
Future<void> initSherpaOnnx() async {
|
||||
String platform = '';
|
||||
|
||||
if (Platform.isMacOS) {
|
||||
platform = 'macos';
|
||||
} else if (Platform.isLinux) {
|
||||
platform = 'linux';
|
||||
} else if (Platform.isWindows) {
|
||||
platform = 'windows';
|
||||
} else {
|
||||
throw UnsupportedError('Unknown platform: ${Platform.operatingSystem}');
|
||||
}
|
||||
|
||||
var uri = await Isolate.resolvePackageUri(
|
||||
Uri.parse('package:sherpa_onnx_$platform/any_path_is_ok_here.dart'));
|
||||
|
||||
if (uri == null) {
|
||||
print('File not found');
|
||||
exit(1);
|
||||
}
|
||||
|
||||
var libPath = p.join(p.dirname(p.fromUri(uri)), '..', platform);
|
||||
if (platform == 'linux') {
|
||||
final arch = Platform.version.contains('arm64') ||
|
||||
Platform.version.contains('aarch64')
|
||||
? 'aarch64'
|
||||
: 'x64';
|
||||
libPath = p.join(p.dirname(p.fromUri(uri)), '..', platform, arch);
|
||||
}
|
||||
|
||||
sherpa_onnx.initBindings(libPath);
|
||||
}
|
||||
@@ -4,10 +4,10 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('ten-vad', help: 'Path to ten-vad.onnx')
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'dart:typed_data';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
import './init.dart';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
await initSherpaOnnx();
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
final parser = ArgParser()
|
||||
..addOption('silero-vad', help: 'Path to silero_vad.onnx')
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
# Generated by pub
|
||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||
packages:
|
||||
args:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: args
|
||||
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.0"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
flutter:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: lints
|
||||
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.0"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.12.0"
|
||||
path:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
sherpa_onnx:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sherpa_onnx
|
||||
sha256: e45894f81e7c854ca96d678bcab5303036e884a7c90e9a6c4ec04c7b1ee215a8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.29"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.99"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_math
|
||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
sdks:
|
||||
dart: ">=3.4.0 <4.0.0"
|
||||
flutter: ">=3.3.0"
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
sherpa_onnx: ^1.13.5
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
# Version Example
|
||||
|
||||
This example shows how to initialize sherpa-onnx and print version information.
|
||||
It demonstrates four different ways to initialize the library.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Dart SDK](https://dart.dev/get-dart) (3.0.0 or later)
|
||||
- sherpa-onnx native library (installed automatically via pub dependencies)
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
cd dart-api-examples/version
|
||||
./run.sh
|
||||
```
|
||||
|
||||
This runs all four examples below.
|
||||
|
||||
## Examples
|
||||
|
||||
### 1. Sync Init (`main_sync.dart`)
|
||||
|
||||
The simplest way to initialize sherpa-onnx. Calls `initBindings()` which
|
||||
blocks until the native library is loaded.
|
||||
|
||||
```dart
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main() {
|
||||
sherpa_onnx.initBindings();
|
||||
print('version: ${sherpa_onnx.getVersion()}');
|
||||
}
|
||||
```
|
||||
|
||||
**When to use:** Simple scripts, command-line tools, and Flutter apps where
|
||||
you don't need async initialization.
|
||||
|
||||
**Does NOT work on web.** Use `initBindingsAsync()` for web support.
|
||||
|
||||
### 2. Async Init (`main_async.dart`)
|
||||
|
||||
Calls `initBindingsAsync()` which returns a `Future`. This is the recommended
|
||||
approach because it works on all platforms including web.
|
||||
|
||||
```dart
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main() async {
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
print('version: ${sherpa_onnx.getVersion()}');
|
||||
}
|
||||
```
|
||||
|
||||
**When to use:** Anywhere. This is the safest choice that works on Flutter,
|
||||
Dart CLI, and web.
|
||||
|
||||
### 3. Isolate with Sync Init (`main_isolate_sync.dart`)
|
||||
|
||||
Demonstrates using sherpa-onnx in a Dart isolate with synchronous
|
||||
initialization.
|
||||
|
||||
**Key concept:** Each isolate has its own memory space and FFI bindings.
|
||||
You MUST call `initBindings()` or `initBindingsAsync()` in every isolate
|
||||
that uses sherpa-onnx. Calling it in one isolate does NOT make sherpa-onnx
|
||||
available in other isolates.
|
||||
|
||||
```dart
|
||||
import 'dart:isolate';
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void worker(SendPort sendPort) {
|
||||
// MUST initialize in this isolate too!
|
||||
sherpa_onnx.initBindings();
|
||||
sendPort.send(sherpa_onnx.getVersion());
|
||||
}
|
||||
|
||||
void main() async {
|
||||
// Initialize in the main isolate.
|
||||
sherpa_onnx.initBindings();
|
||||
print('main: ${sherpa_onnx.getVersion()}');
|
||||
|
||||
// Spawn a worker isolate.
|
||||
final receivePort = ReceivePort();
|
||||
await Isolate.spawn(worker, receivePort.sendPort);
|
||||
final version = await receivePort.first;
|
||||
print('worker: $version');
|
||||
}
|
||||
```
|
||||
|
||||
**When to use:** Background processing (e.g., TTS generation, model loading)
|
||||
where you want synchronous initialization in each isolate.
|
||||
|
||||
### 4. Isolate with Async Init (`main_isolate_async.dart`)
|
||||
|
||||
Same as above but uses `initBindingsAsync()` in both isolates.
|
||||
|
||||
```dart
|
||||
void worker(SendPort sendPort) async {
|
||||
await sherpa_onnx.initBindingsAsync(); // async init
|
||||
sendPort.send(sherpa_onnx.getVersion());
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await sherpa_onnx.initBindingsAsync(); // async init
|
||||
// ... spawn isolate as before
|
||||
}
|
||||
```
|
||||
|
||||
**When to use:** Same as the sync isolate example, but when you prefer
|
||||
async initialization (e.g., in Flutter apps or web-compatible code).
|
||||
|
||||
## How Initialization Works
|
||||
|
||||
When you call `initBindings()` or `initBindingsAsync()`:
|
||||
|
||||
1. The library detects the current platform (macOS, Linux, Windows, iOS,
|
||||
Android, or web).
|
||||
2. It locates the native `sherpa-onnx-c-api` library:
|
||||
- **Flutter apps:** The library is linked into the app bundle by the
|
||||
build system. `DynamicLibrary.process()` loads it directly.
|
||||
- **Dart CLI:** The library is located in the pub cache via
|
||||
`Isolate.resolvePackageUri()`. `DynamicLibrary.open()` loads it
|
||||
from disk.
|
||||
- **Web:** The WASM module is loaded from bundled assets.
|
||||
3. Once loaded, all sherpa-onnx APIs become available in that isolate.
|
||||
|
||||
## API Reference
|
||||
|
||||
| Function | Sync/Async | Flutter | Dart CLI | Web |
|
||||
|---|---|---|---|---|
|
||||
| `initBindings()` | Sync | ✅ | ✅ | ❌ |
|
||||
| `initBindingsAsync()` | Async | ✅ | ✅ | ✅ |
|
||||
|
||||
Both functions accept an optional path argument to override the auto-detected
|
||||
native library location. In most cases you don't need to pass a path.
|
||||
@@ -1 +0,0 @@
|
||||
../../vad/bin/init.dart
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright (c) 2026 Xiaomi Corporation
|
||||
//
|
||||
// Example: async initialization using initBindingsAsync().
|
||||
//
|
||||
// initBindingsAsync() works on all platforms (Flutter, Dart CLI, Web).
|
||||
// It auto-resolves the native library path on Dart CLI and loads WASM on web.
|
||||
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
|
||||
|
||||
void main() async {
|
||||
await sherpa_onnx.initBindingsAsync();
|
||||
|
||||
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()}');
|
||||
}
|
||||
Loaded 100 of 139 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user