echogarden 0.6.7 → 0.6.9

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/Tasklist.md CHANGED
@@ -42,23 +42,22 @@
42
42
  * Minimum size when iterating text nodes to get handle
43
43
 
44
44
  ### Worker
45
- * Optionally omit unnecessary data from the response (decoded input, segment data, etc.)
46
- * Support compressed audio in response
47
45
  * Add cancelation checks in more operations
46
+ * Optionally omit unnecessary data from the response (decoded input, segment data, etc.)
48
47
  * Support more operations
48
+ * Support compressed audio in response
49
49
 
50
50
  ### CLI
51
- * Colors in log messages
52
- * Find a way to ensure that a user who typed `align audio.mp3 transcript.txt` and then changed to `transcribe audio.mp3 transcript.txt` won't accidently overwrite their transcript file. Simple solution, but possibly not the best solution: `align audio.mp3 --reference=transcript.txt`. Other solution: on `transcribe` and `translate-speech`, ask if output file already exist or require an `--overwrite` flag to ensure that the user intended to overwrite the existing file.
53
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
54
52
  * Mode to print IPA words when speaking
53
+ * Ignore non-supported templates like `[hello]`
55
54
  * Show a message when a new version is available
56
55
  * Figure out which terminal outputs should go to stdout, or if that's a good idea at all
57
56
  * Option to set audio output codec options
58
- * Option to set audio output device
57
+ * Option to set audio output device for playback
59
58
  * Print available synthesis voices when no voice matches (or suggest near matches)
60
59
  * `transcribe` may also accept `http://` and `https://` URLs and pull the remote media file
61
- * Use a file type detector like `file-type` that uses magic numbers to detect the type of a binary file regardless of its extension. This would help giving better error messages when the given file type is wrong.
60
+ * Make enum options case-insensitive if possible
62
61
  * Consider adding the input text offset to each segment, sentence and word in the resulting timeline with respect to the original file (even if it is, say, an HTML or captions file)
63
62
  * Add phone playback support
64
63
  * More fine-grained intermediate progress report for operations
@@ -66,7 +65,7 @@
66
65
  * Multiple configuration files in `--config=..` taking precedence by order
67
66
  * Support comments in the JSON configuration file
68
67
  * Generate JSON configuration file schema
69
- * Make enum options case-insensitive if possible
68
+ * Use a file type detector like `file-type` that uses magic numbers to detect the type of a binary file regardless of its extension. This would help giving better error messages when the given file type is wrong.
70
69
 
71
70
  ### CLI / `speak`
72
71
  * Add support for sentence templates, like `echogarden speak-file text.txt /parts/[sentence].wav`.
@@ -79,13 +78,13 @@
79
78
  * Use the Wikipedia reader when the URL is detected to be from `wikipedia.org`
80
79
 
81
80
  ### CLI / `list-voices`
82
- * 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
83
82
 
84
83
  ### CLI / `list-packages`
85
84
  * Support filters
86
85
 
87
86
  ### CLI / New commands
88
- * `list-engines`: List available engines for a particular command, like `list-engines speak`
87
+ * `speak-youtube`: To speak the subtitles of a YouTube video
89
88
  * `play-with-captions`: Preview captions in terminal
90
89
  * `play-with-timeline`: Preview timeline in terminal
91
90
  * `captions-to-text`, `captions-to-timeline`, `srt-to-vtt`, `vtt-to-srt`
@@ -94,22 +93,23 @@
94
93
  * `phonemize-text`
95
94
  * `normalize-text`
96
95
  * `remove-nonspeech`
97
- * `speak-youtube`: To speak the subtitles of a YouTube video
98
96
 
99
97
  ### API
100
98
  * Option to control logging verbosity
101
- * Accept full language names as language identifiers
102
99
  * Add support to accept caption options in API and CLI
103
100
  * Retry on error when connecting to cloud providers, including WebSocket disconnection with `microsoft-edge` (already supported by `gaxios`, not sure about `ws` - decide on default setting)
