echogarden 1.3.0 → 1.3.1

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 (62) hide show
  1. package/dist/alignment/TextAlignment.d.ts +16 -0
  2. package/dist/alignment/TextAlignment.js +63 -0
  3. package/dist/alignment/TextAlignment.js.map +1 -0
  4. package/dist/api/Alignment.js +6 -1
  5. package/dist/api/Alignment.js.map +1 -1
  6. package/dist/api/Denoising.js +0 -1
  7. package/dist/api/Denoising.js.map +1 -1
  8. package/dist/api/LanguageDetection.js +2 -2
  9. package/dist/api/LanguageDetection.js.map +1 -1
  10. package/dist/api/Recognition.js +3 -1
  11. package/dist/api/Recognition.js.map +1 -1
  12. package/dist/api/Synthesis.js +1 -1
  13. package/dist/api/Synthesis.js.map +1 -1
  14. package/dist/api/Translation.js +3 -1
  15. package/dist/api/Translation.js.map +1 -1
  16. package/dist/api/TranslationAlignment.js +4 -1
  17. package/dist/api/TranslationAlignment.js.map +1 -1
  18. package/dist/api/VoiceActivityDetection.js +5 -2
  19. package/dist/api/VoiceActivityDetection.js.map +1 -1
  20. package/dist/audio/AudioUtilities.d.ts +1 -1
  21. package/dist/audio/AudioUtilities.js +2 -2
  22. package/dist/audio/AudioUtilities.js.map +1 -1
  23. package/dist/cli/CLILauncher.js +1 -2
  24. package/dist/cli/CLILauncher.js.map +1 -1
  25. package/dist/codecs/FFMpegTranscoder.js +4 -1
  26. package/dist/codecs/FFMpegTranscoder.js.map +1 -1
  27. package/dist/codecs/WaveCodec.d.ts +1 -1
  28. package/dist/codecs/WaveCodec.js +13 -5
  29. package/dist/codecs/WaveCodec.js.map +1 -1
  30. package/dist/dsp/SpeexResampler.js +49 -21
  31. package/dist/dsp/SpeexResampler.js.map +1 -1
  32. package/dist/synthesis/CoquiServerTTS.js +1 -1
  33. package/dist/synthesis/CoquiServerTTS.js.map +1 -1
  34. package/dist/synthesis/VitsTTS.js +1 -1
  35. package/dist/synthesis/VitsTTS.js.map +1 -1
  36. package/dist/text-translation/NLLBTextTranslation.d.ts +1 -0
  37. package/dist/text-translation/NLLBTextTranslation.js +237 -0
  38. package/dist/text-translation/NLLBTextTranslation.js.map +1 -0
  39. package/dist/utilities/PackageManager.js +2 -0
  40. package/dist/utilities/PackageManager.js.map +1 -1
  41. package/docs/Development.md +1 -1
  42. package/docs/Server.md +1 -1
  43. package/docs/Tasklist.md +1 -1
  44. package/package.json +11 -10
  45. package/src/alignment/TextAlignment.ts +96 -0
  46. package/src/api/Alignment.ts +10 -1
  47. package/src/api/Denoising.ts +0 -2
  48. package/src/api/LanguageDetection.ts +2 -3
  49. package/src/api/Recognition.ts +3 -1
  50. package/src/api/Synthesis.ts +1 -1
  51. package/src/api/Translation.ts +3 -1
  52. package/src/api/TranslationAlignment.ts +5 -1
  53. package/src/api/VoiceActivityDetection.ts +7 -4
  54. package/src/audio/AudioUtilities.ts +2 -2
  55. package/src/cli/CLILauncher.ts +1 -2
  56. package/src/codecs/FFMpegTranscoder.ts +5 -1
  57. package/src/codecs/WaveCodec.ts +15 -5
  58. package/src/dsp/SpeexResampler.ts +62 -23
  59. package/src/synthesis/CoquiServerTTS.ts +1 -1
  60. package/src/synthesis/VitsTTS.ts +2 -2
  61. package/src/text-translation/NLLBTextTranslation.ts +252 -0
  62. package/src/utilities/PackageManager.ts +3 -0
