echogarden 3.3.0 → 3.4.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/docs/Options.md CHANGED
@@ -3,6 +3,7 @@
3
3
  Here's a detailed reference for all the options accepted by the Echogarden CLI and API.
4
4
 
5
5
  **Related pages**:
6
+
6
7
  * [List of all supported engines](Engines.md)
7
8
  * [Quick guide to the command line interface](CLI.md)
8
9
  * [Node.js API reference](API.md)
@@ -12,6 +13,7 @@ Here's a detailed reference for all the options accepted by the Echogarden CLI a
12
13
  Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`, API method: `synthesize`
13
14
 
14
15
  **General**:
16
+
15
17
  * `engine`: identifier of the synthesis engine to use. Can be `kokoro`, `vits`, `pico`, `flite`, `gnuspeech`, `espeak`, `sam`, `sapi`, `msspeech`, `coqui-server`, `google-cloud`, `microsoft-azure`, `amazon-polly`, `openai-cloud`, `elevenlabs`, `google-translate` or `microsoft-edge` (see [the engines documentation page](Engines.md) for more detailed information about each engine). Auto-selected if not set
16
18
  * `language`: language code, can be ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `en-US`, `pt-BR`, etc. [ISO 639-3](https://en.wikipedia.org/wiki/ISO_639-3), or a plain language name like `french`. Auto-detected if not set
17
19
  * `voice`: name of the voice to use. Can be a search string. Auto-selected if not set
@@ -29,10 +31,12 @@ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`
29
31
  * `languageDetection`: prefix to provide options for text language detection. Options detailed in section for text language detection
30
32
 
31
33
  **Plain text processing**:
34
+
32
35
  * `plainText.paragraphBreaks`: split to paragraphs based on single (`single`), or double (`double`) line breaks. Defaults to `double`
33
36
  * `plainText.whitespace`: determines how to process whitespace within paragraphs. Can be `preserve` (leave as is), `removeLineBreaks` (convert line breaks to spaces) or `collapse` (convert runs of whitespace characters, including line breaks, to a single space character). Defaults to `preserve`
34
37
 
35
38
  **Post-processing**:
39
+
36
40
  * `postProcessing.normalizeAudio`: should normalize output audio. Defaults to `true`
37
41
  * `postProcessing.targetPeak`: target peak (decibels) for normalization. Defaults to `-3`
38
42
  * `postProcessing.maxGainIncrease`: max gain increase (decibels) when performing normalization. Defaults to `30`
@@ -42,55 +46,67 @@ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`
42
46
  * `postProcessing.rubberband`: prefix for RubberBand options (TODO: document options)
43
47
 
44
48
  **Output audio format**:
49
+
45
50
  * `outputAudioFormat.codec`: Codec identifier (**Note**: API only. CLI uses file extensions instead), can be `wav`, `mp3`, `opus`, `m4a`, `ogg`, `flac`. Leaving as `undefined` would return a raw audio structure (see more information at the [API documentation](API.md]). Optional
46
- * `outputAudioFormat.bitrate`: Custom bitrate for encoding, applies only to `mp3`, `opus`, `m4a`, `ogg`. By default, bitrates are selected between 48Kbps and 64Kbps, to provide a good speech quality while minimizing file size. Optional
51
+ * `outputAudioFormat.bitrate`: Custom bitrate for encoding, applies only to `mp3`, `opus`, `m4a`, `ogg`. By default, bitrates are selected between 48Kbps and 64Kbps, to provide a good speech quality while minimizing file size. Optional
47
52
 
48
53
  **Kokoro**:
54
+
49
55
  * `kokoro.model`: model variant to use. Can be `82m-v1.0-fp32` or `82m-v1.0-quantized`. **Note**: the quantized model, while having lower memory usage, is significantly slower than the non-quantized (FP32) one. Defaults to `v1.0-fp32`
50
56
  * `kokoro.provider`: ONNX execution provider to use. Can be `cpu`, `dml` (Windows only, uses [DirectML](https://microsoft.github.io/DirectML/)-based GPU acceleration), or `cuda` (Linux only, requires system-wide installation of CUDA and cuDNN SDKs, see [this guide](./CUDA.md) for more detailed information). **Note**: `dml` provider (DirectML) seems to currently fail on inference. The cause for this error is [still under investigation](https://github.com/echogarden-project/echogarden/issues/94). Defaults to `cpu`
51
57
 
52
58
  **VITS**:
59
+
53
60
  * `vits.speakerId`: speaker ID, for VITS models that support multiple speakers. Defaults to `0`
54
61
  * `vits.provider`: ONNX execution provider to use. Can be `cpu`, `dml` (Windows only, uses [DirectML](https://microsoft.github.io/DirectML/)-based GPU acceleration), or `cuda` (Linux only, requires system-wide installation of CUDA and cuDNN SDKs, see [this guide](./CUDA.md) for more detailed information). Using GPU acceleration for VITS may or may not be faster than CPU, depending on your hardware. Defaults to `cpu`
55
62
 
56
63
  **eSpeak**:
64
+
57
65
  * `espeak.rate`: speech rate, in eSpeak units. Overrides `speed` when set
58
66
  * `espeak.pitch`: pitch, in eSpeak units. Overrides `pitch` when set
59
67
  * `espeak.pitchRange`: pitch range, in eSpeak units. Overrides `pitchVariation` when set
60
68
  * `espeak.useKlatt`: use the Klatt synthesis method. Defaults to `false`
61
69
 
62
70
  **SAM**:
71
+
63
72
  * `sam.pitch`: pitch value, between `0`..`255`. Overrides `pitch` when set
64
73
  * `sam.speed`: speed value, between `0`..`255`. Overrides `speed` when set
65
74
  * `sam.mouth`: mouth value, between `0`..`255` (defaults to `128`)
66
75
  * `sam.throat`: throat value, between `0`..`255` (defaults to `128`)
67
76
 
68
77
  **Gnuspeech**
78
+
69
79
  * `gnuspeech.tempo`: controls speech rate. Defaults to the value of the general `speed` option (`1.0` by default)
70
80
  * `gnuspeech.controlRate`: control rate. Defaults to `250.0`
71
81
 
72
82
  **SAPI**:
83
+
73
84
  * `sapi.rate`: SAPI speech rate, in its native units. An integer number between `-10` and `10`. Setting `speed` would apply time stretching instead. The two options can be used together
74
85
 
75
86
  **Microsoft Speech Platform**:
87
+
76
88
  * `msspeech.rate`: same units and effects as the SAPI speech rate
77
89
 
78
90
  **Coqui Server**:
91
+
79
92
  * `coquiServer.serverUrl`: server URL
80
93
  * `coquiServer.speakerId`: speaker ID (if applicable)
81
94
 
82
95
  **Google Cloud**:
96
+
83
97
  * `googleCloud.apiKey`: API key (required)
84
98
  * `googleCloud.pitchDeltaSemitones`: pitch delta in semitones. Overrides `pitch` when set
85
99
  * `googleCloud.customVoice.model`: name of custom voice
86
100
  * `googleCloud.customVoice.reportedUsage`: reported usage of custom voice
87
101
 
88
102
  **Azure Cognitive Services**:
103
+
89
104
  * `microsoftAzure.subscriptionKey`: subscription key (required)
90
105
  * `microsoftAzure.serviceRegion`: service region (required)
91
106
  * `microsoftAzure.pitchDeltaHz`: pitch delta in Hz. Overrides `pitch` when set
92
107
 
93
108
  **Amazon Polly**:
109
+
94
110
  * `amazonPolly.region`: region (required)
95
111
  * `amazonPolly.accessKeyId`: access key ID (required)
96
112
  * `amazonPolly.secretAccessKey`: secret access key (required)
@@ -98,6 +114,7 @@ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`
98
114
  * `amazonPolly.lexiconNames`: an array of lexicon names. Optional
