echogarden 0.11.13 → 0.11.14

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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Echogarden
2
2
 
3
- Echogarden is an integrated speech system that provides a variety of synthesis, recognition, alignment, and other processing tools, designed to be directly accessible to end-users:
3
+ Echogarden is an integrated speech toolset that provides a variety of synthesis, recognition, alignment, and other processing tools, designed to be directly accessible to end-users:
4
4
 
5
- * Easy to install and update
5
+ * Easy to install, run, and update
6
6
  * Runs on Windows (x64), macOS (x64, ARM64) and Linux (x64)
7
7
  * Written in TypeScript, for the Node.js runtime
8
8
  * Doesn't require Python, Docker, or similar system-level dependencies
@@ -16,7 +16,7 @@ Echogarden is an integrated speech system that provides a variety of synthesis,
16
16
  * Word-level timestamps for all synthesis and recognition outputs
17
17
  * Speech-to-transcript alignment using dynamic time warping (DTW), and dynamic time warping with recognition assist (DTW-RA) methods, including support for multi-pass (hierarchical) processing
18
18
  * Advanced subtitle generation, accounting for sentence and phrase boundaries
19
- * Can translate speech in any one of 98 languages, transcribe it directly to English, and produce near word-level synchronized subtitles for the translated transcript
19
+ * Can directly generate translated transcripts for 98 languages, transcribed directly to English, and produce near word-level synchronized subtitles for the translated transcript
20
20
  * Attempts to improve TTS pronunciation accuracy on some engines: adds text normalization (e.g. idiomatic date and currency pronunciation), heteronym disambiguation (based on a rule-based model) and user-customizable pronunciation lexicons
21
21
  * Internal package system that auto-downloads and installs voices, models and other resources, as needed
22
22
  * Other features include: language detection (for both audio and text), voice activity detection, and speech denoising
@@ -46,7 +46,7 @@ npm update echogarden -g
46
46
 
47
47
  ## Interfacing with the system
48
48
 
49
- Currently, the software is operated mainly through a [command-line interface](docs/CLI.md), which enables powerful customization and is especially useful for long-running bulk operations.
49
+ Currently, the tools are accessible mainly through a [command-line interface](docs/CLI.md), which enables powerful customization and is especially useful for long-running bulk operations.
50
50
 
