echogarden 0.6.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/data/schemas/options.json +87 -72
  2. package/dist/alignment/SpeechAlignment.d.ts +6 -1
  3. package/dist/alignment/SpeechAlignment.js +13 -2
  4. package/dist/alignment/SpeechAlignment.js.map +1 -1
  5. package/dist/api/Alignment.d.ts +2 -0
  6. package/dist/api/Alignment.js +18 -11
  7. package/dist/api/Alignment.js.map +1 -1
  8. package/dist/api/Denoising.js +2 -1
  9. package/dist/api/Denoising.js.map +1 -1
  10. package/dist/api/Globals.d.ts +1 -1
  11. package/dist/api/Recognition.d.ts +1 -0
  12. package/dist/api/Recognition.js +5 -3
  13. package/dist/api/Recognition.js.map +1 -1
  14. package/dist/api/Synthesis.d.ts +1 -1
  15. package/dist/api/Synthesis.js +36 -34
  16. package/dist/api/Synthesis.js.map +1 -1
  17. package/dist/api/Translation.d.ts +2 -0
  18. package/dist/api/Translation.js +11 -4
  19. package/dist/api/Translation.js.map +1 -1
  20. package/dist/cli/CLI.js +6 -6
  21. package/dist/cli/CLI.js.map +1 -1
  22. package/dist/nlp/Lexicon.d.ts +3 -2
  23. package/dist/nlp/Lexicon.js +20 -6
  24. package/dist/nlp/Lexicon.js.map +1 -1
  25. package/dist/recognition/WhisperSTT.js +4 -3
  26. package/dist/recognition/WhisperSTT.js.map +1 -1
  27. package/dist/synthesis/EspeakTTS.d.ts +1 -1
  28. package/dist/synthesis/EspeakTTS.js +24 -26
  29. package/dist/synthesis/EspeakTTS.js.map +1 -1
  30. package/dist/synthesis/VitsTTS.d.ts +2 -2
  31. package/dist/synthesis/VitsTTS.js +6 -5
  32. package/dist/synthesis/VitsTTS.js.map +1 -1
  33. package/dist/utilities/Locale.d.ts +2 -1
  34. package/dist/utilities/Locale.js +5 -1
  35. package/dist/utilities/Locale.js.map +1 -1
  36. package/dist/utilities/Logger.d.ts +4 -3
  37. package/dist/utilities/Logger.js +14 -8
  38. package/dist/utilities/Logger.js.map +1 -1
  39. package/dist/utilities/Utilities.js +2 -0
  40. package/dist/utilities/Utilities.js.map +1 -1
  41. package/docs/CLI.md +9 -11
  42. package/docs/Options.md +9 -6
  43. package/docs/Tasklist.md +16 -20
  44. package/package.json +2 -2
package/docs/Tasklist.md CHANGED
@@ -48,13 +48,13 @@
48
48
  * Support compressed audio in response
49
49
 
50
50
  ### CLI
51
- * Colors in log messages
52
51
  * Restrict input media file extensions to a set list to avoid cases where an output media file would be overwritten due to user error
53
52
  * Mode to print IPA words when speaking
53
+ * Ignore non-supported templates like `[hello]`
54
54
  * Show a message when a new version is available
55
55
  * Figure out which terminal outputs should go to stdout, or if that's a good idea at all
56
56
  * Option to set audio output codec options
57
- * Option to set audio output device
57
+ * Option to set audio output device for playback
58
58
  * Print available synthesis voices when no voice matches (or suggest near matches)
59
59
  * `transcribe` may also accept `http://` and `https://` URLs and pull the remote media file
60
60
  * Make enum options case-insensitive if possible
@@ -78,7 +78,7 @@
78
78
  * Use the Wikipedia reader when the URL is detected to be from `wikipedia.org`
79
79
 
80
80
  ### CLI / `list-voices`
81
- * When given a configuration file, see if you can fall back to take options from from `speak` options, for example, API keys that are required for the both the voice list request and synthesis request
81
+ * When given a configuration file, see if you can fall back to take options from from `speak` options, for example, to take API keys that are required for the both the synthesis request and voice list request and
82
82
 