@@ -0,0 +1,237 @@
1
+ import { Logger } from '../utilities/Logger.js';
2
+ import { loadPackage } from '../utilities/PackageManager.js';
3
+ export async function translateText(sourceText, sourceLanguage, targetLanguage) {
4
+ const logger = new Logger();
5
+ const { AutoTokenizer, M2M100ForConditionalGeneration } = await import('@echogarden/transformers-nodejs-lite');
6
+ const modelPath = await loadPackage(`xenova-nllb-200-distilled-600M-quantized`);
7
+ const tokenizer = await AutoTokenizer.from_pretrained(modelPath);
8
+ const model = await M2M100ForConditionalGeneration.from_pretrained(modelPath);
9
+ const config = {
10
+ src_lang: 'eng_Latn',
11
+ tgt_lang: 'fra_Latn'
12
+ };
13
+ const inputs = tokenizer._build_translation_inputs(sourceText, {
14
+ padding: true,
15
+ truncation: true,
16
+ }, config);
17
+ const result = await model.generate(inputs.input_ids, config);
18
+ logger.log(tokenizer.model.convert_ids_to_tokens(result[0]));
19
+ const inputTokens = tokenizer.model.convert_ids_to_tokens(Array.from(inputs.input_ids.data));
20
+ const embeddingResult = await model(inputs);
21
+ const lastHiddenState = embeddingResult.last_hidden_state;
22
+ const tokenCount = lastHiddenState.dims[1];
23
+ const embeddingSize = lastHiddenState.dims[2];
24
+ for (let i = 0; i < tokenCount; i++) {
25
+ const tokenEmbedding = lastHiddenState.data.slice(i * embeddingSize, (i + 1) * embeddingSize);
26
+ const tokenId = inputTokens[i];
27
+ logger.log(`Token ${i} (${tokenId}):`, tokenEmbedding);
28
+ }
29
+ logger.log(inputTokens);
30
+ }
31
+ const languageNameToNLLBCode = {
32
+ 'Acehnese (Arabic script)': 'ace_Arab',
33
+ 'Acehnese (Latin script)': 'ace_Latn',
34
+ 'Afrikaans': 'afr_Latn',
35
+ 'Akan': 'aka_Latn',
36
+ 'Amharic': 'amh_Ethi',
37
+ 'Armenian': 'hye_Armn',
38
+ 'Assamese': 'asm_Beng',
39
+ 'Asturian': 'ast_Latn',
40
+ 'Awadhi': 'awa_Deva',
41
+ 'Ayacucho Quechua': 'quy_Latn',
42
+ 'Balinese': 'ban_Latn',
43
+ 'Bambara': 'bam_Latn',
44
+ 'Banjar (Arabic script)': 'bjn_Arab',
45
+ 'Banjar (Latin script)': 'bjn_Latn',
46
+ 'Bashkir': 'bak_Cyrl',
47
+ 'Basque': 'eus_Latn',
48
+ 'Belarusian': 'bel_Cyrl',
49
+ 'Bemba': 'bem_Latn',
50
+ 'Bengali': 'ben_Beng',
51
+ 'Bhojpuri': 'bho_Deva',
52
+ 'Bosnian': 'bos_Latn',
53
+ 'Buginese': 'bug_Latn',
54
+ 'Bulgarian': 'bul_Cyrl',
55
+ 'Burmese': 'mya_Mymr',
56
+ 'Catalan': 'cat_Latn',
57
+ 'Cebuano': 'ceb_Latn',
58
+ 'Central Atlas Tamazight': 'tzm_Tfng',
59
+ 'Central Aymara': 'ayr_Latn',
60
+ 'Central Kanuri (Arabic script)': 'knc_Arab',
61
+ 'Central Kanuri (Latin script)': 'knc_Latn',
62
+ 'Central Kurdish': 'ckb_Arab',
63
+ 'Chhattisgarhi': 'hne_Deva',
64
+ 'Chinese (Simplified)': 'zho_Hans',
65
+ 'Chinese (Traditional)': 'zho_Hant',
66
+ 'Chokwe': 'cjk_Latn',
67
+ 'Crimean Tatar': 'crh_Latn',
68
+ 'Croatian': 'hrv_Latn',
69
+ 'Czech': 'ces_Latn',
70
+ 'Danish': 'dan_Latn',
71
+ 'Dari': 'prs_Arab',
72
+ 'Dutch': 'nld_Latn',
73
+ 'Dyula': 'dyu_Latn',
74
+ 'Dzongkha': 'dzo_Tibt',
75
+ 'Eastern Panjabi': 'pan_Guru',
76
+ 'Eastern Yiddish': 'ydd_Hebr',
77
+ 'Egyptian Arabic': 'arz_Arab',
78
+ 'English': 'eng_Latn',
79
+ 'Esperanto': 'epo_Latn',
80
+ 'Estonian': 'est_Latn',
81
+ 'Ewe': 'ewe_Latn',
82
+ 'Faroese': 'fao_Latn',
83
+ 'Fijian': 'fij_Latn',
84
+ 'Finnish': 'fin_Latn',
85
+ 'Fon': 'fon_Latn',
86
+ 'French': 'fra_Latn',
87
+ 'Friulian': 'fur_Latn',
88
+ 'Galician': 'glg_Latn',
89
+ 'Ganda': 'lug_Latn',
90
+ 'Georgian': 'kat_Geor',
91
+ 'German': 'deu_Latn',
92
+ 'Greek': 'ell_Grek',
93
+ 'Guarani': 'grn_Latn',
94
+ 'Gujarati': 'guj_Gujr',
95
+ 'Haitian Creole': 'hat_Latn',
96
+ 'Halh Mongolian': 'khk_Cyrl',
97
+ 'Hausa': 'hau_Latn',
98
+ 'Hebrew': 'heb_Hebr',
99
+ 'Hindi': 'hin_Deva',
100
+ 'Hungarian': 'hun_Latn',
101
+ 'Icelandic': 'isl_Latn',
102
+ 'Igbo': 'ibo_Latn',
103
+ 'Ilocano': 'ilo_Latn',
104
+ 'Indonesian': 'ind_Latn',
105
+ 'Irish': 'gle_Latn',
106
+ 'Italian': 'ita_Latn',
107
+ 'Japanese': 'jpn_Jpan',
108
+ 'Javanese': 'jav_Latn',
109
+ 'Jingpho': 'kac_Latn',
110
+ 'Kabiyè': 'kbp_Latn',
111
+ 'Kabuverdianu': 'kea_Latn',
112
+ 'Kabyle': 'kab_Latn',
113
+ 'Kamba': 'kam_Latn',
114
+ 'Kannada': 'kan_Knda',
115
+ 'Kashmiri (Arabic script)': 'kas_Arab',
116
+ 'Kashmiri (Devanagari script)': 'kas_Deva',
117
+ 'Kazakh': 'kaz_Cyrl',
118
+ 'Khmer': 'khm_Khmr',
119
+ 'Kikongo': 'kon_Latn',
120
+ 'Kikuyu': 'kik_Latn',
121
+ 'Kimbundu': 'kmb_Latn',
122
+ 'Kinyarwanda': 'kin_Latn',
123
+ 'Korean': 'kor_Hang',
124
+ 'Kyrgyz': 'kir_Cyrl',
125
+ 'Lao': 'lao_Laoo',
126
+ 'Latgalian': 'ltg_Latn',
127
+ 'Ligurian': 'lij_Latn',
128
+ 'Limburgish': 'lim_Latn',
129
+ 'Lingala': 'lin_Latn',
130
+ 'Lithuanian': 'lit_Latn',
131
+ 'Lombard': 'lmo_Latn',
132
+ 'Luba-Kasai': 'lua_Latn',
133
+ 'Luo': 'luo_Latn',
134
+ 'Luxembourgish': 'ltz_Latn',
135
+ 'Macedonian': 'mkd_Cyrl',
136
+ 'Magahi': 'mag_Deva',
137
+ 'Maithili': 'mai_Deva',
138
+ 'Malayalam': 'mal_Mlym',
139
+ 'Maltese': 'mlt_Latn',
140
+ 'Maori': 'mri_Latn',
141
+ 'Marathi': 'mar_Deva',
142
+ 'Meitei (Bengali script)': 'mni_Beng',
143
+ 'Mesopotamian Arabic': 'acm_Arab',
144
+ 'Minangkabau (Arabic script)': 'min_Arab',
145
+ 'Minangkabau (Latin script)': 'min_Latn',
146
+ 'Mizo': 'lus_Latn',
147
+ 'Modern Standard Arabic (Romanized)': 'arb_Latn',
148
+ 'Modern Standard Arabic': 'arb_Arab',
149
+ 'Moroccan Arabic': 'ary_Arab',
150
+ 'Mossi': 'mos_Latn',
151
+ 'Najdi Arabic': 'ars_Arab',
152
+ 'Nepali': 'npi_Deva',
153
+ 'Nigerian Fulfulde': 'fuv_Latn',
154
+ 'North Azerbaijani': 'azj_Latn',
155
+ 'North Levantine Arabic': 'apc_Arab',
156
+ 'Northern Kurdish': 'kmr_Latn',
157
+ 'Northern Sotho': 'nso_Latn',
158
+ 'Northern Uzbek': 'uzn_Latn',
159
+ 'Norwegian Bokmål': 'nob_Latn',
160
+ 'Norwegian Nynorsk': 'nno_Latn',
161
+ 'Nuer': 'nus_Latn',
162
+ 'Nyanja': 'nya_Latn',
163
+ 'Occitan': 'oci_Latn',
164
+ 'Odia': 'ory_Orya',
165
+ 'Pangasinan': 'pag_Latn',
166
+ 'Papiamento': 'pap_Latn',
167
+ 'Plateau Malagasy': 'plt_Latn',
168
+ 'Polish': 'pol_Latn',
169
+ 'Portuguese': 'por_Latn',
170
+ 'Romanian': 'ron_Latn',
171
+ 'Rundi': 'run_Latn',
172
+ 'Russian': 'rus_Cyrl',
173
+ 'Samoan': 'smo_Latn',
174
+ 'Sango': 'sag_Latn',
175
+ 'Sanskrit': 'san_Deva',
176
+ 'Santali': 'sat_Olck',
177
+ 'Sardinian': 'srd_Latn',
178
+ 'Scottish Gaelic': 'gla_Latn',
179
+ 'Serbian': 'srp_Cyrl',
180
+ 'Shan': 'shn_Mymr',
181
+ 'Shona': 'sna_Latn',
182
+ 'Sicilian': 'scn_Latn',
183
+ 'Silesian': 'szl_Latn',
184
+ 'Sindhi': 'snd_Arab',
185
+ 'Sinhala': 'sin_Sinh',
186
+ 'Slovak': 'slk_Latn',
187
+ 'Slovenian': 'slv_Latn',
188
+ 'Somali': 'som_Latn',
189
+ 'South Azerbaijani': 'azb_Arab',
190
+ 'South Levantine Arabic': 'ajp_Arab',
191
+ 'Southern Pashto': 'pbt_Arab',
192
+ 'Southern Sotho': 'sot_Latn',
193
+ 'Southwestern Dinka': 'dik_Latn',
194
+ 'Spanish': 'spa_Latn',
195
+ 'Standard Latvian': 'lvs_Latn',
196
+ 'Standard Malay': 'zsm_Latn',
197
+ 'Standard Tibetan': 'bod_Tibt',
198
+ 'Sundanese': 'sun_Latn',
199
+ 'Swahili': 'swh_Latn',
200
+ 'Swati': 'ssw_Latn',
201
+ 'Swedish': 'swe_Latn',
202
+ 'Tagalog': 'tgl_Latn',
203
+ 'Tajik': 'tgk_Cyrl',
204
+ 'Tamasheq (Latin script)': 'taq_Latn',
205
+ 'Tamasheq (Tifinagh script)': 'taq_Tfng',
206
+ 'Tamil': 'tam_Taml',
207
+ 'Tatar': 'tat_Cyrl',
208
+ 'Ta’izzi-Adeni Arabic': 'acq_Arab',
209
+ 'Telugu': 'tel_Telu',
210
+ 'Thai': 'tha_Thai',
211
+ 'Tigrinya': 'tir_Ethi',
212
+ 'Tok Pisin': 'tpi_Latn',
213
+ 'Tosk Albanian': 'als_Latn',
214
+ 'Tsonga': 'tso_Latn',
215
+ 'Tswana': 'tsn_Latn',
216
+ 'Tumbuka': 'tum_Latn',
217
+ 'Tunisian Arabic': 'aeb_Arab',
218
+ 'Turkish': 'tur_Latn',
219
+ 'Turkmen': 'tuk_Latn',
220
+ 'Twi': 'twi_Latn',
221
+ 'Ukrainian': 'ukr_Cyrl',
222
+ 'Umbundu': 'umb_Latn',
223
+ 'Urdu': 'urd_Arab',
224
+ 'Uyghur': 'uig_Arab',
225
+ 'Venetian': 'vec_Latn',
226
+ 'Vietnamese': 'vie_Latn',
227
+ 'Waray': 'war_Latn',
228
+ 'Welsh': 'cym_Latn',
229
+ 'West Central Oromo': 'gaz_Latn',
230
+ 'Western Persian': 'pes_Arab',
231
+ 'Wolof': 'wol_Latn',
232
+ 'Xhosa': 'xho_Latn',
233
+ 'Yoruba': 'yor_Latn',
234
+ 'Yue Chinese': 'yue_Hant',
235
+ 'Zulu': 'zul_Latn',
236
+ };
237
+ //# sourceMappingURL=NLLBTextTranslation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NLLBTextTranslation.js","sourceRoot":"","sources":["../../src/text-translation/NLLBTextTranslation.ts"],"names":[],"mappings":"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"}
@@ -133,5 +133,7 @@ const packageVersionTagResolutionLookup = {
133
133
  'whisper-tiktoken-data': '20240408',
134
134
  'whisper.cpp-binaries-windows-x64-cublas-12.4.0-latest-patched': '20240409',
135
135
  'whisper.cpp-binaries-windows-x64-cublas-11.8.0-latest-patched': '20240409',
136
+ 'xenova-multilingual-e5-small-quantized': '20240504',
137
+ 'xenova-nllb-200-distilled-600M-quantized': '20240505',
136
138
  };
