react-native-sherpa-onnx 0.2.0 → 0.3.0

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 (175) hide show
  1. package/README.md +232 -236
  2. package/SherpaOnnx.podspec +68 -64
  3. package/android/build.gradle +182 -192
  4. package/android/codegen.gradle +57 -0
  5. package/android/prebuilt-download.gradle +428 -0
  6. package/android/prebuilt-versions.gradle +43 -0
  7. package/android/proguard-rules.pro +10 -0
  8. package/android/src/main/assets/testModels/add_mul_add.onnx +28 -0
  9. package/android/src/main/assets/testModels/nnapi_internal_uint8_support.onnx +0 -0
  10. package/android/src/main/assets/testModels/qnn_multi_ctx_embed.onnx +0 -0
  11. package/android/src/main/cpp/CMakeLists.txt +166 -129
  12. package/android/src/main/cpp/CMakePresets.json +54 -0
  13. package/android/src/main/cpp/crypto/sha256.cpp +174 -0
  14. package/android/src/main/cpp/crypto/sha256.h +16 -0
  15. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.cpp +404 -0
  16. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.h +56 -0
  17. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-jni.cpp +181 -0
  18. package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +888 -0
  19. package/{ios → android/src/main/cpp/jni/model_detect}/sherpa-onnx-common.h +18 -18
  20. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-detect-jni-common.cpp +86 -0
  21. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-detect-jni-common.h +20 -0
  22. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-helper.cpp +423 -0
  23. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-helper.h +55 -0
  24. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-stt.cpp +399 -0
  25. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +238 -0
  26. package/{ios → android/src/main/cpp/jni/model_detect}/sherpa-onnx-model-detect.h +122 -89
  27. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-stt-wrapper.cpp +99 -0
  28. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-stt-wrapper.h +16 -0
  29. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-tts-wrapper.cpp +78 -0
  30. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-tts-wrapper.h +16 -0
  31. package/android/src/main/cpp/jni/module/sherpa-onnx-module-jni.cpp +190 -0
  32. package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +301 -0
  33. package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +94 -0
  34. package/android/src/main/java/com/sherpaonnx/{SherpaOnnxCoreHelper.kt → SherpaOnnxAssetHelper.kt} +350 -236
  35. package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +791 -483
  36. package/android/src/main/java/com/sherpaonnx/SherpaOnnxSttHelper.kt +699 -109
  37. package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +1123 -668
  38. package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +187 -0
  39. package/ios/SherpaOnnx+Assets.h +11 -0
  40. package/ios/SherpaOnnx+Assets.mm +325 -0
  41. package/ios/SherpaOnnx+STT.mm +455 -118
  42. package/ios/SherpaOnnx+TTS.mm +1101 -712
  43. package/ios/SherpaOnnx.h +17 -6
  44. package/ios/SherpaOnnx.mm +206 -311
  45. package/ios/SherpaOnnx.xcconfig +19 -19
  46. package/ios/SherpaOnnxCoreMLHelper.swift +24 -0
  47. package/ios/archive/sherpa-onnx-archive-helper.h +21 -0
  48. package/ios/archive/sherpa-onnx-archive-helper.mm +296 -0
  49. package/ios/libarchive_darwin_config.h +153 -0
  50. package/{android/src/main/cpp/jni → ios/model_detect}/sherpa-onnx-common.h +18 -18
  51. package/ios/model_detect/sherpa-onnx-model-detect-helper.h +49 -0
  52. package/ios/model_detect/sherpa-onnx-model-detect-helper.mm +210 -0
  53. package/ios/model_detect/sherpa-onnx-model-detect-stt.mm +344 -0
  54. package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +201 -0
  55. package/{android/src/main/cpp/jni → ios/model_detect}/sherpa-onnx-model-detect.h +117 -89
  56. package/ios/scripts/patch-libarchive-includes.sh +61 -0
  57. package/ios/scripts/setup-ios-libarchive.sh +98 -0
  58. package/ios/stt/sherpa-onnx-stt-wrapper.h +129 -0
  59. package/ios/stt/sherpa-onnx-stt-wrapper.mm +523 -0
  60. package/ios/{sherpa-onnx-tts-wrapper.h → tts/sherpa-onnx-tts-wrapper.h} +90 -85
  61. package/ios/{sherpa-onnx-tts-wrapper.mm → tts/sherpa-onnx-tts-wrapper.mm} +376 -345
  62. package/lib/module/NativeSherpaOnnx.js +3 -0
  63. package/lib/module/NativeSherpaOnnx.js.map +1 -1
  64. package/lib/module/audio/index.js +22 -0
  65. package/lib/module/audio/index.js.map +1 -0
  66. package/lib/module/diarization/index.js +1 -1
  67. package/lib/module/diarization/index.js.map +1 -1
  68. package/lib/module/download/ModelDownloadManager.js +918 -0
  69. package/lib/module/download/ModelDownloadManager.js.map +1 -0
  70. package/lib/module/download/extractTarBz2.js +53 -0
  71. package/lib/module/download/extractTarBz2.js.map +1 -0
  72. package/lib/module/download/index.js +6 -0
  73. package/lib/module/download/index.js.map +1 -0
  74. package/lib/module/download/validation.js +178 -0
  75. package/lib/module/download/validation.js.map +1 -0
  76. package/lib/module/enhancement/index.js +1 -1
  77. package/lib/module/enhancement/index.js.map +1 -1
  78. package/lib/module/index.js +41 -3
  79. package/lib/module/index.js.map +1 -1
  80. package/lib/module/separation/index.js +1 -1
  81. package/lib/module/separation/index.js.map +1 -1
  82. package/lib/module/stt/index.js +127 -60
  83. package/lib/module/stt/index.js.map +1 -1
  84. package/lib/module/stt/sttModelLanguages.js +512 -0
  85. package/lib/module/stt/sttModelLanguages.js.map +1 -0
  86. package/lib/module/stt/types.js +53 -1
  87. package/lib/module/stt/types.js.map +1 -1
  88. package/lib/module/tts/index.js +216 -289
  89. package/lib/module/tts/index.js.map +1 -1
  90. package/lib/module/tts/types.js +86 -1
  91. package/lib/module/tts/types.js.map +1 -1
  92. package/lib/module/types.js.map +1 -1
  93. package/lib/module/utils.js +86 -73
  94. package/lib/module/utils.js.map +1 -1
  95. package/lib/module/vad/index.js +1 -1
  96. package/lib/module/vad/index.js.map +1 -1
  97. package/lib/typescript/src/NativeSherpaOnnx.d.ts +192 -38
  98. package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
  99. package/lib/typescript/src/audio/index.d.ts +13 -0
  100. package/lib/typescript/src/audio/index.d.ts.map +1 -0
  101. package/lib/typescript/src/diarization/index.d.ts +3 -2
  102. package/lib/typescript/src/diarization/index.d.ts.map +1 -1
  103. package/lib/typescript/src/download/ModelDownloadManager.d.ts +108 -0
  104. package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -0
  105. package/lib/typescript/src/download/extractTarBz2.d.ts +14 -0
  106. package/lib/typescript/src/download/extractTarBz2.d.ts.map +1 -0
  107. package/lib/typescript/src/download/index.d.ts +7 -0
  108. package/lib/typescript/src/download/index.d.ts.map +1 -0
  109. package/lib/typescript/src/download/validation.d.ts +57 -0
  110. package/lib/typescript/src/download/validation.d.ts.map +1 -0
  111. package/lib/typescript/src/enhancement/index.d.ts +3 -2
  112. package/lib/typescript/src/enhancement/index.d.ts.map +1 -1
  113. package/lib/typescript/src/index.d.ts +26 -2
  114. package/lib/typescript/src/index.d.ts.map +1 -1
  115. package/lib/typescript/src/separation/index.d.ts +3 -2
  116. package/lib/typescript/src/separation/index.d.ts.map +1 -1
  117. package/lib/typescript/src/stt/index.d.ts +31 -43
  118. package/lib/typescript/src/stt/index.d.ts.map +1 -1
  119. package/lib/typescript/src/stt/sttModelLanguages.d.ts +52 -0
  120. package/lib/typescript/src/stt/sttModelLanguages.d.ts.map +1 -0
  121. package/lib/typescript/src/stt/types.d.ts +196 -9
  122. package/lib/typescript/src/stt/types.d.ts.map +1 -1
  123. package/lib/typescript/src/tts/index.d.ts +25 -211
  124. package/lib/typescript/src/tts/index.d.ts.map +1 -1
  125. package/lib/typescript/src/tts/types.d.ts +148 -25
  126. package/lib/typescript/src/tts/types.d.ts.map +1 -1
  127. package/lib/typescript/src/types.d.ts +0 -32
  128. package/lib/typescript/src/types.d.ts.map +1 -1
  129. package/lib/typescript/src/utils.d.ts +28 -13
  130. package/lib/typescript/src/utils.d.ts.map +1 -1
  131. package/lib/typescript/src/vad/index.d.ts +3 -2
  132. package/lib/typescript/src/vad/index.d.ts.map +1 -1
  133. package/package.json +250 -222
  134. package/scripts/check-qnn-support.sh +78 -0
  135. package/scripts/setup-ios-framework.sh +379 -282
  136. package/src/NativeSherpaOnnx.ts +474 -251
  137. package/src/audio/index.ts +32 -0
  138. package/src/diarization/index.ts +4 -2
  139. package/src/download/ModelDownloadManager.ts +1325 -0
  140. package/src/download/extractTarBz2.ts +78 -0
  141. package/src/download/index.ts +43 -0
  142. package/src/download/validation.ts +279 -0
  143. package/src/enhancement/index.ts +4 -2
  144. package/src/index.tsx +78 -27
  145. package/src/separation/index.ts +4 -2
  146. package/src/stt/index.ts +249 -89
  147. package/src/stt/sttModelLanguages.ts +237 -0
  148. package/src/stt/types.ts +263 -9
  149. package/src/tts/index.ts +470 -458
  150. package/src/tts/types.ts +373 -218
  151. package/src/types.ts +0 -44
  152. package/src/utils.ts +145 -131
  153. package/src/vad/index.ts +4 -2
  154. package/third_party/ffmpeg_prebuilt/ANDROID_RELEASE_TAG +1 -0
  155. package/third_party/libarchive_prebuilt/ANDROID_RELEASE_TAG +1 -0
  156. package/third_party/libarchive_prebuilt/IOS_RELEASE_TAG +1 -0
  157. package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -0
  158. package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -0
  159. package/android/src/main/cpp/include/sherpa-onnx/c-api/c-api.h +0 -1918
  160. package/android/src/main/cpp/include/sherpa-onnx/c-api/cxx-api.h +0 -841
  161. package/android/src/main/cpp/jni/sherpa-onnx-model-detect.cpp +0 -541
  162. package/android/src/main/cpp/jni/sherpa-onnx-stt-jni.cpp +0 -336
  163. package/android/src/main/cpp/jni/sherpa-onnx-stt-wrapper.cpp +0 -222
  164. package/android/src/main/cpp/jni/sherpa-onnx-stt-wrapper.h +0 -68
  165. package/android/src/main/cpp/jni/sherpa-onnx-tts-jni.cpp +0 -823
  166. package/android/src/main/cpp/jni/sherpa-onnx-tts-wrapper.cpp +0 -387
  167. package/android/src/main/cpp/jni/sherpa-onnx-tts-wrapper.h +0 -147
  168. package/ios/Frameworks/sherpa_onnx.xcframework.zip +0 -0
  169. package/ios/include/sherpa-onnx/c-api/c-api.h +0 -1918
  170. package/ios/include/sherpa-onnx/c-api/cxx-api.h +0 -841
  171. package/ios/sherpa-onnx-model-detect.mm +0 -441
  172. package/ios/sherpa-onnx-stt-wrapper.h +0 -48
  173. package/ios/sherpa-onnx-stt-wrapper.mm +0 -201
  174. package/scripts/copy-headers.js +0 -184
  175. package/scripts/setup-assets.js +0 -323