83
83
  ### CLI / `list-packages`
84
84
  * Support filters
@@ -104,11 +104,11 @@
104
104
  * Time/pitch shifting for recognition and alignment results
105
105
  * Accept voice list caching options in `SynthesisOptions`
106
106
 
107
- ### Speech Language detection
107
+ ### Speech language detection
108
108
  * When using Whisper for language detection of speech, apply it to the entire audio, not just the first 30 seconds
109
109
 
110
- ### Text Language detection
111
- * Deploy and add the new language detection model
110
+ ### Text language detection
111
+ * Deploy and add the new n-gram based text language detection model
112
112
 
113
113
  ### Segmentation
114
114
  * Split long words
@@ -144,7 +144,6 @@
144
144
  ### Synthesis / preprocessing
145
145
  * Extend the heteronyms JSON document with additional words like "conducts", "survey", "protest", "transport", "abuse", "combat", "combats", "affect", "contest", "detail", "marked", "contrast", "construct", "constructs", "console", "recall", "permit", "permits", "prospect", "prospects", "proceed", "proceeds", "invite", "reject", "deserts", "transcript", "transcripts", "compact", "impact", "impacts"
146
146
  * Full date normalization (e.g. `21 August 2023`, `21 Aug 2023`)
147
- * Use preprocessed eSpeak in places other than VITS
148
147
  * Add support for capitalized-only rules, and possibly also all uppercase / all lowercase rules.
149
148
  * Support normalizing to graphemes, not only phonemes
150
149
  * Cache lexicons to avoid parsing the JSON each time it is loaded (this may not be needed for if the file is relatively small)
@@ -161,7 +160,7 @@
161
160
  * Add speaker names to voice list somehow
162
161
 
163
162
  ### Synthesis / Azure Cognitive Services
164
- * Currently, when input is set to be SSML, it is wrapped in a `<speak>` tag. Handle the case where the user made their own document wrapped with a `<speak>` tag as well. Currently it may send invalid input to Azure
163
+ * Currently, when input is set to be SSML, it is wrapped in a `<speak>` tag. Handle the case where the user made their own SSML document wrapped with a `<speak>` tag as well. Currently it may send invalid input to Azure
165
164
 
166
165
  ### Recognition
167
166
  * Add confidence to each recognized word, if available
@@ -170,20 +169,19 @@
170
169
  * Option to split recognized audio to segments or sentences, as is done with synthesized audio
171
170
 
172
171
  ### Recognition / Whisper
173
- * When using `dtw-ra` alignment, pass the transcript as a prompt. Remove some of the initial transcript based on what has been detected (try to find the best matching initial segment between the transcript and recognized text, and remove it at each recognition window).
172
+ * Add sampling and temperature support to decoder. This may help with repetitive token sequences.
174
173
  * During language detection, if file is more than 30s, run the detection over all the segments and average the resulting probability distributions, consider how to handle very short segments
174
+ * When using `dtw-ra` alignment, pass the transcript as a prompt. Remove some of the initial transcript based on what has been detected (try to find the best matching initial segment between the transcript and recognized text, and remove it at each recognition window).
175
+ * Accept custom prompt via an option
175
176
  * Log individual tokens to the terminal as they are being decoded from the model
176
- * Add sampling and temperature support to decoder
177
177
  * Timestamps extracted from cross-attention are still not as accurate as what the official Python implementation gets. Try to see if you can make them better.
178
- * Cache last model
178
+ * Cache last model (if enough memory available)
179
179
  * Integrate speech language detection into the recognition itself, so it is done efficiently when the language is not known
180
180
  * Bring back option to use eSpeak DTW based alignment on segments, as an alternative approach
181
181
  * The segment output can be use to split to segment files, otherwise it is possible to try to guess using the pause lengths or voice activity detection