99
115
 
100
116
  **OpenAI Cloud**:
117
+
101
118
  * `openAICloud.apiKey`: API key (required)
102
119
  * `openAICloud.organization`: organization identifier. Optional
103
120
  * `openAICloud.baseURL`: override the default base URL for the API. Optional
@@ -107,6 +124,7 @@ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`
107
124
  * `openAICloud.maxRetries`: maximum retries on failure. Defaults to 10
108
125
 
109
126
  **Elevenlabs**:
127
+
110
128
  * `elevenLabs.apiKey`: API key (required)
111
129
  * `elevenLabs.modelId`: model ID. See [this page](https://elevenlabs.io/docs/models) for an up-to-date list of available models. Defaults to `eleven_multilingual_v2`
112
130
  * `elevenLabs.stability`: stability. Defaults to `0.5`
@@ -116,12 +134,15 @@ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`
116
134
  * `elevenLabs.seed`: seed for generation. Integer value that can make the generation predictable. Optional
117
135
 
118
136
  **Deepgram**:
137
+
119
138
  * `deepgram.apiKey`: API key (required)
120
139
 
121
140
  **Google Translate**:
141
+
122
142
  * `googleTranslate.tld`: top level domain to connect to. Can change the dialect for a small number of voices. For example `us` gives American English for `en`, while `com` gives British English for `en`. Defaults to `us`
123
143
 
124
144
  **Microsoft Edge**:
145
+
125
146
  * `microsoftEdge.trustedClientToken`: trusted client token (required). A special token required to use the service
126
147
  * `microsoftEdge.pitchDeltaHz`: pitch delta in Hz. Overrides `pitch` when set
127
148
 
