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/data/schemas/options.json +69 -60
- package/dist/alignment/SpeechAlignment.js +1 -1
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/Alignment.d.ts +1 -0
- package/dist/api/Alignment.js +5 -3
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/Denoising.js +2 -1
- package/dist/api/Denoising.js.map +1 -1
- package/dist/api/Globals.d.ts +1 -1
- package/dist/api/Recognition.d.ts +1 -0
- package/dist/api/Recognition.js +5 -3
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/Synthesis.js +26 -14
- package/dist/api/Synthesis.js.map +1 -1
- package/dist/api/Translation.d.ts +2 -0
- package/dist/api/Translation.js +11 -4
- package/dist/api/Translation.js.map +1 -1
- package/dist/audio/AudioPlayer.js +1 -1
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/cli/CLI.js +6 -6
- package/dist/cli/CLI.js.map +1 -1
- package/dist/nlp/EspeakPhonemizer.js +8 -1
- package/dist/nlp/EspeakPhonemizer.js.map +1 -1
- package/dist/recognition/WhisperSTT.js +4 -3
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.d.ts +1 -0
- package/dist/utilities/Locale.d.ts +1 -1
- package/dist/utilities/Locale.js +7 -2
- package/dist/utilities/Locale.js.map +1 -1
- package/dist/utilities/Logger.d.ts +4 -3
- package/dist/utilities/Logger.js +14 -8
- package/dist/utilities/Logger.js.map +1 -1
- package/docs/CLI.md +2 -2
- package/docs/Options.md +7 -5
- package/docs/Tasklist.md +31 -31
- package/package.json +1 -1
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
* `
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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.
|
|
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",
|