react-native-sherpa-onnx 0.3.6 → 0.3.8

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.
Files changed (228) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +92 -21
  3. package/SherpaOnnx.podspec +3 -0
  4. package/THIRD_PARTY_LICENSES/README.md +62 -0
  5. package/THIRD_PARTY_LICENSES/ffmpeg.txt +502 -0
  6. package/THIRD_PARTY_LICENSES/libarchive.txt +65 -0
  7. package/THIRD_PARTY_LICENSES/nvidia_omla.txt +181 -0
  8. package/THIRD_PARTY_LICENSES/onnxruntime.txt +21 -0
  9. package/THIRD_PARTY_LICENSES/opus.txt +44 -0
  10. package/THIRD_PARTY_LICENSES/sherpa-onnx.txt +201 -0
  11. package/THIRD_PARTY_LICENSES/shine.txt +482 -0
  12. package/THIRD_PARTY_LICENSES/zstd.txt +30 -0
  13. package/android/build.gradle +7 -3
  14. package/android/prebuilt-download.gradle +344 -152
  15. package/android/prebuilt-versions.gradle +1 -1
  16. package/android/src/main/assets/model_licenses/asr-models-license-status.csv +409 -0
  17. package/android/src/main/assets/model_licenses/qnn-asr-models-license-status.csv +695 -0
  18. package/android/src/main/assets/model_licenses/tts-models-license-status.csv +596 -0
  19. package/android/src/main/cpp/CMakeLists.txt +28 -10
  20. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.cpp +2 -2
  21. package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +268 -2
  22. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +37 -6
  23. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect.h +9 -1
  24. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-tts-wrapper.cpp +7 -0
  25. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-tts.cpp +18 -2
  26. package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +40 -10
  27. package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +99 -0
  28. package/android/src/main/java/com/sherpaonnx/SherpaOnnxOnlineSttHelper.kt +4 -1
  29. package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +127 -97
  30. package/ios/Resources/model_licenses/asr-models-license-status.csv +409 -0
  31. package/ios/Resources/model_licenses/qnn-asr-models-license-status.csv +695 -0
  32. package/ios/Resources/model_licenses/tts-models-license-status.csv +596 -0
  33. package/ios/SherpaOnnx+OnlineSTT.mm +2 -0
  34. package/ios/SherpaOnnx+PcmLiveStream.mm +2 -29
  35. package/ios/SherpaOnnx+TTS.mm +179 -20
  36. package/ios/SherpaOnnx.mm +54 -0
  37. package/ios/SherpaOnnxAudioConvert.h +10 -0
  38. package/ios/SherpaOnnxAudioConvert.mm +257 -1
  39. package/ios/archive/sherpa-onnx-archive-helper.h +3 -0
  40. package/ios/archive/sherpa-onnx-archive-helper.mm +39 -6
  41. package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +49 -6
  42. package/ios/model_detect/sherpa-onnx-model-detect.h +9 -1
  43. package/ios/model_detect/sherpa-onnx-validate-tts.mm +18 -2
  44. package/ios/online_stt/sherpa-onnx-online-stt-wrapper.h +1 -0
  45. package/ios/online_stt/sherpa-onnx-online-stt-wrapper.mm +4 -0
  46. package/ios/tts/sherpa-onnx-tts-wrapper.h +37 -0
  47. package/ios/tts/sherpa-onnx-tts-wrapper.mm +158 -3
  48. package/lib/module/NativeSherpaOnnx.js.map +1 -1
  49. package/lib/module/audio/index.js +8 -0
  50. package/lib/module/audio/index.js.map +1 -1
  51. package/lib/module/download/ModelDownloadManager.js +10 -929
  52. package/lib/module/download/ModelDownloadManager.js.map +1 -1
  53. package/lib/module/download/activeModelOperations.js +26 -0
  54. package/lib/module/download/activeModelOperations.js.map +1 -0
  55. package/lib/module/download/background-downloader-types.js +2 -0
  56. package/lib/module/download/background-downloader-types.js.map +1 -0
  57. package/lib/module/download/bulkPurge.js +72 -0
  58. package/lib/module/download/bulkPurge.js.map +1 -0
  59. package/lib/module/download/checksumPrompt.js +19 -0
  60. package/lib/module/download/checksumPrompt.js.map +1 -0
  61. package/lib/module/download/constants.js +7 -0
  62. package/lib/module/download/constants.js.map +1 -0
  63. package/lib/module/download/downloadEvents.js +35 -0
  64. package/lib/module/download/downloadEvents.js.map +1 -0
  65. package/lib/module/download/downloadTask.js +438 -0
  66. package/lib/module/download/downloadTask.js.map +1 -0
  67. package/lib/module/download/ensureModel.js +89 -0
  68. package/lib/module/download/ensureModel.js.map +1 -0
  69. package/lib/module/download/index.js +4 -4
  70. package/lib/module/download/index.js.map +1 -1
  71. package/lib/module/download/localModels.js +151 -0
  72. package/lib/module/download/localModels.js.map +1 -0
  73. package/lib/module/download/modelExtraction.js +174 -0
  74. package/lib/module/download/modelExtraction.js.map +1 -0
  75. package/lib/module/download/paths.js +98 -0
  76. package/lib/module/download/paths.js.map +1 -0
  77. package/lib/module/download/postDownloadProcessing.js +206 -0
  78. package/lib/module/download/postDownloadProcessing.js.map +1 -0
  79. package/lib/module/download/protectedModelKeys.js +31 -0
  80. package/lib/module/download/protectedModelKeys.js.map +1 -0
  81. package/lib/module/download/registry.js +268 -0
  82. package/lib/module/download/registry.js.map +1 -0
  83. package/lib/module/download/retry.js +59 -0
  84. package/lib/module/download/retry.js.map +1 -0
  85. package/lib/module/download/types.js +17 -0
  86. package/lib/module/download/types.js.map +1 -0
  87. package/lib/module/download/validation.js +101 -5
  88. package/lib/module/download/validation.js.map +1 -1
  89. package/lib/module/{download → extraction}/extractTarBz2.js +3 -1
  90. package/lib/module/extraction/extractTarBz2.js.map +1 -0
  91. package/lib/module/{download → extraction}/extractTarZst.js +3 -1
  92. package/lib/module/extraction/extractTarZst.js.map +1 -0
  93. package/lib/module/extraction/index.js +3 -4
  94. package/lib/module/extraction/index.js.map +1 -1
  95. package/lib/module/index.js +1 -1
  96. package/lib/module/index.js.map +1 -1
  97. package/lib/module/licenses.js +63 -0
  98. package/lib/module/licenses.js.map +1 -0
  99. package/lib/module/stt/index.js +16 -2
  100. package/lib/module/stt/index.js.map +1 -1
  101. package/lib/module/stt/streaming.js +2 -0
  102. package/lib/module/stt/streaming.js.map +1 -1
  103. package/lib/module/stt/streamingTypes.js.map +1 -1
  104. package/lib/module/stt/types.js.map +1 -1
  105. package/lib/module/tts/index.js +21 -3
  106. package/lib/module/tts/index.js.map +1 -1
  107. package/lib/module/tts/streaming.js +5 -1
  108. package/lib/module/tts/streaming.js.map +1 -1
  109. package/lib/module/tts/types.js +4 -1
  110. package/lib/module/tts/types.js.map +1 -1
  111. package/lib/module/utils.js +16 -1
  112. package/lib/module/utils.js.map +1 -1
  113. package/lib/typescript/src/NativeSherpaOnnx.d.ts +34 -6
  114. package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
  115. package/lib/typescript/src/audio/index.d.ts +10 -0
  116. package/lib/typescript/src/audio/index.d.ts.map +1 -1
  117. package/lib/typescript/src/download/ModelDownloadManager.d.ts +11 -108
  118. package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -1
  119. package/lib/typescript/src/download/activeModelOperations.d.ts +6 -0
  120. package/lib/typescript/src/download/activeModelOperations.d.ts.map +1 -0
  121. package/lib/typescript/src/download/background-downloader-types.d.ts +64 -0
  122. package/lib/typescript/src/download/background-downloader-types.d.ts.map +1 -0
  123. package/lib/typescript/src/download/bulkPurge.d.ts +14 -0
  124. package/lib/typescript/src/download/bulkPurge.d.ts.map +1 -0
  125. package/lib/typescript/src/download/checksumPrompt.d.ts +3 -0
  126. package/lib/typescript/src/download/checksumPrompt.d.ts.map +1 -0
  127. package/lib/typescript/src/download/constants.d.ts +5 -0
  128. package/lib/typescript/src/download/constants.d.ts.map +1 -0
  129. package/lib/typescript/src/download/downloadEvents.d.ts +6 -0
  130. package/lib/typescript/src/download/downloadEvents.d.ts.map +1 -0
  131. package/lib/typescript/src/download/downloadTask.d.ts +30 -0
  132. package/lib/typescript/src/download/downloadTask.d.ts.map +1 -0
  133. package/lib/typescript/src/download/ensureModel.d.ts +26 -0
  134. package/lib/typescript/src/download/ensureModel.d.ts.map +1 -0
  135. package/lib/typescript/src/download/index.d.ts +7 -7
  136. package/lib/typescript/src/download/index.d.ts.map +1 -1
  137. package/lib/typescript/src/download/localModels.d.ts +15 -0
  138. package/lib/typescript/src/download/localModels.d.ts.map +1 -0
  139. package/lib/typescript/src/download/modelExtraction.d.ts +36 -0
  140. package/lib/typescript/src/download/modelExtraction.d.ts.map +1 -0
  141. package/lib/typescript/src/download/paths.d.ts +28 -0
  142. package/lib/typescript/src/download/paths.d.ts.map +1 -0
  143. package/lib/typescript/src/download/postDownloadProcessing.d.ts +19 -0
  144. package/lib/typescript/src/download/postDownloadProcessing.d.ts.map +1 -0
  145. package/lib/typescript/src/download/protectedModelKeys.d.ts +6 -0
  146. package/lib/typescript/src/download/protectedModelKeys.d.ts.map +1 -0
  147. package/lib/typescript/src/download/registry.d.ts +14 -0
  148. package/lib/typescript/src/download/registry.d.ts.map +1 -0
  149. package/lib/typescript/src/download/retry.d.ts +15 -0
  150. package/lib/typescript/src/download/retry.d.ts.map +1 -0
  151. package/lib/typescript/src/download/types.d.ts +96 -0
  152. package/lib/typescript/src/download/types.d.ts.map +1 -0
  153. package/lib/typescript/src/download/validation.d.ts +19 -0
  154. package/lib/typescript/src/download/validation.d.ts.map +1 -1
  155. package/lib/typescript/src/extraction/extractTarBz2.d.ts.map +1 -0
  156. package/lib/typescript/src/extraction/extractTarZst.d.ts.map +1 -0
  157. package/lib/typescript/src/index.d.ts +1 -0
  158. package/lib/typescript/src/index.d.ts.map +1 -1
  159. package/lib/typescript/src/licenses.d.ts +10 -0
  160. package/lib/typescript/src/licenses.d.ts.map +1 -0
  161. package/lib/typescript/src/stt/index.d.ts +4 -1
  162. package/lib/typescript/src/stt/index.d.ts.map +1 -1
  163. package/lib/typescript/src/stt/streaming.d.ts.map +1 -1
  164. package/lib/typescript/src/stt/streamingTypes.d.ts +5 -0
  165. package/lib/typescript/src/stt/streamingTypes.d.ts.map +1 -1
  166. package/lib/typescript/src/stt/types.d.ts +3 -1
  167. package/lib/typescript/src/stt/types.d.ts.map +1 -1
  168. package/lib/typescript/src/tts/index.d.ts +4 -2
  169. package/lib/typescript/src/tts/index.d.ts.map +1 -1
  170. package/lib/typescript/src/tts/streaming.d.ts.map +1 -1
  171. package/lib/typescript/src/tts/types.d.ts +12 -6
  172. package/lib/typescript/src/tts/types.d.ts.map +1 -1
  173. package/lib/typescript/src/utils.d.ts +5 -0
  174. package/lib/typescript/src/utils.d.ts.map +1 -1
  175. package/package.json +6 -1
  176. package/scripts/{check-model-csvs.sh → ci/check-model-csvs.sh} +9 -2
  177. package/scripts/ci/collect_all_sherpa_model_streams.sh +101 -0
  178. package/scripts/ci/collect_one_sherpa_release_stream.sh +189 -0
  179. package/scripts/ci/sherpa_asr_model_release_streams.json +21 -0
  180. package/scripts/ci/sherpa_tts_model_release_streams.json +13 -0
  181. package/scripts/ci/update_model_license_csv.sh +765 -0
  182. package/scripts/setup-ios-framework.sh +14 -11
  183. package/scripts/update_commercial_use.js +73 -0
  184. package/src/NativeSherpaOnnx.ts +37 -6
  185. package/src/audio/index.ts +20 -0
  186. package/src/download/ModelDownloadManager.ts +57 -1343
  187. package/src/download/activeModelOperations.ts +38 -0
  188. package/src/download/background-downloader-types.ts +73 -0
  189. package/src/download/bulkPurge.ts +102 -0
  190. package/src/download/checksumPrompt.ts +25 -0
  191. package/src/download/constants.ts +5 -0
  192. package/src/download/downloadEvents.ts +55 -0
  193. package/src/download/downloadTask.ts +565 -0
  194. package/src/download/ensureModel.ts +124 -0
  195. package/src/download/index.ts +21 -4
  196. package/src/download/localModels.ts +234 -0
  197. package/src/download/modelExtraction.ts +244 -0
  198. package/src/download/paths.ts +134 -0
  199. package/src/download/postDownloadProcessing.ts +292 -0
  200. package/src/download/protectedModelKeys.ts +30 -0
  201. package/src/download/registry.ts +405 -0
  202. package/src/download/retry.ts +76 -0
  203. package/src/download/types.ts +120 -0
  204. package/src/download/validation.ts +114 -8
  205. package/src/{download → extraction}/extractTarBz2.ts +3 -1
  206. package/src/{download → extraction}/extractTarZst.ts +3 -1
  207. package/src/extraction/index.ts +3 -7
  208. package/src/index.tsx +1 -0
  209. package/src/licenses.ts +100 -0
  210. package/src/stt/index.ts +20 -2
  211. package/src/stt/streaming.ts +3 -0
  212. package/src/stt/streamingTypes.ts +5 -0
  213. package/src/stt/types.ts +3 -1
  214. package/src/tts/index.ts +33 -2
  215. package/src/tts/streaming.ts +12 -0
  216. package/src/tts/types.ts +15 -5
  217. package/src/utils.ts +22 -1
  218. package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -1
  219. package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -1
  220. package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +0 -301
  221. package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +0 -187
  222. package/lib/module/download/extractTarBz2.js.map +0 -1
  223. package/lib/module/download/extractTarZst.js.map +0 -1
  224. package/lib/typescript/src/download/extractTarBz2.d.ts.map +0 -1
  225. package/lib/typescript/src/download/extractTarZst.d.ts.map +0 -1
  226. package/scripts/check-qnn-support.sh +0 -78
  227. /package/lib/typescript/src/{download → extraction}/extractTarBz2.d.ts +0 -0
  228. /package/lib/typescript/src/{download → extraction}/extractTarZst.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="framework-v"
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
- # Backward compat: for sherpa-onnx, also checks legacy .framework-version
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
+ });
@@ -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 (default 0)
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;
@@ -233,7 +238,7 @@ export interface Spec extends TurboModule {
233
238
  * Initialize Text-to-Speech (TTS) with model directory.
234
239
  * @param instanceId - Unique ID for this engine instance (from createTTS)
235
240
  * @param modelDir - Absolute path to model directory
236
- * @param modelType - Model type ('vits', 'matcha', 'kokoro', 'kitten', 'pocket', 'zipvoice', 'auto')
241
+ * @param modelType - Model type ('vits', 'matcha', 'kokoro', 'kitten', 'pocket', 'zipvoice', 'supertonic', 'auto')
237
242
  * @param numThreads - Number of threads for inference (default: 2)
238
243
  * @param debug - Enable debug logging (default: false)
239
244
  * @param noiseScale - Optional noise scale (VITS/Matcha)
@@ -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 (sid, speed, referenceAudio, referenceText, numSteps, silenceScale, extra)
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 - Generation options (sid, speed, referenceAudio, referenceText, numSteps, silenceScale, extra)
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 - Generation options (sid, speed, referenceAudio, referenceText, numSteps, silenceScale, extra)
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
  /**
@@ -572,6 +587,11 @@ export interface Spec extends TurboModule {
572
587
  */
573
588
  cancelExtractTarZst(): Promise<void>;
574
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
+
575
595
  /**
576
596
  * List asset paths of .tar.zst and .tar.bz2 archives in a PAD pack when stored as APK_ASSETS.
577
597
  * Android only; returns [] when pack is not available or not APK_ASSETS. Used by getBundledArchives.
@@ -634,6 +654,17 @@ export interface Spec extends TurboModule {
634
654
  */
635
655
  convertAudioToWav16k(inputPath: string, outputPath: string): Promise<void>;
636
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
+
637
668
  // ==================== Execution Provider Methods ====================
638
669
 
639
670
  /**
@@ -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
+ }