137
139
  //# sourceMappingURL=PackageManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../src/utilities/PackageManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../src/utilities/PackageManager.ts"],"names":[],"mappings":"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"}
@@ -82,7 +82,7 @@ Add a `.vscode/launch.json` file to launch the CLI in debug mode:
82
82
  "program": "${workspaceFolder}/dist/cli/CLIStarter.js",
83
83
  "outputCapture": "std",
84
84
  "console": "integratedTerminal",
85
- "runtimeArgs": ["--no-warnings", "--no-experimental-fetch", "--experimental-wasi-unstable-preview1", "--trace-uncaught"],
85
+ "runtimeArgs": ["--experimental-wasi-unstable-preview1", "--no-warnings", "--trace-uncaught"],
86
86
 
87
87
  "args": ["speak", "Hello World!", "--debug"]
88
88
  }
package/docs/Server.md CHANGED
@@ -45,7 +45,7 @@ ws.on("open", async () => {
45
45
 
46
46
  ## Protocol details
47
47
 
48
- The protocol is based on binary WebSocket messages, for both request and response objects. Messages are encoded using the [MessagePack](https://msgpack.org/index.html) encoding scheme.
48
+ The protocol is based on binary WebSocket messages, for both request and response objects. Messages are encoded using the [MessagePack](https://msgpack.org) encoding scheme.
49
49
 
50
50
  All messages are objects and have the basic structure:
51
51
 
package/docs/Tasklist.md CHANGED
@@ -260,7 +260,7 @@
260
260
 
261
261
  ### Speech-to-text translation
262
262
 
263
- * Hybrid approach: recognize speech in its language using any recognition model, then translate the resulting transcript using a text-to-text translation engine, and then align the translated transcript to the original one using text-to-text alignment, and map back to the original speech using the recognition timestamps, to get word-level alignment for the translated transcript
263
+ * Hybrid approach: recognize speech in its native language using any recognition model, then translate the resulting transcript using a text-to-text translation engine, and then align the translated transcript to the original one using text-to-text alignment, and map back to the original speech using the recognition timestamps, to get word-level alignment for the translated transcript
264
264
 
265
265
  ## Possible new engines or platforms
266
266
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "echogarden",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.",
5
5
  "author": "Rotem Dan",
6
6
  "license": "GPL-3.0",
@@ -46,17 +46,17 @@
46
46
  "LICENSE.md"
47
47
  ],
48
48
  "scripts": {
49
- "cli": "node --no-warnings --no-experimental-fetch --experimental-wasi-unstable-preview1 ./dist/cli/CLIStarter.js",
50
- "server": "node --no-warnings --no-experimental-fetch --experimental-wasi-unstable-preview1 ./dist/server/ServerStarter.js",
51
- "test": "node --no-warnings --no-experimental-fetch --experimental-wasi-unstable-preview1 --trace-uncaught ./dist/tests/Test.js",
49
+ "cli": "node --experimental-wasi-unstable-preview1 --no-warnings ./dist/cli/CLIStarter.js",
50
+ "server": "node --experimental-wasi-unstable-preview1 --no-warnings ./dist/server/ServerStarter.js",
51
+ "test": "node --experimental-wasi-unstable-preview1 --no-warnings --trace-uncaught ./dist/tests/Test.js",
52
52
  "generate-options-schema": "npx ts-json-schema-generator --path ./src/api/APIOptions.ts --unstable --type APIOptions --tsconfig ./tsconfig.json --out ./data/schemas/options.json"
53
53
  },
54
54
  "bin": {
55
55
  "echogarden": "./dist/cli/CLILauncher.js"
56
56
  },
57
57
  "dependencies": {
58
- "@aws-sdk/client-polly": "^3.567.0",
59
- "@aws-sdk/client-transcribe-streaming": "^3.567.0",
58
+ "@aws-sdk/client-polly": "^3.569.0",
59
+ "@aws-sdk/client-transcribe-streaming": "^3.569.0",
60
60
  "@echogarden/espeak-ng-emscripten": "^0.1.2",
61
61
  "@echogarden/fasttext-wasm": "^0.1.0",
62
62
  "@echogarden/flite-wasi": "^0.1.1",
@@ -67,6 +67,7 @@
67
67
  "@echogarden/sonic-wasm": "^0.1.1",
68
68
  "@echogarden/speex-resampler-wasm": "^0.1.1",
69
69
  "@echogarden/svoxpico-wasm": "^0.1.0",
70
+ "@echogarden/transformers-nodejs-lite": "^2.17.1-lite.3",
70
71
  "@mozilla/readability": "^0.5.0",
71
72
  "alawmulaw": "^6.0.0",
72
73
  "buffer-split": "^1.0.0",
@@ -88,10 +89,10 @@
88
89
  "moving-median": "^1.0.0",
89
90
  "msgpack-lite": "^0.1.26",
90
91
  "onnxruntime-node": "^1.17.3",
91
- "openai": "^4.40.0",
92
+ "openai": "^4.42.0",
92
93
  "sam-js": "^0.2.1",
93
94
  "strip-ansi": "^7.1.0",
94
- "tar": "^7.0.1",
95
+ "tar": "^7.1.0",
95
96
  "tiktoken": "^1.0.14",
96
97
  "tinyld": "^1.3.4",
97
98
  "ws": "^8.17.0",
@@ -99,7 +100,7 @@
99
100
  },
100
101
  "peerDependencies": {
101
102
  "@echogarden/vosk": "^0.3.39-patched.1",
102
- "speaker": "^0.5.4",
103
+ "speaker": "^0.5.5",
103
104
  "winax": "^3.4.2"
104
105
  },
105
106
  "peerDependenciesMeta": {
@@ -119,7 +120,7 @@
119
120
  "@types/graceful-fs": "^4.1.9",
120
121
  "@types/jsdom": "^21.1.6",
121
122
  "@types/msgpack-lite": "^0.1.11",
122
- "@types/node": "^20.12.8",
123
+ "@types/node": "^20.12.10",
123
124
  "@types/recursive-readdir": "^2.2.4",
124
125
  "@types/tar": "^6.1.13",
125
126
  "@types/ws": "^8.5.10",
@@ -0,0 +1,96 @@
1
+ import { type PreTrainedModel, type PreTrainedTokenizer } from '@echogarden/transformers-nodejs-lite'
2
+ import { Logger } from '../utilities/Logger.js'
3
+ import { loadPackage } from '../utilities/PackageManager.js'
4
+
5
+ export async function alignText(text1: string, text2: string) {
6
+ const logger = new Logger()
7
+
8
+ text1 = text1.replaceAll(/(\r?\n)+/g, ' ')
9
+ text2 = text2.replaceAll(/(\r?\n)+/g, ' ')
10
+
11
+ const modelPath = await loadPackage(`xenova-multilingual-e5-small-quantized`)
12
+
13
+ const embeddingModel = new E5TextEmbedding(modelPath)
14
+
15
+ logger.start(`Initialize E5 embedding model`)
16
+ await embeddingModel.initializeIfNeeded()
17
+
18
+ logger.start(`Tokenize text 1`)
19
+ const inputs1 = await embeddingModel.tokenizeToModelInputs(text1)
20
+
21
+ logger.start(`Infer embeddings for text 1`)
22
+ const embeddings1 = await embeddingModel.inferTokenEmbeddings(inputs1)
23
+
24
+ logger.start(`Tokenize text 2`)
25
+ const inputs2 = await embeddingModel.tokenizeToModelInputs(text2)
26
+
27
+ logger.start(`Infer embeddings for text 2`)
28
+ const embeddings2 = await embeddingModel.inferTokenEmbeddings(inputs1)
29
+
30
+ logger.end()
31
+
32
+ logger.log(embeddings1)
33
+ }
34
+
35
+ export class E5TextEmbedding {
36
+ tokenizer?: PreTrainedTokenizer
37
+ model?: PreTrainedModel
38
+
39
+ constructor(public readonly modelPath: string) {
40
+ }
41
+
42
+ async tokenizeToModelInputs(text: string) {
43
+ await this.initializeIfNeeded()
44
+
45
+ const inputs = await this.tokenizer!(text)
46
+
47
+ return inputs
48
+ }
49
+
50
+ async inferTokenEmbeddings(inputs: any) {
51
+ await this.initializeIfNeeded()
52
+
53
+ const tokensText = this.tokenizer!.model.convert_ids_to_tokens(Array.from(inputs.input_ids.data))
54
+
55
+ const result = await this.model!(inputs)
56
+
57
+ const lastHiddenState = result.last_hidden_state
58
+
59
+ const tokenCount = lastHiddenState.dims[1]
60
+ const embeddingSize = lastHiddenState.dims[2]
61
+
62
+ const tokenEmbeddings: TokenEmbeddingData[] = []
63
+
64
+ for (let i = 0; i < tokenCount; i++) {
65
+ const tokenEmbeddingVector = lastHiddenState.data.slice(i * embeddingSize, (i + 1) * embeddingSize)
66
+
67
+ const tokenId = Number(inputs.input_ids.data[i])
68
+ const tokenText = tokensText[i]
69
+
70
+ tokenEmbeddings.push({
71
+ id: tokenId,
72
+ text: tokenText,
73
+ embeddingVector: tokenEmbeddingVector
74
+ })
75
+ }
76
+
77
+ return tokenEmbeddings
78
+ }
79
+
80
+ async initializeIfNeeded() {
81
+ if (this.tokenizer && this.model) {
82
+ return
83
+ }
84
+
85
+ const { AutoTokenizer, AutoModel } = await import('@echogarden/transformers-nodejs-lite')
86
+
87
+ this.tokenizer = await AutoTokenizer.from_pretrained(this.modelPath)
88
+ this.model = await AutoModel.from_pretrained(this.modelPath)
89
+ }
90
+ }
91
+
92
+ export interface TokenEmbeddingData {
93
+ id: number
94
+ text: string
95
+ embeddingVector: Float32Array
96
+ }
@@ -13,10 +13,15 @@ import { DtwGranularity, createAlignmentReferenceUsingEspeak } from '../alignmen
13
13
  import { type SubtitlesConfig } from '../subtitles/Subtitles.js'
14
14
  import { type EspeakOptions, defaultEspeakOptions } from '../synthesis/EspeakTTS.js'
15
15
  import { isWord } from '../nlp/Segmentation.js'
16
+ import { alignText } from '../alignment/TextAlignment.js'
17
+ import { translateText } from '../text-translation/NLLBTextTranslation.js'
16
18
 
17
19
  const log = logToStderr
18
20
 
19
21
  export async function align(input: AudioSourceParam, transcript: string, options: AlignmentOptions): Promise<AlignmentResult> {
22
+ //await alignText(transcript, transcript)
23
+ //await translateText(transcript, 'en', 'de')
24
+
20
25
  const logger = new Logger()
21
26
 
22
27
  const startTimestamp = logger.getTimestamp()
@@ -38,8 +43,10 @@ export async function align(input: AudioSourceParam, transcript: string, options
38
43
  logger.end()
39
44
  logger.log(``)
40
45
 
46
+ logger.start(`Resample audio to 16kHz mono`)
41
47
  sourceRawAudio = await ensureRawAudio(isolatedRawAudio, 16000, 1)
42
48
  } else {
49
+ logger.start(`Resample audio to 16kHz mono`)
43
50
  sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1)
44
51
  }
45
52
 
@@ -52,7 +59,7 @@ export async function align(input: AudioSourceParam, transcript: string, options
52
59
  logger.end()
53
60
  }
54
61
 
55
- logger.start('Prepare for alignment')
62
+ logger.start('Normalize and trim audio')
56
63
 
57
64
  sourceRawAudio = normalizeAudioLevel(sourceRawAudio)
58
65
  sourceRawAudio.audioChannels[0] = trimAudioEnd(sourceRawAudio.audioChannels[0])
@@ -69,6 +76,8 @@ export async function align(input: AudioSourceParam, transcript: string, options
69
76
  }
70
77
  }
71
78
 
79
+ logger.end()
80
+
72
81
  let language: string
73
82
 
74
83
  if (options.language) {
@@ -14,8 +14,6 @@ export async function denoise(input: AudioSourceParam, options: DenoisingOptions
14
14
  const logger = new Logger()
15
15
  const startTime = logger.getTimestamp()
16
16
 
17
- logger.start('Prepare for denoising')
18
-
19
17
  options = extendDeep(defaultDenoisingOptions, options)
20
18
 
21
19
  const inputRawAudio = await ensureRawAudio(input)
@@ -28,6 +28,7 @@ export async function detectSpeechLanguage(input: AudioSourceParam, options: Spe
28
28
 
29
29
  const inputRawAudio = await ensureRawAudio(input)
30
30
 
31
+ logger.start(`Resample audio to 16kHz mono`)
31
32
  let sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1)
32
33
  sourceRawAudio = normalizeAudioLevel(sourceRawAudio)
33
34
  sourceRawAudio.audioChannels[0] = trimAudioEnd(sourceRawAudio.audioChannels[0])
@@ -39,13 +40,11 @@ export async function detectSpeechLanguage(input: AudioSourceParam, options: Spe
39
40
  logger.end()
40
41
  }
41
42
 
42
- logger.start('Prepare for speech language detection')
43
+ logger.start(`Initialize ${options.engine} module`)
43
44
 
44
45
  const defaultLanguage = options.defaultLanguage!
45
46
  const fallbackThresholdProbability = options.fallbackThresholdProbability!
46
47
 
47
- logger.start(`Initialize ${options.engine} module`)
48
-
49
48
  let detectedLanguageProbabilities: LanguageDetectionResults
50
49
 
51
50
  switch (options.engine) {
@@ -41,8 +41,10 @@ export async function recognize(input: AudioSourceParam, options: RecognitionOpt
41
41
  logger.end()
42
42
  logger.log(``)
43
43
 
44
+ logger.start(`Resample audio to 16kHz mono`)
44
45
  sourceRawAudio = await ensureRawAudio(isolatedRawAudio, 16000, 1)
45
46
  } else {
47
+ logger.start(`Resample audio to 16kHz mono`)
46
48
  sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1)
47
49
  }
48
50
 
@@ -55,7 +57,7 @@ export async function recognize(input: AudioSourceParam, options: RecognitionOpt
55
57
  logger.end()
56
58
  }
57
59
 
58
- logger.start('Prepare for recognition')
60
+ logger.start('Normalize and trim audio')
59
61
 
60
62
  sourceRawAudio = normalizeAudioLevel(sourceRawAudio)
61
63
  sourceRawAudio.audioChannels[0] = trimAudioEnd(sourceRawAudio.audioChannels[0])
@@ -301,7 +301,7 @@ async function synthesizeSegment(text: string, options: SynthesisOptions) {
301
301
 
302
302
  const startTimestamp = logger.getTimestamp()
303
303
 
304
- logger.start('Prepare for synthesis')
304
+ logger.start('Prepare text for synthesis')
305
305
 
306
306
  const simplifiedText = simplifyPunctuationCharacters(text)
307
307
 
@@ -43,8 +43,10 @@ export async function translateSpeech(input: AudioSourceParam, options: SpeechTr
43
43
  logger.end()
44
44
  logger.log(``)
45
45
 
46
+ logger.start(`Resample audio to 16kHz mono`)
46
47
  sourceRawAudio = await ensureRawAudio(isolatedRawAudio, 16000, 1)
47
48
  } else {
49
+ logger.start(`Resample audio to 16kHz mono`)
48
50
  sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1)
49
51
  }
50
52
 
@@ -57,7 +59,7 @@ export async function translateSpeech(input: AudioSourceParam, options: SpeechTr
57
59
  logger.end()
58
60
  }
59
61
 
60
- logger.start('Prepare for speech translation')
62
+ logger.start('Normalize and trim audio')
61
63
 
62
64
  sourceRawAudio = normalizeAudioLevel(sourceRawAudio)
63
65
  sourceRawAudio.audioChannels[0] = trimAudioEnd(sourceRawAudio.audioChannels[0])
@@ -35,8 +35,10 @@ export async function alignTranslation(input: AudioSourceParam, transcript: stri
35
35
  logger.end()
36
36
  logger.log(``)
37
37
 
38
+ logger.start(`Resample audio to 16kHz mono`)
38
39
  sourceRawAudio = await ensureRawAudio(isolatedRawAudio, 16000, 1)
39
40
  } else {
41
+ logger.start(`Resample audio to 16kHz mono`)
40
42
  sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1)
41
43
  }
42
44
 
@@ -49,11 +51,13 @@ export async function alignTranslation(input: AudioSourceParam, transcript: stri
49
51
  logger.end()
50
52
  }
51
53
 
52
- logger.start('Prepare for alignment')
54
+ logger.start('Normalize and trim audio')
53
55
 
54
56
  sourceRawAudio = normalizeAudioLevel(sourceRawAudio)
55
57
  sourceRawAudio.audioChannels[0] = trimAudioEnd(sourceRawAudio.audioChannels[0])
56
58
 
59
+ logger.end()
60
+
57
61
  let sourceLanguage: string
58
62
 
59
63
  if (options.sourceLanguage) {