101
+ * Accept full language names as language identifiers
104
102
  * Validate timelines to ensure timestamps are always increasing, no -1 timestamps or timestamps over the time of the audio, no sentences without words, etc. and correct if needed
105
- * Time/pitch shifting for recognition and alignment results
106
103
  * Add support for phrases in timelines
104
+ * Time/pitch shifting for recognition and alignment results
107
105
  * Accept voice list caching options in `SynthesisOptions`
108
106
 
109
- ### Language detection
110
- * Deploy and add the new language detection model
107
+ ### Speech Language detection
111
108
  * When using Whisper for language detection of speech, apply it to the entire audio, not just the first 30 seconds
112
109
 
110
+ ### Text Language detection
111
+ * Deploy and add the new n-gram based text language detection model
112
+
113
113
  ### Segmentation
114
114
  * Split long words
115
115
  * See if it's possible to reliably use eSpeak as a segmentation engine
@@ -130,14 +130,12 @@
130
130
  * Ensure abbreviations like "Ph.d" or names like are segmented and read correctly (why doesn't `cldr` treat it as a word? Maybe it's not getting the right parameters, or it's not included in the list?) and "C#"
131
131
  * Find way to manually reset voice list cache
132
132
  * When synthesized text isn't pre-split to sentences, apply sentence splits by using the existing method to convert the output of word timelines to sentence/segment timelines
133
- * Log full language of selected voice (it may have a different dialect than expected)
134
- * Add partial SSML support for all engines. In particular, allow changing language or voice using the `<voice>` and `<lang>` tags, `<say-as>` and `<phoneme>` where possible.
135
133
  * Some `sapi` voices and `msspeech` languages output phones that are converted to Microsoft alphabet, not IPA symbols. Try to see if these can be translated to IPA
136
134
  * Decide whether asterisk `*` should be spoken when using `speak-url` or `speak-wikipedia`
137
- * Decide what to do with `«` and `»` punctuation characters (guillemets) when parsing and playing
135
+ * Add partial SSML support for all engines. In particular, allow changing language or voice using the `<voice>` and `<lang>` tags, `<say-as>` and `<phoneme>` where possible.
138
136
  * Try to remove reliance on `()` after `.` character hack in `EspeakTTS.synthesizeFragments`.
139
137
  * eSpeak IPA output puts stress marks on vowels, not syllables - which is the standard for IPA. Consider how to make a conversion to and from these two approaches (possibly detect it automatically).
140
- * Investigate if `espeak` can be made to correctly support phonemizing and pronouncing the dot character like in `object.key`
138
+ * Investigate if eSpeak can be made to correctly support phonemizing and pronouncing the dot character like in `object.key`
141
139
  * Speaker-specific voice option
142
140
  * Decide if `msspeech` engine should be selected if available. This would require attempting to load a matching voice, and falling back if it is not installed
143
141
  * Option to disable alignment
@@ -156,12 +154,15 @@
156
154
  * Try to use entity recognition to detect years, dates, currencies etc., which would disambiguate cases where it is not clear, like "in 1993" in "She was born in 1993" and "It searched in 1993 websites"
157
155
  * Option to add POS tags to timeline, if available
158
156
 
159
- ### VITS
157
+ ### Synthesis / VITS
160
158
  * Allow to limit how many models are cached in memory
161
159
  * Custom model paths (decide how to implement)
162
160
  * Pull voice list from JSON file, or based on URL? Is that a good idea?
163
161
  * Add speaker names to voice list somehow
164
162
 
163
+ ### 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 SSML document wrapped with a `<speak>` tag as well. Currently it may send invalid input to Azure
165
+
165
166
  ### Recognition
166
167
  * Add confidence to each recognized word, if available
167
168
  * Show alternatives when playing in the CLI. Clear current line and rewrite already printed text for alternatives during the speech recognition process
@@ -169,19 +170,20 @@
169
170
  * Option to split recognized audio to segments or sentences, as is done with synthesized audio
170
171
 
171
172
  ### Recognition / Whisper
172
- * 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).
173
+ * Add sampling and temperature support to decoder. This may help with repetitive token sequences.
173
174
  * 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
