react-native-sherpa-onnx 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -0
- package/README.md +90 -21
- package/SherpaOnnx.podspec +3 -0
- package/THIRD_PARTY_LICENSES/README.md +62 -0
- package/THIRD_PARTY_LICENSES/ffmpeg.txt +502 -0
- package/THIRD_PARTY_LICENSES/libarchive.txt +65 -0
- package/THIRD_PARTY_LICENSES/nvidia_omla.txt +181 -0
- package/THIRD_PARTY_LICENSES/onnxruntime.txt +21 -0
- package/THIRD_PARTY_LICENSES/opus.txt +44 -0
- package/THIRD_PARTY_LICENSES/sherpa-onnx.txt +201 -0
- package/THIRD_PARTY_LICENSES/shine.txt +482 -0
- package/THIRD_PARTY_LICENSES/zstd.txt +30 -0
- package/android/build.gradle +7 -3
- package/android/prebuilt-download.gradle +345 -153
- package/android/prebuilt-versions.gradle +2 -2
- package/android/src/main/assets/model_licenses/asr-models-license-status.csv +409 -0
- package/android/src/main/assets/model_licenses/qnn-asr-models-license-status.csv +695 -0
- package/android/src/main/assets/model_licenses/tts-models-license-status.csv +596 -0
- package/android/src/main/cpp/CMakeLists.txt +28 -10
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.cpp +306 -6
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.h +33 -4
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-jni.cpp +266 -7
- package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +268 -2
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +6 -2
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-tts.cpp +4 -2
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +137 -7
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxAssetHelper.kt +51 -6
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +159 -0
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxOnlineSttHelper.kt +4 -1
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +112 -97
- package/ios/Resources/model_licenses/asr-models-license-status.csv +409 -0
- package/ios/Resources/model_licenses/qnn-asr-models-license-status.csv +695 -0
- package/ios/Resources/model_licenses/tts-models-license-status.csv +596 -0
- package/ios/SherpaOnnx+OnlineSTT.mm +2 -0
- package/ios/SherpaOnnx+PcmLiveStream.mm +2 -29
- package/ios/SherpaOnnx+TTS.mm +178 -20
- package/ios/SherpaOnnx.mm +108 -1
- package/ios/SherpaOnnxAudioConvert.h +10 -0
- package/ios/SherpaOnnxAudioConvert.mm +257 -1
- package/ios/archive/sherpa-onnx-archive-helper.h +10 -0
- package/ios/archive/sherpa-onnx-archive-helper.mm +56 -5
- package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +13 -2
- package/ios/model_detect/sherpa-onnx-validate-tts.mm +4 -2
- package/ios/online_stt/sherpa-onnx-online-stt-wrapper.h +1 -0
- package/ios/online_stt/sherpa-onnx-online-stt-wrapper.mm +4 -0
- package/ios/tts/sherpa-onnx-tts-wrapper.h +37 -0
- package/ios/tts/sherpa-onnx-tts-wrapper.mm +149 -3
- package/lib/module/NativeSherpaOnnx.js.map +1 -1
- package/lib/module/audio/index.js +8 -0
- package/lib/module/audio/index.js.map +1 -1
- package/lib/module/download/ModelDownloadManager.js +10 -929
- package/lib/module/download/ModelDownloadManager.js.map +1 -1
- package/lib/module/download/activeModelOperations.js +26 -0
- package/lib/module/download/activeModelOperations.js.map +1 -0
- package/lib/module/download/background-downloader.d.js +2 -0
- package/lib/module/download/background-downloader.d.js.map +1 -0
- package/lib/module/download/bulkPurge.js +72 -0
- package/lib/module/download/bulkPurge.js.map +1 -0
- package/lib/module/download/checksumPrompt.js +19 -0
- package/lib/module/download/checksumPrompt.js.map +1 -0
- package/lib/module/download/constants.js +7 -0
- package/lib/module/download/constants.js.map +1 -0
- package/lib/module/download/downloadEvents.js +35 -0
- package/lib/module/download/downloadEvents.js.map +1 -0
- package/lib/module/download/downloadTask.js +385 -0
- package/lib/module/download/downloadTask.js.map +1 -0
- package/lib/module/download/ensureModel.js +89 -0
- package/lib/module/download/ensureModel.js.map +1 -0
- package/lib/module/download/index.js +4 -3
- package/lib/module/download/index.js.map +1 -1
- package/lib/module/download/localModels.js +151 -0
- package/lib/module/download/localModels.js.map +1 -0
- package/lib/module/download/modelExtraction.js +174 -0
- package/lib/module/download/modelExtraction.js.map +1 -0
- package/lib/module/download/paths.js +98 -0
- package/lib/module/download/paths.js.map +1 -0
- package/lib/module/download/postDownloadProcessing.js +206 -0
- package/lib/module/download/postDownloadProcessing.js.map +1 -0
- package/lib/module/download/protectedModelKeys.js +31 -0
- package/lib/module/download/protectedModelKeys.js.map +1 -0
- package/lib/module/download/registry.js +267 -0
- package/lib/module/download/registry.js.map +1 -0
- package/lib/module/download/retry.js +59 -0
- package/lib/module/download/retry.js.map +1 -0
- package/lib/module/download/types.js +17 -0
- package/lib/module/download/types.js.map +1 -0
- package/lib/module/download/validation.js +101 -5
- package/lib/module/download/validation.js.map +1 -1
- package/lib/module/{download → extraction}/extractTarBz2.js +3 -1
- package/lib/module/extraction/extractTarBz2.js.map +1 -0
- package/lib/module/extraction/extractTarZst.js +54 -0
- package/lib/module/extraction/extractTarZst.js.map +1 -0
- package/lib/module/extraction/index.js +190 -0
- package/lib/module/extraction/index.js.map +1 -0
- package/lib/module/extraction/types.js +2 -0
- package/lib/module/extraction/types.js.map +1 -0
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/licenses.js +63 -0
- package/lib/module/licenses.js.map +1 -0
- package/lib/module/stt/index.js +16 -2
- package/lib/module/stt/index.js.map +1 -1
- package/lib/module/stt/streaming.js +2 -0
- package/lib/module/stt/streaming.js.map +1 -1
- package/lib/module/stt/streamingTypes.js.map +1 -1
- package/lib/module/stt/types.js.map +1 -1
- package/lib/module/tts/index.js +20 -2
- package/lib/module/tts/index.js.map +1 -1
- package/lib/module/tts/streaming.js +4 -0
- package/lib/module/tts/streaming.js.map +1 -1
- package/lib/module/tts/types.js.map +1 -1
- package/lib/module/utils.js +16 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/src/NativeSherpaOnnx.d.ts +72 -5
- package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
- package/lib/typescript/src/audio/index.d.ts +10 -0
- package/lib/typescript/src/audio/index.d.ts.map +1 -1
- package/lib/typescript/src/download/ModelDownloadManager.d.ts +10 -108
- package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -1
- package/lib/typescript/src/download/activeModelOperations.d.ts +6 -0
- package/lib/typescript/src/download/activeModelOperations.d.ts.map +1 -0
- package/lib/typescript/src/download/bulkPurge.d.ts +14 -0
- package/lib/typescript/src/download/bulkPurge.d.ts.map +1 -0
- package/lib/typescript/src/download/checksumPrompt.d.ts +3 -0
- package/lib/typescript/src/download/checksumPrompt.d.ts.map +1 -0
- package/lib/typescript/src/download/constants.d.ts +5 -0
- package/lib/typescript/src/download/constants.d.ts.map +1 -0
- package/lib/typescript/src/download/downloadEvents.d.ts +6 -0
- package/lib/typescript/src/download/downloadEvents.d.ts.map +1 -0
- package/lib/typescript/src/download/downloadTask.d.ts +20 -0
- package/lib/typescript/src/download/downloadTask.d.ts.map +1 -0
- package/lib/typescript/src/download/ensureModel.d.ts +26 -0
- package/lib/typescript/src/download/ensureModel.d.ts.map +1 -0
- package/lib/typescript/src/download/index.d.ts +7 -5
- package/lib/typescript/src/download/index.d.ts.map +1 -1
- package/lib/typescript/src/download/localModels.d.ts +15 -0
- package/lib/typescript/src/download/localModels.d.ts.map +1 -0
- package/lib/typescript/src/download/modelExtraction.d.ts +36 -0
- package/lib/typescript/src/download/modelExtraction.d.ts.map +1 -0
- package/lib/typescript/src/download/paths.d.ts +28 -0
- package/lib/typescript/src/download/paths.d.ts.map +1 -0
- package/lib/typescript/src/download/postDownloadProcessing.d.ts +19 -0
- package/lib/typescript/src/download/postDownloadProcessing.d.ts.map +1 -0
- package/lib/typescript/src/download/protectedModelKeys.d.ts +6 -0
- package/lib/typescript/src/download/protectedModelKeys.d.ts.map +1 -0
- package/lib/typescript/src/download/registry.d.ts +14 -0
- package/lib/typescript/src/download/registry.d.ts.map +1 -0
- package/lib/typescript/src/download/retry.d.ts +15 -0
- package/lib/typescript/src/download/retry.d.ts.map +1 -0
- package/lib/typescript/src/download/types.d.ts +96 -0
- package/lib/typescript/src/download/types.d.ts.map +1 -0
- package/lib/typescript/src/download/validation.d.ts +19 -0
- package/lib/typescript/src/download/validation.d.ts.map +1 -1
- package/lib/typescript/src/extraction/extractTarBz2.d.ts.map +1 -0
- package/lib/typescript/src/extraction/extractTarZst.d.ts +14 -0
- package/lib/typescript/src/extraction/extractTarZst.d.ts.map +1 -0
- package/lib/typescript/src/extraction/index.d.ts +50 -0
- package/lib/typescript/src/extraction/index.d.ts.map +1 -0
- package/lib/typescript/src/extraction/types.d.ts +60 -0
- package/lib/typescript/src/extraction/types.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/licenses.d.ts +10 -0
- package/lib/typescript/src/licenses.d.ts.map +1 -0
- package/lib/typescript/src/stt/index.d.ts +4 -1
- package/lib/typescript/src/stt/index.d.ts.map +1 -1
- package/lib/typescript/src/stt/streaming.d.ts.map +1 -1
- package/lib/typescript/src/stt/streamingTypes.d.ts +5 -0
- package/lib/typescript/src/stt/streamingTypes.d.ts.map +1 -1
- package/lib/typescript/src/stt/types.d.ts +3 -1
- package/lib/typescript/src/stt/types.d.ts.map +1 -1
- package/lib/typescript/src/tts/index.d.ts +3 -1
- package/lib/typescript/src/tts/index.d.ts.map +1 -1
- package/lib/typescript/src/tts/streaming.d.ts.map +1 -1
- package/lib/typescript/src/tts/types.d.ts +6 -5
- package/lib/typescript/src/tts/types.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +5 -0
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/package.json +11 -1
- package/scripts/{check-model-csvs.sh → ci/check-model-csvs.sh} +9 -2
- package/scripts/ci/collect_all_sherpa_model_streams.sh +101 -0
- package/scripts/ci/collect_one_sherpa_release_stream.sh +189 -0
- package/scripts/ci/sherpa_asr_model_release_streams.json +21 -0
- package/scripts/ci/sherpa_tts_model_release_streams.json +13 -0
- package/scripts/ci/update_model_license_csv.sh +765 -0
- package/scripts/setup-ios-framework.sh +14 -11
- package/scripts/update_commercial_use.js +73 -0
- package/src/NativeSherpaOnnx.ts +92 -5
- package/src/audio/index.ts +20 -0
- package/src/download/ModelDownloadManager.ts +55 -1343
- package/src/download/activeModelOperations.ts +38 -0
- package/src/download/background-downloader.d.ts +43 -0
- package/src/download/bulkPurge.ts +102 -0
- package/src/download/checksumPrompt.ts +25 -0
- package/src/download/constants.ts +5 -0
- package/src/download/downloadEvents.ts +55 -0
- package/src/download/downloadTask.ts +497 -0
- package/src/download/ensureModel.ts +124 -0
- package/src/download/index.ts +19 -2
- package/src/download/localModels.ts +234 -0
- package/src/download/modelExtraction.ts +244 -0
- package/src/download/paths.ts +134 -0
- package/src/download/postDownloadProcessing.ts +292 -0
- package/src/download/protectedModelKeys.ts +30 -0
- package/src/download/registry.ts +404 -0
- package/src/download/retry.ts +76 -0
- package/src/download/types.ts +120 -0
- package/src/download/validation.ts +114 -8
- package/src/{download → extraction}/extractTarBz2.ts +3 -1
- package/src/extraction/extractTarZst.ts +79 -0
- package/src/extraction/index.ts +269 -0
- package/src/extraction/types.ts +63 -0
- package/src/index.tsx +2 -0
- package/src/licenses.ts +100 -0
- package/src/stt/index.ts +20 -2
- package/src/stt/streaming.ts +3 -0
- package/src/stt/streamingTypes.ts +5 -0
- package/src/stt/types.ts +3 -1
- package/src/tts/index.ts +30 -2
- package/src/tts/streaming.ts +10 -0
- package/src/tts/types.ts +6 -5
- package/src/utils.ts +22 -1
- package/third_party/libarchive_prebuilt/ANDROID_RELEASE_TAG +1 -1
- package/third_party/libarchive_prebuilt/IOS_RELEASE_TAG +1 -1
- package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -1
- package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -1
- package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +0 -301
- package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +0 -187
- package/lib/module/download/extractTarBz2.js.map +0 -1
- package/lib/typescript/src/download/extractTarBz2.d.ts.map +0 -1
- package/scripts/check-qnn-support.sh +0 -78
- /package/lib/typescript/src/{download → extraction}/extractTarBz2.d.ts +0 -0
|
@@ -72,6 +72,12 @@ fi
|
|
|
72
72
|
# Create frameworks directory if it doesn't exist
|
|
73
73
|
mkdir -p "$FRAMEWORKS_DIR"
|
|
74
74
|
|
|
75
|
+
# Backward compatibility: if slug-specific sherpa-onnx version file exists, remove legacy .framework-version
|
|
76
|
+
# so only one source of truth remains and build numbers (e.g. 1.12.28-1) are not confused with legacy (1.12.28).
|
|
77
|
+
if [ -f "$FRAMEWORKS_DIR/.framework-version-sherpa-onnx" ] && [ -f "$FRAMEWORKS_DIR/.framework-version" ]; then
|
|
78
|
+
rm -f "$FRAMEWORKS_DIR/.framework-version"
|
|
79
|
+
fi
|
|
80
|
+
|
|
75
81
|
# Framework slugs to manage (order: sherpa-onnx first, then libarchive, then ffmpeg)
|
|
76
82
|
FRAMEWORK_SLUGS=(sherpa-onnx)
|
|
77
83
|
|
|
@@ -93,7 +99,7 @@ get_framework_config() {
|
|
|
93
99
|
case "$slug" in
|
|
94
100
|
sherpa-onnx)
|
|
95
101
|
TAG_FILE="$PROJECT_ROOT/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG"
|
|
96
|
-
TAG_PREFIX="
|
|
102
|
+
TAG_PREFIX="sherpa-onnx-ios-v"
|
|
97
103
|
XCFRAMEWORK_NAME="sherpa_onnx.xcframework"
|
|
98
104
|
ZIP_ASSET_NAME="sherpa_onnx.xcframework.zip"
|
|
99
105
|
VERSION_FILE="$FRAMEWORKS_DIR/.framework-version-sherpa-onnx"
|
|
@@ -145,19 +151,19 @@ framework_valid() {
|
|
|
145
151
|
|
|
146
152
|
# Helper: get installed framework version (from version file or xcframework VERSION.txt)
|
|
147
153
|
# Usage: get_installed_version <slug>
|
|
148
|
-
#
|
|
154
|
+
# Prefer slug-specific VERSION_FILE so build numbers (e.g. 1.12.28-1) match; fall back to legacy .framework-version for sherpa-onnx.
|
|
149
155
|
get_installed_version() {
|
|
150
156
|
local slug="$1"
|
|
151
157
|
get_framework_config "$slug" || return 1
|
|
152
|
-
# Backward compat: sherpa-onnx used to use .framework-version
|
|
153
|
-
if [ "$slug" = "sherpa-onnx" ] && [ -f "$FRAMEWORKS_DIR/.framework-version" ]; then
|
|
154
|
-
cat "$FRAMEWORKS_DIR/.framework-version" 2>/dev/null | tr -d '\r\n'
|
|
155
|
-
return 0
|
|
156
|
-
fi
|
|
157
158
|
if [ -f "$VERSION_FILE" ]; then
|
|
158
159
|
cat "$VERSION_FILE" 2>/dev/null | tr -d '\r\n'
|
|
159
160
|
return 0
|
|
160
161
|
fi
|
|
162
|
+
# Backward compatibility only: sherpa-onnx used to use .framework-version; prefer slug-specific file above.
|
|
163
|
+
if [ "$slug" = "sherpa-onnx" ] && [ -f "$FRAMEWORKS_DIR/.framework-version" ]; then
|
|
164
|
+
cat "$FRAMEWORKS_DIR/.framework-version" 2>/dev/null | tr -d '\r\n'
|
|
165
|
+
return 0
|
|
166
|
+
fi
|
|
161
167
|
if [ -f "$FRAMEWORKS_DIR/$XCFRAMEWORK_NAME/VERSION.txt" ]; then
|
|
162
168
|
grep -Eo '([0-9]+\.)+[0-9]+([-a-zA-Z0-9.]*)?' "$FRAMEWORKS_DIR/$XCFRAMEWORK_NAME/VERSION.txt" | head -n1 | tr -d '\r\n'
|
|
163
169
|
return 0
|
|
@@ -294,6 +300,7 @@ get_local_framework_version() {
|
|
|
294
300
|
cat "$VERSION_FILE"
|
|
295
301
|
return 0
|
|
296
302
|
fi
|
|
303
|
+
# Backward compatibility only: sherpa-onnx used to use .framework-version.
|
|
297
304
|
if [ "$slug" = "sherpa-onnx" ] && [ -f "$FRAMEWORKS_DIR/.framework-version" ]; then
|
|
298
305
|
cat "$FRAMEWORKS_DIR/.framework-version"
|
|
299
306
|
return 0
|
|
@@ -446,10 +453,6 @@ if [ "$INTERACTIVE" = true ]; then
|
|
|
446
453
|
fi
|
|
447
454
|
done
|
|
448
455
|
echo "" >&2
|
|
449
|
-
echo "Next steps:" >&2
|
|
450
|
-
echo " 1. cd example" >&2
|
|
451
|
-
echo " 2. pod install" >&2
|
|
452
|
-
echo " 3. Open ios/SherpaOnnxExample.xcworkspace in Xcode" >&2
|
|
453
456
|
fi
|
|
454
457
|
|
|
455
458
|
# Fix CocoaPods header flattening: delete FFmpeg's time.h so it doesn't shadow system time.h
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const commercialMapping = {
|
|
5
|
+
'agpl-3.0': 'conditional',
|
|
6
|
+
'apache-2.0': 'yes',
|
|
7
|
+
'bsd-3-clause': 'yes',
|
|
8
|
+
'cc-by': 'yes',
|
|
9
|
+
'cc-by-3.0': 'yes',
|
|
10
|
+
'cc-by-4.0': 'yes',
|
|
11
|
+
'cc-by-nc-4.0': 'no',
|
|
12
|
+
'cc-by-nc-nd-4.0': 'no',
|
|
13
|
+
'cc-by-nc-sa-4.0': 'no',
|
|
14
|
+
'cc-by-sa': 'conditional',
|
|
15
|
+
'cc-by-sa-3.0-es': 'conditional',
|
|
16
|
+
'cc-by-sa-4.0': 'conditional',
|
|
17
|
+
'cc0': 'yes',
|
|
18
|
+
'gpl-2.0': 'conditional',
|
|
19
|
+
'mit': 'yes',
|
|
20
|
+
'ngc-terms-of-use': 'restricted',
|
|
21
|
+
'no-license': 'no',
|
|
22
|
+
'nvidia-open-model-license': 'yes',
|
|
23
|
+
'proprietary-restricted': 'no',
|
|
24
|
+
'public-domain': 'yes',
|
|
25
|
+
'research-only': 'no',
|
|
26
|
+
'unlicense': 'yes',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const files = [
|
|
30
|
+
'android/src/main/assets/model_licenses/asr-models-license-status.csv',
|
|
31
|
+
'android/src/main/assets/model_licenses/qnn-asr-models-license-status.csv',
|
|
32
|
+
'android/src/main/assets/model_licenses/tts-models-license-status.csv',
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
files.forEach((fileName) => {
|
|
36
|
+
const filePath = path.resolve(__dirname, '..', fileName);
|
|
37
|
+
if (!fs.existsSync(filePath)) {
|
|
38
|
+
console.error(`File not found: ${filePath}`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
43
|
+
const lines = content.split('\n');
|
|
44
|
+
const newLines = [];
|
|
45
|
+
|
|
46
|
+
// Keep header
|
|
47
|
+
newLines.push(lines[0]);
|
|
48
|
+
|
|
49
|
+
for (let i = 1; i < lines.length; i++) {
|
|
50
|
+
const line = lines[i];
|
|
51
|
+
if (!line.trim()) {
|
|
52
|
+
if (i < lines.length - 1 || line === '') newLines.push(line);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const columns = line.split(',');
|
|
57
|
+
if (columns.length > 2) {
|
|
58
|
+
const licenseType = columns[1].trim();
|
|
59
|
+
const currentCommercialUse = columns[2].trim();
|
|
60
|
+
|
|
61
|
+
if (currentCommercialUse === 'unknown') {
|
|
62
|
+
const mappedValue = commercialMapping[licenseType];
|
|
63
|
+
if (mappedValue) {
|
|
64
|
+
columns[2] = mappedValue;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
newLines.push(columns.join(','));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
fs.writeFileSync(filePath, newLines.join('\n'), 'utf-8');
|
|
72
|
+
console.log(`Updated commercial_use in ${fileName}`);
|
|
73
|
+
});
|
package/src/NativeSherpaOnnx.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface Spec extends TurboModule {
|
|
|
29
29
|
* @param provider - Optional: provider string e.g. 'cpu' (stored in config only)
|
|
30
30
|
* @param ruleFsts - Optional: path(s) to rule FSTs for ITN (comma-separated)
|
|
31
31
|
* @param ruleFars - Optional: path(s) to rule FARs for ITN (comma-separated)
|
|
32
|
-
* @param dither - Optional: dither for feature extraction (
|
|
32
|
+
* @param dither - Optional: dither for feature extraction. **Android:** applied. **iOS:** ignored (native API does not expose it)
|
|
33
33
|
* @param modelOptions - Optional: model-specific options (whisper, senseVoice, canary, funasrNano). Only the block for the loaded model type is applied.
|
|
34
34
|
* @param modelingUnit - Optional: 'cjkchar' | 'bpe' | 'cjkchar+bpe' for hotwords tokenization (OfflineModelConfig.modelingUnit)
|
|
35
35
|
* @param bpeVocab - Optional: path to BPE vocab file (OfflineModelConfig.bpeVocab), used when modelingUnit is bpe or cjkchar+bpe
|
|
@@ -73,6 +73,8 @@ export interface Spec extends TurboModule {
|
|
|
73
73
|
modelType?: string
|
|
74
74
|
): Promise<{
|
|
75
75
|
success: boolean;
|
|
76
|
+
/** Present when success is false (or native included a message). */
|
|
77
|
+
error?: string;
|
|
76
78
|
/** True when detection failed because the model targets unsupported hardware (RK35xx, Ascend, CANN). Use to show a specific message or block init. */
|
|
77
79
|
isHardwareSpecificUnsupported?: boolean;
|
|
78
80
|
detectedModels: Array<{ type: string; modelDir: string }>;
|
|
@@ -127,7 +129,8 @@ export interface Spec extends TurboModule {
|
|
|
127
129
|
/**
|
|
128
130
|
* Initialize OnlineRecognizer for streaming STT (single options object to avoid iOS TurboModule marshalling crash with many args).
|
|
129
131
|
* @param instanceId - Unique ID for this engine instance (from createStreamingSTT)
|
|
130
|
-
* @param options - All init options (modelDir, modelType, enableEndpoint, decodingMethod, maxActivePaths, and optional endpoint/rule params)
|
|
132
|
+
* @param options - All init options (modelDir, modelType, enableEndpoint, decodingMethod, maxActivePaths, and optional endpoint/rule params).
|
|
133
|
+
* `options.dither`: **Android** only; **iOS** ignores it (native `FeatureConfig` has no dither field).
|
|
131
134
|
*/
|
|
132
135
|
initializeOnlineSttWithOptions(
|
|
133
136
|
instanceId: string,
|
|
@@ -143,6 +146,8 @@ export interface Spec extends TurboModule {
|
|
|
143
146
|
provider?: string;
|
|
144
147
|
ruleFsts?: string;
|
|
145
148
|
ruleFars?: string;
|
|
149
|
+
/** Feature dither. Android: applied. iOS: ignored. */
|
|
150
|
+
dither?: number;
|
|
146
151
|
blankPenalty?: number;
|
|
147
152
|
debug?: boolean;
|
|
148
153
|
rule1MustContainNonSilence?: boolean;
|
|
@@ -280,6 +285,8 @@ export interface Spec extends TurboModule {
|
|
|
280
285
|
modelType?: string
|
|
281
286
|
): Promise<{
|
|
282
287
|
success: boolean;
|
|
288
|
+
/** Present when success is false (or native included a message). */
|
|
289
|
+
error?: string;
|
|
283
290
|
detectedModels: Array<{ type: string; modelDir: string }>;
|
|
284
291
|
modelType?: string;
|
|
285
292
|
/** Language ids from detected lexicon files (e.g. "default" for lexicon.txt, "us-en", "zh" from lexicon-us-en.txt, lexicon-zh.txt). Present for Kokoro/Kitten when multiple or single lexicon files are found; use for language selection UI. */
|
|
@@ -310,7 +317,8 @@ export interface Spec extends TurboModule {
|
|
|
310
317
|
* Generate speech from text.
|
|
311
318
|
* @param instanceId - Unique ID for this engine instance
|
|
312
319
|
* @param text - Text to convert to speech
|
|
313
|
-
* @param options - Generation options
|
|
320
|
+
* @param options - Generation options: `sid`, `speed`, `silenceScale`, `numSteps`, `extra`.
|
|
321
|
+
* Voice cloning (iOS & Android): `referenceAudio` + `referenceSampleRate` for Zipvoice/Pocket only; Zipvoice also needs non-empty `referenceText`.
|
|
314
322
|
* @returns Object with { samples: number[], sampleRate: number }
|
|
315
323
|
*/
|
|
316
324
|
generateTts(
|
|
@@ -326,7 +334,7 @@ export interface Spec extends TurboModule {
|
|
|
326
334
|
* Generate speech with subtitle/timestamp metadata.
|
|
327
335
|
* @param instanceId - Unique ID for this engine instance
|
|
328
336
|
* @param text - Text to convert to speech
|
|
329
|
-
* @param options -
|
|
337
|
+
* @param options - Same as {@link generateTts} options (cloning: Zipvoice/Pocket; Zipvoice needs `referenceText`).
|
|
330
338
|
* @returns Object with samples, sampleRate, subtitles, and estimated flag
|
|
331
339
|
*/
|
|
332
340
|
generateTtsWithTimestamps(
|
|
@@ -347,7 +355,7 @@ export interface Spec extends TurboModule {
|
|
|
347
355
|
* @param instanceId - Unique ID for this engine instance
|
|
348
356
|
* @param requestId - Unique ID for this generation (included in chunk/end/error events for routing)
|
|
349
357
|
* @param text - Text to convert to speech
|
|
350
|
-
* @param options -
|
|
358
|
+
* @param options - Same shape as batch TTS; reference streaming is **Pocket-only** (Zipvoice cloning uses non-streaming generate).
|
|
351
359
|
*/
|
|
352
360
|
generateTtsStream(
|
|
353
361
|
instanceId: string,
|
|
@@ -530,6 +538,13 @@ export interface Spec extends TurboModule {
|
|
|
530
538
|
*/
|
|
531
539
|
getAssetPackPath(packName: string): Promise<string | null>;
|
|
532
540
|
|
|
541
|
+
/**
|
|
542
|
+
* Read the contents of a text file from the bundled assets (Android) or main bundle (iOS).
|
|
543
|
+
* @param assetPath The relative path to the asset file (e.g., 'model_licenses/asr-models-license-status.csv')
|
|
544
|
+
* @returns Resolves with the string content of the file or rejects if the file cannot be read.
|
|
545
|
+
*/
|
|
546
|
+
readAssetFileAsUtf8(assetPath: string): Promise<string>;
|
|
547
|
+
|
|
533
548
|
// ==================== Helper - Extraction ====================
|
|
534
549
|
|
|
535
550
|
/**
|
|
@@ -552,6 +567,67 @@ export interface Spec extends TurboModule {
|
|
|
552
567
|
*/
|
|
553
568
|
cancelExtractTarBz2(): Promise<void>;
|
|
554
569
|
|
|
570
|
+
/**
|
|
571
|
+
* Extract a .tar.zst (or .zst) archive to a target folder.
|
|
572
|
+
* Returns { success, path } or { success, reason }.
|
|
573
|
+
*/
|
|
574
|
+
extractTarZst(
|
|
575
|
+
sourcePath: string,
|
|
576
|
+
targetPath: string,
|
|
577
|
+
force: boolean
|
|
578
|
+
): Promise<{
|
|
579
|
+
success: boolean;
|
|
580
|
+
path?: string;
|
|
581
|
+
sha256?: string;
|
|
582
|
+
reason?: string;
|
|
583
|
+
}>;
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Cancel any in-progress tar.zst extraction.
|
|
587
|
+
*/
|
|
588
|
+
cancelExtractTarZst(): Promise<void>;
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Cancel extraction for a specific source archive path (per-operation cancel for parallel extractions).
|
|
592
|
+
*/
|
|
593
|
+
cancelExtractBySourcePath(sourcePath: string): Promise<void>;
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* List asset paths of .tar.zst and .tar.bz2 archives in a PAD pack when stored as APK_ASSETS.
|
|
597
|
+
* Android only; returns [] when pack is not available or not APK_ASSETS. Used by getBundledArchives.
|
|
598
|
+
*/
|
|
599
|
+
listBundledArchiveAssetPaths(packName: string): Promise<string[]>;
|
|
600
|
+
|
|
601
|
+
/**
|
|
602
|
+
* Extract a .tar.zst archive from Android assets (AssetManager) to a target folder. Android only.
|
|
603
|
+
* Streams from asset; no copy of the archive to disk. Used when PAD pack is APK_ASSETS.
|
|
604
|
+
*/
|
|
605
|
+
extractTarZstFromAsset(
|
|
606
|
+
assetPath: string,
|
|
607
|
+
targetPath: string,
|
|
608
|
+
force: boolean
|
|
609
|
+
): Promise<{
|
|
610
|
+
success: boolean;
|
|
611
|
+
path?: string;
|
|
612
|
+
sha256?: string;
|
|
613
|
+
reason?: string;
|
|
614
|
+
}>;
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Extract a .tar.bz2 archive from Android assets (AssetManager) to a target folder. Android only.
|
|
618
|
+
* Streams from asset; no copy of the archive to disk. Used when PAD pack is APK_ASSETS.
|
|
619
|
+
*/
|
|
620
|
+
extractTarBz2FromAsset(
|
|
621
|
+
assetPath: string,
|
|
622
|
+
targetPath: string,
|
|
623
|
+
force: boolean
|
|
624
|
+
): Promise<{
|
|
625
|
+
success: boolean;
|
|
626
|
+
path?: string;
|
|
627
|
+
sha256?: string;
|
|
628
|
+
reason?: string;
|
|
629
|
+
}>;
|
|
630
|
+
|
|
555
631
|
/**
|
|
556
632
|
* Compute SHA-256 of a file and return the hex digest.
|
|
557
633
|
*/
|
|
@@ -578,6 +654,17 @@ export interface Spec extends TurboModule {
|
|
|
578
654
|
*/
|
|
579
655
|
convertAudioToWav16k(inputPath: string, outputPath: string): Promise<void>;
|
|
580
656
|
|
|
657
|
+
/**
|
|
658
|
+
* Decode an audio file to mono float samples in [-1, 1] and the effective sample rate.
|
|
659
|
+
* Supports the same inputs as convertAudioToFormat (file paths and Android content:// URIs).
|
|
660
|
+
* On Android, non-WAV formats require FFmpeg prebuilts; WAV may use a fast path via WaveReader.
|
|
661
|
+
* @param targetSampleRateHz - If > 0, resample to this rate; if 0 or omitted, keep the decoded stream rate.
|
|
662
|
+
*/
|
|
663
|
+
decodeAudioFileToFloatSamples(
|
|
664
|
+
inputPath: string,
|
|
665
|
+
targetSampleRateHz?: number
|
|
666
|
+
): Promise<{ samples: number[]; sampleRate: number }>;
|
|
667
|
+
|
|
581
668
|
// ==================== Execution Provider Methods ====================
|
|
582
669
|
|
|
583
670
|
/**
|
package/src/audio/index.ts
CHANGED
|
@@ -113,3 +113,23 @@ export function convertAudioToWav16k(
|
|
|
113
113
|
): Promise<void> {
|
|
114
114
|
return SherpaOnnx.convertAudioToWav16k(inputPath, outputPath);
|
|
115
115
|
}
|
|
116
|
+
|
|
117
|
+
export type DecodedAudioFloatSamples = {
|
|
118
|
+
samples: number[];
|
|
119
|
+
sampleRate: number;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Decode a supported audio file to mono float PCM in [-1, 1] plus sample rate.
|
|
124
|
+
* Same decode coverage as {@link convertAudioToFormat} (FFmpeg-backed on Android when not WAV).
|
|
125
|
+
* @param targetSampleRateHz - Resample to this rate when > 0; use native decoded rate when 0 or omitted.
|
|
126
|
+
*/
|
|
127
|
+
export function decodeAudioFileToFloatSamples(
|
|
128
|
+
inputPath: string,
|
|
129
|
+
targetSampleRateHz?: number
|
|
130
|
+
): Promise<DecodedAudioFloatSamples> {
|
|
131
|
+
return SherpaOnnx.decodeAudioFileToFloatSamples(
|
|
132
|
+
inputPath,
|
|
133
|
+
targetSampleRateHz ?? 0
|
|
134
|
+
);
|
|
135
|
+
}
|