echogarden 1.4.4 → 1.5.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 (139) hide show
  1. package/data/schemas/options.json +267 -19
  2. package/dist/alignment/{TextAlignment.d.ts → SemanticTextAlignment.d.ts} +4 -2
  3. package/dist/alignment/SemanticTextAlignment.js +336 -0
  4. package/dist/alignment/SemanticTextAlignment.js.map +1 -0
  5. package/dist/alignment/SpeechAlignment.d.ts +2 -1
  6. package/dist/alignment/SpeechAlignment.js +105 -37
  7. package/dist/alignment/SpeechAlignment.js.map +1 -1
  8. package/dist/api/API.d.ts +7 -2
  9. package/dist/api/API.js +7 -2
  10. package/dist/api/API.js.map +1 -1
  11. package/dist/api/APIOptions.d.ts +4 -1
  12. package/dist/api/Alignment.d.ts +1 -1
  13. package/dist/api/Alignment.js +13 -5
  14. package/dist/api/Alignment.js.map +1 -1
  15. package/dist/api/LanguageDetectionCommon.d.ts +6 -0
  16. package/dist/api/LanguageDetectionCommon.js +2 -0
  17. package/dist/api/LanguageDetectionCommon.js.map +1 -0
  18. package/dist/api/Recognition.js.map +1 -1
  19. package/dist/api/{LanguageDetection.d.ts → SpeechLanguageDetection.d.ts} +1 -25
  20. package/dist/api/{LanguageDetection.js → SpeechLanguageDetection.js} +1 -68
  21. package/dist/api/SpeechLanguageDetection.js.map +1 -0
  22. package/dist/api/{Translation.js → SpeechTranslation.js} +3 -3
  23. package/dist/api/SpeechTranslation.js.map +1 -0
  24. package/dist/api/Synthesis.js +4 -4
  25. package/dist/api/TextLanguageDetection.d.ts +21 -0
  26. package/dist/api/TextLanguageDetection.js +67 -0
  27. package/dist/api/TextLanguageDetection.js.map +1 -0
  28. package/dist/api/TextTranslation.d.ts +5 -0
  29. package/dist/api/TextTranslation.js +4 -0
  30. package/dist/api/TextTranslation.js.map +1 -0
  31. package/dist/api/TimelineTranslationAlignment.d.ts +23 -0
  32. package/dist/api/TimelineTranslationAlignment.js +92 -0
  33. package/dist/api/TimelineTranslationAlignment.js.map +1 -0
  34. package/dist/api/TranscriptAndTranslationAlignment.d.ts +35 -0
  35. package/dist/api/TranscriptAndTranslationAlignment.js +78 -0
  36. package/dist/api/TranscriptAndTranslationAlignment.js.map +1 -0
  37. package/dist/api/TranslationAlignment.d.ts +4 -3
  38. package/dist/api/TranslationAlignment.js +9 -8
  39. package/dist/api/TranslationAlignment.js.map +1 -1
  40. package/dist/api/VoiceActivityDetection.js +16 -1
  41. package/dist/api/VoiceActivityDetection.js.map +1 -1
  42. package/dist/cli/CLI.d.ts +27 -7
  43. package/dist/cli/CLI.js +205 -34
  44. package/dist/cli/CLI.js.map +1 -1
  45. package/dist/codecs/FFMpegTranscoder.js +7 -0
  46. package/dist/codecs/FFMpegTranscoder.js.map +1 -1
  47. package/dist/dsp/FFT.d.ts +1 -1
  48. package/dist/dsp/FFT.js +6 -0
  49. package/dist/dsp/FFT.js.map +1 -1
  50. package/dist/dsp/KWeightingFilter.js +1 -1
  51. package/dist/dsp/KWeightingFilter.js.map +1 -1
  52. package/dist/dsp/MelSpectogram.d.ts +3 -2
  53. package/dist/dsp/MelSpectogram.js +14 -8
  54. package/dist/dsp/MelSpectogram.js.map +1 -1
  55. package/dist/math/VectorMath.d.ts +5 -5
  56. package/dist/math/VectorMath.js +4 -4
  57. package/dist/math/VectorMath.js.map +1 -1
  58. package/dist/recognition/WhisperCppSTT.d.ts +1 -1
  59. package/dist/recognition/WhisperCppSTT.js +2 -2
  60. package/dist/recognition/WhisperCppSTT.js.map +1 -1
  61. package/dist/recognition/WhisperSTT.js +9 -6
  62. package/dist/recognition/WhisperSTT.js.map +1 -1
  63. package/dist/server/Client.d.ts +3 -2
  64. package/dist/server/Client.js.map +1 -1
  65. package/dist/server/Worker.d.ts +3 -2
  66. package/dist/server/Worker.js +3 -2
  67. package/dist/server/Worker.js.map +1 -1
  68. package/dist/source-separation/MDXNetSourceSeparation.js +1 -1
  69. package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
  70. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts +13 -0
  71. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +68 -0
  72. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -0
  73. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +1 -1
  74. package/dist/speech-language-detection/SileroLanguageDetection.js +1 -1
  75. package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -1
  76. package/dist/tests/Test.js +0 -31
  77. package/dist/tests/Test.js.map +1 -1
  78. package/dist/text-language-detection/FastTextLanguageDetection.d.ts +1 -1
  79. package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -1
  80. package/dist/text-language-detection/TinyLDLanguageDetection.d.ts +1 -1
  81. package/dist/text-language-detection/TinyLDLanguageDetection.js.map +1 -1
  82. package/dist/text-translation/NLLBTextTranslation.js +1 -1
  83. package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
  84. package/dist/utilities/Locale.d.ts +1 -1
  85. package/dist/utilities/Locale.js +1 -1
  86. package/dist/utilities/OnnxUtilities.d.ts +1 -1
  87. package/dist/utilities/PackageManager.js +6 -4
  88. package/dist/utilities/PackageManager.js.map +1 -1
  89. package/dist/utilities/Timeline.d.ts +1 -0
  90. package/dist/utilities/Timeline.js +12 -0
  91. package/dist/utilities/Timeline.js.map +1 -1
  92. package/docs/API.md +81 -3
  93. package/docs/CLI.md +51 -1
  94. package/docs/Engines.md +24 -0
  95. package/docs/Options.md +33 -1
  96. package/package.json +8 -8
  97. package/src/alignment/SemanticTextAlignment.ts +467 -0
  98. package/src/alignment/SpeechAlignment.ts +179 -52
  99. package/src/api/API.ts +18 -2
  100. package/src/api/APIOptions.ts +14 -1
  101. package/src/api/Alignment.ts +31 -9
  102. package/src/api/LanguageDetectionCommon.ts +7 -0
  103. package/src/api/Recognition.ts +2 -0
  104. package/src/api/{LanguageDetection.ts → SpeechLanguageDetection.ts} +1 -119
  105. package/src/api/{Translation.ts → SpeechTranslation.ts} +2 -2
  106. package/src/api/Synthesis.ts +4 -4
  107. package/src/api/TextLanguageDetection.ts +116 -0
  108. package/src/api/TextTranslation.ts +9 -0
  109. package/src/api/TimelineTranslationAlignment.ts +162 -0
  110. package/src/api/TranscriptAndTranslationAlignment.ts +164 -0
  111. package/src/api/TranslationAlignment.ts +12 -10
  112. package/src/api/VoiceActivityDetection.ts +24 -3
  113. package/src/cli/CLI.ts +276 -34
  114. package/src/codecs/FFMpegTranscoder.ts +6 -0
  115. package/src/dsp/FFT.ts +8 -2
  116. package/src/dsp/KWeightingFilter.ts +1 -1
  117. package/src/dsp/MelSpectogram.ts +17 -8
  118. package/src/math/VectorMath.ts +9 -9
  119. package/src/recognition/WhisperCppSTT.ts +2 -2
  120. package/src/recognition/WhisperSTT.ts +10 -6
  121. package/src/server/Client.ts +3 -2
  122. package/src/server/Worker.ts +3 -2
  123. package/src/source-separation/MDXNetSourceSeparation.ts +1 -1
  124. package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +107 -0
  125. package/src/speech-language-detection/SileroLanguageDetection.ts +2 -1
  126. package/src/tests/Test.ts +1 -38
  127. package/src/text-language-detection/FastTextLanguageDetection.ts +1 -1
  128. package/src/text-language-detection/TinyLDLanguageDetection.ts +1 -1
  129. package/src/text-translation/NLLBTextTranslation.ts +1 -1
  130. package/src/utilities/Locale.ts +1 -1
  131. package/src/utilities/OnnxUtilities.ts +1 -1
  132. package/src/utilities/PackageManager.ts +7 -4
  133. package/src/utilities/Timeline.ts +14 -0
  134. package/dist/alignment/TextAlignment.js +0 -156
  135. package/dist/alignment/TextAlignment.js.map +0 -1
  136. package/dist/api/LanguageDetection.js.map +0 -1
  137. package/dist/api/Translation.js.map +0 -1
  138. package/src/alignment/TextAlignment.ts +0 -234
  139. /package/dist/api/{Translation.d.ts → SpeechTranslation.d.ts} +0 -0
