react-native-sherpa-onnx 0.4.1 → 0.4.2

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 (95) hide show
  1. package/README.md +3 -0
  2. package/android/src/main/assets/model_licenses/alignment-models-license-status.csv +5 -0
  3. package/android/src/main/cpp/CMakeLists.txt +3 -0
  4. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-alignment-wrapper.cpp +66 -0
  5. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-alignment-wrapper.h +17 -0
  6. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-alignment.cpp +108 -0
  7. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect.h +30 -0
  8. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-alignment.cpp +66 -0
  9. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-alignment.h +30 -0
  10. package/android/src/main/cpp/jni/module/sherpa-onnx-module-jni.cpp +21 -0
  11. package/android/src/main/java/com/sherpaonnx/SherpaOnnxAlignmentHelper.kt +555 -0
  12. package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +76 -0
  13. package/android/src/main/java/com/sherpaonnx/SherpaOnnxTextSegmenter.kt +330 -0
  14. package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +114 -10
  15. package/ios/Resources/model_licenses/alignment-models-license-status.csv +5 -0
  16. package/ios/SherpaOnnx+Alignment.mm +704 -0
  17. package/ios/SherpaOnnx+STT.mm +6 -0
  18. package/ios/SherpaOnnx+TTS.mm +624 -50
  19. package/ios/model_detect/sherpa-onnx-model-detect-alignment.mm +108 -0
  20. package/ios/model_detect/sherpa-onnx-model-detect.h +31 -0
  21. package/ios/model_detect/sherpa-onnx-validate-alignment.h +30 -0
  22. package/ios/model_detect/sherpa-onnx-validate-alignment.mm +66 -0
  23. package/ios/stt/sherpa-onnx-stt-wrapper.h +3 -1
  24. package/ios/stt/sherpa-onnx-stt-wrapper.mm +6 -0
  25. package/lib/module/NativeSherpaOnnx.js.map +1 -1
  26. package/lib/module/alignment/index.js +27 -0
  27. package/lib/module/alignment/index.js.map +1 -0
  28. package/lib/module/alignment/types.js +2 -0
  29. package/lib/module/alignment/types.js.map +1 -0
  30. package/lib/module/alignment/vocab.js +40 -0
  31. package/lib/module/alignment/vocab.js.map +1 -0
  32. package/lib/module/download/paths.js +9 -1
  33. package/lib/module/download/paths.js.map +1 -1
  34. package/lib/module/download/registry.js +17 -1
  35. package/lib/module/download/registry.js.map +1 -1
  36. package/lib/module/download/types.js +1 -0
  37. package/lib/module/download/types.js.map +1 -1
  38. package/lib/module/index.js +6 -4
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/module/licenses.js +8 -2
  41. package/lib/module/licenses.js.map +1 -1
  42. package/lib/module/stt/types.js.map +1 -1
  43. package/lib/module/tts/index.js +68 -2
  44. package/lib/module/tts/index.js.map +1 -1
  45. package/lib/module/tts/subtitles.js +400 -0
  46. package/lib/module/tts/subtitles.js.map +1 -0
  47. package/lib/module/tts/tempAudio.js +17 -0
  48. package/lib/module/tts/tempAudio.js.map +1 -0
  49. package/lib/module/tts/types.js.map +1 -1
  50. package/lib/typescript/src/NativeSherpaOnnx.d.ts +34 -3
  51. package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
  52. package/lib/typescript/src/alignment/index.d.ts +8 -0
  53. package/lib/typescript/src/alignment/index.d.ts.map +1 -0
  54. package/lib/typescript/src/alignment/types.d.ts +23 -0
  55. package/lib/typescript/src/alignment/types.d.ts.map +1 -0
  56. package/lib/typescript/src/alignment/vocab.d.ts +5 -0
  57. package/lib/typescript/src/alignment/vocab.d.ts.map +1 -0
  58. package/lib/typescript/src/download/paths.d.ts +5 -2
  59. package/lib/typescript/src/download/paths.d.ts.map +1 -1
  60. package/lib/typescript/src/download/registry.d.ts.map +1 -1
  61. package/lib/typescript/src/download/types.d.ts +2 -1
  62. package/lib/typescript/src/download/types.d.ts.map +1 -1
  63. package/lib/typescript/src/index.d.ts +1 -0
  64. package/lib/typescript/src/index.d.ts.map +1 -1
  65. package/lib/typescript/src/licenses.d.ts.map +1 -1
  66. package/lib/typescript/src/stt/types.d.ts +5 -2
  67. package/lib/typescript/src/stt/types.d.ts.map +1 -1
  68. package/lib/typescript/src/tts/index.d.ts +2 -1
  69. package/lib/typescript/src/tts/index.d.ts.map +1 -1
  70. package/lib/typescript/src/tts/subtitles.d.ts +24 -0
  71. package/lib/typescript/src/tts/subtitles.d.ts.map +1 -0
  72. package/lib/typescript/src/tts/tempAudio.d.ts +3 -0
  73. package/lib/typescript/src/tts/tempAudio.d.ts.map +1 -0
  74. package/lib/typescript/src/tts/types.d.ts +68 -2
  75. package/lib/typescript/src/tts/types.d.ts.map +1 -1
  76. package/package.json +6 -1
  77. package/scripts/alignment-models/README.md +90 -0
  78. package/scripts/alignment-models/build_and_upload.js +724 -0
  79. package/scripts/alignment-models/sources.csv +5 -0
  80. package/scripts/alignment-models/sync_alignment_license_status.js +123 -0
  81. package/src/NativeSherpaOnnx.ts +35 -3
  82. package/src/alignment/index.ts +41 -0
  83. package/src/alignment/types.ts +22 -0
  84. package/src/alignment/vocab.ts +38 -0
  85. package/src/download/paths.ts +18 -5
  86. package/src/download/registry.ts +23 -3
  87. package/src/download/types.ts +1 -0
  88. package/src/index.tsx +6 -4
  89. package/src/licenses.ts +12 -1
  90. package/src/stt/types.ts +5 -2
  91. package/src/tts/index.ts +110 -3
  92. package/src/tts/subtitles.ts +611 -0
  93. package/src/tts/tempAudio.ts +31 -0
  94. package/src/tts/types.ts +79 -2
  95. package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["STT_HOTWORDS_MODEL_TYPES","sttSupportsHotwords","modelType","STT_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["stt/types.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAsBA;AACA,OAAO,MAAMA,wBAAiD,GAAG,CAC/D,YAAY,EACZ,iBAAiB,CACT;;AAEV;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,SAAgC,EAAW;EAC7E,OAAOA,SAAS,KAAK,YAAY,IAAIA,SAAS,KAAK,iBAAiB;AACtE;;AAEA;AACA,OAAO,MAAMC,eAAwC,GAAG,CACtD,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,KAAK,EACL,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,MAAM,CACE;;AAEV;;AAQA;;AAEA;;AAcA;;AAQA;;AAUA;;AAsBA;;AAcA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAyGA;AACA;AACA;;AAkBA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["STT_HOTWORDS_MODEL_TYPES","sttSupportsHotwords","modelType","STT_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["stt/types.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAsBA;AACA,OAAO,MAAMA,wBAAiD,GAAG,CAC/D,YAAY,EACZ,iBAAiB,CACT;;AAEV;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,SAAgC,EAAW;EAC7E,OAAOA,SAAS,KAAK,YAAY,IAAIA,SAAS,KAAK,iBAAiB;AACtE;;AAEA;AACA,OAAO,MAAMC,eAAwC,GAAG,CACtD,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,KAAK,EACL,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,MAAM,CACE;;AAEV;;AAQA;;AAEA;;AAiBA;;AAQA;;AAUA;;AAsBA;;AAcA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAyGA;AACA;AACA;;AAkBA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA","ignoreList":[]}
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ import { unlink } from '@dr.pogodin/react-native-fs';
3
4
  import SherpaOnnx from "../NativeSherpaOnnx.js";
4
5
  import { resolveModelPath } from "../utils.js";
6
+ import { assertSubtitleGranularityForMode, generateSubtitlesFromAudio } from "./subtitles.js";
7
+ import { saveAlignmentAudioToTempWav } from "./tempAudio.js";
5
8
  let ttsInstanceCounter = 0;
6
9
 
7
10
  /**
@@ -90,6 +93,12 @@ function toNativeTtsOptions(options) {
90
93
  if (options.referenceText !== undefined) out.referenceText = options.referenceText;
91
94
  if (options.numSteps !== undefined) out.numSteps = options.numSteps;
92
95
  if (options.extra != null && Object.keys(options.extra).length > 0) out.extra = options.extra;
96
+ if (options.subtitles?.mode !== undefined) {
97
+ out.subtitleMode = options.subtitles.mode;
98
+ }
99
+ if (options.subtitles?.granularity !== undefined) {
100
+ out.subtitleGranularity = options.subtitles.granularity;
101
+ }
93
102
  return out;
94
103
  }
95
104
 
@@ -168,11 +177,67 @@ export async function createTTS(options) {
168
177
  },
169
178
  async generateSpeech(text, opts) {
170
179
  guard();
171
- return SherpaOnnx.generateTts(instanceId, text, toNativeTtsOptions(opts));
180
+ const optionsWithSubtitlesOff = {
181
+ ...(opts ?? {}),
182
+ subtitles: {
183
+ ...(opts?.subtitles ?? {}),
184
+ mode: 'off'
185
+ }
186
+ };
187
+ return SherpaOnnx.generateTts(instanceId, text, toNativeTtsOptions(optionsWithSubtitlesOff));
172
188
  },
173
189
  async generateSpeechWithTimestamps(text, opts) {
174
190
  guard();
175
- return SherpaOnnx.generateTtsWithTimestamps(instanceId, text, toNativeTtsOptions(opts));
191
+ const subtitleMode = opts?.subtitles?.mode ?? 'fast';
192
+ const subtitleGranularity = opts?.subtitles?.granularity ?? 'sentence';
193
+ assertSubtitleGranularityForMode(subtitleMode, subtitleGranularity);
194
+ if (subtitleMode !== 'accurate') {
195
+ const optionsWithDefaultSubtitleMode = {
196
+ ...(opts ?? {}),
197
+ subtitles: {
198
+ ...(opts?.subtitles ?? {}),
199
+ mode: subtitleMode
200
+ }
201
+ };
202
+ const native = await SherpaOnnx.generateTtsWithTimestamps(instanceId, text, toNativeTtsOptions(optionsWithDefaultSubtitleMode));
203
+ const timingMode = native.timingMode === 'off' || native.timingMode === 'estimated' || native.timingMode === 'aligned' ? native.timingMode : 'off';
204
+ return {
205
+ ...native,
206
+ timingMode
207
+ };
208
+ }
209
+ const alignmentModelPath = opts?.subtitles?.alignmentModelPath?.trim();
210
+ if (!alignmentModelPath) {
211
+ throw new Error('ALIGNMENT_MODEL_MISSING: Provide subtitles.alignmentModelPath for accurate mode.');
212
+ }
213
+ const optionsWithSubtitlesOff = {
214
+ ...(opts ?? {}),
215
+ subtitles: {
216
+ ...(opts?.subtitles ?? {}),
217
+ mode: 'off'
218
+ }
219
+ };
220
+ const generated = await SherpaOnnx.generateTts(instanceId, text, toNativeTtsOptions(optionsWithSubtitlesOff));
221
+ let tempAudioPath = null;
222
+ try {
223
+ tempAudioPath = await saveAlignmentAudioToTempWav(generated, instanceId);
224
+ const subtitleResult = await generateSubtitlesFromAudio(text, tempAudioPath, {
225
+ mode: 'accurate',
226
+ granularity: subtitleGranularity,
227
+ alignmentModelPath
228
+ });
229
+ return {
230
+ ...generated,
231
+ subtitles: subtitleResult.subtitles,
232
+ timingMode: subtitleResult.timingMode
233
+ };
234
+ } finally {
235
+ if (tempAudioPath) {
236
+ unlink(tempAudioPath).catch(() => {
237
+ // ignore cleanup errors
238
+ });
239
+ }
240
+ }
176
241
  },
177
242
  async updateParams(opts) {
178
243
  guard();
@@ -255,6 +320,7 @@ export function shareAudioFile(fileUri, mimeType = 'audio/wav') {
255
320
 
256
321
  // Streaming TTS (separate engine; use createStreamingTTS for chunk callbacks and PCM playback)
257
322
  export { createStreamingTTS } from "./streaming.js";
323
+ export { generateSubtitlesFromAudio } from "./subtitles.js";
258
324
 
259
325
  // Export types and runtime type list
260
326
 
@@ -1 +1 @@
1
- {"version":3,"names":["SherpaOnnx","resolveModelPath","ttsInstanceCounter","flattenTtsModelOptionsForNative","modelType","modelOptions","noiseScale","undefined","noiseScaleW","lengthScale","block","vits","matcha","kokoro","kitten","pocket","supertonic","out","n","detectTtsModel","modelPath","options","resolvedPath","raw","err","error","trim","success","length","detectedModels","lexiconLanguageCandidates","toNativeTtsOptions","sid","speed","silenceScale","referenceAudio","sr","sampleRate","__DEV__","Number","isFinite","console","warn","samples","referenceSampleRate","referenceText","numSteps","extra","Object","keys","createTTS","instanceId","provider","numThreads","debug","ruleFsts","ruleFars","maxNumSentences","flat","result","initializeTts","nativeError","detected","JSON","stringify","Error","firstDetected","effectiveModelType","type","destroyed","guard","engine","generateSpeech","text","opts","generateTts","generateSpeechWithTimestamps","generateTtsWithTimestamps","updateParams","effectiveModelTypeForUpdate","flatOpts","noiseArg","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","copyFileToContentUri","copyContentUriToCache","fileUri","copyTtsContentUriToCache","shareAudioFile","shareTtsAudio","createStreamingTTS","TTS_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["tts/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["unlink","SherpaOnnx","resolveModelPath","assertSubtitleGranularityForMode","generateSubtitlesFromAudio","saveAlignmentAudioToTempWav","ttsInstanceCounter","flattenTtsModelOptionsForNative","modelType","modelOptions","noiseScale","undefined","noiseScaleW","lengthScale","block","vits","matcha","kokoro","kitten","pocket","supertonic","out","n","detectTtsModel","modelPath","options","resolvedPath","raw","err","error","trim","success","length","detectedModels","lexiconLanguageCandidates","toNativeTtsOptions","sid","speed","silenceScale","referenceAudio","sr","sampleRate","__DEV__","Number","isFinite","console","warn","samples","referenceSampleRate","referenceText","numSteps","extra","Object","keys","subtitles","mode","subtitleMode","granularity","subtitleGranularity","createTTS","instanceId","provider","numThreads","debug","ruleFsts","ruleFars","maxNumSentences","flat","result","initializeTts","nativeError","detected","JSON","stringify","Error","firstDetected","effectiveModelType","type","destroyed","guard","engine","generateSpeech","text","opts","optionsWithSubtitlesOff","generateTts","generateSpeechWithTimestamps","optionsWithDefaultSubtitleMode","native","generateTtsWithTimestamps","timingMode","alignmentModelPath","generated","tempAudioPath","subtitleResult","catch","updateParams","effectiveModelTypeForUpdate","flatOpts","noiseArg","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","copyFileToContentUri","copyContentUriToCache","fileUri","copyTtsContentUriToCache","shareAudioFile","shareTtsAudio","createStreamingTTS","TTS_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["tts/index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,400 @@
1
+ "use strict";
2
+
3
+ import { unlink } from '@dr.pogodin/react-native-fs';
4
+ import SherpaOnnx from "../NativeSherpaOnnx.js";
5
+ import { WAV2VEC2_VOCAB } from "../alignment/vocab.js";
6
+ import { decodeAudioFileToFloatSamples } from "../audio/index.js";
7
+ import { saveAlignmentAudioToTempWav } from "./tempAudio.js";
8
+ export function assertSubtitleGranularityForMode(mode, granularity) {
9
+ if (granularity === 'character' && mode !== 'accurate') {
10
+ throw new Error("Character granularity is only supported when subtitles.mode is 'accurate'.");
11
+ }
12
+ }
13
+ const SENTENCE_TERMINATORS = new Set(['.', '!', '?', ';', '。', '!', '?', ';']);
14
+ const TRAILING_CLOSERS = new Set(['"', "'", ')', ']', '}', '>', '”', '’', '」', '』', '】', ')']);
15
+ const COMMON_ABBREVIATIONS = new Set(['mr', 'mrs', 'ms', 'dr', 'prof', 'sr', 'jr', 'st', 'vs', 'etc', 'e.g', 'i.e']);
16
+ const WAV2VEC2_VOCAB_JSON = JSON.stringify(WAV2VEC2_VOCAB);
17
+ function isWhitespaceChar(char) {
18
+ return /\s/u.test(char);
19
+ }
20
+ function isSentenceTerminator(char) {
21
+ return SENTENCE_TERMINATORS.has(char);
22
+ }
23
+ function isTrailingCloser(char) {
24
+ return TRAILING_CLOSERS.has(char);
25
+ }
26
+ function extractTokenBeforePeriod(text, periodIndex) {
27
+ let i = periodIndex - 1;
28
+ while (i >= 0 && isWhitespaceChar(text[i] ?? '')) {
29
+ i -= 1;
30
+ }
31
+ const end = i;
32
+ while (i >= 0) {
33
+ const char = text[i] ?? '';
34
+ if (/\p{L}|\./u.test(char)) {
35
+ i -= 1;
36
+ continue;
37
+ }
38
+ break;
39
+ }
40
+ if (end < i + 1) {
41
+ return '';
42
+ }
43
+ return text.slice(i + 1, end + 1).replace(/\.+$/u, '');
44
+ }
45
+ function shouldSplitOnPeriod(text, periodIndex) {
46
+ const prev = text[periodIndex - 1] ?? '';
47
+ const next = text[periodIndex + 1] ?? '';
48
+
49
+ // Do not split decimal numbers like 3.14.
50
+ if (/\d/u.test(prev) && /\d/u.test(next)) {
51
+ return false;
52
+ }
53
+ const tokenRaw = extractTokenBeforePeriod(text, periodIndex);
54
+ const token = tokenRaw.toLowerCase();
55
+ if (COMMON_ABBREVIATIONS.has(token)) {
56
+ return false;
57
+ }
58
+
59
+ // Likely initial, e.g. "A. Smith" (check original case; token is lowercased for abbreviations).
60
+ if (tokenRaw.length === 1 && /\p{Lu}/u.test(tokenRaw)) {
61
+ return false;
62
+ }
63
+ return true;
64
+ }
65
+ function sentenceBoundaryEnd(text, index) {
66
+ let end = index + 1;
67
+ while (end < text.length && isSentenceTerminator(text[end] ?? '')) {
68
+ end += 1;
69
+ }
70
+ while (end < text.length && isTrailingCloser(text[end] ?? '')) {
71
+ end += 1;
72
+ }
73
+ return end;
74
+ }
75
+ function sanitizeSegments(segments) {
76
+ return segments.map(segment => segment.trim()).filter(segment => segment.length > 0);
77
+ }
78
+ function distributeSamplesByTextWeight(totalSamples, segments) {
79
+ if (segments.length === 0) {
80
+ return [];
81
+ }
82
+ const safeTotal = Math.max(0, Math.floor(totalSamples));
83
+ if (safeTotal === 0) {
84
+ return new Array(segments.length).fill(0);
85
+ }
86
+ const weights = segments.map(segment => Math.max(1, Array.from(segment).length));
87
+ const weightSum = weights.reduce((sum, value) => sum + value, 0);
88
+ if (weightSum <= 0) {
89
+ return new Array(segments.length).fill(0);
90
+ }
91
+ const base = weights.map(weight => Math.floor(safeTotal * weight / weightSum));
92
+ let assigned = base.reduce((sum, value) => sum + value, 0);
93
+ let remaining = safeTotal - assigned;
94
+ if (remaining > 0) {
95
+ const fractionalOrder = weights.map((weight, index) => {
96
+ const exact = safeTotal * weight / weightSum;
97
+ return {
98
+ index,
99
+ fraction: exact - Math.floor(exact)
100
+ };
101
+ }).sort((a, b) => b.fraction - a.fraction);
102
+ let ptr = 0;
103
+ while (remaining > 0 && fractionalOrder.length > 0) {
104
+ const target = fractionalOrder[ptr % fractionalOrder.length];
105
+ if (target == null) {
106
+ break;
107
+ }
108
+ base[target.index] = (base[target.index] ?? 0) + 1;
109
+ assigned += 1;
110
+ remaining = safeTotal - assigned;
111
+ ptr += 1;
112
+ }
113
+ }
114
+ return base;
115
+ }
116
+ function alignChunkCountsToSegments(segments, chunkSampleCounts) {
117
+ if (segments.length === 0) {
118
+ return [];
119
+ }
120
+ const counts = chunkSampleCounts.map(value => Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0);
121
+ if (counts.length === segments.length) {
122
+ return counts;
123
+ }
124
+ if (counts.length > segments.length) {
125
+ const merged = counts.slice(0, segments.length);
126
+ const extra = counts.slice(segments.length).reduce((sum, value) => sum + value, 0);
127
+ const lastIndex = merged.length - 1;
128
+ if (lastIndex >= 0) {
129
+ merged[lastIndex] = (merged[lastIndex] ?? 0) + extra;
130
+ }
131
+ return merged;
132
+ }
133
+ const total = counts.reduce((sum, value) => sum + value, 0);
134
+ return distributeSamplesByTextWeight(total, segments);
135
+ }
136
+ function distributeItemCounts(total, weights) {
137
+ if (weights.length === 0) {
138
+ return [];
139
+ }
140
+ const safeTotal = Math.max(0, Math.floor(total));
141
+ if (safeTotal === 0) {
142
+ return new Array(weights.length).fill(0);
143
+ }
144
+ const safeWeights = weights.map(weight => Math.max(1, Math.floor(weight)));
145
+ const weightSum = safeWeights.reduce((sum, value) => sum + value, 0);
146
+ if (weightSum <= 0) {
147
+ return new Array(weights.length).fill(0);
148
+ }
149
+ const base = safeWeights.map(weight => Math.floor(safeTotal * weight / weightSum));
150
+ let assigned = base.reduce((sum, value) => sum + value, 0);
151
+ let remaining = safeTotal - assigned;
152
+ let index = 0;
153
+ while (remaining > 0 && base.length > 0) {
154
+ const slot = index % base.length;
155
+ base[slot] = (base[slot] ?? 0) + 1;
156
+ assigned += 1;
157
+ remaining = safeTotal - assigned;
158
+ index += 1;
159
+ }
160
+ return base;
161
+ }
162
+ function normalizeAlignmentItems(items) {
163
+ return items.map(item => ({
164
+ text: item.text,
165
+ start: Number.isFinite(item.start) ? Math.max(0, item.start) : 0,
166
+ end: Number.isFinite(item.end) ? Math.max(0, item.end) : 0
167
+ })).map(item => ({
168
+ ...item,
169
+ end: item.end < item.start ? item.start : item.end
170
+ })).filter(item => item.text.trim().length > 0);
171
+ }
172
+ function buildSentenceSubtitlesFromAlignedWords(text, alignedWords) {
173
+ const sentences = splitTextIntoSentences(text);
174
+ if (sentences.length === 0 || alignedWords.length === 0) {
175
+ return [];
176
+ }
177
+ const sentenceWeights = sentences.map(sentence => Math.max(1, splitTextIntoWords(sentence).length));
178
+ const sentenceWordCounts = distributeItemCounts(alignedWords.length, sentenceWeights);
179
+ const subtitles = [];
180
+ let wordCursor = 0;
181
+ let fallbackTime = alignedWords[0]?.start ?? 0;
182
+ for (let i = 0; i < sentences.length; i += 1) {
183
+ const sentence = sentences[i] ?? '';
184
+ const count = Math.max(0, sentenceWordCounts[i] ?? 0);
185
+ const chunk = alignedWords.slice(wordCursor, wordCursor + count);
186
+ wordCursor += count;
187
+ if (chunk.length === 0) {
188
+ subtitles.push({
189
+ text: sentence,
190
+ start: fallbackTime,
191
+ end: fallbackTime
192
+ });
193
+ continue;
194
+ }
195
+ const start = chunk[0]?.start ?? fallbackTime;
196
+ const end = chunk[chunk.length - 1]?.end ?? start;
197
+ fallbackTime = end;
198
+ subtitles.push({
199
+ text: sentence,
200
+ start,
201
+ end
202
+ });
203
+ }
204
+ const lastAlignedEnd = alignedWords[alignedWords.length - 1]?.end;
205
+ if (lastAlignedEnd !== undefined && subtitles.length > 0) {
206
+ const lastIndex = subtitles.length - 1;
207
+ const last = subtitles[lastIndex];
208
+ if (last != null) {
209
+ subtitles[lastIndex] = {
210
+ ...last,
211
+ end: Math.max(last.end, lastAlignedEnd)
212
+ };
213
+ }
214
+ }
215
+ return subtitles;
216
+ }
217
+ function isCjkChar(char) {
218
+ return /\p{Script=Han}|\p{Script=Hiragana}|\p{Script=Katakana}|\p{Script=Hangul}/u.test(char);
219
+ }
220
+ function isWordDelimiter(char) {
221
+ return /[\s.,!?;:()[\]{}"'`~<>/\\|@#$%^&*+=…,。!?;:、]/u.test(char);
222
+ }
223
+ export function splitTextIntoSentences(text) {
224
+ const normalized = text.trim();
225
+ if (normalized.length === 0) {
226
+ return [];
227
+ }
228
+ const sentences = [];
229
+ let start = 0;
230
+ let i = 0;
231
+ while (i < normalized.length) {
232
+ const current = normalized[i] ?? '';
233
+ if (!isSentenceTerminator(current)) {
234
+ i += 1;
235
+ continue;
236
+ }
237
+ if (current === '.' && !shouldSplitOnPeriod(normalized, i)) {
238
+ i += 1;
239
+ continue;
240
+ }
241
+ const end = sentenceBoundaryEnd(normalized, i);
242
+ const next = normalized[end];
243
+ if (next !== undefined && !isWhitespaceChar(next)) {
244
+ i += 1;
245
+ continue;
246
+ }
247
+ const sentence = normalized.slice(start, end).trim();
248
+ if (sentence.length > 0) {
249
+ sentences.push(sentence);
250
+ }
251
+ start = end;
252
+ while (start < normalized.length && isWhitespaceChar(normalized[start] ?? '')) {
253
+ start += 1;
254
+ }
255
+ i = start;
256
+ }
257
+ const tail = normalized.slice(start).trim();
258
+ if (tail.length > 0) {
259
+ sentences.push(tail);
260
+ }
261
+ return sentences.length > 0 ? sentences : [normalized];
262
+ }
263
+ export function splitTextIntoWords(text) {
264
+ const normalized = text.trim();
265
+ if (normalized.length === 0) {
266
+ return [];
267
+ }
268
+ const words = [];
269
+ let current = '';
270
+ const flushCurrent = () => {
271
+ const token = current.trim();
272
+ if (token.length > 0) {
273
+ words.push(token);
274
+ }
275
+ current = '';
276
+ };
277
+ for (const char of normalized) {
278
+ if (isWhitespaceChar(char)) {
279
+ flushCurrent();
280
+ continue;
281
+ }
282
+ if (isCjkChar(char)) {
283
+ flushCurrent();
284
+ words.push(char);
285
+ continue;
286
+ }
287
+ if (isWordDelimiter(char)) {
288
+ flushCurrent();
289
+ continue;
290
+ }
291
+ current += char;
292
+ }
293
+ flushCurrent();
294
+ return words.length > 0 ? words : [normalized];
295
+ }
296
+ export function buildSubtitlesFromChunks(segments, chunkSampleCounts, sampleRate) {
297
+ if (!Number.isFinite(sampleRate) || sampleRate <= 0) {
298
+ return [];
299
+ }
300
+ const cleanedSegments = sanitizeSegments(segments);
301
+ if (cleanedSegments.length === 0) {
302
+ return [];
303
+ }
304
+ const alignedCounts = alignChunkCountsToSegments(cleanedSegments, chunkSampleCounts);
305
+ const subtitles = [];
306
+ let offsetSamples = 0;
307
+ for (let i = 0; i < cleanedSegments.length; i += 1) {
308
+ const samples = Math.max(0, alignedCounts[i] ?? 0);
309
+ if (samples === 0 && offsetSamples === 0) {
310
+ continue;
311
+ }
312
+ const start = offsetSamples / sampleRate;
313
+ offsetSamples += samples;
314
+ const end = offsetSamples / sampleRate;
315
+ subtitles.push({
316
+ text: cleanedSegments[i] ?? '',
317
+ start,
318
+ end
319
+ });
320
+ }
321
+ return subtitles;
322
+ }
323
+
324
+ /**
325
+ * Generate subtitle timelines from an existing transcript plus audio.
326
+ *
327
+ * This helper supports two modes:
328
+ * - `mode: 'fast'`: single-stage estimation from transcript chunks + audio duration.
329
+ * - `mode: 'accurate'`: two-stage pipeline: external STT transcript + wav2vec2 CTC forced alignment.
330
+ *
331
+ * For accurate mode, an alignment model from `ModelCategory.Alignment` must be available.
332
+ * You can pre-validate a model path via `detectAlignmentModel` from `react-native-sherpa-onnx/alignment`
333
+ * before calling this function.
334
+ *
335
+ * Related exports:
336
+ * - Alignment detection: `detectAlignmentModel`
337
+ */
338
+ export async function generateSubtitlesFromAudio(text, audioPathOrSamples, options) {
339
+ const mode = options.mode;
340
+ const granularity = options.granularity ?? 'sentence';
341
+ assertSubtitleGranularityForMode(mode, granularity);
342
+ if (mode === 'accurate') {
343
+ const resolvedModelPath = options.alignmentModelPath?.trim();
344
+ if (!resolvedModelPath) {
345
+ throw new Error('ALIGNMENT_MODEL_MISSING: Provide options.alignmentModelPath for accurate subtitles.');
346
+ }
347
+ let audioPath = '';
348
+ let shouldCleanup = false;
349
+ if (typeof audioPathOrSamples === 'string') {
350
+ audioPath = audioPathOrSamples;
351
+ } else {
352
+ audioPath = await saveAlignmentAudioToTempWav(audioPathOrSamples);
353
+ shouldCleanup = true;
354
+ }
355
+ try {
356
+ const aligned = await SherpaOnnx.runCTCForcedAlignment(resolvedModelPath, audioPath, text, WAV2VEC2_VOCAB_JSON);
357
+ const wordItems = normalizeAlignmentItems(aligned.words ?? []);
358
+ const charItems = normalizeAlignmentItems(aligned.chars ?? []);
359
+ return {
360
+ subtitles: granularity === 'character' ? charItems : granularity === 'word' ? wordItems : buildSentenceSubtitlesFromAlignedWords(text, wordItems),
361
+ timingMode: 'aligned'
362
+ };
363
+ } finally {
364
+ if (shouldCleanup) {
365
+ unlink(audioPath).catch(() => {
366
+ // ignore cleanup errors
367
+ });
368
+ }
369
+ }
370
+ }
371
+ const segments = granularity === 'word' ? splitTextIntoWords(text) : splitTextIntoSentences(text);
372
+ if (segments.length === 0) {
373
+ return {
374
+ subtitles: [],
375
+ timingMode: 'estimated'
376
+ };
377
+ }
378
+ let totalSamples = 0;
379
+ let sampleRate = 0;
380
+ if (typeof audioPathOrSamples === 'string') {
381
+ const decoded = await decodeAudioFileToFloatSamples(audioPathOrSamples);
382
+ totalSamples = decoded.samples.length;
383
+ sampleRate = decoded.sampleRate;
384
+ } else {
385
+ totalSamples = audioPathOrSamples.samples.length;
386
+ sampleRate = audioPathOrSamples.sampleRate;
387
+ }
388
+ if (!Number.isFinite(sampleRate) || sampleRate <= 0 || totalSamples <= 0) {
389
+ return {
390
+ subtitles: [],
391
+ timingMode: 'estimated'
392
+ };
393
+ }
394
+ const chunkSampleCounts = distributeSamplesByTextWeight(totalSamples, segments);
395
+ return {
396
+ subtitles: buildSubtitlesFromChunks(segments, chunkSampleCounts, sampleRate),
397
+ timingMode: 'estimated'
398
+ };
399
+ }
400
+ //# sourceMappingURL=subtitles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["unlink","SherpaOnnx","WAV2VEC2_VOCAB","decodeAudioFileToFloatSamples","saveAlignmentAudioToTempWav","assertSubtitleGranularityForMode","mode","granularity","Error","SENTENCE_TERMINATORS","Set","TRAILING_CLOSERS","COMMON_ABBREVIATIONS","WAV2VEC2_VOCAB_JSON","JSON","stringify","isWhitespaceChar","char","test","isSentenceTerminator","has","isTrailingCloser","extractTokenBeforePeriod","text","periodIndex","i","end","slice","replace","shouldSplitOnPeriod","prev","next","tokenRaw","token","toLowerCase","length","sentenceBoundaryEnd","index","sanitizeSegments","segments","map","segment","trim","filter","distributeSamplesByTextWeight","totalSamples","safeTotal","Math","max","floor","Array","fill","weights","from","weightSum","reduce","sum","value","base","weight","assigned","remaining","fractionalOrder","exact","fraction","sort","a","b","ptr","target","alignChunkCountsToSegments","chunkSampleCounts","counts","Number","isFinite","merged","extra","lastIndex","total","distributeItemCounts","safeWeights","slot","normalizeAlignmentItems","items","item","start","buildSentenceSubtitlesFromAlignedWords","alignedWords","sentences","splitTextIntoSentences","sentenceWeights","sentence","splitTextIntoWords","sentenceWordCounts","subtitles","wordCursor","fallbackTime","count","chunk","push","lastAlignedEnd","undefined","last","isCjkChar","isWordDelimiter","normalized","current","tail","words","flushCurrent","buildSubtitlesFromChunks","sampleRate","cleanedSegments","alignedCounts","offsetSamples","samples","generateSubtitlesFromAudio","audioPathOrSamples","options","resolvedModelPath","alignmentModelPath","audioPath","shouldCleanup","aligned","runCTCForcedAlignment","wordItems","charItems","chars","timingMode","catch","decoded"],"sourceRoot":"../../../src","sources":["tts/subtitles.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ import { DocumentDirectoryPath, mkdir } from '@dr.pogodin/react-native-fs';
4
+ import SherpaOnnx from "../NativeSherpaOnnx.js";
5
+ function createTempAlignmentWavPath(instanceId) {
6
+ const nonce = `${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
7
+ const prefix = instanceId?.trim() ? `${instanceId}-` : '';
8
+ return `${DocumentDirectoryPath}/sherpa-onnx/cache/${prefix}alignment-${nonce}.wav`.replace(/\/+/g, '/');
9
+ }
10
+ export async function saveAlignmentAudioToTempWav(audio, instanceId) {
11
+ const cacheDir = `${DocumentDirectoryPath}/sherpa-onnx/cache`.replace(/\/+/g, '/');
12
+ await mkdir(cacheDir);
13
+ const tempPath = createTempAlignmentWavPath(instanceId);
14
+ await SherpaOnnx.saveTtsAudioToFile(audio.samples, audio.sampleRate, tempPath);
15
+ return tempPath;
16
+ }
17
+ //# sourceMappingURL=tempAudio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DocumentDirectoryPath","mkdir","SherpaOnnx","createTempAlignmentWavPath","instanceId","nonce","Date","now","Math","random","toString","slice","prefix","trim","replace","saveAlignmentAudioToTempWav","audio","cacheDir","tempPath","saveTtsAudioToFile","samples","sampleRate"],"sourceRoot":"../../../src","sources":["tts/tempAudio.ts"],"mappings":";;AAAA,SAASA,qBAAqB,EAAEC,KAAK,QAAQ,6BAA6B;AAC1E,OAAOC,UAAU,MAAM,wBAAqB;AAG5C,SAASC,0BAA0BA,CAACC,UAAmB,EAAU;EAC/D,MAAMC,KAAK,GAAG,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;EACxE,MAAMC,MAAM,GAAGR,UAAU,EAAES,IAAI,CAAC,CAAC,GAAG,GAAGT,UAAU,GAAG,GAAG,EAAE;EACzD,OAAO,GAAGJ,qBAAqB,sBAAsBY,MAAM,aAAaP,KAAK,MAAM,CAACS,OAAO,CACzF,MAAM,EACN,GACF,CAAC;AACH;AAEA,OAAO,eAAeC,2BAA2BA,CAC/CC,KAAqB,EACrBZ,UAAmB,EACF;EACjB,MAAMa,QAAQ,GAAG,GAAGjB,qBAAqB,oBAAoB,CAACc,OAAO,CACnE,MAAM,EACN,GACF,CAAC;EACD,MAAMb,KAAK,CAACgB,QAAQ,CAAC;EAErB,MAAMC,QAAQ,GAAGf,0BAA0B,CAACC,UAAU,CAAC;EACvD,MAAMF,UAAU,CAACiB,kBAAkB,CACjCH,KAAK,CAACI,OAAO,EACbJ,KAAK,CAACK,UAAU,EAChBH,QACF,CAAC;EACD,OAAOA,QAAQ;AACjB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TTS_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["tts/types.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA,OAAO,MAAMA,eAAwC,GAAG,CACtD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,MAAM,CACE;;AAEV;;AAEA;;AAUA;;AAQA;;AAMA;;AAMA;;AAKA;;AAKA;AACA;AACA;AACA;;AAUA;AACA;AACA;;AAuEA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;;AAuDA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;;AAkBA;AACA;AACA;;AAaA;AACA;AACA;;AAYA;AACA;AACA;;AASA;AACA;AACA;;AASA;AACA;AACA;AACA;;AAQA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;;AAqBA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["TTS_MODEL_TYPES"],"sourceRoot":"../../../src","sources":["tts/types.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA,OAAO,MAAMA,eAAwC,GAAG,CACtD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,MAAM,CACE;;AAEV;;AAEA;;AAUA;;AAQA;;AAMA;;AAMA;;AAKA;;AAKA;AACA;AACA;AACA;;AAUA;AACA;AACA;;AAuEA;AACA;AACA;AACA;;AAgDA;AACA;AACA;AACA;;AA4DA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;;AAkBA;AACA;AACA;;AAmDA;AACA;AACA;;AAYA;AACA;AACA;;AASA;AACA;AACA;;AASA;AACA;AACA;AACA;;AAQA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;;AAqBA;AACA;AACA","ignoreList":[]}