echogarden 1.4.4 → 1.6.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/data/schemas/options.json +310 -25
- package/dist/alignment/DTWMfccSequenceAlignment.d.ts +1 -1
- package/dist/alignment/DTWMfccSequenceAlignment.js +5 -5
- package/dist/alignment/DTWSequenceAlignmentWindowed.js +1 -3
- package/dist/alignment/DTWSequenceAlignmentWindowed.js.map +1 -1
- package/dist/alignment/{TextAlignment.d.ts → SemanticTextAlignment.d.ts} +4 -2
- package/dist/alignment/SemanticTextAlignment.js +336 -0
- package/dist/alignment/SemanticTextAlignment.js.map +1 -0
- package/dist/alignment/SpeechAlignment.d.ts +4 -3
- package/dist/alignment/SpeechAlignment.js +130 -39
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/API.d.ts +7 -3
- package/dist/api/API.js +7 -2
- package/dist/api/API.js.map +1 -1
- package/dist/api/APIOptions.d.ts +4 -1
- package/dist/api/Alignment.d.ts +1 -1
- package/dist/api/Alignment.js +13 -5
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/LanguageDetectionCommon.d.ts +6 -0
- package/dist/api/LanguageDetectionCommon.js +2 -0
- package/dist/api/LanguageDetectionCommon.js.map +1 -0
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/{LanguageDetection.d.ts → SpeechLanguageDetection.d.ts} +1 -25
- package/dist/api/{LanguageDetection.js → SpeechLanguageDetection.js} +1 -68
- package/dist/api/SpeechLanguageDetection.js.map +1 -0
- package/dist/api/{Translation.js → SpeechTranslation.js} +3 -3
- package/dist/api/SpeechTranslation.js.map +1 -0
- package/dist/api/Synthesis.d.ts +0 -1
- package/dist/api/Synthesis.js +4 -4
- package/dist/api/TextLanguageDetection.d.ts +21 -0
- package/dist/api/TextLanguageDetection.js +67 -0
- package/dist/api/TextLanguageDetection.js.map +1 -0
- package/dist/api/TextTranslation.d.ts +25 -0
- package/dist/api/TextTranslation.js +101 -0
- package/dist/api/TextTranslation.js.map +1 -0
- package/dist/api/TimelineTranslationAlignment.d.ts +23 -0
- package/dist/api/TimelineTranslationAlignment.js +92 -0
- package/dist/api/TimelineTranslationAlignment.js.map +1 -0
- package/dist/api/TranscriptAndTranslationAlignment.d.ts +35 -0
- package/dist/api/TranscriptAndTranslationAlignment.js +78 -0
- package/dist/api/TranscriptAndTranslationAlignment.js.map +1 -0
- package/dist/api/TranslationAlignment.d.ts +4 -3
- package/dist/api/TranslationAlignment.js +9 -8
- package/dist/api/TranslationAlignment.js.map +1 -1
- package/dist/api/VoiceActivityDetection.js +16 -1
- package/dist/api/VoiceActivityDetection.js.map +1 -1
- package/dist/audio/AudioBufferConversion.d.ts +0 -1
- package/dist/audio/AudioPlayer.d.ts +0 -1
- package/dist/audio/AudioPlayer.js +62 -41
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/audio/AudioUtilities.d.ts +0 -1
- package/dist/cli/CLI.d.ts +28 -7
- package/dist/cli/CLI.js +265 -37
- package/dist/cli/CLI.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.d.ts +0 -1
- package/dist/codecs/FFMpegTranscoder.js +7 -0
- package/dist/codecs/FFMpegTranscoder.js.map +1 -1
- package/dist/codecs/TIMITCodec.d.ts +0 -1
- package/dist/codecs/WaveCodec.d.ts +0 -1
- package/dist/dsp/FFT.d.ts +1 -1
- package/dist/dsp/FFT.js +6 -0
- package/dist/dsp/FFT.js.map +1 -1
- package/dist/dsp/KWeightingFilter.js +1 -1
- package/dist/dsp/KWeightingFilter.js.map +1 -1
- package/dist/dsp/MelSpectogram.d.ts +3 -2
- package/dist/dsp/MelSpectogram.js +14 -8
- package/dist/dsp/MelSpectogram.js.map +1 -1
- package/dist/math/VectorMath.d.ts +9 -9
- package/dist/math/VectorMath.js +10 -10
- package/dist/math/VectorMath.js.map +1 -1
- package/dist/nlp/ChineseSegmentation.js +4 -4
- package/dist/nlp/ChineseSegmentation.js.map +1 -1
- package/dist/nlp/Segmentation.d.ts +2 -2
- package/dist/nlp/Segmentation.js +20 -13
- package/dist/nlp/Segmentation.js.map +1 -1
- package/dist/recognition/OpenAICloudSTT.d.ts +2 -1
- package/dist/recognition/OpenAICloudSTT.js +30 -19
- package/dist/recognition/OpenAICloudSTT.js.map +1 -1
- package/dist/recognition/SileroSTT.d.ts +0 -1
- package/dist/recognition/WhisperCppSTT.d.ts +3 -3
- package/dist/recognition/WhisperCppSTT.js +21 -9
- package/dist/recognition/WhisperCppSTT.js.map +1 -1
- package/dist/recognition/WhisperSTT.d.ts +9 -6
- package/dist/recognition/WhisperSTT.js +227 -46
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/server/Client.d.ts +3 -4
- package/dist/server/Client.js.map +1 -1
- package/dist/server/Worker.d.ts +3 -3
- package/dist/server/Worker.js +3 -2
- package/dist/server/Worker.js.map +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.d.ts +0 -1
- package/dist/source-separation/MDXNetSourceSeparation.js +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts +12 -0
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +68 -0
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -0
- package/dist/speech-language-detection/SileroLanguageDetection.d.ts +1 -2
- package/dist/speech-language-detection/SileroLanguageDetection.js +1 -1
- package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -1
- package/dist/subtitles/Subtitles.js +2 -2
- package/dist/subtitles/Subtitles.js.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.d.ts +0 -1
- package/dist/synthesis/GoogleTranslateTTS.d.ts +0 -1
- package/dist/synthesis/GoogleTranslateTTS.js +6 -21
- package/dist/synthesis/GoogleTranslateTTS.js.map +1 -1
- package/dist/synthesis/StreamlabsPollyTTS.d.ts +0 -1
- package/dist/synthesis/VitsTTS.d.ts +0 -1
- package/dist/synthesis/VitsTTS.js +30 -0
- package/dist/synthesis/VitsTTS.js.map +1 -1
- package/dist/tests/Test.js +0 -31
- package/dist/tests/Test.js.map +1 -1
- package/dist/text-language-detection/FastTextLanguageDetection.d.ts +1 -1
- package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -1
- package/dist/text-language-detection/TinyLDLanguageDetection.d.ts +1 -1
- package/dist/text-language-detection/TinyLDLanguageDetection.js.map +1 -1
- package/dist/text-translation/DeepLTextTranslation.d.ts +2 -0
- package/dist/text-translation/DeepLTextTranslation.js +67 -0
- package/dist/text-translation/DeepLTextTranslation.js.map +1 -0
- package/dist/text-translation/GoogleTranslateTextTranslation.d.ts +10 -0
- package/dist/text-translation/GoogleTranslateTextTranslation.js +554 -0
- package/dist/text-translation/GoogleTranslateTextTranslation.js.map +1 -0
- package/dist/text-translation/NLLBTextTranslation.d.ts +2 -1
- package/dist/text-translation/NLLBTextTranslation.js +249 -19
- package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
- package/dist/utilities/BinaryArrayConversion.d.ts +0 -1
- package/dist/utilities/BrowserRequestHeaders.d.ts +6 -0
- package/dist/utilities/BrowserRequestHeaders.js +52 -0
- package/dist/utilities/BrowserRequestHeaders.js.map +1 -0
- package/dist/utilities/BufferFileReadStream.d.ts +20 -0
- package/dist/utilities/BufferFileReadStream.js +81 -0
- package/dist/utilities/BufferFileReadStream.js.map +1 -0
- package/dist/utilities/DynamicUint8Array.d.ts +9 -0
- package/dist/utilities/DynamicUint8Array.js +31 -0
- package/dist/utilities/DynamicUint8Array.js.map +1 -0
- package/dist/utilities/FileSystem.d.ts +0 -2
- package/dist/utilities/Hashing.d.ts +3 -10
- package/dist/utilities/Hashing.js +10 -127
- package/dist/utilities/Hashing.js.map +1 -1
- package/dist/utilities/LEB128.d.ts +15 -5
- package/dist/utilities/LEB128.js +199 -119
- package/dist/utilities/LEB128.js.map +1 -1
- package/dist/utilities/LPVarInt.d.ts +11 -0
- package/dist/utilities/LPVarInt.js +187 -0
- package/dist/utilities/LPVarInt.js.map +1 -0
- package/dist/utilities/Locale.d.ts +1 -1
- package/dist/utilities/Locale.js +1 -1
- package/dist/utilities/OnnxUtilities.d.ts +1 -2
- package/dist/utilities/PVarInt.d.ts +4 -0
- package/dist/utilities/PVarInt.js +166 -0
- package/dist/utilities/PVarInt.js.map +1 -0
- package/dist/utilities/PackageManager.js +48 -25
- package/dist/utilities/PackageManager.js.map +1 -1
- package/dist/utilities/RandomGenerator.d.ts +3 -17
- package/dist/utilities/RandomGenerator.js +12 -81
- package/dist/utilities/RandomGenerator.js.map +1 -1
- package/dist/utilities/Timeline.d.ts +2 -0
- package/dist/utilities/Timeline.js +129 -20
- package/dist/utilities/Timeline.js.map +1 -1
- package/dist/utilities/Utilities.d.ts +1 -3
- package/dist/utilities/Utilities.js +30 -3
- package/dist/utilities/Utilities.js.map +1 -1
- package/dist/utilities/VarInt.d.ts +4 -0
- package/dist/utilities/VarInt.js +166 -0
- package/dist/utilities/VarInt.js.map +1 -0
- package/dist/utilities/VirtualFileReadStream.d.ts +20 -0
- package/dist/utilities/VirtualFileReadStream.js +79 -0
- package/dist/utilities/VirtualFileReadStream.js.map +1 -0
- package/dist/utilities/WebReader.js +7 -23
- package/dist/utilities/WebReader.js.map +1 -1
- package/dist/voice-activity-detection/SileroVAD.d.ts +0 -1
- package/docs/API.md +105 -3
- package/docs/CLI.md +51 -1
- package/docs/Engines.md +32 -3
- package/docs/Options.md +53 -12
- package/docs/Tasklist.md +1 -13
- package/package.json +20 -24
- package/src/alignment/DTWMfccSequenceAlignment.ts +5 -5
- package/src/alignment/DTWSequenceAlignmentWindowed.ts +1 -3
- package/src/alignment/SemanticTextAlignment.ts +467 -0
- package/src/alignment/SpeechAlignment.ts +214 -56
- package/src/api/API.ts +18 -2
- package/src/api/APIOptions.ts +14 -1
- package/src/api/Alignment.ts +31 -9
- package/src/api/LanguageDetectionCommon.ts +7 -0
- package/src/api/Recognition.ts +2 -0
- package/src/api/{LanguageDetection.ts → SpeechLanguageDetection.ts} +1 -119
- package/src/api/{Translation.ts → SpeechTranslation.ts} +2 -2
- package/src/api/Synthesis.ts +4 -4
- package/src/api/TextLanguageDetection.ts +116 -0
- package/src/api/TextTranslation.ts +177 -0
- package/src/api/TimelineTranslationAlignment.ts +162 -0
- package/src/api/TranscriptAndTranslationAlignment.ts +164 -0
- package/src/api/TranslationAlignment.ts +12 -10
- package/src/api/VoiceActivityDetection.ts +24 -3
- package/src/audio/AudioPlayer.ts +2 -0
- package/src/cli/CLI.ts +376 -40
- package/src/codecs/FFMpegTranscoder.ts +6 -0
- package/src/dsp/FFT.ts +8 -2
- package/src/dsp/KWeightingFilter.ts +1 -1
- package/src/dsp/MelSpectogram.ts +17 -8
- package/src/math/VectorMath.ts +15 -15
- package/src/nlp/ChineseSegmentation.ts +6 -4
- package/src/nlp/Segmentation.ts +18 -13
- package/src/recognition/OpenAICloudSTT.ts +47 -29
- package/src/recognition/WhisperCppSTT.ts +26 -11
- package/src/recognition/WhisperSTT.ts +364 -49
- package/src/server/Client.ts +3 -2
- package/src/server/Worker.ts +3 -2
- package/src/source-separation/MDXNetSourceSeparation.ts +1 -1
- package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +107 -0
- package/src/speech-language-detection/SileroLanguageDetection.ts +2 -1
- package/src/subtitles/Subtitles.ts +2 -2
- package/src/synthesis/GoogleTranslateTTS.ts +7 -21
- package/src/synthesis/VitsTTS.ts +31 -3
- package/src/tests/Test.ts +1 -38
- package/src/text-language-detection/FastTextLanguageDetection.ts +1 -1
- package/src/text-language-detection/TinyLDLanguageDetection.ts +1 -1
- package/src/text-translation/DeepLTextTranslation.ts +88 -0
- package/src/text-translation/GoogleTranslateTextTranslation.ts +667 -0
- package/src/text-translation/NLLBTextTranslation.ts +261 -21
- package/src/typings/Fillers.d.ts +25 -2
- package/src/utilities/BrowserRequestHeaders.ts +59 -0
- package/src/utilities/DynamicUint8Array.ts +39 -0
- package/src/utilities/Hashing.ts +14 -167
- package/src/utilities/LEB128.ts +273 -148
- package/src/utilities/LPVarInt.ts +292 -0
- package/src/utilities/Locale.ts +1 -1
- package/src/utilities/OnnxUtilities.ts +1 -1
- package/src/utilities/PackageManager.ts +51 -30
- package/src/utilities/RandomGenerator.ts +12 -113
- package/src/utilities/Timeline.ts +162 -23
- package/src/utilities/Utilities.ts +40 -3
- package/src/utilities/VirtualFileReadStream.ts +109 -0
- package/src/utilities/WebReader.ts +9 -23
- package/dist/alignment/TextAlignment.js +0 -156
- package/dist/alignment/TextAlignment.js.map +0 -1
- package/dist/api/LanguageDetection.js.map +0 -1
- package/dist/api/Translation.js.map +0 -1
- package/src/alignment/TextAlignment.ts +0 -234
- /package/dist/api/{Translation.d.ts → SpeechTranslation.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ParagraphBreakType, WhitespaceProcessing } from '../api/Common.js'
|
|
2
|
-
import { isWordOrSymbolWord, splitToParagraphs, splitToSentences } from '../nlp/Segmentation.js'
|
|
2
|
+
import { applyWhitespaceProcessing, isWord, isWordOrSymbolWord, splitToParagraphs, splitToSentences, splitToWords } from '../nlp/Segmentation.js'
|
|
3
3
|
import { deepClone } from './ObjectUtilities.js'
|
|
4
|
-
import { getUTF32Chars, roundToDigits } from './Utilities.js'
|
|
4
|
+
import { getUTF32Chars, roundToDigits, splitAndPreserveSeparators } from './Utilities.js'
|
|
5
5
|
|
|
6
6
|
export function addTimeOffsetToTimeline(targetTimeline: Timeline, timeOffset: number) {
|
|
7
7
|
if (!targetTimeline) {
|
|
@@ -62,13 +62,57 @@ export function roundTimelineProperties(targetTimeline: Timeline, decimalDigits
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
export async function wordTimelineToSegmentSentenceTimeline(wordTimeline: Timeline, transcript: string, language: string, paragraphBreaks: ParagraphBreakType = 'double', whitespace: WhitespaceProcessing = 'collapse') {
|
|
65
|
-
|
|
65
|
+
let segments: string[][] = []
|
|
66
|
+
|
|
67
|
+
{
|
|
68
|
+
// Ensure word entries with words that include potential sentence ending characters,
|
|
69
|
+
// like '.', '?' or '!', aren't causing the sentence segmentation
|
|
70
|
+
// to identify them as sentence breaks.
|
|
71
|
+
const maskedTranscript = replaceSentenceEndersWithinWordsWithMaskingCharacter(transcript, wordTimeline, '_')
|
|
72
|
+
|
|
73
|
+
// Split to segments and sentences, based on the masked transcript,
|
|
74
|
+
// don't apply any whitespace processing yet.
|
|
75
|
+
let paragraphs: string[]
|
|
76
|
+
|
|
77
|
+
if (paragraphBreaks === 'single') {
|
|
78
|
+
paragraphs = splitAndPreserveSeparators(maskedTranscript, /(\r?\n)+/g)
|
|
79
|
+
} else if (paragraphBreaks === 'double') {
|
|
80
|
+
paragraphs = splitAndPreserveSeparators(maskedTranscript, /(\r?\n)(\r?\n)+/g)
|
|
81
|
+
} else {
|
|
82
|
+
throw new Error(`Invalid paragraph break type: '${paragraphBreaks}'`)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const maskedSegments = paragraphs.map(paragraph => splitToSentences(paragraph, language))
|
|
86
|
+
|
|
87
|
+
// Restore the sentence text the original text, using the original transcript,
|
|
88
|
+
// and apply whitespace processing to each sentence.
|
|
89
|
+
let offset = 0
|
|
90
|
+
|
|
91
|
+
for (const segment of maskedSegments) {
|
|
92
|
+
const newSegment: string[] = []
|
|
93
|
+
|
|
94
|
+
for (let sentenceIndex = 0; sentenceIndex < segment.length; sentenceIndex++) {
|
|
95
|
+
const sentence = segment[sentenceIndex]
|
|
96
|
+
const sentenceLength = sentence.length
|
|
97
|
+
|
|
98
|
+
const restoredSentence = transcript.substring(offset, offset + sentenceLength)
|
|
99
|
+
const restoredAndProcessedSentence = applyWhitespaceProcessing(restoredSentence, whitespace).trim()
|
|
100
|
+
|
|
101
|
+
if (restoredAndProcessedSentence.length > 0) {
|
|
102
|
+
newSegment.push(restoredAndProcessedSentence)
|
|
103
|
+
}
|
|
66
104
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
105
|
+
offset += sentenceLength
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
segments.push(newSegment)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
segments = segments.filter(segment => segment.length > 0)
|
|
112
|
+
}
|
|
71
113
|
|
|
114
|
+
// Create a new text based on the processed sentences, new segment and sentence timeline,
|
|
115
|
+
// and store mapping between character indexes and the corresponding sentence they belong to.
|
|
72
116
|
let text = ''
|
|
73
117
|
const charIndexToSentenceEntryMapping: TimelineEntry[] = []
|
|
74
118
|
|
|
@@ -105,28 +149,33 @@ export async function wordTimelineToSegmentSentenceTimeline(wordTimeline: Timeli
|
|
|
105
149
|
segmentTimeline.push(segmentEntry)
|
|
106
150
|
}
|
|
107
151
|
|
|
108
|
-
|
|
152
|
+
// Add the word entries to their corresponding sentence timelines
|
|
153
|
+
{
|
|
154
|
+
let wordSearchStartOffset = 0
|
|
109
155
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
156
|
+
for (let wordIndex = 0; wordIndex < wordTimeline.length; wordIndex++) {
|
|
157
|
+
const wordEntry = wordTimeline[wordIndex]
|
|
158
|
+
const wordText = wordEntry.text
|
|
113
159
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
160
|
+
if (!isWordOrSymbolWord(wordText)) {
|
|
161
|
+
continue
|
|
162
|
+
}
|
|
117
163
|
|
|
118
|
-
|
|
164
|
+
const indexOfWordInText = text.indexOf(wordText, wordSearchStartOffset)
|
|
119
165
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
166
|
+
if (indexOfWordInText == -1) {
|
|
167
|
+
throw new Error(`Couldn't find the word '${wordText}' in the text at start position ${wordSearchStartOffset}`)
|
|
168
|
+
}
|
|
123
169
|
|
|
124
|
-
|
|
125
|
-
|
|
170
|
+
const targetSentenceEntry = charIndexToSentenceEntryMapping[indexOfWordInText]
|
|
171
|
+
targetSentenceEntry.timeline!.push(deepClone(wordEntry))
|
|
126
172
|
|
|
127
|
-
|
|
173
|
+
wordSearchStartOffset = indexOfWordInText + wordText.length
|
|
174
|
+
}
|
|
128
175
|
}
|
|
129
176
|
|
|
177
|
+
// Produce a new segment/sentence timeline with rewritten entries,
|
|
178
|
+
// that match the assigned words.
|
|
130
179
|
const newSegmentTimeline: Timeline = []
|
|
131
180
|
|
|
132
181
|
for (const segmentEntry of segmentTimeline) {
|
|
@@ -137,7 +186,7 @@ export async function wordTimelineToSegmentSentenceTimeline(wordTimeline: Timeli
|
|
|
137
186
|
for (const sentenceEntry of oldSentenceTimeline) {
|
|
138
187
|
const wordTimeline = sentenceEntry.timeline
|
|
139
188
|
|
|
140
|
-
if (!wordTimeline || wordTimeline.length
|
|
189
|
+
if (!wordTimeline || wordTimeline.length === 0) {
|
|
141
190
|
continue
|
|
142
191
|
}
|
|
143
192
|
|
|
@@ -147,7 +196,7 @@ export async function wordTimelineToSegmentSentenceTimeline(wordTimeline: Timeli
|
|
|
147
196
|
newSentenceTimeline.push(sentenceEntry)
|
|
148
197
|
}
|
|
149
198
|
|
|
150
|
-
if (newSentenceTimeline.length
|
|
199
|
+
if (newSentenceTimeline.length === 0) {
|
|
151
200
|
continue
|
|
152
201
|
}
|
|
153
202
|
|
|
@@ -207,6 +256,69 @@ export function addWordTextOffsetsToTimeline(timeline: Timeline, text: string, c
|
|
|
207
256
|
return currentOffset
|
|
208
257
|
}
|
|
209
258
|
|
|
259
|
+
function replaceSentenceEndersWithinWordsWithMaskingCharacter(transcript: string, wordTimeline: Timeline, maskingCharacter: string) {
|
|
260
|
+
if (maskingCharacter.length !== 1) {
|
|
261
|
+
throw new Error(`Masking character must be of length 1`)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
let modifiedTranscript = transcript
|
|
265
|
+
|
|
266
|
+
const sentenceEnders = ['.', '。', '?', '?', '!', '!', '|']
|
|
267
|
+
|
|
268
|
+
for (const wordEntry of wordTimeline) {
|
|
269
|
+
const wordText = wordEntry.text
|
|
270
|
+
|
|
271
|
+
if (!isWord(wordText)) {
|
|
272
|
+
continue
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
let newWordText = ''
|
|
276
|
+
let charIndex = 0
|
|
277
|
+
|
|
278
|
+
for (const char of wordText) {
|
|
279
|
+
const isFirstChar = charIndex === 0
|
|
280
|
+
const isLastChar = charIndex + char.length === wordText.length
|
|
281
|
+
const isFirstOrLastChar = isFirstChar || isLastChar
|
|
282
|
+
|
|
283
|
+
if (!isLastChar && sentenceEnders.includes(char)) {
|
|
284
|
+
for (let i = 0; i < char.length; i++) {
|
|
285
|
+
newWordText += maskingCharacter
|
|
286
|
+
}
|
|
287
|
+
} else {
|
|
288
|
+
newWordText += char
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
charIndex += char.length
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (newWordText !== wordText) {
|
|
295
|
+
const wordStartOffset = wordEntry.startOffsetUtf16!
|
|
296
|
+
const wordEndOffset = wordEntry.endOffsetUtf16!
|
|
297
|
+
|
|
298
|
+
modifiedTranscript =
|
|
299
|
+
transcript.substring(0, wordStartOffset) +
|
|
300
|
+
newWordText +
|
|
301
|
+
transcript.substring(wordEndOffset)
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return modifiedTranscript
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export function extractEntries(timeline: Timeline, predicate: (entry: TimelineEntry) => boolean): TimelineEntry[] {
|
|
309
|
+
const timelineWordEntries: TimelineEntry[] = []
|
|
310
|
+
|
|
311
|
+
for (const entry of timeline) {
|
|
312
|
+
if (predicate(entry)) {
|
|
313
|
+
timelineWordEntries.push(entry)
|
|
314
|
+
} else if (entry.timeline) {
|
|
315
|
+
timelineWordEntries.push(...extractEntries(entry.timeline, predicate))
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return timelineWordEntries
|
|
320
|
+
}
|
|
321
|
+
|
|
210
322
|
export type TimelineEntryType = 'segment' | 'paragraph' | 'sentence' | 'clause' | 'phrase' | 'word' | 'token' | 'letter' | 'phone' | 'subphone'
|
|
211
323
|
|
|
212
324
|
export type TimelineEntry = {
|
|
@@ -231,3 +343,30 @@ export type TimelineEntry = {
|
|
|
231
343
|
}
|
|
232
344
|
|
|
233
345
|
export type Timeline = TimelineEntry[]
|
|
346
|
+
|
|
347
|
+
////
|
|
348
|
+
|
|
349
|
+
export async function testTimelineFix() {
|
|
350
|
+
let transcript = 'Hello world how are you? Do you want to play chess?'
|
|
351
|
+
const words = (await splitToWords(transcript, 'en')).filter(word => word.trim() !== '')
|
|
352
|
+
|
|
353
|
+
let wordTimeline: Timeline = words.map(wordText => ({
|
|
354
|
+
type: 'word',
|
|
355
|
+
|
|
356
|
+
text: wordText,
|
|
357
|
+
|
|
358
|
+
startTime: 0,
|
|
359
|
+
endTime: 0,
|
|
360
|
+
}))
|
|
361
|
+
|
|
362
|
+
addWordTextOffsetsToTimeline(wordTimeline, transcript)
|
|
363
|
+
|
|
364
|
+
wordTimeline[1].text = 'wor.d'
|
|
365
|
+
wordTimeline[8].text = 'wa.t'
|
|
366
|
+
|
|
367
|
+
transcript = transcript.replace('world', 'wor.d').replace('want', 'wa.t')
|
|
368
|
+
|
|
369
|
+
const result = await wordTimelineToSegmentSentenceTimeline(wordTimeline, transcript, 'en')
|
|
370
|
+
|
|
371
|
+
const x = 1
|
|
372
|
+
}
|
|
@@ -404,10 +404,10 @@ export async function commandExists(command: string) {
|
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
export async function convertHtmlToText(html: string) {
|
|
407
|
-
const {
|
|
407
|
+
const { htmlToText } = await import('html-to-text')
|
|
408
408
|
|
|
409
|
-
const text =
|
|
410
|
-
wordwrap:
|
|
409
|
+
const text = htmlToText(html, {
|
|
410
|
+
wordwrap: false,
|
|
411
411
|
|
|
412
412
|
selectors: [
|
|
413
413
|
{ selector: 'a', options: { ignoreHref: true } },
|
|
@@ -619,3 +619,40 @@ export function containsInvalidCodepoint(str: string) {
|
|
|
619
619
|
|
|
620
620
|
return false
|
|
621
621
|
}
|
|
622
|
+
|
|
623
|
+
export function splitAndPreserveSeparators(text: string, separatorRegex: RegExp): string[] {
|
|
624
|
+
if (!separatorRegex.flags.includes('g')) {
|
|
625
|
+
throw new Error('RegExp must be global')
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
// Use the match method to find all matches for the separators
|
|
629
|
+
const matches = text.match(separatorRegex)
|
|
630
|
+
|
|
631
|
+
// If no matches are found, return the original text as a single element array
|
|
632
|
+
if (!matches) {
|
|
633
|
+
return [text]
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
// Initialize the result array
|
|
637
|
+
const result: string[] = []
|
|
638
|
+
|
|
639
|
+
// Initialize the start position
|
|
640
|
+
let lastIndex = 0
|
|
641
|
+
|
|
642
|
+
// Iterate through the matches
|
|
643
|
+
matches.forEach(match => {
|
|
644
|
+
// Get the index of the current match
|
|
645
|
+
const matchIndex = text.indexOf(match, lastIndex)
|
|
646
|
+
|
|
647
|
+
// Add the substring before the match to the result, joined with the match itself
|
|
648
|
+
result.push(text.substring(lastIndex, matchIndex) + match)
|
|
649
|
+
|
|
650
|
+
// Update the last index to the end of the current match
|
|
651
|
+
lastIndex = matchIndex + match.length
|
|
652
|
+
})
|
|
653
|
+
|
|
654
|
+
// Add the remaining substring after the last match to the result
|
|
655
|
+
result.push(text.substring(lastIndex))
|
|
656
|
+
|
|
657
|
+
return result
|
|
658
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Readable } from 'stream'
|
|
2
|
+
import { EventEmitter } from 'events'
|
|
3
|
+
import { ReadStream as FsReadStream } from 'fs'
|
|
4
|
+
|
|
5
|
+
export function createVirtualFileReadStreamForBuffer(buffer: Buffer, path?: string | Buffer) {
|
|
6
|
+
const bufferReadStream = new VirtualFileReadStream(buffer, path)
|
|
7
|
+
|
|
8
|
+
const proxyStream = new Proxy<FsReadStream>(bufferReadStream, {
|
|
9
|
+
get(target, prop) {
|
|
10
|
+
if (prop === Symbol.toStringTag) {
|
|
11
|
+
return 'ReadStream'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return (target as any)[prop]
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
getPrototypeOf() {
|
|
18
|
+
return FsReadStream.prototype
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
return proxyStream
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class VirtualFileReadStream extends Readable {
|
|
26
|
+
private readonly buffer: Buffer
|
|
27
|
+
|
|
28
|
+
position: number
|
|
29
|
+
bytesRead: number
|
|
30
|
+
readonly path: string | Buffer
|
|
31
|
+
pending: boolean
|
|
32
|
+
readonly emitter: EventEmitter
|
|
33
|
+
|
|
34
|
+
constructor(buffer: Buffer, virtualPath?: string | Buffer) {
|
|
35
|
+
super({ autoDestroy: false })
|
|
36
|
+
|
|
37
|
+
this.buffer = buffer
|
|
38
|
+
|
|
39
|
+
this.position = 0
|
|
40
|
+
this.bytesRead = 0
|
|
41
|
+
this.path = virtualPath || ''
|
|
42
|
+
this.pending = true
|
|
43
|
+
this.emitter = new EventEmitter()
|
|
44
|
+
|
|
45
|
+
this.emitter.emit('open', 0)
|
|
46
|
+
|
|
47
|
+
this.pending = false
|
|
48
|
+
this.emitter.emit('ready')
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
_read(size: number): void {
|
|
52
|
+
if (this.position >= this.buffer.length) {
|
|
53
|
+
this.push(null)
|
|
54
|
+
|
|
55
|
+
this.emitter.emit('end')
|
|
56
|
+
this.emitter.emit('finish')
|
|
57
|
+
this.emitter.emit('close')
|
|
58
|
+
|
|
59
|
+
return
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const chunkSize = Math.min(size, this.buffer.length - this.position)
|
|
63
|
+
|
|
64
|
+
const chunk = this.buffer.subarray(this.position, this.position + chunkSize)
|
|
65
|
+
|
|
66
|
+
this.position += chunkSize
|
|
67
|
+
this.bytesRead = this.position
|
|
68
|
+
|
|
69
|
+
this.push(chunk)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
close(callback?: (err?: NodeJS.ErrnoException | null) => void): void {
|
|
73
|
+
this.emitter.emit('close')
|
|
74
|
+
|
|
75
|
+
if (callback) {
|
|
76
|
+
callback(null)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
addListener(event: string | symbol, listener: (...args: any[]) => void): this {
|
|
81
|
+
this.emitter.addListener(event, listener)
|
|
82
|
+
|
|
83
|
+
return this
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
on(event: string | symbol, listener: (...args: any[]) => void): this {
|
|
87
|
+
this.emitter.on(event, listener)
|
|
88
|
+
|
|
89
|
+
return this
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
once(event: string | symbol, listener: (...args: any[]) => void): this {
|
|
93
|
+
this.emitter.once(event, listener)
|
|
94
|
+
|
|
95
|
+
return this
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
prependListener(event: string | symbol, listener: (...args: any[]) => void): this {
|
|
99
|
+
this.emitter.prependListener(event, listener)
|
|
100
|
+
|
|
101
|
+
return this
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this {
|
|
105
|
+
this.emitter.prependOnceListener(event, listener)
|
|
106
|
+
|
|
107
|
+
return this
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -3,37 +3,23 @@ import { JSDOM, VirtualConsole } from 'jsdom'
|
|
|
3
3
|
import { request } from 'gaxios'
|
|
4
4
|
import { Logger } from './Logger.js'
|
|
5
5
|
import { convertHtmlToText } from './Utilities.js'
|
|
6
|
+
import { getChromeOnWindowsHeaders } from './BrowserRequestHeaders.js'
|
|
6
7
|
|
|
7
8
|
export async function fetchDocumentText(url: string) {
|
|
8
9
|
const progressLogger = new Logger()
|
|
9
10
|
progressLogger.start(`Fetching ${url}`)
|
|
10
11
|
|
|
12
|
+
const parsedUrl = new URL(url)
|
|
13
|
+
const origin = parsedUrl.origin
|
|
14
|
+
|
|
11
15
|
const response = await request<string>({
|
|
12
16
|
url,
|
|
13
17
|
responseType: 'text',
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
'sec-ch-ua-mobile': '?0',
|
|
20
|
-
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
|
|
21
|
-
'sec-ch-ua-arch': 'x86',
|
|
22
|
-
'sec-ch-ua-full-version': '103.0.5060.114',
|
|
23
|
-
'sec-ch-ua-platform-version': '10.0.0',
|
|
24
|
-
'sec-ch-ua-full-version-list': `".Not/A)Brand";v="99.0.0.0", "Google Chrome";v="103.0.5060.114", "Chromium";v="103.0.5060.114"`,
|
|
25
|
-
'sec-ch-ua-bitness': '64',
|
|
26
|
-
'sec-ch-ua-model': '',
|
|
27
|
-
'sec-ch-ua-platform': 'Windows',
|
|
28
|
-
'accept': '*/*',
|
|
29
|
-
//'origin': 'https://www.google.com/',
|
|
30
|
-
'sec-fetch-site': 'same-origin',
|
|
31
|
-
'sec-fetch-mode': 'cors',
|
|
32
|
-
'sec-fetch-dest': 'empty',
|
|
33
|
-
'referer': 'https://www.google.com/',
|
|
34
|
-
'accept-encoding': 'gzip, deflate, br',
|
|
35
|
-
'accept-language': 'en-US,en;q=0.9',
|
|
36
|
-
},
|
|
18
|
+
|
|
19
|
+
headers: getChromeOnWindowsHeaders({
|
|
20
|
+
origin: origin,
|
|
21
|
+
referrer: `${origin}/`
|
|
22
|
+
}),
|
|
37
23
|
})
|
|
38
24
|
|
|
39
25
|
progressLogger.start(`Parsing document body`)
|
|
@@ -1,156 +0,0 @@
|
|
|
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, splitToWords } from '../nlp/Segmentation.js';
|
|
6
|
-
export async function alignText(text1, langCode1, text2, langCode2) {
|
|
7
|
-
const logger = new Logger();
|
|
8
|
-
text1 = text1.replaceAll(/\s+/g, ' ');
|
|
9
|
-
text2 = text2.replaceAll(/\s+/g, ' ');
|
|
10
|
-
const words1 = await splitToWords(text1, langCode1);
|
|
11
|
-
const words2 = await splitToWords(text2, langCode2);
|
|
12
|
-
const wordAlignment = await alignWords(words1, words2);
|
|
13
|
-
const x = 0;
|
|
14
|
-
}
|
|
15
|
-
export async function alignWords(words1, words2) {
|
|
16
|
-
const logger = new Logger();
|
|
17
|
-
// Join words and get offsets
|
|
18
|
-
const { joinedText: text1, offsets: text1Offsets } = joinAndGetOffsets(words1);
|
|
19
|
-
const { joinedText: text2, offsets: text2Offsets } = joinAndGetOffsets(words2);
|
|
20
|
-
// Load embedding model
|
|
21
|
-
const modelPath = await loadPackage(`xenova-multilingual-e5-base-quantized`);
|
|
22
|
-
const embeddingModel = new E5TextEmbedding(modelPath);
|
|
23
|
-
// Process text 1:
|
|
24
|
-
logger.start(`Initialize E5 embedding model`);
|
|
25
|
-
await embeddingModel.initializeIfNeeded();
|
|
26
|
-
logger.start(`Tokenize text 1`);
|
|
27
|
-
const inputs1 = await embeddingModel.tokenizeToModelInputs(text1);
|
|
28
|
-
logger.start(`Infer embeddings for text 1`);
|
|
29
|
-
const embeddings1 = await embeddingModel.inferTokenEmbeddings(inputs1);
|
|
30
|
-
logger.start(`Compute token to word mapping for text 1`);
|
|
31
|
-
const filteredEmbeddings1 = embeddings1.filter((embedding) => embedding.text !== '▁' && embedding.text !== '<s>' && embedding.text !== '</s>');
|
|
32
|
-
const tokenToWordIndexMapping1 = mapTokenEmbeddingsToWordIndexes(filteredEmbeddings1, text1, text1Offsets);
|
|
33
|
-
// Process text 2:
|
|
34
|
-
logger.start(`Tokenize text 2`);
|
|
35
|
-
const inputs2 = await embeddingModel.tokenizeToModelInputs(text2);
|
|
36
|
-
logger.start(`Infer embeddings for text 2`);
|
|
37
|
-
const embeddings2 = await embeddingModel.inferTokenEmbeddings(inputs2);
|
|
38
|
-
logger.start(`Compute token to word mapping for text 2`);
|
|
39
|
-
const filteredEmbeddings2 = embeddings2.filter((embedding) => embedding.text !== '▁' && embedding.text !== '<s>' && embedding.text !== '</s>');
|
|
40
|
-
const tokenToWordIndexMapping2 = mapTokenEmbeddingsToWordIndexes(filteredEmbeddings2, text2, text2Offsets);
|
|
41
|
-
logger.end();
|
|
42
|
-
// Align
|
|
43
|
-
function costFunction(a, b) {
|
|
44
|
-
const aIsPunctuation = isPunctuation(a.text);
|
|
45
|
-
const bIsPunctuation = isPunctuation(b.text);
|
|
46
|
-
if (aIsPunctuation === bIsPunctuation) {
|
|
47
|
-
return cosineDistance(a.embeddingVector, b.embeddingVector);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return 1.0;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
const { path } = alignDTWWindowed(filteredEmbeddings1, filteredEmbeddings2, costFunction, 1000 * 1000);
|
|
54
|
-
// Use alignment path to words to words
|
|
55
|
-
const wordMapping = [];
|
|
56
|
-
for (let i = 0; i < path.length; i++) {
|
|
57
|
-
const pathEntry = path[i];
|
|
58
|
-
const sourceTokenIndex = pathEntry.source;
|
|
59
|
-
const destTokenIndex = pathEntry.dest;
|
|
60
|
-
const mappedWordIndex1 = tokenToWordIndexMapping1[sourceTokenIndex];
|
|
61
|
-
const mappedWordIndex2 = tokenToWordIndexMapping2[destTokenIndex];
|
|
62
|
-
wordMapping.push({
|
|
63
|
-
wordIndex1: mappedWordIndex1,
|
|
64
|
-
word1: words1[mappedWordIndex1],
|
|
65
|
-
wordIndex2: mappedWordIndex2,
|
|
66
|
-
word2: words2[mappedWordIndex2],
|
|
67
|
-
});
|
|
68
|
-
const embedding1 = filteredEmbeddings1[sourceTokenIndex];
|
|
69
|
-
const embedding2 = filteredEmbeddings2[destTokenIndex];
|
|
70
|
-
logger.log(`${embedding1.text} -> ${embedding2.text}`);
|
|
71
|
-
}
|
|
72
|
-
return wordMapping;
|
|
73
|
-
}
|
|
74
|
-
function mapTokenEmbeddingsToWordIndexes(embeddings, text, textWordOffsets) {
|
|
75
|
-
const tokenToWordIndex = [];
|
|
76
|
-
let currentTextOffset = 0;
|
|
77
|
-
for (let i = 0; i < embeddings.length; i++) {
|
|
78
|
-
const embedding = embeddings[i];
|
|
79
|
-
let tokenText = embedding.text;
|
|
80
|
-
if (tokenText === '<s>' || tokenText === '</s>') {
|
|
81
|
-
tokenToWordIndex.push(-1);
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (tokenText.startsWith('▁')) {
|
|
85
|
-
tokenText = tokenText.substring(1);
|
|
86
|
-
}
|
|
87
|
-
const matchPosition = text.indexOf(tokenText, currentTextOffset);
|
|
88
|
-
if (matchPosition === -1) {
|
|
89
|
-
throw new Error(`Token '${tokenText}' not found in text`);
|
|
90
|
-
}
|
|
91
|
-
currentTextOffset = matchPosition + tokenText.length;
|
|
92
|
-
let tokenMatchingWordIndex = textWordOffsets.findIndex((index) => index > matchPosition);
|
|
93
|
-
if (tokenMatchingWordIndex === -1) {
|
|
94
|
-
throw new Error(`Token '${tokenText}' not found in text`);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
tokenMatchingWordIndex = Math.max(tokenMatchingWordIndex - 1, 0);
|
|
98
|
-
}
|
|
99
|
-
tokenToWordIndex.push(tokenMatchingWordIndex);
|
|
100
|
-
}
|
|
101
|
-
return tokenToWordIndex;
|
|
102
|
-
}
|
|
103
|
-
function joinAndGetOffsets(words) {
|
|
104
|
-
let joinedText = '';
|
|
105
|
-
const offsets = [];
|
|
106
|
-
let offset = 0;
|
|
107
|
-
for (const word of words) {
|
|
108
|
-
joinedText += word;
|
|
109
|
-
offsets.push(offset);
|
|
110
|
-
offset += word.length;
|
|
111
|
-
}
|
|
112
|
-
offsets.push(joinedText.length);
|
|
113
|
-
return { joinedText, offsets };
|
|
114
|
-
}
|
|
115
|
-
export class E5TextEmbedding {
|
|
116
|
-
modelPath;
|
|
117
|
-
tokenizer;
|
|
118
|
-
model;
|
|
119
|
-
constructor(modelPath) {
|
|
120
|
-
this.modelPath = modelPath;
|
|
121
|
-
}
|
|
122
|
-
async tokenizeToModelInputs(text) {
|
|
123
|
-
await this.initializeIfNeeded();
|
|
124
|
-
const inputs = await this.tokenizer(text);
|
|
125
|
-
return inputs;
|
|
126
|
-
}
|
|
127
|
-
async inferTokenEmbeddings(inputs) {
|
|
128
|
-
await this.initializeIfNeeded();
|
|
129
|
-
const tokensText = this.tokenizer.model.convert_ids_to_tokens(Array.from(inputs.input_ids.data));
|
|
130
|
-
const result = await this.model(inputs);
|
|
131
|
-
const lastHiddenState = result.last_hidden_state;
|
|
132
|
-
const tokenCount = lastHiddenState.dims[1];
|
|
133
|
-
const embeddingSize = lastHiddenState.dims[2];
|
|
134
|
-
const tokenEmbeddings = [];
|
|
135
|
-
for (let i = 0; i < tokenCount; i++) {
|
|
136
|
-
const tokenEmbeddingVector = lastHiddenState.data.slice(i * embeddingSize, (i + 1) * embeddingSize);
|
|
137
|
-
const tokenId = Number(inputs.input_ids.data[i]);
|
|
138
|
-
const tokenText = tokensText[i];
|
|
139
|
-
tokenEmbeddings.push({
|
|
140
|
-
id: tokenId,
|
|
141
|
-
text: tokenText,
|
|
142
|
-
embeddingVector: tokenEmbeddingVector
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
return tokenEmbeddings;
|
|
146
|
-
}
|
|
147
|
-
async initializeIfNeeded() {
|
|
148
|
-
if (this.tokenizer && this.model) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
const { AutoTokenizer, AutoModel } = await import('@echogarden/transformers-nodejs-lite');
|
|
152
|
-
this.tokenizer = await AutoTokenizer.from_pretrained(this.modelPath);
|
|
153
|
-
this.model = await AutoModel.from_pretrained(this.modelPath);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=TextAlignment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextAlignment.js","sourceRoot":"","sources":["../../src/alignment/TextAlignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageDetection.js","sourceRoot":"","sources":["../../src/api/LanguageDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Translation.js","sourceRoot":"","sources":["../../src/api/Translation.ts"],"names":[],"mappings":"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"}
|