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.
- package/README.md +232 -236
- package/SherpaOnnx.podspec +68 -64
- package/android/build.gradle +182 -192
- package/android/codegen.gradle +57 -0
- package/android/prebuilt-download.gradle +428 -0
- package/android/prebuilt-versions.gradle +43 -0
- package/android/proguard-rules.pro +10 -0
- package/android/src/main/assets/testModels/add_mul_add.onnx +28 -0
- package/android/src/main/assets/testModels/nnapi_internal_uint8_support.onnx +0 -0
- package/android/src/main/assets/testModels/qnn_multi_ctx_embed.onnx +0 -0
- package/android/src/main/cpp/CMakeLists.txt +166 -129
- package/android/src/main/cpp/CMakePresets.json +54 -0
- package/android/src/main/cpp/crypto/sha256.cpp +174 -0
- package/android/src/main/cpp/crypto/sha256.h +16 -0
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.cpp +404 -0
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.h +56 -0
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-jni.cpp +181 -0
- package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +888 -0
- package/{ios → android/src/main/cpp/jni/model_detect}/sherpa-onnx-common.h +18 -18
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-detect-jni-common.cpp +86 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-detect-jni-common.h +20 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-helper.cpp +423 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-helper.h +55 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-stt.cpp +399 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +238 -0
- package/{ios → android/src/main/cpp/jni/model_detect}/sherpa-onnx-model-detect.h +122 -89
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-stt-wrapper.cpp +99 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-stt-wrapper.h +16 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-tts-wrapper.cpp +78 -0
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-tts-wrapper.h +16 -0
- package/android/src/main/cpp/jni/module/sherpa-onnx-module-jni.cpp +190 -0
- package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +301 -0
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +94 -0
- package/android/src/main/java/com/sherpaonnx/{SherpaOnnxCoreHelper.kt → SherpaOnnxAssetHelper.kt} +350 -236
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +791 -483
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxSttHelper.kt +699 -109
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +1123 -668
- package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +187 -0
- package/ios/SherpaOnnx+Assets.h +11 -0
- package/ios/SherpaOnnx+Assets.mm +325 -0
- package/ios/SherpaOnnx+STT.mm +455 -118
- package/ios/SherpaOnnx+TTS.mm +1101 -712
- package/ios/SherpaOnnx.h +17 -6
- package/ios/SherpaOnnx.mm +206 -311
- package/ios/SherpaOnnx.xcconfig +19 -19
- package/ios/SherpaOnnxCoreMLHelper.swift +24 -0
- package/ios/archive/sherpa-onnx-archive-helper.h +21 -0
- package/ios/archive/sherpa-onnx-archive-helper.mm +296 -0
- package/ios/libarchive_darwin_config.h +153 -0
- package/{android/src/main/cpp/jni → ios/model_detect}/sherpa-onnx-common.h +18 -18
- package/ios/model_detect/sherpa-onnx-model-detect-helper.h +49 -0
- package/ios/model_detect/sherpa-onnx-model-detect-helper.mm +210 -0
- package/ios/model_detect/sherpa-onnx-model-detect-stt.mm +344 -0
- package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +201 -0
- package/{android/src/main/cpp/jni → ios/model_detect}/sherpa-onnx-model-detect.h +117 -89
- package/ios/scripts/patch-libarchive-includes.sh +61 -0
- package/ios/scripts/setup-ios-libarchive.sh +98 -0
- package/ios/stt/sherpa-onnx-stt-wrapper.h +129 -0
- package/ios/stt/sherpa-onnx-stt-wrapper.mm +523 -0
- package/ios/{sherpa-onnx-tts-wrapper.h → tts/sherpa-onnx-tts-wrapper.h} +90 -85
- package/ios/{sherpa-onnx-tts-wrapper.mm → tts/sherpa-onnx-tts-wrapper.mm} +376 -345
- package/lib/module/NativeSherpaOnnx.js +3 -0
- package/lib/module/NativeSherpaOnnx.js.map +1 -1
- package/lib/module/audio/index.js +22 -0
- package/lib/module/audio/index.js.map +1 -0
- package/lib/module/diarization/index.js +1 -1
- package/lib/module/diarization/index.js.map +1 -1
- package/lib/module/download/ModelDownloadManager.js +918 -0
- package/lib/module/download/ModelDownloadManager.js.map +1 -0
- package/lib/module/download/extractTarBz2.js +53 -0
- package/lib/module/download/extractTarBz2.js.map +1 -0
- package/lib/module/download/index.js +6 -0
- package/lib/module/download/index.js.map +1 -0
- package/lib/module/download/validation.js +178 -0
- package/lib/module/download/validation.js.map +1 -0
- package/lib/module/enhancement/index.js +1 -1
- package/lib/module/enhancement/index.js.map +1 -1
- package/lib/module/index.js +41 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/separation/index.js +1 -1
- package/lib/module/separation/index.js.map +1 -1
- package/lib/module/stt/index.js +127 -60
- package/lib/module/stt/index.js.map +1 -1
- package/lib/module/stt/sttModelLanguages.js +512 -0
- package/lib/module/stt/sttModelLanguages.js.map +1 -0
- package/lib/module/stt/types.js +53 -1
- package/lib/module/stt/types.js.map +1 -1
- package/lib/module/tts/index.js +216 -289
- package/lib/module/tts/index.js.map +1 -1
- package/lib/module/tts/types.js +86 -1
- package/lib/module/tts/types.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils.js +86 -73
- package/lib/module/utils.js.map +1 -1
- package/lib/module/vad/index.js +1 -1
- package/lib/module/vad/index.js.map +1 -1
- package/lib/typescript/src/NativeSherpaOnnx.d.ts +192 -38
- package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
- package/lib/typescript/src/audio/index.d.ts +13 -0
- package/lib/typescript/src/audio/index.d.ts.map +1 -0
- package/lib/typescript/src/diarization/index.d.ts +3 -2
- package/lib/typescript/src/diarization/index.d.ts.map +1 -1
- package/lib/typescript/src/download/ModelDownloadManager.d.ts +108 -0
- package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -0
- package/lib/typescript/src/download/extractTarBz2.d.ts +14 -0
- package/lib/typescript/src/download/extractTarBz2.d.ts.map +1 -0
- package/lib/typescript/src/download/index.d.ts +7 -0
- package/lib/typescript/src/download/index.d.ts.map +1 -0
- package/lib/typescript/src/download/validation.d.ts +57 -0
- package/lib/typescript/src/download/validation.d.ts.map +1 -0
- package/lib/typescript/src/enhancement/index.d.ts +3 -2
- package/lib/typescript/src/enhancement/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +26 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/separation/index.d.ts +3 -2
- package/lib/typescript/src/separation/index.d.ts.map +1 -1
- package/lib/typescript/src/stt/index.d.ts +31 -43
- package/lib/typescript/src/stt/index.d.ts.map +1 -1
- package/lib/typescript/src/stt/sttModelLanguages.d.ts +52 -0
- package/lib/typescript/src/stt/sttModelLanguages.d.ts.map +1 -0
- package/lib/typescript/src/stt/types.d.ts +196 -9
- package/lib/typescript/src/stt/types.d.ts.map +1 -1
- package/lib/typescript/src/tts/index.d.ts +25 -211
- package/lib/typescript/src/tts/index.d.ts.map +1 -1
- package/lib/typescript/src/tts/types.d.ts +148 -25
- package/lib/typescript/src/tts/types.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +0 -32
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +28 -13
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/lib/typescript/src/vad/index.d.ts +3 -2
- package/lib/typescript/src/vad/index.d.ts.map +1 -1
- package/package.json +250 -222
- package/scripts/check-qnn-support.sh +78 -0
- package/scripts/setup-ios-framework.sh +379 -282
- package/src/NativeSherpaOnnx.ts +474 -251
- package/src/audio/index.ts +32 -0
- package/src/diarization/index.ts +4 -2
- package/src/download/ModelDownloadManager.ts +1325 -0
- package/src/download/extractTarBz2.ts +78 -0
- package/src/download/index.ts +43 -0
- package/src/download/validation.ts +279 -0
- package/src/enhancement/index.ts +4 -2
- package/src/index.tsx +78 -27
- package/src/separation/index.ts +4 -2
- package/src/stt/index.ts +249 -89
- package/src/stt/sttModelLanguages.ts +237 -0
- package/src/stt/types.ts +263 -9
- package/src/tts/index.ts +470 -458
- package/src/tts/types.ts +373 -218
- package/src/types.ts +0 -44
- package/src/utils.ts +145 -131
- package/src/vad/index.ts +4 -2
- package/third_party/ffmpeg_prebuilt/ANDROID_RELEASE_TAG +1 -0
- package/third_party/libarchive_prebuilt/ANDROID_RELEASE_TAG +1 -0
- package/third_party/libarchive_prebuilt/IOS_RELEASE_TAG +1 -0
- package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -0
- package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -0
- package/android/src/main/cpp/include/sherpa-onnx/c-api/c-api.h +0 -1918
- package/android/src/main/cpp/include/sherpa-onnx/c-api/cxx-api.h +0 -841
- package/android/src/main/cpp/jni/sherpa-onnx-model-detect.cpp +0 -541
- package/android/src/main/cpp/jni/sherpa-onnx-stt-jni.cpp +0 -336
- package/android/src/main/cpp/jni/sherpa-onnx-stt-wrapper.cpp +0 -222
- package/android/src/main/cpp/jni/sherpa-onnx-stt-wrapper.h +0 -68
- package/android/src/main/cpp/jni/sherpa-onnx-tts-jni.cpp +0 -823
- package/android/src/main/cpp/jni/sherpa-onnx-tts-wrapper.cpp +0 -387
- package/android/src/main/cpp/jni/sherpa-onnx-tts-wrapper.h +0 -147
- package/ios/Frameworks/sherpa_onnx.xcframework.zip +0 -0
- package/ios/include/sherpa-onnx/c-api/c-api.h +0 -1918
- package/ios/include/sherpa-onnx/c-api/cxx-api.h +0 -841
- package/ios/sherpa-onnx-model-detect.mm +0 -441
- package/ios/sherpa-onnx-stt-wrapper.h +0 -48
- package/ios/sherpa-onnx-stt-wrapper.mm +0 -201
- package/scripts/copy-headers.js +0 -184
- package/scripts/setup-assets.js +0 -323
package/lib/module/tts/index.js
CHANGED
|
@@ -1,342 +1,269 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DeviceEventEmitter } from 'react-native';
|
|
4
4
|
import SherpaOnnx from "../NativeSherpaOnnx.js";
|
|
5
5
|
import { resolveModelPath } from "../utils.js";
|
|
6
|
+
let ttsInstanceCounter = 0;
|
|
6
7
|
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Supports multiple model source types:
|
|
11
|
-
* - Asset models (bundled in app)
|
|
12
|
-
* - File system models (downloaded or user-provided)
|
|
13
|
-
* - Auto-detection (tries asset first, then file system)
|
|
14
|
-
*
|
|
15
|
-
* Supported model types (auto-detected or explicit):
|
|
16
|
-
* - VITS (includes Piper, Coqui, MeloTTS, MMS)
|
|
17
|
-
* - Matcha (acoustic model + vocoder)
|
|
18
|
-
* - Kokoro (multi-speaker, multi-language)
|
|
19
|
-
* - KittenTTS (lightweight, multi-speaker)
|
|
20
|
-
* - Zipvoice (voice cloning capable)
|
|
21
|
-
*
|
|
22
|
-
* @param options - TTS initialization options or model path configuration
|
|
23
|
-
* @returns Promise resolving to result with success and detected models
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // Simple string (auto-detect)
|
|
27
|
-
* const result = await initializeTTS('models/sherpa-onnx-vits-piper-en_US-lessac-medium');
|
|
28
|
-
* console.log('Detected models:', result.detectedModels);
|
|
29
|
-
*
|
|
30
|
-
* // Asset model
|
|
31
|
-
* const result = await initializeTTS({
|
|
32
|
-
* modelPath: { type: 'asset', path: 'models/vits-piper-en' }
|
|
33
|
-
* });
|
|
34
|
-
*
|
|
35
|
-
* // File system model with options
|
|
36
|
-
* const result = await initializeTTS({
|
|
37
|
-
* modelPath: { type: 'file', path: '/path/to/model' },
|
|
38
|
-
* numThreads: 4,
|
|
39
|
-
* debug: true
|
|
40
|
-
* });
|
|
41
|
-
*
|
|
42
|
-
* // With explicit model type
|
|
43
|
-
* const result = await initializeTTS({
|
|
44
|
-
* modelPath: { type: 'asset', path: 'models/kokoro-en' },
|
|
45
|
-
* modelType: 'kokoro'
|
|
46
|
-
* });
|
|
47
|
-
* ```
|
|
8
|
+
/**
|
|
9
|
+
* Flatten model-specific options for the given model type to native init/update params.
|
|
10
|
+
* When modelType is 'auto' or missing, returns undefined for all (native uses defaults).
|
|
48
11
|
*/
|
|
49
|
-
|
|
50
|
-
//
|
|
12
|
+
function flattenTtsModelOptionsForNative(modelType, modelOptions) {
|
|
13
|
+
if (!modelOptions || !modelType || modelType === 'auto' || modelType === 'zipvoice' // Zipvoice does not use noise/length scale; native uses its own defaults
|
|
14
|
+
) return {
|
|
15
|
+
noiseScale: undefined,
|
|
16
|
+
noiseScaleW: undefined,
|
|
17
|
+
lengthScale: undefined
|
|
18
|
+
};
|
|
19
|
+
const block = modelType === 'vits' ? modelOptions.vits : modelType === 'matcha' ? modelOptions.matcha : modelType === 'kokoro' ? modelOptions.kokoro : modelType === 'kitten' ? modelOptions.kitten : modelType === 'pocket' ? modelOptions.pocket : undefined;
|
|
20
|
+
if (!block) return {
|
|
21
|
+
noiseScale: undefined,
|
|
22
|
+
noiseScaleW: undefined,
|
|
23
|
+
lengthScale: undefined
|
|
24
|
+
};
|
|
25
|
+
const out = {
|
|
26
|
+
noiseScale: undefined,
|
|
27
|
+
noiseScaleW: undefined,
|
|
28
|
+
lengthScale: undefined
|
|
29
|
+
};
|
|
30
|
+
const n = block;
|
|
31
|
+
if (n.noiseScale !== undefined && typeof n.noiseScale === 'number') out.noiseScale = n.noiseScale;
|
|
32
|
+
if (n.noiseScaleW !== undefined && typeof n.noiseScaleW === 'number') out.noiseScaleW = n.noiseScaleW;
|
|
33
|
+
if (n.lengthScale !== undefined && typeof n.lengthScale === 'number') out.lengthScale = n.lengthScale;
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Detect TTS model type and structure without initializing the engine.
|
|
39
|
+
* Uses the same native file-based detection as createTTS. Stateless; no instance required.
|
|
40
|
+
*
|
|
41
|
+
* @param modelPath - Model path configuration (asset, file, or auto)
|
|
42
|
+
* @param options - Optional modelType (default: 'auto')
|
|
43
|
+
* @returns Object with success, detectedModels (array of { type, modelDir }), and modelType (primary detected type)
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const result = await detectTtsModel({ type: 'asset', path: 'models/vits-piper-en' });
|
|
47
|
+
* if (result.success) console.log('Detected type:', result.modelType, result.detectedModels);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export async function detectTtsModel(modelPath, options) {
|
|
51
|
+
const resolvedPath = await resolveModelPath(modelPath);
|
|
52
|
+
return SherpaOnnx.detectTtsModel(resolvedPath, options?.modelType);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Convert TtsGenerationOptions to a flat object for the native bridge.
|
|
57
|
+
* Flattens referenceAudio { samples, sampleRate } to referenceAudio array + referenceSampleRate.
|
|
58
|
+
*/
|
|
59
|
+
function toNativeTtsOptions(options) {
|
|
60
|
+
if (options == null) return {};
|
|
61
|
+
const out = {};
|
|
62
|
+
if (options.sid !== undefined) out.sid = options.sid;
|
|
63
|
+
if (options.speed !== undefined) out.speed = options.speed;
|
|
64
|
+
if (options.silenceScale !== undefined) out.silenceScale = options.silenceScale;
|
|
65
|
+
if (options.referenceAudio != null) {
|
|
66
|
+
out.referenceAudio = options.referenceAudio.samples;
|
|
67
|
+
out.referenceSampleRate = options.referenceAudio.sampleRate;
|
|
68
|
+
}
|
|
69
|
+
if (options.referenceText !== undefined) out.referenceText = options.referenceText;
|
|
70
|
+
if (options.numSteps !== undefined) out.numSteps = options.numSteps;
|
|
71
|
+
if (options.extra != null && Object.keys(options.extra).length > 0) out.extra = options.extra;
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// TTS stream events are sent from native via sendEventWithName; use DeviceEventEmitter
|
|
76
|
+
// so we don't need NativeEventEmitter (which expects addListener/removeListeners on the module).
|
|
77
|
+
/**
|
|
78
|
+
* Create a TTS engine instance. Call destroy() on the returned engine when done to free native resources.
|
|
79
|
+
*
|
|
80
|
+
* @param options - TTS initialization options or model path configuration
|
|
81
|
+
* @returns Promise resolving to a TtsEngine instance
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const tts = await createTTS({
|
|
85
|
+
* modelPath: { type: 'asset', path: 'models/vits-piper-en' },
|
|
86
|
+
* modelType: 'vits',
|
|
87
|
+
* modelOptions: { vits: { noiseScale: 0.667 } },
|
|
88
|
+
* });
|
|
89
|
+
* const audio = await tts.generateSpeech('Hello world');
|
|
90
|
+
* await tts.destroy();
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export async function createTTS(options) {
|
|
94
|
+
const instanceId = `tts_${++ttsInstanceCounter}`;
|
|
51
95
|
let modelPath;
|
|
52
96
|
let modelType;
|
|
97
|
+
let provider;
|
|
53
98
|
let numThreads;
|
|
54
99
|
let debug;
|
|
55
|
-
let
|
|
56
|
-
let
|
|
57
|
-
let
|
|
58
|
-
|
|
100
|
+
let modelOptions;
|
|
101
|
+
let ruleFsts;
|
|
102
|
+
let ruleFars;
|
|
103
|
+
let maxNumSentences;
|
|
104
|
+
let silenceScale;
|
|
105
|
+
if ('modelPath' in options) {
|
|
59
106
|
modelPath = options.modelPath;
|
|
60
107
|
modelType = options.modelType;
|
|
108
|
+
provider = options.provider;
|
|
61
109
|
numThreads = options.numThreads;
|
|
62
110
|
debug = options.debug;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
111
|
+
modelOptions = options.modelOptions;
|
|
112
|
+
ruleFsts = options.ruleFsts;
|
|
113
|
+
ruleFars = options.ruleFars;
|
|
114
|
+
maxNumSentences = options.maxNumSentences;
|
|
115
|
+
silenceScale = options.silenceScale;
|
|
66
116
|
} else {
|
|
67
117
|
modelPath = options;
|
|
68
118
|
modelType = undefined;
|
|
119
|
+
provider = undefined;
|
|
69
120
|
numThreads = undefined;
|
|
70
121
|
debug = undefined;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
122
|
+
modelOptions = undefined;
|
|
123
|
+
ruleFsts = undefined;
|
|
124
|
+
ruleFars = undefined;
|
|
125
|
+
maxNumSentences = undefined;
|
|
126
|
+
silenceScale = undefined;
|
|
74
127
|
}
|
|
128
|
+
const flat = flattenTtsModelOptionsForNative(modelType, modelOptions);
|
|
75
129
|
const resolvedPath = await resolveModelPath(modelPath);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Update TTS parameters by re-initializing with stored config.
|
|
81
|
-
*/
|
|
82
|
-
export async function updateTtsParams(options) {
|
|
83
|
-
const noiseArg = options.noiseScale === undefined ? Number.NaN : options.noiseScale;
|
|
84
|
-
const noiseWArg = options.noiseScaleW === undefined ? Number.NaN : options.noiseScaleW;
|
|
85
|
-
const lengthArg = options.lengthScale === undefined ? Number.NaN : options.lengthScale;
|
|
86
|
-
return SherpaOnnx.updateTtsParams(noiseArg, noiseWArg, lengthArg);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Generate speech from text.
|
|
91
|
-
*
|
|
92
|
-
* Returns raw audio samples as float array in range [-1.0, 1.0].
|
|
93
|
-
* You can save these samples to a WAV file, stream them, or process them further.
|
|
94
|
-
*
|
|
95
|
-
* @param text - Text to convert to speech
|
|
96
|
-
* @param options - Synthesis options (speaker ID, speed)
|
|
97
|
-
* @returns Promise resolving to generated audio data
|
|
98
|
-
* @example
|
|
99
|
-
* ```typescript
|
|
100
|
-
* // Basic usage
|
|
101
|
-
* const audio = await generateSpeech('Hello, world!');
|
|
102
|
-
* console.log(`Generated ${audio.samples.length} samples at ${audio.sampleRate} Hz`);
|
|
103
|
-
*
|
|
104
|
-
* // With options
|
|
105
|
-
* const audio = await generateSpeech('Hello, world!', {
|
|
106
|
-
* sid: 0, // Speaker ID (for multi-speaker models)
|
|
107
|
-
* speed: 1.2 // 20% faster
|
|
108
|
-
* });
|
|
109
|
-
*
|
|
110
|
-
* // Slower speech
|
|
111
|
-
* const audio = await generateSpeech('Speak slowly', { speed: 0.8 });
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
export async function generateSpeech(text, options) {
|
|
115
|
-
return SherpaOnnx.generateTts(text, options?.sid ?? 0, options?.speed ?? 1.0);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Generate speech from text and return subtitle/timestamp metadata.
|
|
120
|
-
*
|
|
121
|
-
* Timestamps are estimated based on the output duration when models do not
|
|
122
|
-
* provide native timing information.
|
|
123
|
-
*/
|
|
124
|
-
export async function generateSpeechWithTimestamps(text, options) {
|
|
125
|
-
return SherpaOnnx.generateTtsWithTimestamps(text, options?.sid ?? 0, options?.speed ?? 1.0);
|
|
126
|
-
}
|
|
127
|
-
const nativeTtsEventModule = SherpaOnnx && typeof SherpaOnnx.addListener === 'function' && typeof SherpaOnnx.removeListeners === 'function' ? SherpaOnnx : undefined;
|
|
128
|
-
const ttsEventEmitter = new NativeEventEmitter(nativeTtsEventModule);
|
|
129
|
-
/**
|
|
130
|
-
* Generate speech in streaming mode (emits chunk events).
|
|
131
|
-
*
|
|
132
|
-
* Returns an unsubscribe function to remove event listeners.
|
|
133
|
-
*/
|
|
134
|
-
export async function generateSpeechStream(text, options, handlers) {
|
|
135
|
-
const subscriptions = [ttsEventEmitter.addListener('ttsStreamChunk', event => {
|
|
136
|
-
handlers.onChunk?.(event);
|
|
137
|
-
}), ttsEventEmitter.addListener('ttsStreamEnd', event => {
|
|
138
|
-
handlers.onEnd?.(event);
|
|
139
|
-
}), ttsEventEmitter.addListener('ttsStreamError', event => {
|
|
140
|
-
handlers.onError?.(event);
|
|
141
|
-
})];
|
|
142
|
-
try {
|
|
143
|
-
await SherpaOnnx.generateTtsStream(text, options?.sid ?? 0, options?.speed ?? 1.0);
|
|
144
|
-
} catch (error) {
|
|
145
|
-
// Clean up listeners if native call fails
|
|
146
|
-
subscriptions.forEach(sub => sub.remove());
|
|
147
|
-
throw error;
|
|
130
|
+
const result = await SherpaOnnx.initializeTts(instanceId, resolvedPath, modelType ?? 'auto', numThreads ?? 2, debug ?? false, flat.noiseScale, flat.noiseScaleW, flat.lengthScale, ruleFsts, ruleFars, maxNumSentences, silenceScale, provider);
|
|
131
|
+
if (!result.success) {
|
|
132
|
+
throw new Error(`TTS initialization failed: ${JSON.stringify(result.detectedModels ?? [])}`);
|
|
148
133
|
}
|
|
149
|
-
|
|
150
|
-
|
|
134
|
+
const firstDetected = result.detectedModels?.[0];
|
|
135
|
+
const effectiveModelType = modelType && modelType !== 'auto' ? modelType : firstDetected?.type;
|
|
136
|
+
let destroyed = false;
|
|
137
|
+
const guard = () => {
|
|
138
|
+
if (destroyed) {
|
|
139
|
+
throw new Error(`TTS instance ${instanceId} has been destroyed; cannot call methods on it.`);
|
|
140
|
+
}
|
|
151
141
|
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
142
|
+
const engine = {
|
|
143
|
+
get instanceId() {
|
|
144
|
+
return instanceId;
|
|
145
|
+
},
|
|
146
|
+
async generateSpeech(text, opts) {
|
|
147
|
+
guard();
|
|
148
|
+
return SherpaOnnx.generateTts(instanceId, text, toNativeTtsOptions(opts));
|
|
149
|
+
},
|
|
150
|
+
async generateSpeechWithTimestamps(text, opts) {
|
|
151
|
+
guard();
|
|
152
|
+
return SherpaOnnx.generateTtsWithTimestamps(instanceId, text, toNativeTtsOptions(opts));
|
|
153
|
+
},
|
|
154
|
+
async generateSpeechStream(text, opts, handlers) {
|
|
155
|
+
guard();
|
|
156
|
+
const subscriptions = [DeviceEventEmitter.addListener('ttsStreamChunk', event => {
|
|
157
|
+
const e = event;
|
|
158
|
+
if (e.instanceId != null && e.instanceId !== instanceId) return;
|
|
159
|
+
handlers.onChunk?.(e);
|
|
160
|
+
}), DeviceEventEmitter.addListener('ttsStreamEnd', event => {
|
|
161
|
+
const e = event;
|
|
162
|
+
if (e.instanceId != null && e.instanceId !== instanceId) return;
|
|
163
|
+
handlers.onEnd?.(e);
|
|
164
|
+
}), DeviceEventEmitter.addListener('ttsStreamError', event => {
|
|
165
|
+
const e = event;
|
|
166
|
+
if (e.instanceId != null && e.instanceId !== instanceId) return;
|
|
167
|
+
handlers.onError?.(e);
|
|
168
|
+
})];
|
|
169
|
+
try {
|
|
170
|
+
await SherpaOnnx.generateTtsStream(instanceId, text, toNativeTtsOptions(opts));
|
|
171
|
+
} catch (error) {
|
|
172
|
+
subscriptions.forEach(sub => sub.remove());
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
return () => {
|
|
176
|
+
subscriptions.forEach(sub => sub.remove());
|
|
177
|
+
};
|
|
178
|
+
},
|
|
179
|
+
async cancelSpeechStream() {
|
|
180
|
+
guard();
|
|
181
|
+
return SherpaOnnx.cancelTtsStream(instanceId);
|
|
182
|
+
},
|
|
183
|
+
async startPcmPlayer(sampleRate, channels) {
|
|
184
|
+
guard();
|
|
185
|
+
return SherpaOnnx.startTtsPcmPlayer(instanceId, sampleRate, channels);
|
|
186
|
+
},
|
|
187
|
+
async writePcmChunk(samples) {
|
|
188
|
+
guard();
|
|
189
|
+
return SherpaOnnx.writeTtsPcmChunk(instanceId, samples);
|
|
190
|
+
},
|
|
191
|
+
async stopPcmPlayer() {
|
|
192
|
+
guard();
|
|
193
|
+
return SherpaOnnx.stopTtsPcmPlayer(instanceId);
|
|
194
|
+
},
|
|
195
|
+
async updateParams(opts) {
|
|
196
|
+
guard();
|
|
197
|
+
const effectiveModelTypeForUpdate = opts.modelType && opts.modelType !== 'auto' ? opts.modelType : effectiveModelType;
|
|
198
|
+
const flatOpts = flattenTtsModelOptionsForNative(effectiveModelTypeForUpdate, opts.modelOptions);
|
|
199
|
+
const noiseArg = flatOpts.noiseScale === undefined ? Number.NaN : flatOpts.noiseScale;
|
|
200
|
+
const noiseWArg = flatOpts.noiseScaleW === undefined ? Number.NaN : flatOpts.noiseScaleW;
|
|
201
|
+
const lengthArg = flatOpts.lengthScale === undefined ? Number.NaN : flatOpts.lengthScale;
|
|
202
|
+
return SherpaOnnx.updateTtsParams(instanceId, noiseArg, noiseWArg, lengthArg);
|
|
203
|
+
},
|
|
204
|
+
async getModelInfo() {
|
|
205
|
+
guard();
|
|
206
|
+
const [sampleRate, numSpeakers] = await Promise.all([SherpaOnnx.getTtsSampleRate(instanceId), SherpaOnnx.getTtsNumSpeakers(instanceId)]);
|
|
207
|
+
return {
|
|
208
|
+
sampleRate,
|
|
209
|
+
numSpeakers
|
|
210
|
+
};
|
|
211
|
+
},
|
|
212
|
+
async getSampleRate() {
|
|
213
|
+
guard();
|
|
214
|
+
return SherpaOnnx.getTtsSampleRate(instanceId);
|
|
215
|
+
},
|
|
216
|
+
async getNumSpeakers() {
|
|
217
|
+
guard();
|
|
218
|
+
return SherpaOnnx.getTtsNumSpeakers(instanceId);
|
|
219
|
+
},
|
|
220
|
+
async destroy() {
|
|
221
|
+
if (destroyed) return;
|
|
222
|
+
destroyed = true;
|
|
223
|
+
await SherpaOnnx.unloadTts(instanceId);
|
|
224
|
+
}
|
|
208
225
|
};
|
|
226
|
+
return engine;
|
|
209
227
|
}
|
|
210
228
|
|
|
211
|
-
|
|
212
|
-
* Get the sample rate of the initialized TTS model.
|
|
213
|
-
*
|
|
214
|
-
* @returns Promise resolving to sample rate in Hz
|
|
215
|
-
* @example
|
|
216
|
-
* ```typescript
|
|
217
|
-
* const sampleRate = await getSampleRate();
|
|
218
|
-
* console.log(`Model outputs audio at ${sampleRate} Hz`);
|
|
219
|
-
* ```
|
|
220
|
-
*/
|
|
221
|
-
export function getSampleRate() {
|
|
222
|
-
return SherpaOnnx.getTtsSampleRate();
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Get the number of speakers/voices available in the model.
|
|
227
|
-
*
|
|
228
|
-
* @returns Promise resolving to number of speakers
|
|
229
|
-
* - 0 or 1: Single-speaker model
|
|
230
|
-
* - >1: Multi-speaker model
|
|
231
|
-
* @example
|
|
232
|
-
* ```typescript
|
|
233
|
-
* const numSpeakers = await getNumSpeakers();
|
|
234
|
-
*
|
|
235
|
-
* if (numSpeakers > 1) {
|
|
236
|
-
* console.log(`Model has ${numSpeakers} different voices`);
|
|
237
|
-
* // Generate with different voices
|
|
238
|
-
* for (let i = 0; i < numSpeakers; i++) {
|
|
239
|
-
* const audio = await generateSpeech('Hello', { sid: i });
|
|
240
|
-
* // ... use audio
|
|
241
|
-
* }
|
|
242
|
-
* }
|
|
243
|
-
* ```
|
|
244
|
-
*/
|
|
245
|
-
export function getNumSpeakers() {
|
|
246
|
-
return SherpaOnnx.getTtsNumSpeakers();
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Release TTS resources.
|
|
251
|
-
*
|
|
252
|
-
* Call this when you're done using TTS to free up memory.
|
|
253
|
-
* After calling this, you must call `initializeTTS()` again before
|
|
254
|
-
* using TTS functions.
|
|
255
|
-
*
|
|
256
|
-
* @example
|
|
257
|
-
* ```typescript
|
|
258
|
-
* await initializeTTS('models/vits-piper-en');
|
|
259
|
-
* const audio = await generateSpeech('Hello');
|
|
260
|
-
* // ... use audio
|
|
261
|
-
* await unloadTTS(); // Free resources
|
|
262
|
-
* ```
|
|
263
|
-
*/
|
|
264
|
-
export function unloadTTS() {
|
|
265
|
-
return SherpaOnnx.unloadTts();
|
|
266
|
-
}
|
|
229
|
+
// ========== Module-level utilities (stateless, no instance required) ==========
|
|
267
230
|
|
|
268
|
-
/**
|
|
269
|
-
* Save generated TTS audio to a WAV file.
|
|
270
|
-
*
|
|
271
|
-
* @param audio - Generated audio from generateSpeech()
|
|
272
|
-
* @param filePath - Absolute path where to save the WAV file
|
|
273
|
-
* @returns Promise resolving to the file path where audio was saved
|
|
274
|
-
* @example
|
|
275
|
-
* ```typescript
|
|
276
|
-
* import { Platform } from 'react-native';
|
|
277
|
-
* import RNFS from 'react-native-fs';
|
|
278
|
-
*
|
|
279
|
-
* const audio = await generateSpeech('Hello, world!');
|
|
280
|
-
*
|
|
281
|
-
* // Save to documents directory
|
|
282
|
-
* const documentsPath = Platform.OS === 'ios'
|
|
283
|
-
* ? RNFS.DocumentDirectoryPath
|
|
284
|
-
* : RNFS.ExternalDirectoryPath;
|
|
285
|
-
* const filePath = `${documentsPath}/speech_${Date.now()}.wav`;
|
|
286
|
-
*
|
|
287
|
-
* const savedPath = await saveAudioToFile(audio, filePath);
|
|
288
|
-
* console.log('Audio saved to:', savedPath);
|
|
289
|
-
* ```
|
|
231
|
+
/**
|
|
232
|
+
* Save generated TTS audio to a WAV file.
|
|
290
233
|
*/
|
|
291
234
|
export function saveAudioToFile(audio, filePath) {
|
|
292
235
|
return SherpaOnnx.saveTtsAudioToFile(audio.samples, audio.sampleRate, filePath);
|
|
293
236
|
}
|
|
294
237
|
|
|
295
|
-
/**
|
|
296
|
-
* Save generated TTS audio to a WAV file via Android SAF content URI.
|
|
297
|
-
*
|
|
298
|
-
* @param audio - Generated audio from generateSpeech()
|
|
299
|
-
* @param directoryUri - Directory content URI from SAF
|
|
300
|
-
* @param filename - Desired file name
|
|
301
|
-
* @returns Promise resolving to content URI of the saved file
|
|
238
|
+
/**
|
|
239
|
+
* Save generated TTS audio to a WAV file via Android SAF content URI.
|
|
302
240
|
*/
|
|
303
241
|
export function saveAudioToContentUri(audio, directoryUri, filename) {
|
|
304
242
|
return SherpaOnnx.saveTtsAudioToContentUri(audio.samples, audio.sampleRate, directoryUri, filename);
|
|
305
243
|
}
|
|
306
244
|
|
|
307
|
-
/**
|
|
308
|
-
* Save a text file via Android SAF content URI.
|
|
309
|
-
*
|
|
310
|
-
* @param text - Text content to write
|
|
311
|
-
* @param directoryUri - Directory content URI from SAF
|
|
312
|
-
* @param filename - Desired file name
|
|
313
|
-
* @param mimeType - MIME type (default: text/plain)
|
|
314
|
-
* @returns Promise resolving to content URI of the saved file
|
|
245
|
+
/**
|
|
246
|
+
* Save a text file via Android SAF content URI.
|
|
315
247
|
*/
|
|
316
248
|
export function saveTextToContentUri(text, directoryUri, filename, mimeType = 'text/plain') {
|
|
317
249
|
return SherpaOnnx.saveTtsTextToContentUri(text, directoryUri, filename, mimeType);
|
|
318
250
|
}
|
|
319
251
|
|
|
320
|
-
/**
|
|
321
|
-
* Copy a SAF content URI to a cache file for local playback (Android only).
|
|
322
|
-
*
|
|
323
|
-
* @param fileUri - Content URI of the saved WAV file
|
|
324
|
-
* @param filename - Desired cache filename
|
|
325
|
-
* @returns Promise resolving to absolute path of the cached file
|
|
252
|
+
/**
|
|
253
|
+
* Copy a SAF content URI to a cache file for local playback (Android only).
|
|
326
254
|
*/
|
|
327
255
|
export function copyContentUriToCache(fileUri, filename) {
|
|
328
256
|
return SherpaOnnx.copyTtsContentUriToCache(fileUri, filename);
|
|
329
257
|
}
|
|
330
258
|
|
|
331
|
-
/**
|
|
332
|
-
* Share a TTS audio file (file path or content URI).
|
|
333
|
-
*
|
|
334
|
-
* @param fileUri - File path or content URI
|
|
335
|
-
* @param mimeType - MIME type (default: audio/wav)
|
|
259
|
+
/**
|
|
260
|
+
* Share a TTS audio file (file path or content URI).
|
|
336
261
|
*/
|
|
337
262
|
export function shareAudioFile(fileUri, mimeType = 'audio/wav') {
|
|
338
263
|
return SherpaOnnx.shareTtsAudio(fileUri, mimeType);
|
|
339
264
|
}
|
|
340
265
|
|
|
341
|
-
// Export types
|
|
266
|
+
// Export types and runtime type list
|
|
267
|
+
|
|
268
|
+
export { TTS_MODEL_TYPES } from "./types.js";
|
|
342
269
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","SherpaOnnx","resolveModelPath","initializeTTS","options","modelPath","modelType","numThreads","debug","noiseScale","noiseScaleW","lengthScale","undefined","resolvedPath","initializeTts","updateTtsParams","noiseArg","Number","NaN","noiseWArg","lengthArg","generateSpeech","text","generateTts","sid","speed","generateSpeechWithTimestamps","generateTtsWithTimestamps","nativeTtsEventModule","addListener","removeListeners","ttsEventEmitter","generateSpeechStream","handlers","subscriptions","event","onChunk","onEnd","onError","generateTtsStream","error","forEach","sub","remove","cancelSpeechStream","cancelTtsStream","startTtsPcmPlayer","sampleRate","channels","writeTtsPcmChunk","samples","stopTtsPcmPlayer","getModelInfo","numSpeakers","Promise","all","getTtsSampleRate","getTtsNumSpeakers","getSampleRate","getNumSpeakers","unloadTTS","unloadTts","saveAudioToFile","audio","filePath","saveTtsAudioToFile","saveAudioToContentUri","directoryUri","filename","saveTtsAudioToContentUri","saveTextToContentUri","mimeType","saveTtsTextToContentUri","copyContentUriToCache","fileUri","copyTtsContentUriToCache","shareAudioFile","shareTtsAudio"],"sourceRoot":"..\\..\\..\\src","sources":["tts/index.ts"],"mappings":"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OAAO,eAAeC,YAAYA,CAAA,EAA0B;EAC1D,MAAM,CAACL,UAAU,EAAEM,WAAW,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAClDtD,UAAU,CAACuD,gBAAgB,CAAC,CAAC,EAC7BvD,UAAU,CAACwD,iBAAiB,CAAC,CAAC,CAC/B,CAAC;EAEF,OAAO;IACLV,UAAU;IACVM;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,aAAaA,CAAA,EAAoB;EAC/C,OAAOzD,UAAU,CAACuD,gBAAgB,CAAC,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,cAAcA,CAAA,EAAoB;EAChD,OAAO1D,UAAU,CAACwD,iBAAiB,CAAC,CAAC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,SAASA,CAAA,EAAkB;EACzC,OAAO3D,UAAU,CAAC4D,SAAS,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC7BC,KAAqB,EACrBC,QAAgB,EACC;EACjB,OAAO/D,UAAU,CAACgE,kBAAkB,CAClCF,KAAK,CAACb,OAAO,EACba,KAAK,CAAChB,UAAU,EAChBiB,QACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,qBAAqBA,CACnCH,KAAqB,EACrBI,YAAoB,EACpBC,QAAgB,EACC;EACjB,OAAOnE,UAAU,CAACoE,wBAAwB,CACxCN,KAAK,CAACb,OAAO,EACba,KAAK,CAAChB,UAAU,EAChBoB,YAAY,EACZC,QACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,oBAAoBA,CAClChD,IAAY,EACZ6C,YAAoB,EACpBC,QAAgB,EAChBG,QAAQ,GAAG,YAAY,EACN;EACjB,OAAOtE,UAAU,CAACuE,uBAAuB,CACvClD,IAAI,EACJ6C,YAAY,EACZC,QAAQ,EACRG,QACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,qBAAqBA,CACnCC,OAAe,EACfN,QAAgB,EACC;EACjB,OAAOnE,UAAU,CAAC0E,wBAAwB,CAACD,OAAO,EAAEN,QAAQ,CAAC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,cAAcA,CAC5BF,OAAe,EACfH,QAAQ,GAAG,WAAW,EACP;EACf,OAAOtE,UAAU,CAAC4E,aAAa,CAACH,OAAO,EAAEH,QAAQ,CAAC;AACpD;;AAEA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DeviceEventEmitter","SherpaOnnx","resolveModelPath","ttsInstanceCounter","flattenTtsModelOptionsForNative","modelType","modelOptions","noiseScale","undefined","noiseScaleW","lengthScale","block","vits","matcha","kokoro","kitten","pocket","out","n","detectTtsModel","modelPath","options","resolvedPath","toNativeTtsOptions","sid","speed","silenceScale","referenceAudio","samples","referenceSampleRate","sampleRate","referenceText","numSteps","extra","Object","keys","length","createTTS","instanceId","provider","numThreads","debug","ruleFsts","ruleFars","maxNumSentences","flat","result","initializeTts","success","Error","JSON","stringify","detectedModels","firstDetected","effectiveModelType","type","destroyed","guard","engine","generateSpeech","text","opts","generateTts","generateSpeechWithTimestamps","generateTtsWithTimestamps","generateSpeechStream","handlers","subscriptions","addListener","event","e","onChunk","onEnd","onError","generateTtsStream","error","forEach","sub","remove","cancelSpeechStream","cancelTtsStream","startPcmPlayer","channels","startTtsPcmPlayer","writePcmChunk","writeTtsPcmChunk","stopPcmPlayer","stopTtsPcmPlayer","updateParams","effectiveModelTypeForUpdate","flatOpts","noiseArg","Number","NaN","noiseWArg","lengthArg","updateTtsParams","getModelInfo","numSpeakers","Promise","all","getTtsSampleRate","getTtsNumSpeakers","getSampleRate","getNumSpeakers","destroy","unloadTts","saveAudioToFile","audio","filePath","saveTtsAudioToFile","saveAudioToContentUri","directoryUri","filename","saveTtsAudioToContentUri","saveTextToContentUri","mimeType","saveTtsTextToContentUri","copyContentUriToCache","fileUri","copyTtsContentUriToCache","shareAudioFile","shareTtsAudio","TTS_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["tts/index.ts"],"mappings":"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","ignoreList":[]}
|