@@ -130,11 +151,13 @@ Applies to CLI operations: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`
130
151
  Applies to CLI operation: `list-voices`, API method: `requestVoiceList`
131
152
 
132
153
  **General**:
154
+
133
155
  * `language`: language code to filter by. Optional
134
156
  * `voice`: name or name pattern to filter by. Optional
135
157
  * `voiceGender`: gender to filter by. Optional
136
158
 
137
159
  Also accepted are the following engine-specific options that may be required in order to retrieve the voice list:
160
+
138
161
  * `googleCloud.apiKey`
139
162
  * `microsoftAzure.subscriptionKey`, `microsoftAzure.serviceRegion`
140
163
  * `amazonPolly.region`, `amazonPolly.accessKeyId`, `amazonPolly.secretAccessKey`
@@ -146,6 +169,7 @@ Also accepted are the following engine-specific options that may be required in
146
169
  Applies to CLI operation: `transcribe`, API method: `recognize`
147
170
 
148
171
  **General**:
172
+
149
173
  * `engine`: identifier of the recognition engine to use, can be `whisper`, `whisper.cpp`, `google-cloud`, `microsoft-azure`, `amazon-transcribe`, `openai-cloud`, `deepgram` (see [the full engine list](Engines.md) for more detailed information)
150
174
  * `language`: language code ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)) for the audio, like `en`, `fr`, `de`. Auto-detected if not set
151
175
  * `crop`: crop to active parts using voice activity detection before starting recognition. Defaults to `true`
@@ -157,7 +181,8 @@ Applies to CLI operation: `transcribe`, API method: `recognize`
157
181
  * `sourceSeparation`: prefix to provide options for source separation when `isolate` is set to `true`. Options detailed in section for source separation
158
182
 
159
183
  **Whisper**:
160
- * `whisper.model`: selects which Whisper model to use. Can be `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large` (same as `large-v2`), `large-v1`, `large-v2`, `large-v3`, `large-v3-turbo`. The following quantized models are also supported: `tiny-q5_1`,`tiny-q8_0`, `tiny.en-q5_1`, `tiny.en-q8_0`,`base-q5_1`, `base-q8_0`, `base.en-q5_1`, `base.en-q8_0`,`small-q5_1`, `small.en-q5_1`, `small.en-q8_0`,`medium-q5_0`, `medium.en-q5_0`, `medium.en-q8_0`, `large-v2-q5_0`, `large-v2-q8_0`, `large-v3-q5_0`, `large-v3-turbo-q5_0`, `large-v3-turbo-q8_0`. Defaults to `base` or `base.en` for English
184
+
185
+ * `whisper.model`: selects which Whisper model to use. Can be `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large` (same as `large-v2`), `large-v1`, `large-v2`, `large-v3`, `large-v3-turbo`. The following quantized models are also supported: `tiny-q5_1`,`tiny-q8_0`, `tiny.en-q5_1`, `tiny.en-q8_0`,`base-q5_1`, `base-q8_0`, `base.en-q5_1`, `base.en-q8_0`,`small-q5_1`, `small.en-q5_1`, `small.en-q8_0`,`medium-q5_0`, `medium.en-q5_0`, `medium.en-q8_0`, `large-v2-q5_0`, `large-v2-q8_0`, `large-v3-q5_0`, `large-v3-turbo-q5_0`, `large-v3-turbo-q8_0`. Defaults to `base` or `base.en` for English
161
186
  * `whisper.enableGPU`: enable GPU processing. Setting to `true` will try to use a CUDA build, if available for your architecture (currently CUDA 12.4 builds are available for Windows x64 and Linux x64).
162
187
  * `whisper.threadCount`: number of threads to use, defaults to `4`
163
188
  * `whisper.gpuDeviceIndex`: GPU device index (if GPU is enabled), defaults to `0`
@@ -174,6 +199,7 @@ Applies to CLI operation: `transcribe`, API method: `recognize`
174
199
  * `whisper.seed`: provide a custom random seed for token selection when temperature is greater than 0. Uses a constant seed by default to ensure reproducibility
175
200
 
176
201
  **Whisper.cpp CLI**:
202
+
177
203
  * `whisperCpp.model`: selects which `whisper.cpp` model to use. Model identifiers and defaults are identical to those in the `whisper` engine
178
204
  * `whisperCpp.executablePath`: a path to a custom `whisper.cpp` `whisper-cli` executable (currently required for macOS)
179
205
  * `whisperCpp.build`: type of `whisper.cpp` build to use. Can be set to `cpu`, `cublas-12.4.0` or `custom`. By default, builds are auto-selected and downloaded for Windows x64 and Linux x64 (for both `cpu` and `cublas-12.4.0`). The Linux CUDA build requires a [system-wide installation of CUDA Toolkit 12.4+](https://developer.nvidia.com/cuda-downloads), available on path. Using other builds requires providing a custom `executablePath`, which will automatically set this option to `custom`
@@ -191,6 +217,7 @@ Applies to CLI operation: `transcribe`, API method: `recognize`
191
217
  * `whisperCpp.verbose`: show all CLI messages during execution. Defaults to `false`
192
218
 
193
219
  **Google Cloud**:
220
+
194
221
  * `googleCloud.apiKey`: Google Cloud API key (required)
195
222
  * `googleCloud.alternativeLanguageCodes`: An array of alternative language codes. Optional
196
223
  * `googleCloud.profanityFilter`: censor profanity. Defaults to `false`
@@ -198,15 +225,18 @@ Applies to CLI operation: `transcribe`, API method: `recognize`
198
225
  * `googleCloud.useEnhancedModel`: use enhanced model. Defaults to `true`
199
226
 
200
227
  **Azure Cognitive Services**:
228
+
201
229
  * `microsoftAzure.subscriptionKey`: subscription key (required)
202
230
  * `microsoftAzure.serviceRegion`: service region (required)
203
231
 
204
232
  **Amazon Transcribe**:
233
+
205
234
  * `amazonTranscribe.region`: region (required)
206
235
  * `amazonTranscribe.accessKeyId`: access key ID (required)
207
236
  * `amazonTranscribe.secretAccessKey`: secret access key (required)
208
237
 
209
238
  **OpenAI Cloud**:
239
+
210
240
  * `openAICloud.apiKey`: API key (required)
211
241
  * `openAICloud.model`: model to use. When using the default provider (OpenAI), can be `whisper-1`, `gpt-4o-mini-transcribe` or `gpt-4o-transcribe`. For a custom provider, like Groq, see its documentation
212
242
  * `openAICloud.organization`: organization identifier. Optional
@@ -218,6 +248,7 @@ Applies to CLI operation: `transcribe`, API method: `recognize`
218
248
  * `openAICloud.requestWordTimestamps`: request word timestamps from the server. Defaults to `true` for the default OpenAI endpoint, and `false` if a custom one is set using `baseURL`
219
249
 
220
250
  **Deepgram**:
251
+
221
252
  * `deepgram.apiKey`: API key (required)
222
253
  * `deepgram.model`: model to use. Can be any model the server supports, like `nova-3`, `nova-2`, `nova`, `enhanced`, `base` or `whisper` (see model list [here](https://developers.deepgram.com/docs/model)). Defaults to `nova-3`
223
254
  * `deepgram.punctuate`: request to add punctuation and capitalization to the resulting transcript. Defaults to `true`
@@ -227,6 +258,7 @@ Applies to CLI operation: `transcribe`, API method: `recognize`
227
258
  Applies to CLI operation: `align`, API method: `align`
228
259
 
229
260
  **General**:
261
+
230
262
  * `engine`: alignment algorithm to use, can be `dtw`, `dtw-ra` or `whisper`. Defaults to `dtw`
231
263
  * `language`: language code for the audio and transcript ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `en-US`, `pt-BR`. Auto-detected from transcript if not set
232
264
  * `crop`: crop to active parts using voice activity detection before starting. Defaults to `true`
@@ -237,14 +269,17 @@ Applies to CLI operation: `align`, API method: `align`
237
269
  * `sourceSeparation`: prefix to provide options for source separation when `isolate` is set to `true`. Options detailed in section for source separation
238
270
 
239
271
  **Plain text processing**:
272
+
240
273
  * `plainText.paragraphBreaks`: split transcript to paragraphs based on single (`single`), or double (`double`) line breaks. Defaults to `double`
241
274
  * `plainText.whitespace`: determines how to process whitespace within transcript paragraphs. Can be `preserve` (leave as is), `removeLineBreaks` (convert line breaks to spaces) or `collapse` (convert runs of whitespace characters, including line breaks, to a single space character). Defaults to `preserve`
242
275
 
243
276
  **DTW**:
277
+
244
278
  * `dtw.granularity`: adjusts the MFCC frame width and hop size based on the profile selected. Can be set to either `xx-low` (400ms width, 160ms hop), `x-low` (200ms width, 80ms hop), `low` (100ms width, 40ms hop), `medium` (50ms width, 20ms hop), `high` (25ms width, 10ms hop), `x-high` (20ms width, 5ms hop). For multi-pass processing, multiple granularities can be provided, like `dtw.granularity=['xx-low','medium']`. Auto-selected by default.
245
- * `dtw.windowDuration`: sets the maximum duration of the Sakoe-Chiba window when performing DTW alignment. The value can be specified in seconds, like `240`, or as an integer percentage (formatted like `15%`), relative to the total duration of the source audio. The estimated memory requirement is shown in the log before alignment starts. Recommended to be set to at least 10% - 20% of total audio duration. For multi-pass processing, multiple durations can be provided (which can mix absolute and relative values), like `dtw.windowDuration=['15%',20]`. Auto-selected by default
279
+ * `dtw.windowDuration`: sets the maximum duration of the Sakoe-Chiba window when performing DTW alignment. The value can be specified in seconds, like `240`, or as an integer percentage (formatted like `15%`), relative to the total duration of the source audio. The estimated memory requirement is shown in the log before alignment starts. Recommended to be set to at least 10% - 20% of total audio duration. For multi-pass processing, multiple durations can be provided (which can mix absolute and relative values), like `dtw.windowDuration=['15%',20]`. Auto-selected by default
246
280
 
247
281
  **DTW-RA**:
282
+
248
283
  * `recognition`: prefix to provide recognition options when using `dtw-ra` method, for example: setting `recognition.engine = whisper` and `recognition.whisper.model = base.en`
249
284
  * `dtw.phoneAlignmentMethod`: algorithm to use when aligning phones: can either be set to `dtw` or `interpolation`. Defaults to `dtw`
250
285
 
@@ -265,6 +300,7 @@ Applies to the `whisper` engine only. To provide Whisper options for `dtw-ra`, u
265
300
  Applies to CLI operation: `translate-speech`, API method: `translateSpeech`
266
301
 
267
302
  **General**:
303
+
268
304
  * `engine`: Can be `whisper`, `whisper.cpp` or `openai-cloud`. Defaults to `whisper`
269
305
  * `sourceLanguage`: the source language code for the input speech. Auto-detected if not set
270
306
  * `targetLanguage`: the target language code for the output speech. Only `en` (English) supported by the `whisper` engine. Optional
@@ -291,6 +327,7 @@ Applies to CLI operation: `translate-speech`, API method: `translateSpeech`
291
327
  Applies to CLI operation: `translate-text`, API method: `translateText`
292
328
 
293
329
  **General**:
330
+
294
331
  * `engine`: only `google-translate` supported
295
332
  * `sourceLanguage`: the source language code for the input text. Auto-detected if not set
296
333
  * `targetLanguage`: the target language code for the output text. Required
@@ -298,6 +335,7 @@ Applies to CLI operation: `translate-text`, API method: `translateText`
298
335
  * `plainText`: plain text processing options. Optional
299
336
 
300
337
  **Google Translate**:
338
+
301
339
  * `googleTranslate.tld`: top-level domain to request from. Defaults to `com`
302
340
  * `googleTranslate.maxCharactersPerPart`: maximum number of characters in each part requested from the server. Defaults to 2000
303
341
 
@@ -306,6 +344,7 @@ Applies to CLI operation: `translate-text`, API method: `translateText`
306
344
  Applies to CLI operation: `align-translation`, API method: `alignTranslation`
307
345
 
308
346
  **General**:
347
+
309
348
  * `engine`: alignment algorithm to use, can only be `whisper`. Defaults to `whisper`
310
349
  * `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