182
- * Way to specify model size, such that the English-only/multilingual would be auto selection for sizes other than `tiny`?
183
- * Accept custom prompt through an option
182
+ * Way to specify general model size, such that the English-only/multilingual variant would be automatically selected for sizes other than `tiny`?
184
183
 
185
184
  ### Alignment
186
- * Warn when input is larger than DTW window (this can also happen when synthesizing SSML, which can't be split to segments)
187
185
 
188
186
  ### Postprocessing
189
187
  * When `normalize` is set to false, should obvious clipping still be prevented?
@@ -201,7 +199,7 @@
201
199
 
202
200
  ## External bugs
203
201
 
204
- * `espeak-ng`: 'Oh dear!”' is read as "oh dear exclamation mark", because of the special quote following the exclamation mark
202
+ * `espeak-ng`: 'Oh dear!”' is read as "oh dear exclamation mark", because of the special quote character following the exclamation mark
205
203
  * `espeak-ng`: [Marker right after sentence end is not reported as an event](https://github.com/espeak-ng/espeak-ng/issues/920)
206
204
  * `espeak-ng`: On Japanese text, it says "Chinese character" or "Japanese character" for characters it doesn't know
207
205
  * `wtf_wikipedia` Sometimes fails on `getResult.js` without throwing a humanly readable error
@@ -225,8 +223,7 @@
225
223
  * Auto-generate options file, with comments, based on default options of the API
226
224
  * Have the CLI launch a background worker (in a thread) to enable better parallelism
227
225
  * Play back result audio while synthesis or recognition is still processing on the background (may require `worker_threads`)
228
- * Navigate up down backward forward on file with timeline
229
- * Auto-import project Gutenberg texts (by URL or from a file)
226
+ * Auto-import and extract project Gutenberg texts (by URL or from a file)
230
227
  * `stdin` input support
231
228
  * `stdout` output support
232
229
  * Markdown file as text input?
@@ -235,7 +232,7 @@
235
232
  * Auto-install npm modules when needed using something like `npm-programmatic`
236
233
 
237
234
  ### Text enhancement
238
- * Add capitalization and punctuation when to recognition outputs (Silero has a model for it for `en`, `de`, `ru`, `es`, but in `.pt` format only)
235
+ * Add capitalization and punctuation to recognized outputs if needed (Silero has a model for it for `en`, `de`, `ru`, `es`, but in `.pt` format only)
239
236
 
240
237
  ### Recognition
241
238
  * Low latency recognition mode. Make the partial transcription available as fast as possible
@@ -243,7 +240,7 @@
243
240
  * Live vosk alternatives events
244
241
  * Implement beam search for Whisper decoder
245
242
  * Implement beam search for Silero decoder
246
- * Investigate exporting Whisper models to 16-bit quantized ONNX or a mix of 16-bit and 32-bits
243
+ * Investigate exporting Whisper models to 16-bit quantized ONNX or a mix of 16-bit and 32-bit
247
244
 
248
245
  ### Web
249
246
  * Web based frontend UI to the server
@@ -294,4 +291,3 @@
294
291
  * Special method to use time stretching to project between different utterances of the same text
295
292
  * Is it possible to combine the Silero speech recognizer and a language model and try to perform Viterbi decoding to find alignments?
296
293
  * Voice replacement
297
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "echogarden",
3
- "version": "0.6.8",
3
+ "version": "0.7.0",
4
4
  "description": "An integrated speech system, providing a range of synthesis, recognition and other processing tools designed to be directly accessible to end-users.",
5
5
  "author": "Rotem Dan",
6
6
  "license": "GPL-3.0-only",
@@ -121,7 +121,7 @@
121
121
  "@types/msgpack-lite": "^0.1.8",
122
122
  "@types/ndarray": "^1.0.11",
123
123
  "@types/ndarray-ops": "^1.2.4",
124
- "@types/node": "^20.4.2",
124
+ "@types/node": "^20.4.4",
125
125
  "@types/recursive-readdir": "^2.2.1",
126
126
  "@types/tar": "^6.1.5",
127
127
  "@types/ws": "^8.5.5",