51
51
  Development of more graphical and interactive tooling is [currently ongoing](https://github.com/echogarden-project/echogarden/issues/28).
52
52
 
@@ -67,7 +67,7 @@ If you are a developer, you can also [import the package as a module](docs/API.m
67
67
 
68
68
  This project consolidates, and builds upon the effort of many different individuals and companies, as well as contributing a number of original works.
69
69
 
70
- Designed and developed by Rotem Dan.
70
+ Designed and developed by Rotem Dan (IPA: /ˈʁɒːtem ˈdän/).
71
71
 
72
72
  ## License
73
73
 
@@ -525,8 +525,8 @@
525
525
  "language": {
526
526
  "type": "string"
527
527
  },
528
- "kind": {
529
- "$ref": "#/definitions/SubtitlesKind"
528
+ "mode": {
529
+ "$ref": "#/definitions/SubtitlesMode"
530
530
  },
531
531
  "maxLineCount": {
532
532
  "type": "number"
@@ -566,7 +566,7 @@
566
566
  },
567
567
  "additionalProperties": false
568
568
  },
569
- "SubtitlesKind": {
569
+ "SubtitlesMode": {
570
570
  "type": "string",
571
571
  "enum": [
572
572
  "segment",
@@ -8,11 +8,11 @@ export type Cue = {
8
8
  startTime: number;
9
9
  endTime: number;
10
10
  };
11
- export type SubtitlesKind = 'segment' | 'sentence' | 'word' | 'phone' | 'word-phone';
11
+ export type SubtitlesMode = 'segment' | 'sentence' | 'word' | 'phone' | 'word-phone';
12
12
  export interface SubtitlesConfig {
13
13
  format?: 'srt' | 'webvtt';
14
14
  language?: string;
15
- kind?: SubtitlesKind;
15
+ mode?: SubtitlesMode;
16
16
  maxLineCount?: number;
17
17
  maxLineWidth?: number;
18
18
  minWordsInLine?: number;
@@ -79,7 +79,7 @@ export function timelineToSubtitles(timeline, subtitlesConfig) {
79
79
  }
80
80
  // Generate the cues from the given timeline
81
81
  let cues;
82
- if (config.kind == 'segment' || config.kind == 'sentence') {
82
+ if (config.mode == 'segment' || config.mode == 'sentence') {
83
83
  cues = getCuesFromTimeline_IsolateSegmentSentence(timeline, config);
84
84
  // Extend cue end times to maximum duration set, if possible
85
85
  if (config.maxAddedDuration > 0) {
@@ -90,7 +90,7 @@ export function timelineToSubtitles(timeline, subtitlesConfig) {
90
90
  }
91
91
  }
92
92
  }
93
- else if (config.kind == 'word' || config.kind == 'phone' || config.kind == 'word-phone') {
93
+ else if (config.mode == 'word' || config.mode == 'phone' || config.mode == 'word-phone') {
94
94
  cues = getCuesFromTimeline_IsolateWordPhone(timeline, config);
95
95
  }
96
96
  else {
@@ -124,7 +124,7 @@ function getCuesFromTimeline_IsolateSegmentSentence(timeline, config) {
124
124
  // Generate one or more cues from each segment or sentence in the timeline.
125
125
  for (let entry of timeline) {
126
126
  if (entry.type == 'segment' && entry.timeline?.[0].type == 'sentence') {
127
- if (config.kind == 'segment') {
127
+ if (config.mode == 'segment') {
128
128
  // If the mode is 'segment', flatten all sentences to a single word timeline
129
129
  entry.timeline = entry.timeline.flatMap(t => t.timeline);
130
130
  }
@@ -243,13 +243,13 @@ function getCuesFromTimeline_IsolateWordPhone(timeline, config) {
243
243
  if (timeline.length == 0) {
244
244
  return [];
245
245
  }
246
- const kind = config.kind;
246
+ const mode = config.mode;
247
247
  const cues = [];
248
248
  for (const entry of timeline) {
249
249
  const entryIsWord = entry.type == 'word';
250
250
  const entryIsPhone = entry.type == 'phone';
251
- const shouldIncludeEntry = (entryIsWord && (kind == 'word' || kind == 'word-phone')) ||
252
- (entryIsPhone && (kind == 'phone' || kind == 'word-phone'));
251
+ const shouldIncludeEntry = (entryIsWord && (mode == 'word' || mode == 'word-phone')) ||
252
+ (entryIsPhone && (mode == 'phone' || mode == 'word-phone'));
253
253
  if (shouldIncludeEntry) {
254
254
  cues.push({
255
255
  lines: [entry.text],
@@ -325,7 +325,7 @@ function cueObjectToText(cue, cueIndex, config) {
325
325
  }
326
326
  export const defaultSubtitlesBaseConfig = {
327
327
  format: 'srt',
328
- kind: 'sentence',
328
+ mode: 'sentence',
329
329
  maxLineCount: 2,
330
330
  maxLineWidth: 42,
331
331
  minWordsInLine: 4,
@@ -6,7 +6,7 @@ import { getEmptyRawAudio } from "../audio/AudioUtilities.js";
6
6
  import { playAudioWithTimelinePhones } from "../audio/AudioPlayer.js";
7
7
  import { getNormalizedFragmentsForSpeech } from "../nlp/TextNormalizer.js";
8
8
  import { ipaPhoneToKirshenbaum } from "../nlp/PhoneConversion.js";
9
- import { splitToWords } from "../nlp/Segmentation.js";
9
+ import { splitToWords, wordCharacterPattern } from "../nlp/Segmentation.js";
10
10
  import { tryGetFirstLexiconSubstitution } from "../nlp/Lexicon.js";
11
11
  import { phonemizeSentence } from "../nlp/EspeakPhonemizer.js";
12
12
  const log = logToStderr;
@@ -24,7 +24,22 @@ export async function preprocessAndSynthesize(text, language, espeakOptions, lex
24
24
  const phonemizedFragmentsSubstitutions = new Map();
25
25
  fragments = [];
26
26
  preprocessedFragments = [];
27
- const words = (await splitToWords(text, language)).filter(word => word.trim() != "");
27
+ let words = await splitToWords(text, language);
28
+ // Merge repeating symbol words to a single word to work around eSpeak bug
29
+ const wordsWithMerges = [];
30
+ for (let i = 0; i < words.length; i++) {
31
+ const currentWord = words[i];
32
+ const previousWord = words[i - 1];
33
+ if (i > 0 && currentWord == previousWord && !wordCharacterPattern.test(currentWord)) {
34
+ wordsWithMerges[wordsWithMerges.length - 1] += currentWord;
35
+ }
36
+ else {
37
+ wordsWithMerges.push(currentWord);
38
+ }
39
+ }
40
+ words = wordsWithMerges;
41
+ // Remove words containing only whitespace
42
+ words = words.filter(word => word.trim() != "");
28
43
  const { normalizedFragments, referenceFragments } = getNormalizedFragmentsForSpeech(words, language);
29
44
  const simplifiedFragments = normalizedFragments.map(word => simplifyPunctuationCharacters(word).toLocaleLowerCase());
30
45
  for (let fragmentIndex = 0; fragmentIndex < normalizedFragments.length; fragmentIndex++) {
@@ -1 +1 @@
1
- {"version":3,"file":"EspeakTTS.js","sourceRoot":"","sources":["../../src/synthesis/EspeakTTS.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EspeakTTS.js","sourceRoot":"","sources":["../../src/synthesis/EspeakTTS.ts"],"names":[],"mappings":"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"}
package/docs/Options.md CHANGED
@@ -131,7 +131,7 @@ Applicable to CLI command: `transcribe`, API method: `recognize`
131
131
  * `languageDetection`: prefix to provide custom options for language detection. Options detailed in section for speech language detection
132
132
 
133
133
  **Subtitles**
134
- * `subtitles.kind`: kind of subtitles to generate. Can be `segment` (ensures each segment starts at a new cue), `sentence` (ensures each sentence starts at a new cue), `word` (one word per cue), `phone` (one phone per cue), `word-phone` (include both `word` and `phone` cues, with overlapping times ranges). Defaults to `sentence`
134
+ * `subtitles.mode`: subtitle generation mode. Can be `segment` (ensures each segment starts at a new cue), `sentence` (ensures each sentence starts at a new cue), `word` (one word per cue), `phone` (one phone per cue), `word-phone` (include both `word` and `phone` cues, with overlapping times ranges). Defaults to `sentence`
135
135
  * `subtitles.maxLineCount`: maximum number of lines per cue. Defaults to `2`
136
136
  * `subtitles.maxLineWidth`: maximum characters in a line. Defaults to `42`
137
137
  * `subtitles.minWordsInLine`: minimum number of remaining words to break to a new line. Defaults to `4`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "echogarden",
3
- "version": "0.11.13",
4
- "description": "An integrated speech system, providing a variety of synthesis, recognition, alignment, and other processing tools, designed to be directly accessible to end-users.",
3
+ "version": "0.11.14",
4
+ "description": "An integrated speech toolset, providing a variety of synthesis, recognition, alignment, and other processing tools, designed to be directly accessible to end-users.",
5
5
  "author": "Rotem Dan",
6
6
  "license": "GPL-3.0",
7
7
  "keywords": [
@@ -108,7 +108,7 @@ export function timelineToSubtitles(timeline: Timeline, subtitlesConfig?: Subtit
108
108
  // Generate the cues from the given timeline
109
109
  let cues: Cue[]
110
110
 
111
- if (config.kind == 'segment' || config.kind == 'sentence') {
111
+ if (config.mode == 'segment' || config.mode == 'sentence') {
112
112
  cues = getCuesFromTimeline_IsolateSegmentSentence(timeline, config)
113
113
 
114
114
  // Extend cue end times to maximum duration set, if possible
@@ -120,7 +120,7 @@ export function timelineToSubtitles(timeline: Timeline, subtitlesConfig?: Subtit
120
120
  previousCue.endTime = Math.min(previousCue.endTime + config.maxAddedDuration!, currentCue.startTime)
121
121
  }
122
122
  }
123
- } else if (config.kind == 'word' || config.kind == 'phone' || config.kind == 'word-phone') {
123
+ } else if (config.mode == 'word' || config.mode == 'phone' || config.mode == 'word-phone') {
124
124
  cues = getCuesFromTimeline_IsolateWordPhone(timeline, config)
125
125
  } else {
126
126
  throw new Error('Invalid subtitles mode.')
@@ -162,7 +162,7 @@ function getCuesFromTimeline_IsolateSegmentSentence(timeline: Timeline, config:
162
162
  // Generate one or more cues from each segment or sentence in the timeline.
163
163
  for (let entry of timeline) {
164
164
  if (entry.type == 'segment' && entry.timeline?.[0].type == 'sentence') {
165
- if (config.kind == 'segment') {
165
+ if (config.mode == 'segment') {
166
166
  // If the mode is 'segment', flatten all sentences to a single word timeline
167
167
  entry.timeline = entry.timeline!.flatMap(t => t.timeline!)
168
168
  } else {
@@ -318,7 +318,7 @@ function getCuesFromTimeline_IsolateWordPhone(timeline: Timeline, config: Subtit
318
318
  return []
319
319
  }
320
320
 
321
- const kind = config.kind!
321
+ const mode = config.mode!
322
322
 
323
323
  const cues: Cue[] = []
324
324
 
@@ -327,8 +327,8 @@ function getCuesFromTimeline_IsolateWordPhone(timeline: Timeline, config: Subtit
327
327
  const entryIsPhone = entry.type == 'phone'
328
328
 
329
329
  const shouldIncludeEntry =
330
- (entryIsWord && (kind == 'word' || kind == 'word-phone')) ||
331
- (entryIsPhone && (kind == 'phone' || kind == 'word-phone'))
330
+ (entryIsWord && (mode == 'word' || mode == 'word-phone')) ||
331
+ (entryIsPhone && (mode == 'phone' || mode == 'word-phone'))
332
332
 
333
333
  if (shouldIncludeEntry) {
334
334
  cues.push({
@@ -433,12 +433,12 @@ export type Cue = {
433
433
  endTime: number
434
434
  }
435
435
 
436
- export type SubtitlesKind = 'segment' | 'sentence' | 'word' | 'phone' | 'word-phone'
436
+ export type SubtitlesMode = 'segment' | 'sentence' | 'word' | 'phone' | 'word-phone'
437
437
 
438
438
  export interface SubtitlesConfig {
439
439
  format?: 'srt' | 'webvtt'
440
440
  language?: string
441
- kind?: SubtitlesKind
441
+ mode?: SubtitlesMode
442
442
 
443
443
  maxLineCount?: number
444
444
  maxLineWidth?: number
@@ -454,7 +454,7 @@ export interface SubtitlesConfig {
454
454
 
455
455
  export const defaultSubtitlesBaseConfig: SubtitlesConfig = {
456
456
  format: 'srt',
457
- kind: 'sentence',
457
+ mode: 'sentence',
458
458
 
459
459
  maxLineCount: 2,
460
460
  maxLineWidth: 42,
@@ -6,7 +6,7 @@ import { RawAudio, getEmptyRawAudio } from "../audio/AudioUtilities.js"
6
6
  import { playAudioWithTimelinePhones } from "../audio/AudioPlayer.js"
7
7
  import { getNormalizedFragmentsForSpeech } from "../nlp/TextNormalizer.js"
8
8
  import { ipaPhoneToKirshenbaum } from "../nlp/PhoneConversion.js"
9
- import { splitToWords } from "../nlp/Segmentation.js"
9
+ import { splitToWords, wordCharacterPattern } from "../nlp/Segmentation.js"
10
10
  import { Lexicon, tryGetFirstLexiconSubstitution } from "../nlp/Lexicon.js"
11
11
  import { phonemizeSentence } from "../nlp/EspeakPhonemizer.js"
12
12
  import { Timeline, TimelineEntry } from "../utilities/Timeline.js"
@@ -34,7 +34,26 @@ export async function preprocessAndSynthesize(text: string, language: string, es
34
34
  fragments = []
35
35
  preprocessedFragments = []
36
36
 
37
- const words = (await splitToWords(text, language)).filter(word => word.trim() != "")
37
+ let words = await splitToWords(text, language)
38
+
39
+ // Merge repeating symbol words to a single word to work around eSpeak bug
40
+ const wordsWithMerges: string[] = []
41
+
42
+ for (let i = 0; i < words.length; i++) {
43
+ const currentWord = words[i]
44
+ const previousWord = words[i-1]
45
+
46
+ if (i > 0 && currentWord == previousWord && !wordCharacterPattern.test(currentWord)) {
47
+ wordsWithMerges[wordsWithMerges.length - 1] += currentWord
48
+ } else {
49
+ wordsWithMerges.push(currentWord)
50
+ }
51
+ }
52
+
53
+ words = wordsWithMerges
54
+
55
+ // Remove words containing only whitespace
56
+ words = words.filter(word => word.trim() != "")
38
57
 
39
58
  const { normalizedFragments, referenceFragments } = getNormalizedFragmentsForSpeech(words, language)
40
59