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.
- package/data/schemas/options.json +267 -19
- 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 +2 -1
- package/dist/alignment/SpeechAlignment.js +105 -37
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/API.d.ts +7 -2
- 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.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 +5 -0
- package/dist/api/TextTranslation.js +4 -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/cli/CLI.d.ts +27 -7
- package/dist/cli/CLI.js +205 -34
- package/dist/cli/CLI.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.js +7 -0
- package/dist/codecs/FFMpegTranscoder.js.map +1 -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 +5 -5
- package/dist/math/VectorMath.js +4 -4
- package/dist/math/VectorMath.js.map +1 -1
- package/dist/recognition/WhisperCppSTT.d.ts +1 -1
- package/dist/recognition/WhisperCppSTT.js +2 -2
- package/dist/recognition/WhisperCppSTT.js.map +1 -1
- package/dist/recognition/WhisperSTT.js +9 -6
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/server/Client.d.ts +3 -2
- package/dist/server/Client.js.map +1 -1
- package/dist/server/Worker.d.ts +3 -2
- package/dist/server/Worker.js +3 -2
- package/dist/server/Worker.js.map +1 -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 +13 -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 -1
- package/dist/speech-language-detection/SileroLanguageDetection.js +1 -1
- package/dist/speech-language-detection/SileroLanguageDetection.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/NLLBTextTranslation.js +1 -1
- package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
- package/dist/utilities/Locale.d.ts +1 -1
- package/dist/utilities/Locale.js +1 -1
- package/dist/utilities/OnnxUtilities.d.ts +1 -1
- package/dist/utilities/PackageManager.js +6 -4
- package/dist/utilities/PackageManager.js.map +1 -1
- package/dist/utilities/Timeline.d.ts +1 -0
- package/dist/utilities/Timeline.js +12 -0
- package/dist/utilities/Timeline.js.map +1 -1
- package/docs/API.md +81 -3
- package/docs/CLI.md +51 -1
- package/docs/Engines.md +24 -0
- package/docs/Options.md +33 -1
- package/package.json +8 -8
- package/src/alignment/SemanticTextAlignment.ts +467 -0
- package/src/alignment/SpeechAlignment.ts +179 -52
- 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 +9 -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/cli/CLI.ts +276 -34
- 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 +9 -9
- package/src/recognition/WhisperCppSTT.ts +2 -2
- package/src/recognition/WhisperSTT.ts +10 -6
- 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/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/NLLBTextTranslation.ts +1 -1
- package/src/utilities/Locale.ts +1 -1
- package/src/utilities/OnnxUtilities.ts +1 -1
- package/src/utilities/PackageManager.ts +7 -4
- package/src/utilities/Timeline.ts +14 -0
- 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
package/docs/API.md
CHANGED
|
@@ -72,10 +72,13 @@ const { audio } = await Echogarden.synthesize("Hello World!", { engine: 'espeak'
|
|
|
72
72
|
{
|
|
73
73
|
index: number // Index of part
|
|
74
74
|
total: number // Total number of parts
|
|
75
|
+
|
|
75
76
|
audio: RawAudio | Buffer // Audio for part
|
|
77
|
+
|
|
76
78
|
timeline: Timeline // Timeline for part
|
|
77
79
|
transcript: string // Transcript for part
|
|
78
80
|
language: string // Language for part
|
|
81
|
+
|
|
79
82
|
peakDecibelsSoFar: number // Peak decibels measured for all synthesized audio, so far
|
|
80
83
|
}
|
|
81
84
|
```
|
|
@@ -109,9 +112,15 @@ Applies speech recognition to the input.
|
|
|
109
112
|
```ts
|
|
110
113
|
{
|
|
111
114
|
transcript: string
|
|
115
|
+
|
|
112
116
|
timeline: Timeline
|
|
113
117
|
wordTimeline: Timeline
|
|
118
|
+
|
|
114
119
|
language: string
|
|
120
|
+
|
|
121
|
+
inputRawAudio: RawAudio
|
|
122
|
+
isolatedRawAudio?: RawAudio
|
|
123
|
+
backgroundRawAudio?: RawAudio
|
|
115
124
|
}
|
|
116
125
|
```
|
|
117
126
|
|
|
@@ -131,8 +140,13 @@ Aligns input audio with the given transcript.
|
|
|
131
140
|
{
|
|
132
141
|
timeline: Timeline
|
|
133
142
|
wordTimeline: Timeline
|
|
143
|
+
|
|
134
144
|
transcript: string
|
|
135
145
|
language: string
|
|
146
|
+
|
|
147
|
+
inputRawAudio: RawAudio
|
|
148
|
+
isolatedRawAudio?: RawAudio
|
|
149
|
+
backgroundRawAudio?: RawAudio
|
|
136
150
|
}
|
|
137
151
|
```
|
|
138
152
|
|
|
@@ -140,7 +154,7 @@ Aligns input audio with the given transcript.
|
|
|
140
154
|
|
|
141
155
|
### `translateSpeech(input, options)`
|
|
142
156
|
|
|
143
|
-
Translates speech audio directly to English
|
|
157
|
+
Translates speech audio directly to a transcript in a different language (only English is currently supported).
|
|
144
158
|
|
|
145
159
|
* `input`: can be an audio file path (`string`), encoded audio (`Buffer` or `Uint8array`) or a raw audio object (`RawAudio`)
|
|
146
160
|
* `options`: speech translation options object
|
|
@@ -150,9 +164,14 @@ Translates speech audio directly to English text.
|
|
|
150
164
|
{
|
|
151
165
|
transcript: string
|
|
152
166
|
timeline: Timeline
|
|
153
|
-
wordTimeline
|
|
167
|
+
wordTimeline?: Timeline
|
|
168
|
+
|
|
154
169
|
sourceLanguage: string
|
|
155
170
|
targetLanguage: string
|
|
171
|
+
|
|
172
|
+
inputRawAudio: RawAudio
|
|
173
|
+
isolatedRawAudio?: RawAudio
|
|
174
|
+
backgroundRawAudio?: RawAudio
|
|
156
175
|
}
|
|
157
176
|
```
|
|
158
177
|
|
|
@@ -172,8 +191,67 @@ Aligns input audio with the given translated transcript.
|
|
|
172
191
|
{
|
|
173
192
|
timeline: Timeline
|
|
174
193
|
wordTimeline: Timeline
|
|
194
|
+
|
|
195
|
+
translatedTranscript: string
|
|
196
|
+
sourceLanguage: string
|
|
197
|
+
targetLanguage: string
|
|
198
|
+
|
|
199
|
+
inputRawAudio: RawAudio
|
|
200
|
+
isolatedRawAudio?: RawAudio
|
|
201
|
+
backgroundRawAudio?: RawAudio
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### `alignTranscriptAndTranslation(input, transcript, translatedTranscript, options)`
|
|
206
|
+
|
|
207
|
+
Aligns input audio to both the native language transcript a translated one.
|
|
208
|
+
|
|
209
|
+
* `input`: can be an audio file path (`string`), encoded audio (`Buffer` or `Uint8array`) or a raw audio object (`RawAudio`)
|
|
210
|
+
* `transcript`: the transcript to align to, in the native speech language
|
|
211
|
+
* `translatedTranscript`: the translated transcript to align to
|
|
212
|
+
* `options`: transcript and translation alignment options object
|
|
213
|
+
|
|
214
|
+
#### Returns (via promise):
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
{
|
|
218
|
+
timeline: Timeline
|
|
219
|
+
wordTimeline: Timeline
|
|
220
|
+
|
|
221
|
+
translatedTimeline: Timeline
|
|
222
|
+
translatedWordTimeline: Timeline
|
|
223
|
+
|
|
175
224
|
transcript: string
|
|
176
|
-
|
|
225
|
+
translatedTranscript: string
|
|
226
|
+
|
|
227
|
+
sourceLanguage: string
|
|
228
|
+
targetLanguage: string
|
|
229
|
+
|
|
230
|
+
inputRawAudio: RawAudio
|
|
231
|
+
isolatedRawAudio?: RawAudio
|
|
232
|
+
backgroundRawAudio?: RawAudio
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### `alignTimelineTranslation(inputTimeline, translatedTranscript, options)`
|
|
237
|
+
|
|
238
|
+
Aligns given timeline with its translated transcript.
|
|
239
|
+
|
|
240
|
+
* `inputTimeline`: input timeline in the native language
|
|
241
|
+
* `translatedTranscript`: the translated transcript to align to
|
|
242
|
+
* `options`: timeline translation alignment options object
|
|
243
|
+
|
|
244
|
+
#### Returns (via promise):
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
{
|
|
248
|
+
timeline: Timeline
|
|
249
|
+
wordTimeline: Timeline
|
|
250
|
+
|
|
251
|
+
sourceLanguage?: string
|
|
252
|
+
targetLanguage: string
|
|
253
|
+
|
|
254
|
+
rawAudio?: RawAudio
|
|
177
255
|
}
|
|
178
256
|
```
|
|
179
257
|
|
package/docs/CLI.md
CHANGED
|
@@ -106,7 +106,8 @@ echogarden translate-speech speech.mp3 translation.txt --sourceLanguage=es --tar
|
|
|
106
106
|
|
|
107
107
|
## Speech-to-translated-transcript alignment
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
### Direct alignment (English target only)
|
|
110
|
+
**Task**: Given a spoken audio file and its English translated transcript, try to approximate the timing of the start and end of each translated word.
|
|
110
111
|
|
|
111
112
|
This would align the audio file `dutch-speech.mp3` with the translated transcript provided in `english-translation.txt`, and would play the synchronized result in the terminal:
|
|
112
113
|
```bash
|
|
@@ -118,6 +119,55 @@ This would align the audio file `dutch-speech.mp3` with the translated transcrip
|
|
|
118
119
|
echogarden align-translation dutch-speech.mp3 english-translation.txt result.srt result.json
|
|
119
120
|
```
|
|
120
121
|
|
|
122
|
+
### Two-stage alignment (any of 96 source and target languages, combined stages)
|
|
123
|
+
**Task**: Given a spoken audio file, its transcript, and its translated transcript, try to approximate the timing of the start and end of each translated word.
|
|
124
|
+
|
|
125
|
+
This would align the audio file `dutch-speech.mp3` with the Dutch (native language) transcript provided in `dutch-transcript.txt` and the translated transcript provided in `russian-translation.txt`, and would play the synchronized result in the terminal:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
echogarden align-transcript-and-translation dutch-speech.mp3 dutch-transcript.txt russian-translation.txt
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
This would perform the same operation but write the results to disk:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
echogarden align-transcript-and-translation dutch-speech.mp3 dutch-transcript.txt russian-translation.txt out.json out.srt
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The output would include separate files for the native language and the translation language:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
out.json
|
|
141
|
+
out.srt
|
|
142
|
+
|
|
143
|
+
out.translated.json
|
|
144
|
+
out.translated.srt
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Two-stage alignment (any of 96 source and target languages, separate stages)
|
|
148
|
+
|
|
149
|
+
**Task**: Given an audio file, its transcript, and its translated transcript, try to approximate the timing of the start and end of each translated word. Do this in two, separate stages.
|
|
150
|
+
|
|
151
|
+
This manual two-step approach allows to reuse the already-aligned transcript in the next stage, possibly for several different translation languages. The method used for alignment is otherwise identical to `align-transcript-and-translation`.
|
|
152
|
+
|
|
153
|
+
**Stage 1**:
|
|
154
|
+
|
|
155
|
+
Align the audio with its native language transcript, to produce a timeline in the native language:
|
|
156
|
+
```bash
|
|
157
|
+
echogarden align dutch-speech.mp3 dutch-transcript.txt dutch-timeline.json
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Stage 2**:
|
|
161
|
+
|
|
162
|
+
Align the resulting timeline with the target translation, and play the synchronized result in the terminal.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
echogarden align-timeline-translation dutch-timeline.json russian-transcript.txt --audio=dutch-speech.mp3
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
(`--audio` is only used for previewing the result in the terminal. Otherwise, it is not necessary)
|
|
169
|
+
|
|
170
|
+
|
|
121
171
|
## Language detection
|
|
122
172
|
|
|
123
173
|
**Task**: Given audio or textual input, try to identify which language it is spoken or written in.
|
package/docs/Engines.md
CHANGED
|
@@ -84,6 +84,30 @@ The goal here is to match (or "align") a given spoken recording in one language,
|
|
|
84
84
|
|
|
85
85
|
* `whisper`: given a spoken recording in any of the [98 languages](https://platform.openai.com/docs/guides/speech-to-text/supported-languages) supported by Whisper, and an English translation of its transcript, the translated transcript is tokenized and then decoded, in order, using a guided approach, with any multilingual Whisper model, set to its `translate` task mode. In this way, the approximate mapping between the spoken audio and each word of the translation is estimated
|
|
86
86
|
|
|
87
|
+
## Speech-to-transcript-and-translation alignment
|
|
88
|
+
|
|
89
|
+
This is a two-stage approach for translation alignment, that can accept about 100 source and target languages:
|
|
90
|
+
|
|
91
|
+
1. First, the spoken audio is aligned with the native language transcript
|
|
92
|
+
2. Then, the resulting timeline is aligned with the translated text using semantic text-to-text alignment
|
|
93
|
+
|
|
94
|
+
This approach is potentially faster than the single-stage one, because the first stage can use any alignment approach, including the default synthesis-based `dtw` engine, which is much faster than running a full speech recognition engine like Whisper.
|
|
95
|
+
|
|
96
|
+
The second stage uses a multilingual text embedding model (currently defaults to [multilingual E5](https://huggingface.co/intfloat/multilingual-e5-base)) to produce a vector representation of both the transcript and the translated text tokens. Then, it applies DTW over the two vector sequences to align the tokens of the two languages. Since this stage works on tokens only (the audio is not involved), it is generally fast.
|
|
97
|
+
|
|
98
|
+
In terms of accuracy, the two-stage approach can be more accurate than the alignment derived from the Whisper model in the one-stage approach, especially when compared to using the smaller Whisper models like `tiny` or `base`, and for source languages that Whisper generally isn't very good at, like Chinese, Japanese, and less common languages.
|
|
99
|
+
|
|
100
|
+
For a non-English target language, this approach is currently the only one that can be used.
|
|
101
|
+
|
|
102
|
+
## Timeline-to-translation alignment
|
|
103
|
+
|
|
104
|
+
Aligns a timeline with a translation of its text. Does not involve the spoken audio itself.
|
|
105
|
+
|
|
106
|
+
This is used for the second stage of the two-stage approach described above. It can also be used independently. It allows to reuse the same timeline to align with multiple translations, in different languages, without needing to redo the native-language alignment each time.
|
|
107
|
+
|
|
108
|
+
Another use case it to take a timeline produced as part of synthesized or recognized speech and then align it with one or more translations of its text.
|
|
109
|
+
|
|
110
|
+
* [`E5`](https://huggingface.co/intfloat/multilingual-e5-base) (`e5`): E5 is a multilingual text embedding model by Microsoft, supporting 100 languages. This model encodes sequences of text tokens to vectors, in such a way that words with similar meanings in different languages are mapped to similar vectors. This cross-language semantic vector encoding is then used for aligning the tokens between the timeline and the translation. Then, the translated words are mapped to the timestamps of the corresponding words in the timeline.
|
|
87
111
|
|
|
88
112
|
## Language detection
|
|
89
113
|
|
package/docs/Options.md
CHANGED
|
@@ -271,7 +271,8 @@ Applies to CLI operation: `align-translation`, API method: `alignTranslation`
|
|
|
271
271
|
|
|
272
272
|
**General**:
|
|
273
273
|
* `engine`: alignment algorithm to use, can only be `whisper`. Defaults to `whisper`
|
|
274
|
-
* `
|
|
274
|
+
* `sourceLanguage`: language code for the source audio ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `zh`, etc. Auto-detected from audio if not set
|
|
275
|
+
* `targetLanguage`: language code for the translated transcript. Can only be `en` for now. Defaults to `en`
|
|
275
276
|
* `crop`: crop to active parts using voice activity detection before starting. Defaults to `true`
|
|
276
277
|
* `isolate`: apply source separation to isolate voice before starting alignment. Defaults to `false`
|
|
277
278
|
* `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
|
|
@@ -284,6 +285,37 @@ Applies to CLI operation: `align-translation`, API method: `alignTranslation`
|
|
|
284
285
|
* `whisper.encoderProvider`: encoder ONNX execution provider. See details in recognition section above
|
|
285
286
|
* `whisper.decoderProvider`: decoder ONNX execution provider. See details in recognition section above
|
|
286
287
|
|
|
288
|
+
## Speech-to-transcript-and-translation alignment
|
|
289
|
+
|
|
290
|
+
Applies to CLI operation: `align-transcript-and-translation`, API method: `alignTranscriptAndTranslation`
|
|
291
|
+
|
|
292
|
+
**General**:
|
|
293
|
+
* `engine`: can only be `two-stage`. Defaults to `two-stage`
|
|
294
|
+
* `sourceLanguage`: language code for the source audio ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `zh`, etc. Auto-detected from audio if not set
|
|
295
|
+
* `targetLanguage`: language code for the translated transcript. Can only be `en` for now. Defaults to `en`
|
|
296
|
+
* `crop`: crop to active parts using voice activity detection before starting. Defaults to `true`
|
|
297
|
+
* `isolate`: apply source separation to isolate voice before starting alignment. Defaults to `false`
|
|
298
|
+
* `alignment`: prefix to provide options for alignment. Options detailed in section for alignment
|
|
299
|
+
* `timelineAlignment`: prefix to provide options for timeline alignment. Options detailed in section for timeline alignment
|
|
300
|
+
* `vad`: prefix to provide options for voice activity detection when `crop` is set to `true`. Options detailed in section for voice activity detection
|
|
301
|
+
* `sourceSeparation`: prefix to provide options for source separation when `isolate` is set to `true`. Options detailed in section for source separation
|
|
302
|
+
* `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
|
|
303
|
+
|
|
304
|
+
## Timeline-to-translated-text alignment
|
|
305
|
+
|
|
306
|
+
Applies to CLI operation: `align-timeline-translation`, API method: `alignTimelineTranslation`
|
|
307
|
+
|
|
308
|
+
**General**:
|
|
309
|
+
* `engine`: alignment engine to use. Can only be `e5`. Defaults to `e5`
|
|
310
|
+
* `sourceLanguage`: language code for the source timeline. Auto-detected from timeline if not set
|
|
311
|
+
* `targetLanguage`: language code for the translated transcript. Auto-detected if not set
|
|
312
|
+
* `audio`: spoken audio to play when previewing the result in the CLI (not required or used by the alignment itself). Optional
|
|
313
|
+
* `languageDetection`: prefix to provide options for language detection. Options detailed in section for text language detection
|
|
314
|
+
* `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
|
|
315
|
+
|
|
316
|
+
**E5**:
|
|
317
|
+
* `e5.model`: E5 model to use. Defaults to `e5-small-fp16` (support for additional models will be added in the future)
|
|
318
|
+
|
|
287
319
|
## Language detection
|
|
288
320
|
|
|
289
321
|
### Speech language detection
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echogarden",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.",
|
|
5
5
|
"author": "Rotem Dan",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"echogarden": "./dist/cli/CLILauncher.js"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@aws-sdk/client-polly": "^3.
|
|
59
|
-
"@aws-sdk/client-transcribe-streaming": "^3.
|
|
58
|
+
"@aws-sdk/client-polly": "^3.583.0",
|
|
59
|
+
"@aws-sdk/client-transcribe-streaming": "^3.583.0",
|
|
60
60
|
"@echogarden/espeak-ng-emscripten": "^0.1.2",
|
|
61
61
|
"@echogarden/fasttext-wasm": "^0.1.0",
|
|
62
62
|
"@echogarden/flite-wasi": "^0.1.1",
|
|
@@ -76,19 +76,19 @@
|
|
|
76
76
|
"command-exists": "^1.2.9",
|
|
77
77
|
"compromise": "^14.13.0",
|
|
78
78
|
"fs-extra": "^11.2.0",
|
|
79
|
-
"gaxios": "^6.
|
|
79
|
+
"gaxios": "^6.6.0",
|
|
80
80
|
"graceful-fs": "^4.2.11",
|
|
81
81
|
"html-escaper": "^3.0.3",
|
|
82
82
|
"html-to-text": "^9.0.5",
|
|
83
83
|
"import-meta-resolve": "^4.1.0",
|
|
84
|
-
"jieba-wasm": "^0.0
|
|
85
|
-
"jsdom": "^24.
|
|
84
|
+
"jieba-wasm": "^1.0.0",
|
|
85
|
+
"jsdom": "^24.1.0",
|
|
86
86
|
"json5": "^2.2.3",
|
|
87
87
|
"kuromoji": "^0.1.2",
|
|
88
88
|
"microsoft-cognitiveservices-speech-sdk": "^1.36.0",
|
|
89
89
|
"moving-median": "^1.0.0",
|
|
90
90
|
"msgpack-lite": "^0.1.26",
|
|
91
|
-
"onnxruntime-node": "^1.
|
|
91
|
+
"onnxruntime-node": "^1.18.0",
|
|
92
92
|
"openai": "^4.47.1",
|
|
93
93
|
"sam-js": "^0.2.1",
|
|
94
94
|
"strip-ansi": "^7.1.0",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"@types/recursive-readdir": "^2.2.4",
|
|
125
125
|
"@types/tar": "^6.1.13",
|
|
126
126
|
"@types/ws": "^8.5.10",
|
|
127
|
-
"ts-json-schema-generator": "^2.
|
|
127
|
+
"ts-json-schema-generator": "^2.2.0",
|
|
128
128
|
"typescript": "^5.4.5"
|
|
129
129
|
}
|
|
130
130
|
}
|