311
350
  * `targetLanguage`: language code for the translated transcript. Can only be `en` for now. Defaults to `en`
@@ -316,6 +355,7 @@ Applies to CLI operation: `align-translation`, API method: `alignTranslation`
316
355
  * `sourceSeparation`: prefix to provide options for source separation when `isolate` is set to `true`. Options detailed in section for source separation
317
356
 
318
357
  **Whisper**:
358
+
319
359
  * `whisper.model`: Whisper model to use. Only multilingual models can be used. Defaults to `base`
320
360
  * `whisper.enableGPU`: enable whisper GPU build. See details in recognition section above
321
361
  * `whisper.threadCount`: number of threads to use, defaults to `4`
@@ -327,6 +367,7 @@ Applies to CLI operation: `align-translation`, API method: `alignTranslation`
327
367
  Applies to CLI operation: `align-transcript-and-translation`, API method: `alignTranscriptAndTranslation`
328
368
 
329
369
  **General**:
370
+
330
371
  * `engine`: can only be `two-stage`. Defaults to `two-stage`
331
372
  * `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
332
373
  * `targetLanguage`: language code for the translated transcript. Can only be `en` for now. Defaults to `en`
@@ -343,6 +384,7 @@ Applies to CLI operation: `align-transcript-and-translation`, API method: `align
343
384
  Applies to CLI operation: `align-timeline-translation`, API method: `alignTimelineTranslation`
