echogarden 3.1.0 → 3.2.0

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 (81) hide show
  1. package/data/lexicons/heteronyms.en.json +1 -1
  2. package/data/lexicons/words.en.json +32 -0
  3. package/dist/api/Synthesis.js +2 -2
  4. package/dist/api/Synthesis.js.map +1 -1
  5. package/dist/encodings/Ascii.d.ts +1 -3
  6. package/dist/encodings/Ascii.d.ts.map +1 -1
  7. package/dist/encodings/Ascii.js +13 -9
  8. package/dist/encodings/Ascii.js.map +1 -1
  9. package/dist/encodings/Base64.d.ts.map +1 -1
  10. package/dist/encodings/Base64.js +9 -0
  11. package/dist/encodings/Base64.js.map +1 -1
  12. package/dist/encodings/Hex.d.ts.map +1 -1
  13. package/dist/encodings/Hex.js +11 -2
  14. package/dist/encodings/Hex.js.map +1 -1
  15. package/dist/encodings/LEB128.d.ts +1 -15
  16. package/dist/encodings/LEB128.d.ts.map +1 -1
  17. package/dist/encodings/LEB128.js +1 -247
  18. package/dist/encodings/LEB128.js.map +1 -1
  19. package/dist/encodings/Utf16.d.ts +1 -3
  20. package/dist/encodings/Utf16.d.ts.map +1 -1
  21. package/dist/encodings/Utf16.js +13 -9
  22. package/dist/encodings/Utf16.js.map +1 -1
  23. package/dist/encodings/Utf32.d.ts.map +1 -1
  24. package/dist/encodings/Utf32.js +6 -0
  25. package/dist/encodings/Utf32.js.map +1 -1
  26. package/dist/encodings/Utf8.d.ts +9 -5
  27. package/dist/encodings/Utf8.d.ts.map +1 -1
  28. package/dist/encodings/Utf8.js +36 -78
  29. package/dist/encodings/Utf8.js.map +1 -1
  30. package/dist/nlp/Segmentation.d.ts.map +1 -1
  31. package/dist/nlp/Segmentation.js +4 -1
  32. package/dist/nlp/Segmentation.js.map +1 -1
  33. package/dist/nlp/TextNormalizer.js +8 -1
  34. package/dist/nlp/TextNormalizer.js.map +1 -1
  35. package/dist/synthesis/AzureCognitiveServicesTTS.js +1 -1
  36. package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -1
  37. package/dist/synthesis/EspeakTTS.js +1 -1
  38. package/dist/synthesis/EspeakTTS.js.map +1 -1
  39. package/dist/synthesis/MicrosoftEdgeTTS.js +1 -1
  40. package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -1
  41. package/dist/utilities/FileSystem.d.ts +12 -7
  42. package/dist/utilities/FileSystem.d.ts.map +1 -1
  43. package/dist/utilities/FileSystem.js +196 -79
  44. package/dist/utilities/FileSystem.js.map +1 -1
  45. package/dist/utilities/FileWriter.d.ts +1 -0
  46. package/dist/utilities/FileWriter.d.ts.map +1 -1
  47. package/dist/utilities/FileWriter.js +8 -1
  48. package/dist/utilities/FileWriter.js.map +1 -1
  49. package/dist/utilities/ObjectUtilities.d.ts.map +1 -1
  50. package/dist/utilities/ObjectUtilities.js +15 -13
  51. package/dist/utilities/ObjectUtilities.js.map +1 -1
  52. package/dist/utilities/PackageManager.js +2 -2
  53. package/dist/utilities/PackageManager.js.map +1 -1
  54. package/dist/utilities/PathUtilities.d.ts +1 -0
  55. package/dist/utilities/PathUtilities.d.ts.map +1 -1
  56. package/dist/utilities/PathUtilities.js +18 -0
  57. package/dist/utilities/PathUtilities.js.map +1 -1
  58. package/dist/utilities/StringUtilities.d.ts.map +1 -1
  59. package/dist/utilities/StringUtilities.js.map +1 -1
  60. package/package.json +8 -7
  61. package/src/api/Synthesis.ts +2 -2
  62. package/src/encodings/Ascii.ts +14 -10
  63. package/src/encodings/Base64.ts +9 -0
  64. package/src/encodings/Hex.ts +11 -2
  65. package/src/encodings/Utf16.ts +14 -10
  66. package/src/encodings/Utf32.ts +6 -0
  67. package/src/encodings/Utf8.ts +45 -82
  68. package/src/nlp/Segmentation.ts +5 -1
  69. package/src/nlp/TextNormalizer.ts +12 -1
  70. package/src/synthesis/AzureCognitiveServicesTTS.ts +1 -1
  71. package/src/synthesis/EspeakTTS.ts +1 -1
  72. package/src/synthesis/MicrosoftEdgeTTS.ts +1 -1
  73. package/src/utilities/FileSystem.ts +224 -85
  74. package/src/utilities/FileWriter.ts +11 -1
  75. package/src/utilities/ObjectUtilities.ts +19 -15
  76. package/src/utilities/PackageManager.ts +2 -2
  77. package/src/utilities/PathUtilities.ts +19 -0
  78. package/src/utilities/StringUtilities.ts +0 -2
  79. package/src/encodings/HtmlEscape.ts +0 -39
  80. package/src/encodings/LEB128.ts +0 -362
  81. package/src/utilities/StringBuilder.ts +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"PathUtilities.d.ts","sourceRoot":"","sources":["../../src/utilities/PathUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AAGnC,wBAAgB,gBAAgB,WAI/B;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,UAE1D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,UAQzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,UAiB5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAE1C;AAED,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAE7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,UAEzC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,eAEzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,UAEvC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAEtC;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,UAE3D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,uBAErC"}