@@ -0,0 +1,336 @@
1
+ import { Logger } from '../utilities/Logger.js';
2
+ import { loadPackage } from '../utilities/PackageManager.js';
3
+ import { alignDTWWindowed } from './DTWSequenceAlignmentWindowed.js';
4
+ import { cosineDistance } from '../math/VectorMath.js';
5
+ import { isPunctuation, isWord, splitToSentences, splitToWords } from '../nlp/Segmentation.js';
6
+ import { extractEntries } from '../utilities/Timeline.js';
7
+ export async function alignTimelineToTextSemantically(timeline, text, textLangCode) {
8
+ const logger = new Logger();
9
+ logger.start(`Prepare text for semantic alignment`);
10
+ const timelineSentenceEntries = extractEntries(timeline, entry => entry.type === 'sentence');
11
+ const timelineWordEntryGroups = [];
12
+ const timelineWordGroups = [];
13
+ for (const sentenceEntry of timelineSentenceEntries) {
14
+ const wordEntryGroup = sentenceEntry.timeline
15
+ .filter(wordEntry => isWord(wordEntry.text));
16
+ timelineWordEntryGroups.push(wordEntryGroup);
17
+ timelineWordGroups.push(wordEntryGroup.map(wordEntry => wordEntry.text));
18
+ }
19
+ const timelineWordEntriesFiltered = timelineWordEntryGroups.flat();
20
+ const textSentences = splitToSentences(text, textLangCode);
21
+ const textWordGroups = [];
22
+ for (const sentenceText of textSentences) {
23
+ let wordGroup = await splitToWords(sentenceText, textLangCode);
24
+ wordGroup = wordGroup.filter(word => isWord(word));
25
+ textWordGroups.push(wordGroup);
26
+ }
27
+ const textWords = textWordGroups.flat();
28
+ logger.end();
29
+ const wordMappingEntries = await alignWordsToWordsSemantically(timelineWordGroups, textWordGroups);
30
+ logger.start(`Build timeline for translation`);
31
+ const mappingGroups = new Map();
32
+ for (const wordMappingEntry of wordMappingEntries) {
33
+ const wordIndex1 = wordMappingEntry.wordIndex1;
34
+ const wordIndex2 = wordMappingEntry.wordIndex2;
35
+ let group = mappingGroups.get(wordIndex1);
36
+ if (!group) {
37
+ group = [];
38
+ mappingGroups.set(wordIndex1, group);
39
+ }
40
+ if (!group.includes(wordIndex2)) {
41
+ group.push(wordIndex2);
42
+ }
43
+ }
44
+ const timeSlicesLookup = new Map();
45
+ for (const [wordIndex1, mappedWordIndexes] of mappingGroups) {
46
+ if (mappedWordIndexes.length === 0) {
47
+ continue;
48
+ }
49
+ const startTime = timelineWordEntriesFiltered[wordIndex1].startTime;
50
+ const endTime = timelineWordEntriesFiltered[wordIndex1].endTime;
51
+ const splitCount = mappedWordIndexes.length;
52
+ const sliceDuration = (endTime - startTime) / splitCount;
53
+ let timeOffset = 0;
54
+ for (let i = 0; i < splitCount; i++) {
55
+ const timeSlice = {
56
+ startTime: startTime + timeOffset,
57
+ endTime: startTime + timeOffset + sliceDuration
58
+ };
59
+ const wordIndex2 = mappedWordIndexes[i];
60
+ let timeSlicesForTargetWord = timeSlicesLookup.get(wordIndex2);
61
+ if (!timeSlicesForTargetWord) {
62
+ timeSlicesForTargetWord = [];
63
+ timeSlicesLookup.set(wordIndex2, timeSlicesForTargetWord);
64
+ }
65
+ timeSlicesForTargetWord.push(timeSlice);
66
+ timeOffset += sliceDuration;
67
+ }
68
+ }
69
+ const resultTimeline = [];
70
+ for (const [key, value] of timeSlicesLookup) {
71
+ resultTimeline.push({
72
+ type: 'word',
73
+ text: textWords[key],
74
+ startTime: value[0].startTime,
75
+ endTime: value[value.length - 1].endTime
76
+ });
77
+ }
78
+ logger.end();
79
+ return resultTimeline;
80
+ }
81
+ export async function alignWordsToWordsSemantically(wordsGroups1, wordsGroups2, windowTokenCount = 1000 * 1000) {
82
+ const logger = new Logger();
83
+ // Load embedding model
84
+ const modelPath = await loadPackage(`xenova-multilingual-e5-small-fp16`);
85
+ const embeddingModel = new E5TextEmbedding(modelPath);
86
+ logger.start(`Initialize E5 embedding model`);
87
+ await embeddingModel.initializeIfNeeded();
88
+ async function extractEmbeddingsFromWordGroups(wordGroups) {
89
+ const logger = new Logger();
90
+ const maxTokensPerFragment = 512;
91
+ const { Tensor } = await import('@echogarden/transformers-nodejs-lite');
92
+ const words = [];
93
+ const embeddings = [];
94
+ const tokenToWordIndexMapping = [];
95
+ for (const wordGroup of wordGroups) {
96
+ const { joinedText: joinedTextForGroup, offsets: offsetsForGroup } = joinAndGetOffsets(wordGroup);
97
+ logger.start(`Tokenize text`);
98
+ const inputsForGroup = await embeddingModel.tokenizeToModelInputs(joinedTextForGroup);
99
+ logger.start(`Infer embeddings for text`);
100
+ const allTokenIds = inputsForGroup['input_ids'].data;
101
+ const allAttentionMask = inputsForGroup['attention_mask'].data;
102
+ let embeddingsForGroup = [];
103
+ for (let tokenStart = 0; tokenStart < allTokenIds.length; tokenStart += maxTokensPerFragment) {
104
+ const tokenEnd = Math.min(tokenStart + maxTokensPerFragment, allTokenIds.length);
105
+ const fragmentTokenCount = tokenEnd - tokenStart;
106
+ const fragmentInputIdsTensor = new Tensor('int64', allTokenIds.slice(tokenStart, tokenEnd), [1, fragmentTokenCount]);
107
+ const fragmentAttentionMaskTensor = new Tensor('int64', allAttentionMask.slice(tokenStart, tokenEnd), [1, fragmentTokenCount]);
108
+ const inputsForFragment = { input_ids: fragmentInputIdsTensor, attention_mask: fragmentAttentionMaskTensor };
109
+ const embeddingsForFragment = await embeddingModel.inferTokenEmbeddings(inputsForFragment);
110
+ embeddingsForGroup.push(...embeddingsForFragment);
111
+ }
112
+ logger.start(`Compute token to word mapping for text`);
113
+ const filteredEmbeddingsForGroup = embeddingsForGroup.filter((embedding) => embedding.text !== '▁' && embedding.text !== '<s>' && embedding.text !== '</s>');
114
+ const tokenToWordIndexMappingForGroup = mapTokenEmbeddingsToWordIndexes(filteredEmbeddingsForGroup, joinedTextForGroup, offsetsForGroup);
115
+ const tokenToWordIndexMappingForGroupWithOffset = tokenToWordIndexMappingForGroup.map(value => words.length + value);
116
+ embeddings.push(...filteredEmbeddingsForGroup);
117
+ tokenToWordIndexMapping.push(...tokenToWordIndexMappingForGroupWithOffset);
118
+ words.push(...wordGroup);
119
+ }
120
+ return { words, embeddings, tokenToWordIndexMapping };
121
+ }
122
+ logger.start(`Extract embeddings from source 1`);
123
+ const { words: words1, embeddings: embeddings1, tokenToWordIndexMapping: tokenToWordIndexMapping1 } = await extractEmbeddingsFromWordGroups(wordsGroups1);
124
+ logger.start(`Extract embeddings from source 2`);
125
+ const { words: words2, embeddings: embeddings2, tokenToWordIndexMapping: tokenToWordIndexMapping2 } = await extractEmbeddingsFromWordGroups(wordsGroups2);
126
+ // Align
127
+ function costFunction(a, b) {
128
+ const aIsPunctuation = isPunctuation(a.text);
129
+ const bIsPunctuation = isPunctuation(b.text);
130
+ if (aIsPunctuation === bIsPunctuation) {
131
+ return cosineDistance(a.embeddingVector, b.embeddingVector);
132
+ }
133
+ else {
134
+ return 1.0;
135
+ }
136
+ }
137
+ logger.start(`Align token embedding vectors using DTW`);
138
+ const { path } = alignDTWWindowed(embeddings1, embeddings2, costFunction, windowTokenCount);
139
+ // Use alignment path to words to words
140
+ logger.start(`Map tokens to words`);
141
+ const wordMapping = [];
142
+ for (let i = 0; i < path.length; i++) {
143
+ const pathEntry = path[i];
144
+ const sourceTokenIndex = pathEntry.source;
145
+ const destTokenIndex = pathEntry.dest;
146
+ const mappedWordIndex1 = tokenToWordIndexMapping1[sourceTokenIndex];
147
+ const mappedWordIndex2 = tokenToWordIndexMapping2[destTokenIndex];
148
+ wordMapping.push({
149
+ wordIndex1: mappedWordIndex1,
150
+ word1: words1[mappedWordIndex1],
151
+ wordIndex2: mappedWordIndex2,
152
+ word2: words2[mappedWordIndex2],
153
+ });
154
+ }
155
+ logger.end();
156
+ return wordMapping;
157
+ }
158
+ function mapTokenEmbeddingsToWordIndexes(embeddings, text, textWordOffsets) {
159
+ const tokenToWordIndex = [];
160
+ let currentTextOffset = 0;
161
+ for (let i = 0; i < embeddings.length; i++) {
162
+ const embedding = embeddings[i];
163
+ let tokenText = embedding.text;
164
+ if (tokenText === '<s>' || tokenText === '</s>') {
165
+ tokenToWordIndex.push(-1);
166
+ continue;
167
+ }
168
+ if (tokenText.startsWith('▁')) {
169
+ tokenText = tokenText.substring(1);
170
+ }
171
+ const matchPosition = text.indexOf(tokenText, currentTextOffset);
172
+ if (matchPosition === -1) {
173
+ throw new Error(`Token '${tokenText}' not found in text`);
174
+ }
175
+ currentTextOffset = matchPosition + tokenText.length;
176
+ let tokenMatchingWordIndex = textWordOffsets.findIndex((index) => index > matchPosition);
177
+ if (tokenMatchingWordIndex === -1) {
178
+ throw new Error(`Token '${tokenText}' not found in text`);
179
+ }
180
+ else {
181
+ tokenMatchingWordIndex = Math.max(tokenMatchingWordIndex - 1, 0);
182
+ }
183
+ tokenToWordIndex.push(tokenMatchingWordIndex);
184
+ }
185
+ return tokenToWordIndex;
186
+ }
187
+ function joinAndGetOffsets(words) {
188
+ let joinedText = '';
189
+ const offsets = [];
190
+ let offset = 0;
191
+ for (const word of words) {
192
+ const extendedWord = `${word} `;
193
+ joinedText += extendedWord;
194
+ offsets.push(offset);
195
+ offset += extendedWord.length;
196
+ }
197
+ offsets.push(joinedText.length);
198
+ return { joinedText, offsets };
199
+ }
200
+ export class E5TextEmbedding {
201
+ modelPath;
202
+ tokenizer;
203
+ model;
204
+ constructor(modelPath) {
205
+ this.modelPath = modelPath;
206
+ }
207
+ async tokenizeToModelInputs(text) {
208
+ await this.initializeIfNeeded();
209
+ const inputs = await this.tokenizer(text);
210
+ return inputs;
211
+ }
212
+ async inferTokenEmbeddings(inputs) {
213
+ await this.initializeIfNeeded();
214
+ const tokensText = this.tokenizer.model.convert_ids_to_tokens(Array.from(inputs.input_ids.data));
215
+ const result = await this.model(inputs);
216
+ const lastHiddenState = result.last_hidden_state;
217
+ const tokenCount = lastHiddenState.dims[1];
218
+ const embeddingSize = lastHiddenState.dims[2];
219
+ const tokenEmbeddings = [];
220
+ for (let i = 0; i < tokenCount; i++) {
221
+ const tokenEmbeddingVector = lastHiddenState.data.slice(i * embeddingSize, (i + 1) * embeddingSize);
222
+ const tokenId = Number(inputs.input_ids.data[i]);
223
+ const tokenText = tokensText[i];
224
+ tokenEmbeddings.push({
225
+ id: tokenId,
226
+ text: tokenText,
227
+ embeddingVector: tokenEmbeddingVector
228
+ });
229
+ }
230
+ return tokenEmbeddings;
231
+ }
232
+ async initializeIfNeeded() {
233
+ if (this.tokenizer && this.model) {
234
+ return;
235
+ }
236
+ const { AutoTokenizer, AutoModel } = await import('@echogarden/transformers-nodejs-lite');
237
+ this.tokenizer = await AutoTokenizer.from_pretrained(this.modelPath);
238
+ this.model = await AutoModel.from_pretrained(this.modelPath);
239
+ }
240
+ }
241
+ export const e5SupportedLanguages = [
242
+ 'af', // Afrikaans
243
+ 'am', // Amharic
244
+ 'ar', // Arabic
245
+ 'as', // Assamese
246
+ 'az', // Azerbaijani
247
+ 'be', // Belarusian
248
+ 'bg', // Bulgarian
249
+ 'bn', // Bengali
250
+ 'br', // Breton
251
+ 'bs', // Bosnian
252
+ 'ca', // Catalan
253
+ 'cs', // Czech
254
+ 'cy', // Welsh
255
+ 'da', // Danish
256
+ 'de', // German
257
+ 'el', // Greek
258
+ 'en', // English
259
+ 'eo', // Esperanto
260
+ 'es', // Spanish
261
+ 'et', // Estonian
262
+ 'eu', // Basque
263
+ 'fa', // Persian
264
+ 'fi', // Finnish
265
+ 'fr', // French
266
+ 'fy', // Western Frisian
267
+ 'ga', // Irish
268
+ 'gd', // Scottish Gaelic
269
+ 'gl', // Galician
270
+ 'gu', // Gujarati
271
+ 'ha', // Hausa
272
+ 'he', // Hebrew
273
+ 'hi', // Hindi
274
+ 'hr', // Croatian
275
+ 'hu', // Hungarian
276
+ 'hy', // Armenian
277
+ 'id', // Indonesian
278
+ 'is', // Icelandic
279
+ 'it', // Italian
280
+ 'ja', // Japanese
281
+ 'jv', // Javanese
282
+ 'ka', // Georgian
283
+ 'kk', // Kazakh
284
+ 'km', // Khmer
285
+ 'kn', // Kannada
286
+ 'ko', // Korean
287
+ 'ku', // Kurdish
288
+ 'ky', // Kyrgyz
289
+ 'la', // Latin
290
+ 'lo', // Lao
291
+ 'lt', // Lithuanian
292
+ 'lv', // Latvian
293
+ 'mg', // Malagasy
294
+ 'mk', // Macedonian
295
+ 'ml', // Malayalam
296
+ 'mn', // Mongolian
297
+ 'mr', // Marathi
298
+ 'ms', // Malay
299
+ 'my', // Burmese
300
+ 'ne', // Nepali
301
+ 'nl', // Dutch
302
+ 'no', // Norwegian
303
+ 'om', // Oromo
304
+ 'or', // Oriya
305
+ 'pa', // Panjabi
306
+ 'pl', // Polish
307
+ 'ps', // Pashto
308
+ 'pt', // Portuguese
309
+ 'ro', // Romanian
310
+ 'ru', // Russian
311
+ 'sa', // Sanskrit
312
+ 'sd', // Sindhi
313
+ 'si', // Sinhala
314
+ 'sk', // Slovak
315
+ 'sl', // Slovenian
316
+ 'so', // Somali
317
+ 'sq', // Albanian
318
+ 'sr', // Serbian
319
+ 'su', // Sundanese
320
+ 'sv', // Swedish
321
+ 'sw', // Swahili
322
+ 'ta', // Tamil
323
+ 'te', // Telugu
324
+ 'th', // Thai
325
+ 'tl', // Tagalog
326
+ 'tr', // Turkish
327
+ 'ug', // Uyghur
328
+ 'uk', // Ukrainian
329
+ 'ur', // Urdu
330
+ 'uz', // Uzbek
331
+ 'vi', // Vietnamese
332
+ 'xh', // Xhosa
333
+ 'yi', // Yiddish
334
+ 'zh', // Chinese
335
+ ];
336
+ //# sourceMappingURL=SemanticTextAlignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticTextAlignment.js","sourceRoot":"","sources":["../../src/alignment/SemanticTextAlignment.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { RawAudio } from '../audio/AudioUtilities.js';
4
4
  import { EspeakOptions } from '../synthesis/EspeakTTS.js';