175
+ * 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).
176
+ * Accept custom prompt via an option
177
+ * Log individual tokens to the terminal as they are being decoded from the model
174
178
  * 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.
175
- * Cache last model
179
+ * Cache last model (if enough memory available)
176
180
  * Integrate speech language detection into the recognition itself, so it is done efficiently when the language is not known
177
181
  * Bring back option to use eSpeak DTW based alignment on segments, as an alternative approach
178
182
  * 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
179
- * Way to specify model size, such that the English-only/multilingual would be auto selection for sizes other than `tiny`?
180
- * Accept custom prompt through an option
181
- * Add sampling and temperature support to decoder
183
+ * Way to specify general model size, such that the English-only/multilingual variant would be automatically selected for sizes other than `tiny`?
182
184
 
183
185
  ### Alignment
184
- * Warn when input is larger than DTW window (this can also happen when synthesizing SSML, which can't be split to segments)
186
+ * Warn when input is larger than DTW window, and suggest to increase the window in this case (this can also happen when synthesizing SSML, which can't be split to segments)
185
187
 
186
188
  ### Postprocessing
187
189
  * When `normalize` is set to false, should obvious clipping still be prevented?
@@ -199,7 +201,7 @@
199
201
 
200
202
  ## External bugs
201
203
 
202
- * `espeak-ng`: 'Oh dear!”' is read as "oh dear exclamation mark", because of the special quote following the exclamation mark
204
+ * `espeak-ng`: 'Oh dear!”' is read as "oh dear exclamation mark", because of the special quote character following the exclamation mark
203
205
  * `espeak-ng`: [Marker right after sentence end is not reported as an event](https://github.com/espeak-ng/espeak-ng/issues/920)
204
206
  * `espeak-ng`: On Japanese text, it says "Chinese character" or "Japanese character" for characters it doesn't know
205
207
  * `wtf_wikipedia` Sometimes fails on `getResult.js` without throwing a humanly readable error
@@ -223,8 +225,7 @@
223
225
  * Auto-generate options file, with comments, based on default options of the API
224
226
  * Have the CLI launch a background worker (in a thread) to enable better parallelism
225
227
  * Play back result audio while synthesis or recognition is still processing on the background (may require `worker_threads`)
226
- * Navigate up down backward forward on file with timeline
227
- * Auto-import project Gutenberg texts (by URL or from a file)
228
+ * Auto-import and extract project Gutenberg texts (by URL or from a file)
228
229
  * `stdin` input support
229
230
  * `stdout` output support
230
231
  * Markdown file as text input?
@@ -233,7 +234,7 @@
233
234
  * Auto-install npm modules when needed using something like `npm-programmatic`
234
235
 
235
236
  ### Text enhancement
236
- * Add capitalization and punctuation when to recognition outputs (Silero has a model for it for `en`, `de`, `ru`, `es`, but in `.pt` format only)
237
+ * 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)
237
238
 
238
239
  ### Recognition
239
240
  * Low latency recognition mode. Make the partial transcription available as fast as possible
@@ -241,7 +242,7 @@
241
242
  * Live vosk alternatives events
242
243
  * Implement beam search for Whisper decoder
243
244
  * Implement beam search for Silero decoder
244
- * Investigate exporting Whisper models to 16-bit and 8-bit quantized ONNX
245
+ * Investigate exporting Whisper models to 16-bit quantized ONNX or a mix of 16-bit and 32-bit
245
246
 
246
247
  ### Web
247
248
  * Web based frontend UI to the server
@@ -292,4 +293,3 @@
292
293
  * Special method to use time stretching to project between different utterances of the same text
293
294
  * Is it possible to combine the Silero speech recognizer and a language model and try to perform Viterbi decoding to find alignments?
294
295
  * Voice replacement
295
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "echogarden",
3
- "version": "0.6.7",
3
+ "version": "0.6.9",
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",