echogarden 0.6.6 → 0.6.8
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/dist/api/API.d.ts +1 -0
- package/dist/api/API.js +1 -1
- package/dist/api/API.js.map +1 -1
- package/dist/api/Alignment.d.ts +1 -0
- package/dist/api/Alignment.js +20 -0
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/Denoising.d.ts +2 -0
- package/dist/api/Denoising.js +8 -0
- package/dist/api/Denoising.js.map +1 -1
- package/dist/api/Globals.d.ts +6 -0
- package/dist/api/LanguageDetection.d.ts +2 -0
- package/dist/api/LanguageDetection.js +28 -0
- package/dist/api/LanguageDetection.js.map +1 -1
- package/dist/api/Recognition.d.ts +1 -0
- package/dist/api/Recognition.js +38 -0
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/Synthesis.d.ts +2 -0
- package/dist/api/Synthesis.js +88 -2
- package/dist/api/Synthesis.js.map +1 -1
- package/dist/api/Translation.d.ts +2 -0
- package/dist/api/Translation.js +8 -0
- package/dist/api/Translation.js.map +1 -1
- package/dist/api/Vad.d.ts +2 -0
- package/dist/api/Vad.js +20 -0
- package/dist/api/Vad.js.map +1 -1
- package/dist/audio/AudioPlayer.js +1 -1
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/cli/CLI.js +83 -4
- 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/utilities/Locale.d.ts +1 -1
- package/dist/utilities/Locale.js +7 -2
- package/dist/utilities/Locale.js.map +1 -1
- package/docs/CLI.md +11 -13
- package/docs/Engines.md +2 -2
- package/docs/Options.md +41 -34
- package/docs/Tasklist.md +21 -18
- package/package.json +2 -1
package/docs/Options.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Here is a detailed reference for the options accepted by the Echogarden API and CLI.
|
|
4
4
|
|
|
5
|
-
Related resources
|
|
5
|
+
**Related resources**:
|
|
6
6
|
* [A comprehensive list of all supported engines](Engines.md)
|
|
7
7
|
* [A quick guide for using the command line interface](CLI.md)
|
|
8
8
|
|
|
@@ -10,7 +10,7 @@ Related resources:
|
|
|
10
10
|
|
|
11
11
|
Applicable to CLI commands: `speak`, `speak-file`, `speak-url`, `speak-wikipedia`.
|
|
12
12
|
|
|
13
|
-
General
|
|
13
|
+
**General**:
|
|
14
14
|
* `engine`: identifier of the synthesis engine to use, such as `espeak` or `vits`.
|
|
15
15
|
* `language`: language code ([ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)), like `en`, `fr`, `en-US`, `pt-BR`. Auto-detected if not set
|
|
16
16
|
* `voice`: name of the voice to use. Can be a search string. Optional
|
|
@@ -23,11 +23,11 @@ General:
|
|
|
23
23
|
* `sentenceEndPause`: pause duration (seconds) at end of sentence. Defaults to `0.75`
|
|
24
24
|
* `segmentEndPause`: pause duration (seconds) at end of segment. Defaults to `1.0`
|
|
25
25
|
|
|
26
|
-
Plain text processing
|
|
26
|
+
**Plain text processing**:
|
|
27
27
|
* `plainText.paragraphBreaks`: split to paragraphs based on single (`single`), or double (`double`) line breaks. Defaults to `double`
|
|
28
28
|
* `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 `collapse`
|
|
29
29
|
|
|
30
|
-
Post-processing
|
|
30
|
+
**Post-processing**:
|
|
31
31
|
* `postProcessing.normalizeAudio`: should normalize output audio. Defaults to `true`
|
|
32
32
|
* `postProcessing.targetPeakDb`: target peak (decibels) for normalization. Defaults to `-3`
|
|
33
33
|
* `postProcessing.maxIncreaseDb`: max gain increase (decibels) when performing normalization. Defaults to `30`
|
|
@@ -36,62 +36,62 @@ Post-processing:
|
|
|
36
36
|
* `postProcessing.timePitchShiftingMethod`: method for time and pitch shifting. Can be `sonic` or `rubberband`. Defaults to `sonic`
|
|
37
37
|
* `postProcessing.rubberband`: prefix for RubberBand options (TODO)
|
|
38
38
|
|
|
39
|
-
Language detection
|
|
39
|
+
**Language detection**:
|
|
40
40
|
* `languageDetection`: prefix to provide custom options for language detection. Same options as detailed for text language detection, down below
|
|
41
41
|
|
|
42
|
-
VITS
|
|
42
|
+
**VITS**:
|
|
43
43
|
* `vits.speakerId`: speaker ID, for VITS models that support multiple speakers. Optional
|
|
44
44
|
* `vits.customLexiconPaths`: an array of custom lexicon file paths. Optional
|
|
45
45
|
|
|
46
|
-
eSpeak-ng
|
|
46
|
+
**eSpeak-ng**:
|
|
47
47
|
* `espeak.rate`: speech rate, in eSpeak units. Overrides `speed` when set
|
|
48
48
|
* `espeak.pitch`: pitch, in eSpeak units. Overrides `pitch` when set
|
|
49
49
|
* `espeak.pitchRange`: pitch range, in eSpeak units. Overrides `pitchVariation` when set
|
|
50
50
|
|
|
51
|
-
SAM
|
|
51
|
+
**SAM**:
|
|
52
52
|
* `sam.pitch`: pitch value, between `0`..`255`. Overrides `pitch` when set
|
|
53
53
|
* `sam.speed`: speed value, between `0`..`255`. Overrides `speed` when set
|
|
54
54
|
* `sam.mouth`: mouth value, between `0`..`255` (defaults to `128`)
|
|
55
55
|
* `sam.throat`: throat value, between `0`..`255` (defaults to `128`)
|
|
56
56
|
|
|
57
|
-
SAPI
|
|
57
|
+
**SAPI**:
|
|
58
58
|
* `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
|
|
59
59
|
|
|
60
|
-
Microsoft Speech Platform
|
|
60
|
+
**Microsoft Speech Platform**:
|
|
61
61
|
* `msspeech.rate`: same units and effects as the SAPI speech rate
|
|
62
62
|
|
|
63
|
-
Coqui Server
|
|
63
|
+
**Coqui Server**:
|
|
64
64
|
* `coquiServer.serverUrl`: server URL
|
|
65
65
|
* `coquiServer.speakerId`: speaker ID (if applicable)
|
|
66
66
|
|
|
67
|
-
Google Cloud
|
|
67
|
+
**Google Cloud**:
|
|
68
68
|
* `googleCloud.apiKey`: API key (required)
|
|
69
69
|
* `googleCloud.pitchDeltaSemitones`: pitch delta in semitones. Overrides `pitch` when set
|
|
70
70
|
* `googleCloud.customVoice.model`: name of custom voice
|
|
71
71
|
* `googleCloud.customVoice.reportedUsage`: reported usage of custom voice
|
|
72
72
|
|
|
73
|
-
Azure Cognitive Services
|
|
73
|
+
**Azure Cognitive Services**:
|
|
74
74
|
* `microsoftAzure.subscriptionKey`: subscription key (required)
|
|
75
75
|
* `microsoftAzure.serviceRegion`: service region (required)
|
|
76
76
|
* `microsoftAzure.pitchDeltaHz`: pitch delta in Hz. Overrides `pitch` when set
|
|
77
77
|
|
|
78
|
-
Amazon Polly
|
|
78
|
+
**Amazon Polly**:
|
|
79
79
|
* `amazonPolly.region`: region (required)
|
|
80
80
|
* `amazonPolly.accessKeyId`: access key ID (required)
|
|
81
81
|
* `amazonPolly.secretAccessKey`: secret access key (required)
|
|
82
82
|
* `amazonPolly.pollyEngine`: Amazon Polly engine kind, can be `standard` or `neural`. Defaults to `neural`
|
|
83
83
|
* `amazonPolly.lexiconNames`: An array of lexicon names. Optional
|
|
84
84
|
|
|
85
|
-
Elevenlabs
|
|
85
|
+
**Elevenlabs**:
|
|
86
86
|
* `elevenLabs.apiKey`: API key (required)
|
|
87
87
|
* `elevenLabs.modelId`: Model identifier. Defaults to `eleven_monolingual_v1`
|
|
88
88
|
* `elevenLabs.stability`: stability. Defaults to `0.5`
|
|
89
89
|
* `elevenLabs.similarityBoost`: similarity boost. Defaults to `0.5`
|
|
90
90
|
|
|
91
|
-
Google Translate
|
|
91
|
+
**Google Translate**:
|
|
92
92
|
* `googleTranslate.tld`: top level domain to to connect to. Can change the dialect for a small number or voices. For example `us` gives American English for `en`, while `com` gives British English for `en`. Defaults to `us`
|
|
93
93
|
|
|
94
|
-
Microsoft Edge
|
|
94
|
+
**Microsoft Edge**:
|
|
95
95
|
* `microsoftEdge.trustedClientToken`: trusted client token (required). A special token required to use the service
|
|
96
96
|
* `microsoftEdge.pitchDeltaHz`: pitch delta in Hz. Overrides `pitch` when set
|
|
97
97
|
|
|
@@ -99,31 +99,31 @@ Microsoft Edge:
|
|
|
99
99
|
|
|
100
100
|
Applicable to CLI command: `transcribe`.
|
|
101
101
|
|
|
102
|
-
General
|
|
102
|
+
**General**:
|
|
103
103
|
* `engine`: identifier of the recognition engine to use, such as `whisper` or `vosk`
|
|
104
104
|
* `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
|
|
105
105
|
|
|
106
|
-
Whisper
|
|
106
|
+
**Whisper**:
|
|
107
107
|
* `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`. Defaults to `tiny`
|
|
108
108
|
|
|
109
|
-
Vosk
|
|
109
|
+
**Vosk**:
|
|
110
110
|
* `vosk.modelPath`: path to the Vosk model to be used
|
|
111
111
|
|
|
112
|
-
Silero
|
|
112
|
+
**Silero**:
|
|
113
113
|
* `silero.modelPath`: path to a Silero model. Note that latest `en`, `de`, `fr` and `uk` models are automatically installed when needed based on the selected language. This should only be used to manually specify a different model, otherwise specify `language` instead
|
|
114
114
|
|
|
115
|
-
Google Cloud
|
|
115
|
+
**Google Cloud**:
|
|
116
116
|
* `googleCloud.apiKey`: Google Cloud API key (required)
|
|
117
117
|
* `googleCloud.alternativeLanguageCodes`: An array of alternative language codes. Optional
|
|
118
118
|
* `googleCloud.profanityFilter`: censor profanity. Defaults to `false`
|
|
119
119
|
* `googleCloud.autoPunctuation`: add punctuation automatically. Defaults to `true`
|
|
120
120
|
* `googleCloud.useEnhancedModel`: use enhanced model. Defaults to `true`
|
|
121
121
|
|
|
122
|
-
Azure Cognitive Services
|
|
122
|
+
**Azure Cognitive Services**:
|
|
123
123
|
* `azureCognitiveServices.subscriptionKey`: subscription key (required)
|
|
124
124
|
* `azureCognitiveServices.serviceRegion`: service region (required)
|
|
125
125
|
|
|
126
|
-
Amazon Transcribe
|
|
126
|
+
**Amazon Transcribe**:
|
|
127
127
|
* `amazonTranscribe.region`: region (required)
|
|
128
128
|
* `amazonTranscribe.accessKeyId`: access key ID (required)
|
|
129
129
|
* `amazonTranscribe.secretAccessKey`: secret access key (required)
|
|
@@ -132,14 +132,14 @@ Amazon Transcribe:
|
|
|
132
132
|
|
|
133
133
|
Applicable to CLI command: `align`.
|
|
134
134
|
|
|
135
|
-
General
|
|
135
|
+
**General**:
|
|
136
136
|
* `method`: what alignment algorithm to use, can be `dtw`, `dtw-ra` or `whisper`. Defaults to `dtw`
|
|
137
137
|
* `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
|
|
138
138
|
|
|
139
|
-
DTW
|
|
139
|
+
**DTW**:
|
|
140
140
|
* `dtw.windowDuration`: time duration (in seconds) of the Sakoe-Chiba window when performing DTW alignment. Defaults to `120`. If your audio is longer than two minutes, consider increasing this value for better results. Note that a higher value would consume quadratically larger amounts of memory. A value of `600` (10 minutes) would already require several Gigabytes of memory when the audio duration is 10 minutes or greater.
|
|
141
141
|
|
|
142
|
-
DTW-RA only
|
|
142
|
+
**DTW-RA only**:
|
|
143
143
|
* `dtw.recognition`: prefix for providing custom recognition options when using `dtw-ra` method, for example: setting `dtw.recognition.engine = silero`
|
|
144
144
|
* `dtw.phoneAlignmentMethod`: algorithm to use when aligning phones: can either be set to `dtw` or `interpolate`. Defaults to `dtw`
|
|
145
145
|
|
|
@@ -147,12 +147,12 @@ DTW-RA only:
|
|
|
147
147
|
|
|
148
148
|
Applicable to CLI command: `translate-speech`.
|
|
149
149
|
|
|
150
|
-
General
|
|
150
|
+
**General**:
|
|
151
151
|
* `engine`: only `whisper` supported
|
|
152
152
|
* `sourceLanguage`: the source language code for the input speech. Auto-detected if not set
|
|
153
153
|
* `targetLanguage`: the target language code for the output speech. Only `en` supported at this time.
|
|
154
154
|
|
|
155
|
-
Whisper
|
|
155
|
+
**Whisper**:
|
|
156
156
|
* `whisper.model`: Whisper model to use (multilingual engines only). Defaults to `tiny`
|
|
157
157
|
|
|
158
158
|
## Language detection
|
|
@@ -176,25 +176,25 @@ Applicable to CLI command: `detect-text-langauge`.
|
|
|
176
176
|
|
|
177
177
|
Applicable to CLI command: `detect-voice-activity`.
|
|
178
178
|
|
|
179
|
-
General
|
|
179
|
+
**General**:
|
|
180
180
|
* `engine`: VAD engine to use. Can be `webrtc`, `silero` or `rnnoise`. Defaults to `webrtc`
|
|
181
181
|
* `activityThreshold`: minimum predicted probability for determining a frame as having speech activity. Defaults to `0.5`
|
|
182
182
|
|
|
183
|
-
WebRTC
|
|
183
|
+
**WebRTC**:
|
|
184
184
|
* `webrtc.frameDuration`: WebRTC frame duration (ms). Can be `10`, `20` or `30`. Defaults to `30`
|
|
185
185
|
* `webrtc.mode`: WebRTC mode (aggressiveness). Can be `0`, `1`, `2` or `3`. Defaults to `1`
|
|
186
186
|
|
|
187
|
-
Silero
|
|
187
|
+
**Silero**:
|
|
188
188
|
* `silero.frameDuration`: Silero frame duration (ms). Can be `30`, `60` or `90`. Defaults to `90`
|
|
189
189
|
|
|
190
190
|
## Speech denoising
|
|
191
191
|
|
|
192
192
|
Applicable to CLI command: `denoise`.
|
|
193
193
|
|
|
194
|
-
General
|
|
194
|
+
**General**:
|
|
195
195
|
* `engine`: can only be `rnnoise`
|
|
196
196
|
|
|
197
|
-
Postprocessing
|
|
197
|
+
**Postprocessing**:
|
|
198
198
|
* `postProcessing.normalizeAudio`: should normalize output audio. Defaults to `false`
|
|
199
199
|
* `postProcessing.targetPeakDb`: target peak (decibels) for normalization. Defaults to `-3`
|
|
200
200
|
* `postProcessing.maxIncreaseDb`: max gain increase (decibels) when performing normalization. Defaults to `30`
|
|
@@ -204,6 +204,13 @@ Postprocessing:
|
|
|
204
204
|
|
|
205
205
|
Applicable to CLI command: `list-voices`.
|
|
206
206
|
|
|
207
|
+
**General**
|
|
207
208
|
* `language`: language code to filter by (optional)
|
|
208
209
|
* `voice`: name or name pattern to filter by (optional)
|
|
209
210
|
* `voiceGender`: gender to filter by (optional)
|
|
211
|
+
|
|
212
|
+
Also accepted are engine-specific options that may be required in order to retrieve the voice list, especially for cloud engines. Examples:
|
|
213
|
+
* `googleCloud.apiKey`
|
|
214
|
+
* `microsoftAzure.subscriptionKey`, `microsoftAzure.serviceRegion`
|
|
215
|
+
* `amazonPolly.region`, `amazonPolly.accessKeyId`, `amazonPolly.secretAccessKey`
|
|
216
|
+
* `elevenLabs.apiKey`, `elevenLabs.modelId`
|
package/docs/Tasklist.md
CHANGED
|
@@ -42,14 +42,13 @@
|
|
|
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
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
52
|
* 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
53
|
* Mode to print IPA words when speaking
|
|
55
54
|
* Show a message when a new version is available
|
|
@@ -58,7 +57,7 @@
|
|
|
58
57
|
* Option to set audio output device
|
|
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`.
|
|
@@ -85,7 +84,7 @@
|
|
|
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 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 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
|
|
@@ -171,13 +172,15 @@
|
|
|
171
172
|
### Recognition / Whisper
|
|
172
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).
|
|
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
|
+
* Log individual tokens to the terminal as they are being decoded from the model
|
|
176
|
+
* Add sampling and temperature support to decoder
|
|
174
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.
|
|
175
178
|
* Cache last model
|
|
176
179
|
* Integrate speech language detection into the recognition itself, so it is done efficiently when the language is not known
|
|
177
180
|
* Bring back option to use eSpeak DTW based alignment on segments, as an alternative approach
|
|
178
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
|
|
179
182
|
* Way to specify model size, such that the English-only/multilingual would be auto selection for sizes other than `tiny`?
|
|
180
|
-
* Accept custom prompt
|
|
183
|
+
* Accept custom prompt through an option
|
|
181
184
|
|
|
182
185
|
### Alignment
|
|
183
186
|
* Warn when input is larger than DTW window (this can also happen when synthesizing SSML, which can't be split to segments)
|
|
@@ -240,7 +243,7 @@
|
|
|
240
243
|
* Live vosk alternatives events
|
|
241
244
|
* Implement beam search for Whisper decoder
|
|
242
245
|
* Implement beam search for Silero decoder
|
|
243
|
-
* Investigate exporting Whisper models to 16-bit
|
|
246
|
+
* Investigate exporting Whisper models to 16-bit quantized ONNX or a mix of 16-bit and 32-bits
|
|
244
247
|
|
|
245
248
|
### Web
|
|
246
249
|
* Web based frontend UI to the server
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echogarden",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.8",
|
|
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",
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
"ndarray-ops": "^1.2.2",
|
|
93
93
|
"onnxruntime-node": "^1.15.1",
|
|
94
94
|
"sam-js": "^0.2.1",
|
|
95
|
+
"strip-ansi": "^7.1.0",
|
|
95
96
|
"tar": "^6.1.15",
|
|
96
97
|
"tinyld": "^1.3.4",
|
|
97
98
|
"ws": "^8.13.0",
|