5
5
  export declare function alignUsingDtw(sourceRawAudio: RawAudio, referenceRawAudio: RawAudio, referenceTimeline: Timeline, granularities: DtwGranularity[], windowDurations: number[]): Promise<TimelineEntry[]>;
6
6
  export declare function alignUsingDtwWithRecognition(sourceRawAudio: RawAudio, referenceRawAudio: RawAudio, referenceTimeline: Timeline, recognitionTimeline: Timeline, granularities: DtwGranularity[], windowDurations: number[], espeakOptions: EspeakOptions, phoneAlignmentMethod?: API.PhoneAlignmentMethod): Promise<Timeline>;
7
+ export declare function alignUsingDtwWithEmbeddings(sourceRawAudio: RawAudio, referenceRawAudio: RawAudio, referenceTimeline: Timeline, language: string, granularities: DtwGranularity[], windowDurations: number[]): Promise<TimelineEntry[]>;
7
8
  export declare function interpolatePhoneTimelines(sourceTimeline: Timeline, referenceTimeline: Timeline): Promise<Timeline>;
8
9
  export declare function alignPhoneTimelines(sourceRawAudio: RawAudio, sourceWordTimeline: Timeline, referenceRawAudio: RawAudio, referenceTimeline: Timeline, windowDuration: number): Promise<Timeline>;