344
385
 
345
386
  **General**:
387
+
346
388
  * `engine`: alignment engine to use. Can only be `e5`. Defaults to `e5`
347
389
  * `sourceLanguage`: language code for the source timeline. Auto-detected from timeline if not set
348
390
  * `targetLanguage`: language code for the translated transcript. Auto-detected if not set
@@ -351,6 +393,7 @@ Applies to CLI operation: `align-timeline-translation`, API method: `alignTimeli
351
393
  * `subtitles`: prefix to provide options for subtitles. Options detailed in section for subtitles
352
394
 
353
395
  **E5**:
396
+
354
397
  * `e5.model`: E5 model to use. Defaults to `e5-small-fp16` (support for additional models will be added in the future)
355
398
 
356
399
  ## Language detection
@@ -360,6 +403,7 @@ Applies to CLI operation: `align-timeline-translation`, API method: `alignTimeli
360
403
  Applies to CLI operation: `detect-speech-langauge`, API method: `detectSpeechLangauge`
361
404
 
362
405
  **General**:
406
+
363
407
  * `engine`: `whisper` or `silero`. Defaults to `whisper`
364
408
  * `defaultLanguage`: language to fallback to when confidence for top candidate of is low. Defaults to `en`
365
409
  * `fallbackThresholdProbability`: confidence threshold to cause fallback. Defaults to `0.05`
@@ -367,6 +411,7 @@ Applies to CLI operation: `detect-speech-langauge`, API method: `detectSpeechLan
367
411
  * `vad`: prefix to provide options for voice activity detection when `crop` is set to `true`. Options detailed in section for voice activity detection
368
412
 
369
413
  **Whisper**:
414
+
370
415
  * `whisper.model`: Whisper model to use. See model list in the recognition section. Defaults to `tiny`
371
416
  * `whisper.enableGPU`: enable whisper GPU build. See details in recognition section above
372
417
  * `whisper.threadCount`: number of threads to use, defaults to `4`
@@ -374,6 +419,7 @@ Applies to CLI operation: `detect-speech-langauge`, API method: `detectSpeechLan
374
419
  * `whisper.temperature`: impacts the distribution of candidate languages when applying the softmax function to compute language probabilities over the model output. Higher temperature causes the distribution to be more uniform, while lower temperature causes it to be more strongly weighted towards the best scoring candidates. Defaults to `1.0`
375
420
 
376
421
  **Silero**:
422
+
377
423
  * `silero.provider`: ONNX execution provider to use. Can be `cpu`, `dml` (Windows only, uses [DirectML](https://microsoft.github.io/DirectML/)-based GPU acceleration), or `cuda` (Linux only, requires system-wide installation of CUDA and cuDNN SDKs, see [this guide](./CUDA.md) for more detailed information). Using GPU may be faster, but the initialization overhead is larger. **Note**: `dml` provider seems to be unstable at the moment for this model. Defaults to `cpu`
378
424
 
379
425
  ### Text language detection
@@ -381,6 +427,7 @@ Applies to CLI operation: `detect-speech-langauge`, API method: `detectSpeechLan
381
427
  Applies to CLI operation: `detect-text-langauge`, API method: `detectTextLangauge`
382
428
 
383
429
  **General**:
430
+
384
431
  * `engine`: `tinyld` or `fasttext`. Defaults to `tinyld`
385
432
  * `defaultLanguage`: language to fallback to when confidence for top candidate is low. Defaults to `en`
386
433
  * `fallbackThresholdProbability`: confidence threshold to cause fallback. Defaults to `0.05`
@@ -390,14 +437,17 @@ Applies to CLI operation: `detect-text-langauge`, API method: `detectTextLangaug
390
437
  Applies to CLI operation: `detect-voice-activity`, API method: `detectVoiceActivity`
391
438
 
392
439
  **General**:
440
+
393
441
  * `engine`: VAD engine to use. Can be `webrtc`, `silero`, `rnnoise`, or `adaptive-gate`. Defaults to `silero`
394
442
  * `activityThreshold`: minimum predicted probability for determining a frame as having speech activity. Defaults to `0.5`
395
443
 
396
444
  **WebRTC**:
445
+
397
446
  * `webrtc.frameDuration`: WebRTC frame duration (ms). Can be `10`, `20` or `30`. Defaults to `30`
398
447
  * `webrtc.mode`: WebRTC mode (aggressiveness). Can be `0`, `1`, `2` or `3`. Defaults to `1`
399
448
 
400
449
  **Silero**:
450
+
401
451
  * `silero.frameDuration`: Silero frame duration (ms). Can be `30`, `60` or `90`. Defaults to `90`
402
452
  * `silero.provider`: ONNX provider to use. Can be `cpu`, `dml` (Windows only, uses [DirectML](https://microsoft.github.io/DirectML/)-based GPU acceleration), or `cuda` (Linux only, requires system-wide installation of CUDA and cuDNN SDKs, see [this guide](./CUDA.md) for more detailed information). Using GPU is likely to be slower than CPU due to inference being independently executed on each audio frame. Defaults to `cpu` (recommended)
403
453
 
@@ -406,15 +456,18 @@ Applies to CLI operation: `detect-voice-activity`, API method: `detectVoiceActiv
406
456
  Applies to CLI operation: `denoise`, API method: `denoise`
407
457
 
408
458
  **General**:
459
+
409
460
  * `engine`: `rnnoise` or `nsnet2`. Defaults to `rnnoise`
410
461
 
411
462
  **Post-processing**:
463
+
412
464
  * `postProcessing.normalizeAudio`: should normalize output audio. Defaults to `false`
413
465
  * `postProcessing.targetPeak`: target peak (decibels) for normalization. Defaults to `-3`
414
466
  * `postProcessing.maxGainIncrease`: max gain increase (decibels) when performing normalization. Defaults to `30`
415
467
  * `postProcessing.dryMixGain`: gain (decibels) of dry (original) signal to mix back to the denoised (wet) signal. Defaults to `-100`
416
468
 
417
469
  **NSNet2**:
470
+
418
471
  * `nsnet2.model`: can be `baseline-16khz` or `baseline-48khz`. Defaults to `baseline-48khz`
419
472
  * `nsnet2.provider`: ONNX execution provider. Can be `cpu`, `dml` or `cuda` (**Note**: `dml` provider seems to fail with these models). Defaults to `cpu`
420
473
  * `maxAttenuation`: maximum amount of attenuation, in decibels, applied to an FFT bin when filtering the audio frames. Defaults to `30`
@@ -455,7 +508,6 @@ On the CLI, global options can be used with any operation. To set global options
455
508
  * `packageBaseURL`: sets a custom base URL for the remote package repository used to download missing packages. Default is `https://huggingface.co/echogarden/echogarden-packages/resolve/main/`. If `huggingface.co` isn't accessible in your location, you can set to use a mirror by changing `huggingface.co` to an alternative domain like `hf-mirror.com`
456
509
  * `logLevel`: adjusts the default amount of log messages shown during processing. Possible values: `silent`, `output`, `error`, `warning`, `info`, `trace`. Defaults to `info`
457
510
 
458
-
459
511
  ## CLI options
460
512
 
461
513
  These options are for the CLI only.
package/docs/Releases.md CHANGED
@@ -7,6 +7,7 @@ For releases after `1.0.0`, see the [GitHub releases page](https://github.com/ec
7
7
  ## `1.0.0` (April 12, 2024)
8
8
 
9
9
  **New features**:
10
+
10
11
  * Add support for [`whisper.cpp`](https://github.com/ggerganov/whisper.cpp), a C++ port of OpenAI's Whisper speech recognition architecture. It is faster than the integrated `whisper` engine, supports large models, and GPU processing. It can now be used for recognition, speech translation and alignment (via `dtw-ra`), though its word timestamps are less accurate than the integrated `whisper` engine.
11
12
  * Add the [MDX-NET](https://github.com/kuielab/mdx-net/) source separation model, enabling vocal tracks to be extracted from music and speech audio using the new `isolate` operation
12
13
  * Add support for OpenAI cloud platform's [speech recognition and translation services](https://platform.openai.com/docs/guides/speech-to-text)
@@ -18,17 +19,19 @@ For releases after `1.0.0`, see the [GitHub releases page](https://github.com/ec
18
19
  * Expose more options for the Elevenlabs engine
19
20
 
20
21
  **Enhancements**:
22
+
21
23
  * `detect-voice-activity` now also outputs the cropped voice when an audio file is given as output, with `.cropped` suffix added
22
24
  * Improved word segmentation of whisper engine. Words spanning multiple recognized time segments are now split. Word timestamp ranges don't overlap non-speech sections.
23
25
  * Whisper and Whisper.cpp outputs now include timestamps for individual recognized tokens
24
26
 
25
27
  **Behavioral and breaking changes**:
28
+
26
29
  * Minimal required node version changed to `18.0.0`
27
30
  * All recognition, alignment, translation and language recognition operations first apply the new adaptive gate VAD (can be changed to any other VAD engine via the `vad.` option prefix) and remove any sections that are not identified as containing voice, before starting processing. This should improve results in most cases, and reduce processing time
28
31
  * To reduce Whisper hallucinations and repetition loops, these changes were made:
29
- * Pre-cropping by default can significantly help with reducing hallucinations, giving the model less "empty space" to hallucinate on
30
- * Enable new token-level repetition suppression (`suppressRepetition = true`) during decoding
31
- * Disable decoding of timestamp tokens by default (`decodeTimestampTokens = false`), since more accurate timing is already extracted via cross-attention weight alignment. For unclear reasons, this can significantly reduce the occurrence of token repetition loops, and increases word timestamp accuracy. However, there are cases where this causes the model to end a part prematurely, especially in singing and less speech-like voice segments. In those cases the it can be enabled with `decodeTimestampTokens = true`
32
+ * Pre-cropping by default can significantly help with reducing hallucinations, giving the model less "empty space" to hallucinate on
33
+ * Enable new token-level repetition suppression (`suppressRepetition = true`) during decoding
34
+ * Disable decoding of timestamp tokens by default (`decodeTimestampTokens = false`), since more accurate timing is already extracted via cross-attention weight alignment. For unclear reasons, this can significantly reduce the occurrence of token repetition loops, and increases word timestamp accuracy. However, there are cases where this causes the model to end a part prematurely, especially in singing and less speech-like voice segments. In those cases the it can be enabled with `decodeTimestampTokens = true`
32
35
  * When `transcribe`, `align` or `translate-speech` operations are run with `--isolate` enabled, they will output the isolated part in `some-output-file.isolated.wav` and background part (isolated subtracted from original) in `some-output-file.background.wav` (any supported codec other than `wav` can be used - this is just an example)
33
36
  * VAD operations now return a timeline including only the active sections, labeled as `active`
34
37
  * When the specified language is not English, but an `.en` Whisper model was specified, a warning would be shown, and the model will be automatically switched to the corresponding multilingual model (omitting the `.en`), instead of producing an error
@@ -40,6 +43,7 @@ For releases after `1.0.0`, see the [GitHub releases page](https://github.com/ec
40
43
  * `dryMixGainDb` denoising option renamed to `dryMixGain`
41
44
 
42
45
  **Fixes**:
46
+
43
47
  * Integrated `whisper` engine now uses `tiktoken` to tokenize text, which produces near identical tokenization compared to the official Python implementation. This fixes issues with decoding Chinese characters, correctly encoding prompts, and several other languages with characters that span multiple tokens
44
48
  * Fix voice language lists for multilingual voices in Elevenlabs TTS engine
45
49
  * Fix runtime error with `rnnoise` when used as VAD engine
@@ -53,6 +57,7 @@ For releases after `1.0.0`, see the [GitHub releases page](https://github.com/ec
53
57
  * Various other fixes
54
58
 
55
59
  **Documentation**:
60
+
56
61
  * Add new [release notes](./Releases.md) page. Releases before `1.0.x` were retroactively documented based on commit history (may not exactly detail all historical changes)
57
62
  * Add new [development page](./Development.md) with a quick guide for setting up a development environment to make changes to the Echogarden codebase
58
63
  * Options reference page reorganized and updated with some missing information
@@ -60,24 +65,27 @@ For releases after `1.0.0`, see the [GitHub releases page](https://github.com/ec
60
65
  ## `0.12.x` (March 16, 2024)
61
66
 
62
67
  **New features**:
68
+
63
69
  * Add global options support to API
64
70
  * Add updated `ffmpeg` internal packages for many platforms, including pre-signed binaries for macOS
65
71
 
66
72
  **Enhancements**:
67
73
 
68
74
  **Fixes**:
75
+
69
76
  * Fix issue with Polish TTS in eSpeak NG
70
77
  * Fix warning about `punycode` module in the CLI
71
78
 
72
79
  **Other**:
73
- * Include `package-lock.json` in repository
74
80
 
81
+ * Include `package-lock.json` in repository
75
82
 
76
83
  ## `0.11.x` (August 17, 2023)
77
84
 
78
85
  Many features, enhancements, and fixes were incrementally added over the span of 7 months, up to March 2024.
79
86
 
80
87
  **New features**:
88
+
81
89
  * Partial rewrite of subtitle generation methods. Adds many features and options
82
90
  * Expose subtitle methods to API
83
91
  * Add support for multi-pass (AKA hierarchical) DTW alignment
@@ -85,72 +93,82 @@ Many features, enhancements, and fixes were incrementally added over the span of
85
93
  * Add support for Klatt synthesis in `espeak` engine
86
94
 
87
95
  **Enhancements**:
96
+
88
97
  * Adds a total of 14 new VITS voices
89
98
  * Retry on failure for `microsoft-edge` and `google-translate` TTS engines
90
99
 
91
100
  **Fixes**:
101
+
92
102
  * Don't error when empty audio is returned in `microsoft-edge` response
93
103
  * Fix audio playback in macOS
94
104
  * Many other fixes
95
105
 
96
-
97
106
  ## `0.10.x` (August 2, 2023)
98
107
 
99
108
  **New features**:
109
+
100
110
  * Add developer and server APIs, allowing the package to be used as a library or server
101
111
  * Add granularity options to DTW
102
112
  * Add Linux SoX package
103
113
 
104
114
  **Enhancements**:
115
+
105
116
  * Adds 7 new VITS voices
106
117
 
107
118
  **Fixes**:
108
- * Many fixes
109
119
 
120
+ * Many fixes
110
121
 
111
122
  ## `0.9.x` (July 29, 2023)
112
123
 
113
124
  **New features**:
125
+
114
126
  * Add text offsets to timeline
115
127
  * Include segments and sentences in recognition and speech translation timelines
116
128
  * Improve voice information in Elevenlabs engine
117
129
 
118
130
  **Behavioral changes**:
131
+
119
132
  * Set `en_GB-alan-low` as default `en-GB` VITS voice, since `danny` was trained to accept `en-US` pronunciations, which may confuse some people
120
133
 
121
134
  **Fixes**:
135
+
122
136
  * Work around several eSpeak bugs
123
137
  * Many fixes
124
138
 
125
-
126
139
  ## `0.8.x` (July 25, 2023)
127
140
 
128
141
  **New features**:
142
+
129
143
  * Add confidence to some speech recognition timelines
130
144
  * Add `plaintext` options
131
145
  * Add punctuation thresholds to Whisper decoder
132
146
  * Expose subtitle configuration options to CLI
133
147
 
134
148
  **Enhancements**:
149
+
135
150
  * Improve speech language detection to work with arbitrary length audio. Split audio into overlapping parts and detect each part individually. Then average the results.
136
151
  * Add more heteronyms
137
152
 
138
153
  **Behavioral changes**:
154
+
139
155
  * Rename `subtitles.minWords` to `subtitles.minWordsInLine`
140
156
 
141
157
  **Fixes**:
158
+
142
159
  * Improve numerical stability of softmax function
143
160
  * Work around eSpeak bug with markers in long inputs
144
161
  * Various fixes
145
162
 
146
-
147
163
  ## `0.7.x` (July 23, 2023)
148
164
 
149
165
  **New features**:
166
+
150
167
  * Alignment: Add option to accept custom lexicons
151
168
  * Implement and add decoder temperature option to Whisper model
152
169
 
153
170
  **Enhancements**:
171
+
154
172
  * Alignment: use preprocessing and lexicons
155
173
  * Add language detection to speech translation
156
174
  * Add language detection options to synthesis, and set empty default options for detection in several APIs
@@ -162,13 +180,14 @@ Many features, enhancements, and fixes were incrementally added over the span of
162
180
  **Behavioral changes**:
163
181
 
164
182
  **Fixes**:
183
+
165
184
  * Fix support for SSML input in eSpeak engine
166
185
  * Various fixes
167
186
 
168
-
169
187
  ## `0.6.x` (July 20, 2023)
170
188
 
171
189
  **New features**:
190
+
172
191
  * Add support for custom lexicons. Change lexicon object structure to include language code and allow for multiple languages in a single lexicon
173
192
  * Add support for SSML inputs (currently only supported by Google, Microsoft and Amazon cloud engines). Ensure they are not split to segments or sentences
174
193
  * CLI: Add flag to enable or disable file overwriting in CLI
@@ -177,44 +196,50 @@ Many features, enhancements, and fixes were incrementally added over the span of
177
196
  * Change whitespace option to include option for collapsing all whitespace
178
197
 
179
198
  **Enhancements**:
199
+
180
200
  * Change whitespace option to include option for collapsing all whitespace
181
201
  * Add awareness of guillemets
182
202
  * Log full language of selected voice
183
203
 
184
204
  **Behavioral changes**:
205
+
185
206
  * Set Elevenlabs defaults to mid-values
186
207
  * Split plain text to paragraphs using double line breaks by default.
187
208
  * Rename `awsPolly` options to `amazonPolly` to be more consistent with documentation
188
209
 
189
210
  **Fixes**:
211
+
190
212
  * Fix and update Elevenlabs engine
191
213
  * Fix incorrect gender properties for some VITS voices
192
214
  * Convert to plaintext before detecting language when input is SSML.
193
215
  * Various fixes
194
216
 
195
217
  **Other**:
196
- * Remove `package-lock.json` from the repository
197
218
 
219
+ * Remove `package-lock.json` from the repository
198
220
 
199
221
  ## `0.5.x` (July, 19 2023)
200
222
 
201
223
  **New features**:
202
224
 
203
225
  **Enhancements**:
226
+
204
227
  * Add large numbers of VITS voices
205
228
 
206
229
  **Behavioral changes**:
230
+
207
231
  * Move to new package system supporting version tags, and hosted in a Hugging Face repository
208
232
 
209
233
  **Fixes**:
210
- * Various fixes
211
234
 
235
+ * Various fixes
212
236
 
213
237
  ## `0.4.x` (July 9, 2023)
214
238
 
215
239
  **New features**:
216
240
 
217
241
  **Enhancements**:
242
+
218
243
  * Improve text normalization and add support for currencies
219
244
  * Improve heteronym lexicons
220
245
  * Extend year patterns
@@ -223,17 +248,19 @@ Many features, enhancements, and fixes were incrementally added over the span of
223
248
  * Add large numbers of VITS voices
224
249
 
225
250
  **Behavioral changes**:
251
+
226
252
  * Remove support for `afplay` and `aplay` for playback. Only SoX is used now.
227
253
 
228
254
  **Fixes**:
229
- * Various fixes
230
255
 
256
+ * Various fixes
231
257
 
232
258
  ## `0.3.x` (July 1, 2023)
233
259
 
234
260
  **New features**:
235
261
 
236
262
  **Enhancements**:
263
+
237
264
  * Upgrade heteronym disambiguation to an improved, rule-based approach, which doesn't use POS tagging
238
265
  * Extend decade normalization
239
266
  * Improve text normalization and add support to currencies
@@ -242,15 +269,16 @@ Many features, enhancements, and fixes were incrementally added over the span of
242
269
  **Behavioral changes**:
243
270
 
244
271
  **Fixes**:
272
+
245
273
  * Remove sentences containing only whitespace when synthesizing
246
274
  * Many fixes
247
275
 
248
-
249
276
  ## `0.2.x` (May 10, 2023)
250
277
 
251
278
  **New features**:
252
279
 
253
280
  **Enhancements**:
281
+
254
282
  * Show current sentence and segment in synthesis log
255
283
  * Add check for cancellation flag
256
284
  * Add support to additional VITS voices
@@ -258,20 +286,23 @@ Many features, enhancements, and fixes were incrementally added over the span of
258
286
  * Many Enhancements
259
287
 
260
288
  **Behavioral changes**:
289
+
261
290
  * Remove dependency on `xregexp` package. Use Unicode RegExp instead.
262
291
 
263
292
  **Fixes**:
264
- * Many fixes
265
293
 
294
+ * Many fixes
266
295
 
267
296
  ## `0.1.x` (April 24, 2023)
268
297
 
269
298
  Initial release
270
299
 
271
300
  **Enhancements**:
301
+
272
302
  * Add support for skipping audio playback with the Enter key.
273
303
  * Run CLI in a worker thread by default.
274
304
  * Many Enhancements
275
305
 
276
306
  **Fixes**:
307
+
277
308
  * Many fixes