package/src/utils.ts CHANGED
@@ -1,131 +1,145 @@
1
- import { Platform } from 'react-native';
2
- import type { ModelPathConfig } from './types';
3
- import SherpaOnnx from './NativeSherpaOnnx';
4
-
5
- /**
6
- * Utility functions for model path handling
7
- */
8
-
9
- /**
10
- * Predefined model identifiers
11
- */
12
- export const MODELS = {
13
- ZIPFORMER_EN: 'sherpa-onnx-zipformer-small-en',
14
- PARAFORMER_ZH: 'sherpa-onnx-paraformer-zh-small',
15
- } as const;
16
-
17
- export type ModelId = (typeof MODELS)[keyof typeof MODELS];
18
-
19
- /**
20
- * Get the default model directory path for the current platform.
21
- * This is a helper for apps that want to use a standard location.
22
- *
23
- * @returns Platform-specific default path
24
- */
25
- export function getDefaultModelPath(): string {
26
- if (Platform.OS === 'ios') {
27
- // iOS: Documents directory
28
- return 'Documents/models';
29
- } else {
30
- // Android: Internal storage
31
- return 'models';
32
- }
33
- }
34
-
35
- /**
36
- * Create a model path configuration for asset models.
37
- * Use this when models are bundled in your app's assets.
38
- *
39
- * @param assetPath - Path relative to assets (e.g., "models/sherpa-onnx-model")
40
- * @returns Model path configuration
41
- */
42
- export function assetModelPath(assetPath: string): ModelPathConfig {
43
- return {
44
- type: 'asset',
45
- path: assetPath,
46
- };
47
- }
48
-
49
- /**
50
- * Create a model path configuration for file system models.
51
- * Use this when models are downloaded or stored in file system.
52
- *
53
- * @param filePath - Absolute path to model directory
54
- * @returns Model path configuration
55
- */
56
- export function fileModelPath(filePath: string): ModelPathConfig {
57
- return {
58
- type: 'file',
59
- path: filePath,
60
- };
61
- }
62
-
63
- /**
64
- * Create a model path configuration with auto-detection.
65
- * Tries asset first, then file system.
66
- *
67
- * @param path - Path to try (will be checked as both asset and file)
68
- * @returns Model path configuration
69
- */
70
- export function autoModelPath(path: string): ModelPathConfig {
71
- return {
72
- type: 'auto',
73
- path: path,
74
- };
75
- }
76
-
77
- /**
78
- * Resolve model path based on configuration.
79
- * This handles different path types (asset, file, auto) and returns
80
- * a platform-specific absolute path that can be used by native code.
81
- *
82
- * @param config - Model path configuration or simple string path
83
- * @returns Promise resolving to absolute path usable by native code
84
- */
85
- export async function resolveModelPath(
86
- config: ModelPathConfig | string
87
- ): Promise<string> {
88
- // Backward compatibility: if string is passed, treat as auto
89
- if (typeof config === 'string') {
90
- return SherpaOnnx.resolveModelPath({
91
- type: 'auto',
92
- path: config,
93
- });
94
- }
95
-
96
- return SherpaOnnx.resolveModelPath(config);
97
- }
98
-
99
- /**
100
- * List all model folders in the assets/models directory.
101
- * Scans the platform-specific model directory and returns folder names.
102
- *
103
- * This is useful for discovering models at runtime without hardcoding paths.
104
- * You can then use the returned folder names with resolveModelPath and initialize.
105
- *
106
- * @returns Promise resolving to array of model info objects
107
- *
108
- * @example
109
- * ```typescript
110
- * import { listAssetModels, resolveModelPath } from 'react-native-sherpa-onnx';
111
- *
112
- * // Get all model folders
113
- * const models = await listAssetModels();
114
- * console.log('Found models:', models);
115
- * // Example output: [{ folder: 'sherpa-onnx-streaming-zipformer-en-2023-06-26', hint: 'stt' }, { folder: 'sherpa-onnx-matcha-icefall-en_US-ljspeech', hint: 'tts' }]
116
- *
117
- * // Initialize each model to detect types
118
- * for (const model of models) {
119
- * const path = await resolveModelPath({ type: 'asset', path: `models/${model.folder}` });
120
- * const result = await initializeSherpaOnnx(path);
121
- * if (result.success) {
122
- * console.log(`Found models in ${model.folder}:`, result.detectedModels);
123
- * }
124
- * }
125
- * ```
126
- */
127
- export async function listAssetModels(): Promise<
128
- Array<{ folder: string; hint: 'stt' | 'tts' | 'unknown' }>
129
- > {
130
- return SherpaOnnx.listAssetModels();
131
- }
1
+ import { Platform } from 'react-native';
2
+ import type { ModelPathConfig } from './types';
3
+ import SherpaOnnx from './NativeSherpaOnnx';
4
+
5
+ /**
6
+ * Utility functions for model path handling
7
+ */
8
+
9
+ /**
10
+ * Get the default model directory path for the current platform.
11
+ * This is a logical name (e.g. `'Documents/models'` on iOS), not an absolute path.
12
+ * On iOS, when using file-based models without PAD, pass an absolute base path to
13
+ * `getFileModelPath` instead (e.g. `DocumentDirectoryPath + '/models'` from react-native-fs).
14
+ *
15
+ * @returns Platform-specific default path
16
+ */
17
+ export function getDefaultModelPath(): string {
18
+ if (Platform.OS === 'ios') {
19
+ // iOS: Documents directory
20
+ return 'Documents/models';
21
+ } else {
22
+ // Android: Internal storage
23
+ return 'models';
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Create a model path configuration for asset models.
29
+ * Use this when models are bundled in your app's assets.
30
+ *
31
+ * @param assetPath - Path relative to assets (e.g., "models/sherpa-onnx-model")
32
+ * @returns Model path configuration
33
+ */
34
+ export function assetModelPath(assetPath: string): ModelPathConfig {
35
+ return {
36
+ type: 'asset',
37
+ path: assetPath,
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Create a model path configuration for file system models.
43
+ * Use this when models are downloaded or stored in file system.
44
+ *
45
+ * @param filePath - Absolute path to model directory. On iOS, use an absolute path
46
+ * (e.g. from react-native-fs: `DocumentDirectoryPath + '/models/' + modelName` when
47
+ * using getFileModelPath without PAD).
48
+ * @returns Model path configuration
49
+ */
50
+ export function fileModelPath(filePath: string): ModelPathConfig {
51
+ return {
52
+ type: 'file',
53
+ path: filePath,
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Create a model path configuration with auto-detection.
59
+ * Tries asset first, then file system.
60
+ *
61
+ * @param path - Path to try (will be checked as both asset and file)
62
+ * @returns Model path configuration
63
+ */
64
+ export function autoModelPath(path: string): ModelPathConfig {
65
+ return {
66
+ type: 'auto',
67
+ path: path,
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Resolve model path based on configuration.
73
+ * This handles different path types (asset, file, auto) and returns
74
+ * a platform-specific absolute path that can be used by native code.
75
+ *
76
+ * @param config - Model path configuration
77
+ * @returns Promise resolving to absolute path usable by native code
78
+ */
79
+ export async function resolveModelPath(
80
+ config: ModelPathConfig
81
+ ): Promise<string> {
82
+ return SherpaOnnx.resolveModelPath(config);
83
+ }
84
+
85
+ /**
86
+ * List all model folders in the assets/models directory.
87
+ * Scans the platform-specific model directory and returns folder names.
88
+ *
89
+ * This is useful for discovering models at runtime without hardcoding paths.
90
+ * You can then use the returned folder names with resolveModelPath and initialize.
91
+ *
92
+ * @returns Promise resolving to array of model info objects
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * import { listAssetModels, resolveModelPath } from 'react-native-sherpa-onnx';
97
+ *
98
+ * // Get all model folders
99
+ * const models = await listAssetModels();
100
+ * console.log('Found models:', models);
101
+ * // Example output: [{ folder: 'sherpa-onnx-streaming-zipformer-en-2023-06-26', hint: 'stt' }, { folder: 'sherpa-onnx-matcha-icefall-en_US-ljspeech', hint: 'tts' }]
102
+ *
103
+ * // Initialize each model to detect types
104
+ * for (const model of models) {
105
+ * const path = await resolveModelPath({ type: 'asset', path: `models/${model.folder}` });
106
+ * const result = await initializeStt(path);
107
+ * if (result.success) {
108
+ * console.log(`Found models in ${model.folder}:`, result.detectedModels);
109
+ * }
110
+ * }
111
+ * ```
112
+ */
113
+ export async function listAssetModels(): Promise<
114
+ Array<{ folder: string; hint: 'stt' | 'tts' | 'unknown' }>
115
+ > {
116
+ return SherpaOnnx.listAssetModels();
117
+ }
118
+
119
+ /**
120
+ * List model folders under a specific filesystem path.
121
+ * When recursive is true, returns relative folder paths under the base path.
122
+ */
123
+ export async function listModelsAtPath(
124
+ path: string,
125
+ recursive = false
126
+ ): Promise<Array<{ folder: string; hint: 'stt' | 'tts' | 'unknown' }>> {
127
+ return SherpaOnnx.listModelsAtPath(path, recursive);
128
+ }
129
+
130
+ /**
131
+ * **Play Asset Delivery (PAD):** Returns the path to the models directory inside an
132
+ * Android asset pack, or null if the pack is not available.
133
+ * Use this to list and load models delivered via PAD (e.g. pack "sherpa_models").
134
+ * On iOS returns null.
135
+ */
136
+ export async function getAssetPackPath(
137
+ packName: string
138
+ ): Promise<string | null> {
139
+ return SherpaOnnx.getAssetPackPath(packName);
140
+ }
141
+
142
+ /**
143
+ * Alias for {@link getAssetPackPath}. Use for PAD (Play Asset Delivery) model discovery.
144
+ */
145
+ export const getPlayAssetDeliveryModelsPath = getAssetPackPath;
package/src/vad/index.ts CHANGED
@@ -10,16 +10,18 @@
10
10
  * // Future usage:
11
11
  * import { initializeVAD, detectVoiceActivity } from 'react-native-sherpa-onnx/vad';
12
12
  *
13
- * await initializeVAD({ modelPath: 'models/vad-model' });
13
+ * await initializeVAD({ modelPath: { type: 'auto', path: 'models/vad-model' } });
14
14
  * const segments = await detectVoiceActivity('path/to/audio.wav');
15
15
  * ```
16
16
  */
17
17
 
18
+ import type { ModelPathConfig } from '../types';
19
+
18
20
  /**
19
21
  * VAD initialization options (placeholder)
20
22
  */
21
23
  export interface VADInitializeOptions {
22
- modelPath: string;
24
+ modelPath: ModelPathConfig;
23
25
  // Additional VAD-specific options will be added here
24
26
  }
25
27
 
@@ -0,0 +1 @@
1
+ ffmpeg-android-v8.0.1
@@ -0,0 +1 @@
1
+ libarchive-android-v3.8.5
@@ -0,0 +1 @@
1
+ libarchive-ios-v3.8.5
@@ -0,0 +1 @@
1
+ sherpa-onnx-android-v1.12.24
@@ -0,0 +1 @@
1
+ framework-v1.12.24