9
10
  export declare function createAlignmentReferenceUsingEspeakForFragments(fragments: string[], espeakOptions: EspeakOptions): Promise<{
@@ -11,7 +12,7 @@ export declare function createAlignmentReferenceUsingEspeakForFragments(fragment
11
12
  timeline: Timeline;
12
13
  events: import("../synthesis/EspeakTTS.js").EspeakEvent[];
13
14
  }>;
14
- export declare function createAlignmentReferenceUsingEspeak(transcript: string, language: string, plaintextOptions?: API.PlainTextOptions, customLexiconPaths?: string[], insertSeparators?: boolean): Promise<{
15
+ export declare function createAlignmentReferenceUsingEspeak(transcript: string, language: string, plaintextOptions?: API.PlainTextOptions, customLexiconPaths?: string[], insertSeparators?: boolean, useKlatt?: boolean): Promise<{
15
16
  referenceRawAudio: RawAudio;
16
17
  referenceTimeline: TimelineEntry[];
17
18
  espeakVoice: string;
@@ -1,4 +1,4 @@
1
- import { clip } from '../utilities/Utilities.js';
1
+ import { clip, splitFloat32Array } from '../utilities/Utilities.js';
2
2
  import { computeMFCCs, extendDefaultMfccOptions } from '../dsp/MFCC.js';
3
3
  import { alignMFCC_DTW, getCostMatrixMemorySizeMB } from './DTWMfccSequenceAlignment.js';
4
4
  import { Logger } from '../utilities/Logger.js';
@@ -7,7 +7,10 @@ import chalk from 'chalk';
7
7
  import { synthesize } from '../api/API.js';
8
8
  import { resampleAudioSpeex } from '../dsp/SpeexResampler.js';
9
9
  import { deepClone } from '../utilities/ObjectUtilities.js';
10
- import { zeroIfNaN } from '../math/VectorMath.js';
10
+ import { cosineDistance, zeroIfNaN } from '../math/VectorMath.js';
11
+ import { alignDTWWindowed } from './DTWSequenceAlignmentWindowed.js';
12
+ import { loadPackage } from '../utilities/PackageManager.js';
13
+ import path from 'path';
11
14
  export async function alignUsingDtw(sourceRawAudio, referenceRawAudio, referenceTimeline, granularities, windowDurations) {
12
15
  const logger = new Logger();
13
16
  if (windowDurations.length == 0) {
@@ -60,39 +63,7 @@ export async function alignUsingDtw(sourceRawAudio, referenceRawAudio, reference
60
63
  logger.end();
61
64
  }
62
65
  logger.start('\nConvert path to timeline');
63
- function getMappedTimelineEntry(timelineEntry, recurse = true) {
64
- const referenceStartFrameIndex = Math.floor(timelineEntry.startTime * framesPerSecond);
65
- const referenceEndFrameIndex = Math.floor(timelineEntry.endTime * framesPerSecond);
66
- if (referenceStartFrameIndex < 0 || referenceEndFrameIndex < 0) {
67
- throw new Error('Unexpected: encountered a negative timestamp in timeline');
68
- }
69
- const mappedStartFrameIndex = getMappedFrameIndexForPath(referenceStartFrameIndex, compactedPath, 'first');
70
- const mappedEndFrameIndex = getMappedFrameIndexForPath(referenceEndFrameIndex, compactedPath, 'first');
71
- let innerTimeline;
72
- if (recurse && timelineEntry.timeline != null) {
73
- innerTimeline = timelineEntry.timeline.map((entry) => getMappedTimelineEntry(entry));
74
- }
75
- // Trim silent samples from start and end of mapped entry range
76
- const sourceSamplesPerFrame = Math.floor(sourceRawAudio.sampleRate / framesPerSecond);
77
- let startSampleIndex = mappedStartFrameIndex * sourceSamplesPerFrame;
78
- let endSampleIndex = mappedEndFrameIndex * sourceSamplesPerFrame;
79
- const frameSamples = sourceRawAudio.audioChannels[0].subarray(startSampleIndex, endSampleIndex);
80
- const silenceThresholdDecibels = -40;
81
- startSampleIndex += getStartingSilentSampleCount(frameSamples, silenceThresholdDecibels);
82
- endSampleIndex -= getEndingSilentSampleCount(frameSamples, silenceThresholdDecibels);
83
- endSampleIndex = Math.max(endSampleIndex, startSampleIndex);
84
- // Build mapped timeline entry
85
- const startTime = startSampleIndex / sourceRawAudio.sampleRate;
86
- const endTime = endSampleIndex / sourceRawAudio.sampleRate;
87
- return {
88
- type: timelineEntry.type,
89
- text: timelineEntry.text,
90
- startTime,
91
- endTime,
92
- timeline: innerTimeline
93
- };
94
- }
95
- const mappedTimeline = referenceTimeline.map((timelineEntry) => getMappedTimelineEntry(timelineEntry));
66
+ const mappedTimeline = referenceTimeline.map(entry => getMappedTimelineEntry(entry, sourceRawAudio, framesPerSecond, compactedPath));
96
67
  logger.end();
97
68
  return mappedTimeline;
98
69
  }
@@ -201,6 +172,103 @@ export async function alignUsingDtwWithRecognition(sourceRawAudio, referenceRawA
201
172
  logger.end();
202
173
  return result;
203
174
  }
175
+ // This is experimental code. It does't work well enough to be usable for anything.
176
+ // Just testing some alternative approaches.
177
+ export async function alignUsingDtwWithEmbeddings(sourceRawAudio, referenceRawAudio, referenceTimeline, language, granularities, windowDurations) {
178
+ const logger = new Logger();
179
+ if (sourceRawAudio.sampleRate != 16000) {
180
+ throw new Error('Source audio must have a sample rate of 16000 Hz');
181
+ }
182
+ if (referenceRawAudio.sampleRate != 16000) {
183
+ throw new Error('Reference audio must have a sample rate of 16000 Hz');
184
+ }
185
+ const embeddingType = 'w2v-bert-2.0';
186
+ let sourceEmbeddings;
187
+ let referenceEmbeddings;
188
+ let framesPerSecond;
189
+ if (embeddingType === 'w2v-bert-2.0') {
190
+ const packageName = 'w2v-bert-2.0-uint8';
191
+ const modelDir = await loadPackage(packageName);
192
+ const modelFilePath = path.join(modelDir, `${packageName}.onnx`);
193
+ const { Wav2Vec2BertFeatureEmbeddings } = await import('../speech-embeddings/WavToVec2BertFeatureEmbeddings.js');
194
+ const wav2vecBert = new Wav2Vec2BertFeatureEmbeddings(modelFilePath, ['cpu']);
195
+ logger.start(`Extract source audio embeddings using the W2V-BERT-2.0 model`);
196
+ sourceEmbeddings = await wav2vecBert.computeEmbeddings(sourceRawAudio);
197
+ logger.start(`Extract reference audio embeddings using the W2V-BERT-2.0 model`);
198
+ referenceEmbeddings = await wav2vecBert.computeEmbeddings(referenceRawAudio);
199
+ framesPerSecond = 1000 / 10 / 2;
200
+ }
201
+ else if (embeddingType === 'whisper') {
202
+ const sourceSamples = sourceRawAudio.audioChannels[0];
203
+ const referenceSamples = referenceRawAudio.audioChannels[0];
204
+ const WhisperSTT = await import(`../recognition/WhisperSTT.js`);
205
+ const { modelName, modelDir } = await WhisperSTT.loadPackagesAndGetPaths('base.en', language);
206
+ const whisper = new WhisperSTT.Whisper(modelName, modelDir, ['dml', 'cpu'], ['cpu']);
207
+ async function encodeToAudioFeatures(samples) {
208
+ const featureVectors = [];
209
+ for (let i = 0; i < samples.length; i += 16000 * 30) {
210
+ const startSampleIndex = i;
211
+ const endSampleIndex = Math.min(samples.length, i + 16000 * 30);
212
+ const partSampleCount = endSampleIndex - startSampleIndex;
213
+ const audioPart = samples.subarray(startSampleIndex, endSampleIndex);
214
+ const rawAudioForPart = { audioChannels: [audioPart], sampleRate: 16000 };
215
+ const resultTensor = await whisper.encodeAudio(rawAudioForPart);
216
+ const vectorLength = resultTensor.dims[2];
217
+ let featureVectorsForPart = splitFloat32Array(resultTensor.data, vectorLength);
218
+ featureVectorsForPart = featureVectorsForPart.slice(0, Math.floor((partSampleCount / (16000 * 30)) * 1500));
219
+ featureVectors.push(...featureVectorsForPart);
220
+ }
221
+ return featureVectors;
222
+ }
223
+ logger.start(`Extract source audio embeddings using the Whisper encoder model`);
224
+ sourceEmbeddings = await encodeToAudioFeatures(sourceSamples);
225
+ logger.start(`Extract reference audio embeddings using the Whisper encoder model`);
226
+ referenceEmbeddings = await encodeToAudioFeatures(referenceSamples);
227
+ framesPerSecond = 1500 / 30;
228
+ }
229
+ else {
230
+ throw new Error(`Unknown embedding type: ${embeddingType}`);
231
+ }
232
+ logger.start(`Align source and reference audio embeddings using DTW`);
233
+ const { path: alignmentPath } = alignDTWWindowed(referenceEmbeddings, sourceEmbeddings, cosineDistance, 1000 * 1000);
234
+ const compactedPath = compactPath(alignmentPath);
235
+ logger.start('\nConvert path to timeline');
236
+ const mappedTimeline = referenceTimeline.map(entry => getMappedTimelineEntry(entry, sourceRawAudio, framesPerSecond, compactedPath));
237
+ logger.end();
238
+ return mappedTimeline;
239
+ }
240
+ function getMappedTimelineEntry(timelineEntry, sourceRawAudio, framesPerSecond, compactedPath, recurse = true) {
241
+ const referenceStartFrameIndex = Math.floor(timelineEntry.startTime * framesPerSecond);
242
+ const referenceEndFrameIndex = Math.floor(timelineEntry.endTime * framesPerSecond);
243
+ if (referenceStartFrameIndex < 0 || referenceEndFrameIndex < 0) {
244
+ throw new Error('Unexpected: encountered a negative timestamp in timeline');
245
+ }
246
+ const mappedStartFrameIndex = getMappedFrameIndexForPath(referenceStartFrameIndex, compactedPath, 'first');
247
+ const mappedEndFrameIndex = getMappedFrameIndexForPath(referenceEndFrameIndex, compactedPath, 'first');
248
+ let innerTimeline;
249
+ if (recurse && timelineEntry.timeline != null) {
250
+ innerTimeline = timelineEntry.timeline.map((entry) => getMappedTimelineEntry(entry, sourceRawAudio, framesPerSecond, compactedPath, recurse));
251
+ }
252
+ // Trim silent samples from start and end of mapped entry range
253
+ const sourceSamplesPerFrame = Math.floor(sourceRawAudio.sampleRate / framesPerSecond);
254
+ let startSampleIndex = mappedStartFrameIndex * sourceSamplesPerFrame;
255
+ let endSampleIndex = mappedEndFrameIndex * sourceSamplesPerFrame;
256
+ const frameSamples = sourceRawAudio.audioChannels[0].subarray(startSampleIndex, endSampleIndex);
257
+ const silenceThresholdDecibels = -40;
258
+ startSampleIndex += getStartingSilentSampleCount(frameSamples, silenceThresholdDecibels);
259
+ endSampleIndex -= getEndingSilentSampleCount(frameSamples, silenceThresholdDecibels);
260
+ endSampleIndex = Math.max(endSampleIndex, startSampleIndex);
261
+ // Build mapped timeline entry
262
+ const startTime = startSampleIndex / sourceRawAudio.sampleRate;
263
+ const endTime = endSampleIndex / sourceRawAudio.sampleRate;
264
+ return {
265
+ type: timelineEntry.type,
266
+ text: timelineEntry.text,
267
+ startTime,
268
+ endTime,
269
+ timeline: innerTimeline
270
+ };
271
+ }
204
272
  export async function interpolatePhoneTimelines(sourceTimeline, referenceTimeline) {
205
273
  const interpolatedTimeline = [];
206
274
  for (let wordEntryIndex = 0; wordEntryIndex < sourceTimeline.length; wordEntryIndex++) {
@@ -296,7 +364,7 @@ export async function createAlignmentReferenceUsingEspeakForFragments(fragments,
296
364
  progressLogger.end();
297
365
  return result;
298
366
  }
299
- export async function createAlignmentReferenceUsingEspeak(transcript, language, plaintextOptions, customLexiconPaths, insertSeparators) {
367
+ export async function createAlignmentReferenceUsingEspeak(transcript, language, plaintextOptions, customLexiconPaths, insertSeparators, useKlatt) {
300
368
  const logger = new Logger();
301
369
  logger.start('Synthesize alignment reference with eSpeak');
302
370
  const synthesisOptions = {
@@ -305,7 +373,7 @@ export async function createAlignmentReferenceUsingEspeak(transcript, language,
305
373
  plainText: plaintextOptions,
306
374
  customLexiconPaths: customLexiconPaths,
307
375
  espeak: {
308
- useKlatt: false,
376
+ useKlatt,
309
377
  insertSeparators,
310
378
  }
311
379
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SpeechAlignment.js","sourceRoot":"","sources":["../../src/alignment/SpeechAlignment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpeechAlignment.js","sourceRoot":"","sources":["../../src/alignment/SpeechAlignment.ts"],"names":[],"mappings":"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"}