1
+ {"version":3,"file":"PathUtilities.d.ts","sourceRoot":"","sources":["../../src/utilities/PathUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AAGnC,wBAAgB,gBAAgB,WAI/B;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,UAE1D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,UAQzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,UAiB5C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,UAiB5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAE1C;AAED,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAE7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,UAEzC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,eAEzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,UAEvC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,UAEtC;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,UAE3D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,uBAErC"}
@@ -33,6 +33,24 @@ export function getAppTempDir(appName) {
33
33
  }
34
34
  return tempDir;
35
35
  }
36
+ export function getAppDataDir(appName) {
37
+ let dataDir;
38
+ const platform = process.platform;
39
+ const homeDir = os.homedir();
40
+ if (platform == 'win32') {
41
+ dataDir = joinPath(homeDir, 'AppData', 'Local', appName);
42
+ }
43
+ else if (platform == 'darwin') {
44
+ dataDir = joinPath(homeDir, 'Library', 'Application Support', appName);
45
+ }
46
+ else if (platform == 'linux') {
47
+ dataDir = joinPath(homeDir, '.local', 'share', appName);
48
+ }
49
+ else {
50
+ throw new Error(`Unsupport platform ${platform}`);
51
+ }
52
+ return dataDir;
53
+ }
36
54
  export function joinPath(...paths) {
37
55
  return NodePath.join(...paths);
38
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PathUtilities.js","sourceRoot":"","sources":["../../src/utilities/PathUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,MAAM,UAAU,gBAAgB;IAC/B,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAE3E,OAAO,WAAW,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,YAAoB;IAC1D,OAAO,WAAW,CAAC,gBAAgB,EAAE,EAAE,YAAY,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAEpD,IAAI,kBAAkB,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAA;IACV,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC5C,IAAI,OAAe,CAAA;IAEnB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAE5B,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC;SAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QAChC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAG,KAAe;IAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAG,KAAe;IAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACvC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"PathUtilities.js","sourceRoot":"","sources":["../../src/utilities/PathUtilities.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtilities.d.ts","sourceRoot":"","sources":["../../src/utilities/StringUtilities.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAE9D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAU7D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAQ9D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,SAAM,UAEnI;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,SAAM,UAElH;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAU/E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,SAAM,UAEhF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM;;;EAmBxC;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,WAQnD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCzF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;;;EAyClE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,gBAkBnD;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAcvG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAQnG"}
1
+ {"version":3,"file":"StringUtilities.d.ts","sourceRoot":"","sources":["../../src/utilities/StringUtilities.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAE9D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAU7D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAQ9D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,SAAM,UAEnI;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,SAAM,UAElH;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAU/E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,SAAM,UAEhF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM;;;EAmBxC;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,WAQnD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCzF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;;;EAyClE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,gBAkBnD;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAcvG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAQnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtilities.js","sourceRoot":"","sources":["../../src/utilities/StringUtilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StringUtilities.js","sourceRoot":"","sources":["../../src/utilities/StringUtilities.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "echogarden",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
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": "MIT AND GPL-3.0",
@@ -52,8 +52,8 @@
52
52
  "echogarden": "./dist/cli/CLILauncher.js"
53
53
  },
54
54
  "dependencies": {
55
- "@aws-sdk/client-polly": "~3.1105.0",
56
- "@aws-sdk/client-transcribe-streaming": "~3.1105.0",
55
+ "@aws-sdk/client-polly": "~3.1106.0",
56
+ "@aws-sdk/client-transcribe-streaming": "~3.1106.0",
57
57
  "@echogarden/audio-io": "~0.4.2",
58
58
  "@echogarden/fasttext-wasm": "~0.1.0",
59
59
  "@echogarden/flite-wasi": "~0.1.1",
@@ -71,6 +71,7 @@
71
71
  "@mozilla/readability": "~0.6.0",
72
72
  "chalk": "~6.0.0",
73
73
  "command-exists": "~1.2.9",
74
+ "easier-http-request": "~0.1.0",
74
75
  "fs-extra": "~11.4.0",
75
76
  "graceful-fs": "~4.2.11",
76
77
  "html-to-text": "~10.0.0",
@@ -83,16 +84,16 @@
83
84
  "onnxruntime-node": "~1.21.1",
84
85
  "openai": "~7.4.0",
85
86
  "quick-json5": "~0.4.3",
86
- "easier-http-request": "~0.1.0",
87
87
  "regexp-composer": "~0.4.0",
88
88
  "sam-js": "~0.3.1",
89
+ "standard-html-escaper": "~0.2.1",
89
90
  "strip-ansi": "~7.2.0",
90
91
  "tar": "~7.5.22",
91
92
  "tiktoken": "~1.0.22",
92
93
  "tinyld": "~1.3.4",
93
94
  "wasm-feature-detect": "~1.8.0",
94
95
  "wasm-heap-manager": "~0.4.0",
95
- "ws": "~8.21.2",
96
+ "ws": "~8.21.3",
96
97
  "wtf_wikipedia": "~10.4.2"
97
98
  },
98
99
  "peerDependencies": {
@@ -115,9 +116,9 @@
115
116
  "@echogarden/gnuspeech-wasm": "~0.3.0",
116
117
  "@types/fs-extra": "~11.0.4",
117
118
  "@types/graceful-fs": "~4.1.9",
118
- "@types/jsdom": "~28.0.3",
119
+ "@types/jsdom": "~30.0.0",
119
120
  "@types/msgpack-lite": "~0.1.12",
120
- "@types/node": "~26.1.2",
121
+ "@types/node": "~26.2.0",
121
122
  "@types/ws": "~8.18.1",
122
123
  "ts-json-schema-generator": "~2.9.0",
123
124
  "typescript": "~7.0.2"
@@ -15,7 +15,7 @@ import { type RubberbandOptions } from '../dsp/Rubberband.js'
15
15
  import { loadLexiconsForLanguage } from '../nlp/Lexicon.js'
16
16
 
17
17
  import { Timeline, TimelineEntry, addTimeOffsetToTimeline, multiplyTimelineByFactor } from '../utilities/Timeline.js'
18
- import { getAppDataDir, ensureDir, existsSync, isFileIsUpToDate, readAndParseJsonFile, writeFileSafe } from '../utilities/FileSystem.js'
18
+ import { ensureDir, existsSync, isFileIsUpToDate, readAndParseJsonFile, writeFileSafe } from '../utilities/FileSystem.js'
19
19
  import { formatLanguageCodeWithName, getShortLanguageCode, normalizeLanguageCode, defaultDialectForLanguageCode, normalizeIdentifierToLanguageCode } from '../utilities/Locale.js'
20
20
  import { loadPackage } from '../utilities/PackageManager.js'
21
21
  import { EngineMetadata, appName } from './Common.js'
@@ -27,7 +27,7 @@ import { type DeepgramTTSOptions } from '../synthesis/DeepgramTTS.js'
27
27
  import { OnnxExecutionProvider } from '../utilities/OnnxUtilities.js'
28
28
  import { simplifyPunctuationCharacters } from '../nlp/TextNormalizer.js'
29
29
  import { convertHtmlToText } from '../utilities/StringUtilities.js'
30
- import { joinPath, resolvePath } from '../utilities/PathUtilities.js'
30
+ import { getAppDataDir, joinPath, resolvePath } from '../utilities/PathUtilities.js'
31
31
  import { Timer } from '../utilities/Timer.js'
32
32
 
33
33
  /////////////////////////////////////////////////////////////////////////////////////////////
@@ -1,5 +1,8 @@
1
1
  import { EncodeIntoResult } from './TextEncodingsCommon.js'
2
2
 
3
+ //////////////////////////////////////////////////////////////////////////////
4
+ // ASCII encoding
5
+ //////////////////////////////////////////////////////////////////////////////
3
6
  export function encodeAscii(asciiString: string) {
4
7
  const charCount = asciiString.length
5
8
 
@@ -30,31 +33,32 @@ export function encodeAsciiInto(asciiString: string, resultBuffer: Uint8Array):
30
33
  return { read: len, written: len }
31
34
  }
32
35
 
36
+ //////////////////////////////////////////////////////////////////////////////
37
+ // ASCII decoding
38
+ //////////////////////////////////////////////////////////////////////////////
33
39
  export function decodeAscii(encodedString: Uint8Array) {
34
40
  const maxChunkLength = 2 ** 24
35
41
 
36
- const decoder = new ChunkedAsciiDecoder()
42
+ const chunkedAsciiDecoder = new ChunkedAsciiDecoder()
43
+
44
+ let resultString = ''
37
45
 
38
46
  for (let offset = 0; offset < encodedString.length; offset += maxChunkLength) {
39
- const chunk = encodedString.subarray(offset, offset + maxChunkLength)
47
+ const asciiChunk = encodedString.subarray(offset, offset + maxChunkLength)
48
+ const stringChunk = chunkedAsciiDecoder.writeChunk(asciiChunk)
40
49
 
41
- decoder.writeChunk(chunk)
50
+ resultString += stringChunk
42
51
  }
43
52
 
44
- return decoder.toString()
53
+ return resultString
45
54
  }
46
55
 
47
56
  export class ChunkedAsciiDecoder {
48
- private str = ''
49
57
  private readonly textDecoder = new TextDecoder('windows-1252')
50
58
 
51
59
  writeChunk(chunk: Uint8Array) {
52
60
  const decodedChunk = this.textDecoder.decode(chunk, { stream: true })
53
61
 
54
- this.str += decodedChunk
55
- }
56
-
57
- toString() {
58
- return this.str
62
+ return decodedChunk
59
63
  }
60
64
  }
@@ -1,5 +1,8 @@
1
1
  import { decodeAscii } from './Ascii.js'
2
2
 
3
+ //////////////////////////////////////////////////////////////////////////////
4
+ // Base64 encoding
5
+ //////////////////////////////////////////////////////////////////////////////
3
6
  export function encodeBase64(inputBytes: Uint8Array,
4
7
  paddingCharacter: string | undefined = '=',
5
8
  charCodeMap?: Uint8Array): string {
@@ -88,6 +91,9 @@ export function encodeBase64AsAsciiBuffer(
88
91
  return charCodes.subarray(0, writeOffset)
89
92
  }
90
93
 
94
+ //////////////////////////////////////////////////////////////////////////////
95
+ // Base64 decoding
96
+ //////////////////////////////////////////////////////////////////////////////
91
97
  export function decodeBase64(
92
98
  base64String: string,
93
99
  outputBuffer?: Uint8Array,
@@ -153,5 +159,8 @@ export function decodeBase64(
153
159
  return outputBuffer.subarray(0, writeOffset)
154
160
  }
155
161
 
162
+ //////////////////////////////////////////////////////////////////////////////
163
+ // Lookup tables
164
+ //////////////////////////////////////////////////////////////////////////////
156
165
  export const defaultBase64CharCodeMap: Uint8Array = new Uint8Array([65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47])
157
166
  export const defaultBase64ReverseCharCodeMap: Uint8Array = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255])
@@ -1,5 +1,8 @@
1
- import { decodeAscii } from "./Ascii.js"
1
+ import { decodeAscii } from './Ascii.js'
2
2
 
3
+ //////////////////////////////////////////////////////////////////////////////
4
+ // Hexadecimal encoding
5
+ //////////////////////////////////////////////////////////////////////////////
3
6
  export function encodeHex(buffer: Uint8Array) {
4
7
  const asciiBuffer = encodeHexAsAsciiBuffer(buffer)
5
8
 
@@ -27,11 +30,14 @@ export function encodeHexAsAsciiBuffer(buffer: Uint8Array) {
27
30
  return charCodes
28
31
  }
29
32
 
33
+ //////////////////////////////////////////////////////////////////////////////
34
+ // Hexadecimal decoding
35
+ //////////////////////////////////////////////////////////////////////////////
30
36
  export function decodeHex(hexString: string) {
31
37
  const hexLength = hexString.length
32
38
 
33
39
  if (hexLength % 2 !== 0) {
34
- throw new Error(`Hexadecimal string doesn't have an even number of characters`)
40
+ throw new Error(`Hexadecimal string doesn't have an even number of characters.`)
35
41
  }
36
42
 
37
43
  const buffer = new Uint8Array(hexLength / 2)
@@ -63,5 +69,8 @@ function hexCharCodeToValue(hexCharCode: number) {
63
69
  }
64
70
  }
65
71
 
72
+ //////////////////////////////////////////////////////////////////////////////
73
+ // Lookup tables
74
+ //////////////////////////////////////////////////////////////////////////////
66
75
  const hexCharLookup: string[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
67
76
  const hexCharCodeLookup = new Uint8Array([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102])
@@ -1,5 +1,8 @@
1
1
  import { EncodeIntoResult } from "./TextEncodingsCommon.js"
2
2
 
3
+ //////////////////////////////////////////////////////////////////////////////
4
+ // UTF-16 Encoding
5
+ //////////////////////////////////////////////////////////////////////////////
3
6
  export function encodeUtf16(text: string) {
4
7
  const resultArray = new Uint16Array(text.length)
5
8
 
@@ -22,31 +25,32 @@ export function encodeUtf16Into(text: string, resultBuffer: Uint16Array): Encode
22
25
  return { read: len, written: len }
23
26
  }
24
27
 
28
+ //////////////////////////////////////////////////////////////////////////////
29
+ // UTF-16 Decoding
30
+ //////////////////////////////////////////////////////////////////////////////
25
31
  export function decodeUtf16(encodedString: Uint16Array) {
26
32
  const maxChunkLength = 2 ** 24
27
33
 
28
- const decoder = new ChunkedUtf16Decoder()
34
+ const chunkedUtf16Decoder = new ChunkedUtf16Decoder()
35
+
36
+ let resultString = ''
29
37
 
30
38
  for (let offset = 0; offset < encodedString.length; offset += maxChunkLength) {
31
- const chunk = encodedString.subarray(offset, offset + maxChunkLength)
39
+ const utf16Chunk = encodedString.subarray(offset, offset + maxChunkLength)
40
+ const stringChunk = chunkedUtf16Decoder.writeChunk(utf16Chunk)
32
41
 
33
- decoder.writeChunk(chunk)
42
+ resultString += stringChunk
34
43
  }
35
44
 
36
- return decoder.toString()
45
+ return resultString
37
46
  }
38
47
 
39
48
  export class ChunkedUtf16Decoder {
40
- private str = ''
41
49
  private readonly textDecoder = new TextDecoder('utf-16le')
42
50
 
43
51
  writeChunk(chunk: Uint16Array) {
44
52
  const decodedChunk = this.textDecoder.decode(chunk, { stream: true })
45
53
 
46
- this.str += decodedChunk
47
- }
48
-
49
- toString() {
50
- return this.str
54
+ return decodedChunk
51
55
  }
52
56
  }
@@ -1,5 +1,8 @@
1
1
  import { EncodeIntoResult } from "./TextEncodingsCommon.js"
2
2
 
3
+ //////////////////////////////////////////////////////////////////////////////
4
+ // UTF-32 Encoding
5
+ //////////////////////////////////////////////////////////////////////////////
3
6
  export function encodeUtf32(text: string) {
4
7
  const resultArray = new Uint32Array(text.length * 2)
5
8
 
@@ -33,6 +36,9 @@ export function encodeUtf32Into(text: string, resultBuffer: Uint32Array): Encode
33
36
  return { read: readOffset, written: writeOffset }
34
37
  }
35
38
 
39
+ //////////////////////////////////////////////////////////////////////////////
40
+ // UTF-32 Decoding
41
+ //////////////////////////////////////////////////////////////////////////////
36
42
  export function decodeUtf32(encodedString: Uint32Array) {
37
43
  let result = ''
38
44
 
@@ -1,5 +1,8 @@
1
- import { EncodeIntoResult } from "./TextEncodingsCommon.js"
1
+ import { EncodeIntoResult } from './TextEncodingsCommon.js'
2
2
 
3
+ //////////////////////////////////////////////////////////////////////////////
4
+ // UTF-8 Encoding
5
+ //////////////////////////////////////////////////////////////////////////////
3
6
  export function encodeUtf8(text: string) {
4
7
  const textEncoder = new TextEncoder()
5
8
 
@@ -14,104 +17,64 @@ export function encodeUtf8Into(text: string, outputArray: Uint8Array): EncodeInt
14
17
  return result
15
18
  }
16
19
 
17
- export function decodeUtf8(encodedString: Uint8Array) {
18
- const maxChunkLength = 2 ** 24
20
+ export class ChunkedUtf8Encoder {
21
+ private readonly textEncoder = new TextEncoder()
19
22
 
20
- const decoder = new ChunkedUtf8Decoder()
23
+ private pendingHighSurrogate = ''
21
24
 
22
- for (let offset = 0; offset < encodedString.length; offset += maxChunkLength) {
23
- const chunk = encodedString.subarray(offset, offset + maxChunkLength)
25
+ writeChunk(stringChunk: string): Uint8Array {
26
+ if (this.pendingHighSurrogate !== '') {
27
+ stringChunk = this.pendingHighSurrogate + stringChunk
24
28
 
25
- decoder.writeChunk(chunk)
26
- }
29
+ this.pendingHighSurrogate = ''
30
+ }
27
31
 
28
- return decoder.toString()
29
- }
32
+ const lastCodeUnit = stringChunk.charCodeAt(stringChunk.length - 1)
30
33
 
31
- export class ChunkedUtf8Decoder {
32
- private str = ''
33
- private readonly textDecoder = new TextDecoder('utf-8')
34
+ if (lastCodeUnit >= 0xD800 && lastCodeUnit <= 0xDBFF) {
35
+ this.pendingHighSurrogate = stringChunk[stringChunk.length - 1]
34
36
 
35
- writeChunk(chunk: Uint8Array) {
36
- const decodedChunk = this.textDecoder.decode(chunk, { stream: true })
37
+ stringChunk = stringChunk.substring(0, stringChunk.length - 1)
38
+ }
37
39
 
38
- this.str += decodedChunk
40
+ return this.textEncoder.encode(stringChunk)
39
41
  }
40
42
 
41
- toString() {
42
- return this.str
43
+ finalize(): Uint8Array {
44
+ const result = this.textEncoder.encode(this.pendingHighSurrogate)
45
+
46
+ this.pendingHighSurrogate = ''
47
+
48
+ return result
43
49
  }
44
50
  }
45
51
 
46
- //////////////////////////////////////////////////////////////////////////////////////////////
47
- // Pure JavaScript implementations
48
- //////////////////////////////////////////////////////////////////////////////////////////////
49
- function encodeUtf8Into_JS(str: string, outputArray: Uint8Array): EncodeIntoResult {
50
- let readOffset = 0
51
- let writeOffset = 0
52
-
53
- while (readOffset < str.length) {
54
- const charCode = str.codePointAt(readOffset++)!
55
-
56
- if (charCode <= 0x7f) {
57
- outputArray[writeOffset++] = charCode
58
- } else if (charCode <= 0x7ff) {
59
- outputArray[writeOffset++] = 0xc0 | (charCode >>> 6)
60
- outputArray[writeOffset++] = 0x80 | (charCode & 63)
61
- } else if (charCode <= 0xffff) {
62
- outputArray[writeOffset++] = 0xe0 | (charCode >>> 12)
63
- outputArray[writeOffset++] = 0x80 | ((charCode >>> 6) & 63)
64
- outputArray[writeOffset++] = 0x80 | (charCode & 63)
65
- } else if (charCode <= 0x10ffff) {
66
- outputArray[writeOffset++] = 0xf0 | (charCode >>> 18)
67
- outputArray[writeOffset++] = 0x80 | ((charCode >>> 12) & 63)
68
- outputArray[writeOffset++] = 0x80 | ((charCode >>> 6) & 63)
69
- outputArray[writeOffset++] = 0x80 | (charCode & 63)
70
-
71
- readOffset++
72
- }
52
+ //////////////////////////////////////////////////////////////////////////////
53
+ // UTF-8 Decoding
54
+ //////////////////////////////////////////////////////////////////////////////
55
+ export function decodeUtf8(utf8Bytes: Uint8Array) {
56
+ const maxChunkLength = 2 ** 24
57
+
58
+ const chunkedUtf8Decoder = new ChunkedUtf8Decoder()
59
+
60
+ let resultString = ''
61
+
62
+ for (let offset = 0; offset < utf8Bytes.length; offset += maxChunkLength) {
63
+ const utf8Chunk = utf8Bytes.subarray(offset, offset + maxChunkLength)
64
+ const stringChunk = chunkedUtf8Decoder.writeChunk(utf8Chunk)
65
+
66
+ resultString += stringChunk
73
67
  }
74
68
 
75
- return { read: str.length, written: writeOffset }
69
+ return resultString
76
70
  }
77
71
 
78
- function decodeUtf8_JS(utf8Bytes: Uint8Array): string {
79
- let decodedString = ''
80
-
81
- let readOffset = 0
82
-
83
- while (readOffset < utf8Bytes.length) {
84
- const leadByte = utf8Bytes[readOffset++]
85
-
86
- let outputCodePoint: number
87
-
88
- if (leadByte >>> 7 === 0) {
89
- outputCodePoint = leadByte
90
- } else if (leadByte >>> 5 === 6) {
91
- outputCodePoint =
92
- (leadByte & 31) << 6 |
93
- (utf8Bytes[readOffset++] & 63)
94
- } else if (leadByte >>> 4 === 14) {
95
- outputCodePoint =
96
- (leadByte & 15) << 12 |
97
- (utf8Bytes[readOffset++] & 63) << 6 |
98
- (utf8Bytes[readOffset++] & 63)
99
- } else if (leadByte >>> 3 === 30) {
100
- outputCodePoint =
101
- (leadByte & 7) << 18 |
102
- (utf8Bytes[readOffset++] & 63) << 12 |
103
- (utf8Bytes[readOffset++] & 63) << 6 |
104
- (utf8Bytes[readOffset++] & 63)
105
- } else {
106
- throw new Error(`Invalid UTF-8 stream: An invalid lead byte value encountered at position ${readOffset}`)
107
- }
72
+ export class ChunkedUtf8Decoder {
73
+ private readonly textDecoder = new TextDecoder('utf-8')
108
74
 
109
- decodedString += String.fromCodePoint(outputCodePoint)
110
- }
75
+ writeChunk(chunk: Uint8Array) {
76
+ const decodedChunk = this.textDecoder.decode(chunk, { stream: true })
111
77
 
112
- if (readOffset > utf8Bytes.length) {
113
- throw new Error(`UTF-8 decoding failed. Byte sequence is truncated.`)
78
+ return decodedChunk
114
79
  }
115
-
116
- return decodedString
117
80
  }
@@ -22,7 +22,11 @@ const includesEmojiSequencePattern = anyOf(
22
22
  )
23
23
  const includesEmojiSequenceRegExp = buildRegExp(includesEmojiSequencePattern)
24
24
 
25
- const symbolWordsList = ['$', '€', '¢', '£', '¥', '©', '®', '™', '%', '&', '#', '~', '@', '+', '±', '÷', '/', '\\', '^', '*', '×', '=', '≈', '¼', '½', '¾', '→', '≤', '≥']
25
+ const symbolWordsList = [
26
+ '$', '€', '¢', '£', '¥', '©', '®', '™', '%', '&', '#', '~', '@', '+', '±', '÷',
27
+ '/', '\\', '^', '*', '×', '=', '≈', '¼', '½', '¾', '→', '≤', '≥', '∞'
28
+ ]
29
+
26
30
  const includesSymbolWordPattern = anyOf(...symbolWordsList)
27
31
  const includesSymbolWordRegExp = buildRegExp(includesSymbolWordPattern)
28
32
 
@@ -31,7 +31,7 @@ export function getNormalizedFragmentsForSpeech(
31
31
 
32
32
  //const isWordPrecedingAYear = wordsPrecedingAYear.includes(lowerCaseWord)
33
33
  const isWordPrecedingAYear =
34
- isAllLettersRegExp.test(lowerCaseWord) || isSpecialCharacterBeforeYear
34
+ isAllLettersOrApostropheRegExp.test(lowerCaseWord) || isSpecialCharacterBeforeYear
35
35
 
36
36
  const followedByFourDigitYearPattern = fourDigitYearRegExp.test(nextNonWhitespaceWord)
37
37
 
@@ -284,3 +284,14 @@ const fourDigitYearRangeRegExp = buildRegExp(fourDigitYearRangePattern)
284
284
 
285
285
  const isAllLettersPattern = [inputStart, oneOrMore(unicodeProperty('Letter')), inputEnd]
286
286
  const isAllLettersRegExp = buildRegExp(isAllLettersPattern)
287
+
288
+ const isAllLettersOrApostrophePattern = [
289
+ inputStart,
290
+
291
+ unicodeProperty('Letter'),
292
+ zeroOrMore(anyOf(unicodeProperty('Letter'), `'`)),
293
+
294
+ inputEnd,
295
+ ]
296
+
297
+ const isAllLettersOrApostropheRegExp = buildRegExp(isAllLettersOrApostrophePattern)
@@ -6,7 +6,7 @@ import { Logger } from '../utilities/Logger.js'
6
6
  import { Timeline } from '../utilities/Timeline.js'
7
7
  import { RawAudio, getRawAudioDuration } from '../audio/AudioUtilities.js'
8
8
  import { concatUint8Arrays } from '../utilities/Utilities.js'
9
- import { escapeHtml } from '../encodings/HtmlEscape.js'
9
+ import { escapeHtml } from 'standard-html-escaper'
10
10
  import { SynthesisCallbacks } from '../api/Synthesis.js'
11
11
 
12
12
  export async function synthesize(
@@ -9,7 +9,7 @@ import { Lexicon, tryGetFirstLexiconSubstitution } from '../nlp/Lexicon.js'
9
9
  import { phonemizeSentence } from '../nlp/EspeakPhonemizer.js'
10
10
  import { Timeline, TimelineEntry } from '../utilities/Timeline.js'
11
11
  import { extendDeep } from '../utilities/ObjectUtilities.js'
12
- import { escapeHtml } from '../encodings/HtmlEscape.js'
12
+ import { escapeHtml } from 'standard-html-escaper'
13
13
  import * as TextSegmentation from '@echogarden/text-segmentation'
14
14
 
15
15
  import { OperationCallbacks, SynthesisCallbacks } from '../api/API.js'
@@ -8,7 +8,7 @@ import { concatUint8Arrays, getRandomHexString, logToStderr, sha256AsHex } from
8
8
  import { RawAudio, getEmptyRawAudio, getRawAudioDuration } from '../audio/AudioUtilities.js'
9
9
  import { Timer } from '../utilities/Timer.js'
10
10
  import { decodeUtf8, encodeUtf8 } from '../encodings/Utf8.js'
11
- import { escapeHtml } from '../encodings/HtmlEscape.js'
11
+ import { escapeHtml } from 'standard-html-escaper'
12
12
  import { requestHttp } from 'easier-http-request'
13
13
  import { VoiceListRequestCallbacks, SynthesisCallbacks } from '../api/API.js'
14
14