echogarden 0.0.1 → 0.1.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 (295) hide show
  1. package/README.md +59 -1
  2. package/data/lexicons/heteronyms.json +674 -0
  3. package/data/schemas/options.json +1057 -0
  4. package/data/tables/lcid-table.json +7427 -0
  5. package/dist/alignment/DTWMfccSequenceAlignment.d.ts +2 -0
  6. package/dist/alignment/DTWMfccSequenceAlignment.js +26 -0
  7. package/dist/alignment/DTWMfccSequenceAlignment.js.map +1 -0
  8. package/dist/alignment/DTWSequenceAlignment.d.ts +5 -0
  9. package/dist/alignment/DTWSequenceAlignment.js +99 -0
  10. package/dist/alignment/DTWSequenceAlignment.js.map +1 -0
  11. package/dist/alignment/DTWSequenceAlignmentWindowed.d.ts +5 -0
  12. package/dist/alignment/DTWSequenceAlignmentWindowed.js +161 -0
  13. package/dist/alignment/DTWSequenceAlignmentWindowed.js.map +1 -0
  14. package/dist/alignment/LevenshteinSequenceAlignment.d.ts +5 -0
  15. package/dist/alignment/LevenshteinSequenceAlignment.js +102 -0
  16. package/dist/alignment/LevenshteinSequenceAlignment.js.map +1 -0
  17. package/dist/alignment/SpeechAlignment.d.ts +27 -0
  18. package/dist/alignment/SpeechAlignment.js +266 -0
  19. package/dist/alignment/SpeechAlignment.js.map +1 -0
  20. package/dist/api/API.d.ts +8 -0
  21. package/dist/api/API.js +10 -0
  22. package/dist/api/API.js.map +1 -0
  23. package/dist/api/APIOptions.d.ts +12 -0
  24. package/dist/api/APIOptions.js +2 -0
  25. package/dist/api/APIOptions.js.map +1 -0
  26. package/dist/api/Alignment.d.ts +32 -0
  27. package/dist/api/Alignment.js +134 -0
  28. package/dist/api/Alignment.js.map +1 -0
  29. package/dist/api/Denoising.d.ts +14 -0
  30. package/dist/api/Denoising.js +66 -0
  31. package/dist/api/Denoising.js.map +1 -0
  32. package/dist/api/Globals.d.ts +1 -0
  33. package/dist/api/Globals.js +2 -0
  34. package/dist/api/Globals.js.map +1 -0
  35. package/dist/api/LanguageDetection.d.ts +49 -0
  36. package/dist/api/LanguageDetection.js +118 -0
  37. package/dist/api/LanguageDetection.js.map +1 -0
  38. package/dist/api/Recognition.d.ts +49 -0
  39. package/dist/api/Recognition.js +162 -0
  40. package/dist/api/Recognition.js.map +1 -0
  41. package/dist/api/Synthesis.d.ts +125 -0
  42. package/dist/api/Synthesis.js +892 -0
  43. package/dist/api/Synthesis.js.map +1 -0
  44. package/dist/api/Translation.d.ts +25 -0
  45. package/dist/api/Translation.js +69 -0
  46. package/dist/api/Translation.js.map +1 -0
  47. package/dist/api/Vad.d.ts +25 -0
  48. package/dist/api/Vad.js +88 -0
  49. package/dist/api/Vad.js.map +1 -0
  50. package/dist/audio/AudioBufferConversion.d.ts +15 -0
  51. package/dist/audio/AudioBufferConversion.js +228 -0
  52. package/dist/audio/AudioBufferConversion.js.map +1 -0
  53. package/dist/audio/AudioPlayer.d.ts +9 -0
  54. package/dist/audio/AudioPlayer.js +232 -0
  55. package/dist/audio/AudioPlayer.js.map +1 -0
  56. package/dist/audio/AudioRecorder.d.ts +3 -0
  57. package/dist/audio/AudioRecorder.js +68 -0
  58. package/dist/audio/AudioRecorder.js.map +1 -0
  59. package/dist/audio/AudioUtilities.d.ts +48 -0
  60. package/dist/audio/AudioUtilities.js +209 -0
  61. package/dist/audio/AudioUtilities.js.map +1 -0
  62. package/dist/audio/SoxPath.d.ts +1 -0
  63. package/dist/audio/SoxPath.js +19 -0
  64. package/dist/audio/SoxPath.js.map +1 -0
  65. package/dist/cli/CLI.d.ts +8 -0
  66. package/dist/cli/CLI.js +860 -0
  67. package/dist/cli/CLI.js.map +1 -0
  68. package/dist/cli/CLIConfigFile.d.ts +3 -0
  69. package/dist/cli/CLIConfigFile.js +62 -0
  70. package/dist/cli/CLIConfigFile.js.map +1 -0
  71. package/dist/cli/CLILauncher.d.ts +2 -0
  72. package/dist/cli/CLILauncher.js +22 -0
  73. package/dist/cli/CLILauncher.js.map +1 -0
  74. package/dist/cli/CLIOptionsSchema.d.ts +5 -0
  75. package/dist/cli/CLIOptionsSchema.js +36 -0
  76. package/dist/cli/CLIOptionsSchema.js.map +1 -0
  77. package/dist/cli/CLIParser.d.ts +6 -0
  78. package/dist/cli/CLIParser.js +34 -0
  79. package/dist/cli/CLIParser.js.map +1 -0
  80. package/dist/cli/CLIStarter.d.ts +1 -0
  81. package/dist/cli/CLIStarter.js +3 -0
  82. package/dist/cli/CLIStarter.js.map +1 -0
  83. package/dist/codecs/FFMpegTranscoder.d.ts +20 -0
  84. package/dist/codecs/FFMpegTranscoder.js +169 -0
  85. package/dist/codecs/FFMpegTranscoder.js.map +1 -0
  86. package/dist/codecs/TIMITCodec.d.ts +9 -0
  87. package/dist/codecs/TIMITCodec.js +14 -0
  88. package/dist/codecs/TIMITCodec.js.map +1 -0
  89. package/dist/codecs/WaveCodec.d.ts +19 -0
  90. package/dist/codecs/WaveCodec.js +208 -0
  91. package/dist/codecs/WaveCodec.js.map +1 -0
  92. package/dist/denoising/RNNoise.d.ts +6 -0
  93. package/dist/denoising/RNNoise.js +68 -0
  94. package/dist/denoising/RNNoise.js.map +1 -0
  95. package/dist/dsp/BiquadFilter.d.ts +26 -0
  96. package/dist/dsp/BiquadFilter.js +399 -0
  97. package/dist/dsp/BiquadFilter.js.map +1 -0
  98. package/dist/dsp/FFT.d.ts +9 -0
  99. package/dist/dsp/FFT.js +135 -0
  100. package/dist/dsp/FFT.js.map +1 -0
  101. package/dist/dsp/MFCC.d.ts +25 -0
  102. package/dist/dsp/MFCC.js +162 -0
  103. package/dist/dsp/MFCC.js.map +1 -0
  104. package/dist/dsp/MelSpectogram.d.ts +19 -0
  105. package/dist/dsp/MelSpectogram.js +102 -0
  106. package/dist/dsp/MelSpectogram.js.map +1 -0
  107. package/dist/dsp/Rubberband.d.ts +52 -0
  108. package/dist/dsp/Rubberband.js +186 -0
  109. package/dist/dsp/Rubberband.js.map +1 -0
  110. package/dist/dsp/Sonic.d.ts +2 -0
  111. package/dist/dsp/Sonic.js +39 -0
  112. package/dist/dsp/Sonic.js.map +1 -0
  113. package/dist/dsp/SpeexResampler.d.ts +3 -0
  114. package/dist/dsp/SpeexResampler.js +53 -0
  115. package/dist/dsp/SpeexResampler.js.map +1 -0
  116. package/dist/math/VectorMath.d.ts +70 -0
  117. package/dist/math/VectorMath.js +564 -0
  118. package/dist/math/VectorMath.js.map +1 -0
  119. package/dist/nlp/ChineseSegmentation.d.ts +1 -0
  120. package/dist/nlp/ChineseSegmentation.js +53 -0
  121. package/dist/nlp/ChineseSegmentation.js.map +1 -0
  122. package/dist/nlp/CompromiseNLP.d.ts +15 -0
  123. package/dist/nlp/CompromiseNLP.js +66 -0
  124. package/dist/nlp/CompromiseNLP.js.map +1 -0
  125. package/dist/nlp/EspeakPhonemizer.d.ts +4 -0
  126. package/dist/nlp/EspeakPhonemizer.js +133 -0
  127. package/dist/nlp/EspeakPhonemizer.js.map +1 -0
  128. package/dist/nlp/IPA.d.ts +19 -0
  129. package/dist/nlp/IPA.js +113 -0
  130. package/dist/nlp/IPA.js.map +1 -0
  131. package/dist/nlp/JapaneseSegmentation.d.ts +1 -0
  132. package/dist/nlp/JapaneseSegmentation.js +40 -0
  133. package/dist/nlp/JapaneseSegmentation.js.map +1 -0
  134. package/dist/nlp/Lexicon.d.ts +17 -0
  135. package/dist/nlp/Lexicon.js +6 -0
  136. package/dist/nlp/Lexicon.js.map +1 -0
  137. package/dist/nlp/PhoneConversion.d.ts +6 -0
  138. package/dist/nlp/PhoneConversion.js +467 -0
  139. package/dist/nlp/PhoneConversion.js.map +1 -0
  140. package/dist/nlp/Segmentation.d.ts +41 -0
  141. package/dist/nlp/Segmentation.js +158 -0
  142. package/dist/nlp/Segmentation.js.map +1 -0
  143. package/dist/nlp/TextNormalizer.d.ts +4 -0
  144. package/dist/nlp/TextNormalizer.js +69 -0
  145. package/dist/nlp/TextNormalizer.js.map +1 -0
  146. package/dist/recognition/AmazonTranscribeSTT.d.ts +6 -0
  147. package/dist/recognition/AmazonTranscribeSTT.js +79 -0
  148. package/dist/recognition/AmazonTranscribeSTT.js.map +1 -0
  149. package/dist/recognition/AzureCognitiveServicesSTT.d.ts +7 -0
  150. package/dist/recognition/AzureCognitiveServicesSTT.js +51 -0
  151. package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -0
  152. package/dist/recognition/GoogleCloudSTT.d.ts +7 -0
  153. package/dist/recognition/GoogleCloudSTT.js +66 -0
  154. package/dist/recognition/GoogleCloudSTT.js.map +1 -0
  155. package/dist/recognition/SileroSTT.d.ts +9 -0
  156. package/dist/recognition/SileroSTT.js +125 -0
  157. package/dist/recognition/SileroSTT.js.map +1 -0
  158. package/dist/recognition/VoskSTT.d.ts +10 -0
  159. package/dist/recognition/VoskSTT.js +78 -0
  160. package/dist/recognition/VoskSTT.js.map +1 -0
  161. package/dist/recognition/WhisperSTT.d.ts +69 -0
  162. package/dist/recognition/WhisperSTT.js +977 -0
  163. package/dist/recognition/WhisperSTT.js.map +1 -0
  164. package/dist/server/Server.d.ts +1 -0
  165. package/dist/server/Server.js +18 -0
  166. package/dist/server/Server.js.map +1 -0
  167. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +9 -0
  168. package/dist/speech-language-detection/SileroLanguageDetection.js +47 -0
  169. package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -0
  170. package/dist/subtitles/Subtitles.d.ts +25 -0
  171. package/dist/subtitles/Subtitles.js +286 -0
  172. package/dist/subtitles/Subtitles.js.map +1 -0
  173. package/dist/synthesis/AwsPollyTTS.d.ts +7 -0
  174. package/dist/synthesis/AwsPollyTTS.js +51 -0
  175. package/dist/synthesis/AwsPollyTTS.js.map +1 -0
  176. package/dist/synthesis/AzureCognitiveServicesTTS.d.ts +9 -0
  177. package/dist/synthesis/AzureCognitiveServicesTTS.js +103 -0
  178. package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -0
  179. package/dist/synthesis/CoquiServerTTS.d.ts +6 -0
  180. package/dist/synthesis/CoquiServerTTS.js +22 -0
  181. package/dist/synthesis/CoquiServerTTS.js.map +1 -0
  182. package/dist/synthesis/ElevenLabsTTS.d.ts +8 -0
  183. package/dist/synthesis/ElevenLabsTTS.js +48 -0
  184. package/dist/synthesis/ElevenLabsTTS.js.map +1 -0
  185. package/dist/synthesis/EspeakTTS.d.ts +46 -0
  186. package/dist/synthesis/EspeakTTS.js +353 -0
  187. package/dist/synthesis/EspeakTTS.js.map +1 -0
  188. package/dist/synthesis/FliteTTS.d.ts +17 -0
  189. package/dist/synthesis/FliteTTS.js +326 -0
  190. package/dist/synthesis/FliteTTS.js.map +1 -0
  191. package/dist/synthesis/GoogleCloudTTS.d.ts +16 -0
  192. package/dist/synthesis/GoogleCloudTTS.js +72 -0
  193. package/dist/synthesis/GoogleCloudTTS.js.map +1 -0
  194. package/dist/synthesis/GoogleTranslateTTS.d.ts +13 -0
  195. package/dist/synthesis/GoogleTranslateTTS.js +177 -0
  196. package/dist/synthesis/GoogleTranslateTTS.js.map +1 -0
  197. package/dist/synthesis/MicrosoftEdgeTTS.d.ts +10 -0
  198. package/dist/synthesis/MicrosoftEdgeTTS.js +216 -0
  199. package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -0
  200. package/dist/synthesis/SamTTS.d.ts +4 -0
  201. package/dist/synthesis/SamTTS.js +21 -0
  202. package/dist/synthesis/SamTTS.js.map +1 -0
  203. package/dist/synthesis/SapiTTS.d.ts +9 -0
  204. package/dist/synthesis/SapiTTS.js +211 -0
  205. package/dist/synthesis/SapiTTS.js.map +1 -0
  206. package/dist/synthesis/StreamlabsPollyTTS.d.ts +12 -0
  207. package/dist/synthesis/StreamlabsPollyTTS.js +88 -0
  208. package/dist/synthesis/StreamlabsPollyTTS.js.map +1 -0
  209. package/dist/synthesis/SvoxPicoTTS.d.ts +11 -0
  210. package/dist/synthesis/SvoxPicoTTS.js +236 -0
  211. package/dist/synthesis/SvoxPicoTTS.js.map +1 -0
  212. package/dist/synthesis/VitsTTS.d.ts +27 -0
  213. package/dist/synthesis/VitsTTS.js +359 -0
  214. package/dist/synthesis/VitsTTS.js.map +1 -0
  215. package/dist/tests/Test.d.ts +1 -0
  216. package/dist/tests/Test.js +10 -0
  217. package/dist/tests/Test.js.map +1 -0
  218. package/dist/text-language-detection/FastTextLanguageDetection.d.ts +2 -0
  219. package/dist/text-language-detection/FastTextLanguageDetection.js +38 -0
  220. package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -0
  221. package/dist/text-language-detection/TinyLDLanguageDetection.d.ts +2 -0
  222. package/dist/text-language-detection/TinyLDLanguageDetection.js +12 -0
  223. package/dist/text-language-detection/TinyLDLanguageDetection.js.map +1 -0
  224. package/dist/utilities/BinaryArrayConversion.d.ts +15 -0
  225. package/dist/utilities/BinaryArrayConversion.js +115 -0
  226. package/dist/utilities/BinaryArrayConversion.js.map +1 -0
  227. package/dist/utilities/Compression.d.ts +4 -0
  228. package/dist/utilities/Compression.js +67 -0
  229. package/dist/utilities/Compression.js.map +1 -0
  230. package/dist/utilities/FileDownloader.d.ts +3 -0
  231. package/dist/utilities/FileDownloader.js +147 -0
  232. package/dist/utilities/FileDownloader.js.map +1 -0
  233. package/dist/utilities/FileSystem.d.ts +30 -0
  234. package/dist/utilities/FileSystem.js +141 -0
  235. package/dist/utilities/FileSystem.js.map +1 -0
  236. package/dist/utilities/Hashing.d.ts +10 -0
  237. package/dist/utilities/Hashing.js +169 -0
  238. package/dist/utilities/Hashing.js.map +1 -0
  239. package/dist/utilities/Locale.d.ts +9 -0
  240. package/dist/utilities/Locale.js +65 -0
  241. package/dist/utilities/Locale.js.map +1 -0
  242. package/dist/utilities/Logger.d.ts +11 -0
  243. package/dist/utilities/Logger.js +49 -0
  244. package/dist/utilities/Logger.js.map +1 -0
  245. package/dist/utilities/NdArrayUtilities.d.ts +3 -0
  246. package/dist/utilities/NdArrayUtilities.js +22 -0
  247. package/dist/utilities/NdArrayUtilities.js.map +1 -0
  248. package/dist/utilities/ObjectUtilities.d.ts +4 -0
  249. package/dist/utilities/ObjectUtilities.js +132 -0
  250. package/dist/utilities/ObjectUtilities.js.map +1 -0
  251. package/dist/utilities/OpenPromise.d.ts +6 -0
  252. package/dist/utilities/OpenPromise.js +12 -0
  253. package/dist/utilities/OpenPromise.js.map +1 -0
  254. package/dist/utilities/PackageManager.d.ts +4 -0
  255. package/dist/utilities/PackageManager.js +46 -0
  256. package/dist/utilities/PackageManager.js.map +1 -0
  257. package/dist/utilities/RandomGenerator.d.ts +35 -0
  258. package/dist/utilities/RandomGenerator.js +149 -0
  259. package/dist/utilities/RandomGenerator.js.map +1 -0
  260. package/dist/utilities/TarballMaker.d.ts +4 -0
  261. package/dist/utilities/TarballMaker.js +50 -0
  262. package/dist/utilities/TarballMaker.js.map +1 -0
  263. package/dist/utilities/Timeline.d.ts +20 -0
  264. package/dist/utilities/Timeline.js +110 -0
  265. package/dist/utilities/Timeline.js.map +1 -0
  266. package/dist/utilities/Timer.d.ts +13 -0
  267. package/dist/utilities/Timer.js +70 -0
  268. package/dist/utilities/Timer.js.map +1 -0
  269. package/dist/utilities/Utilities.d.ts +68 -0
  270. package/dist/utilities/Utilities.js +305 -0
  271. package/dist/utilities/Utilities.js.map +1 -0
  272. package/dist/utilities/WasmMemoryManager.d.ts +142 -0
  273. package/dist/utilities/WasmMemoryManager.js +407 -0
  274. package/dist/utilities/WasmMemoryManager.js.map +1 -0
  275. package/dist/utilities/WebReader.d.ts +1 -0
  276. package/dist/utilities/WebReader.js +47 -0
  277. package/dist/utilities/WebReader.js.map +1 -0
  278. package/dist/utilities/WikipediaReader.d.ts +1 -0
  279. package/dist/utilities/WikipediaReader.js +31 -0
  280. package/dist/utilities/WikipediaReader.js.map +1 -0
  281. package/dist/voice-activity-detection/SileroVAD.d.ts +13 -0
  282. package/dist/voice-activity-detection/SileroVAD.js +58 -0
  283. package/dist/voice-activity-detection/SileroVAD.js.map +1 -0
  284. package/dist/voice-activity-detection/WebRtcVAD.d.ts +3 -0
  285. package/dist/voice-activity-detection/WebRtcVAD.js +53 -0
  286. package/dist/voice-activity-detection/WebRtcVAD.js.map +1 -0
  287. package/docs/CLI.md +234 -0
  288. package/docs/Development.md +3 -0
  289. package/docs/Engines.md +80 -0
  290. package/docs/Licenses.md +37 -0
  291. package/docs/Options.md +192 -0
  292. package/docs/Roadmap.md +16 -0
  293. package/docs/Technical.md +72 -0
  294. package/package.json +119 -19
  295. package/cli.js +0 -3
@@ -0,0 +1,149 @@
1
+ import { logToStderr } from "./Utilities.js";
2
+ export class RandomGenerator {
3
+ getIntInRange(min, max) {
4
+ return Math.floor(this.getFloatInRange(min, max));
5
+ }
6
+ getFloatInRange(min = 0, max = 1) {
7
+ return min + (this.nextFloat() * (max - min));
8
+ }
9
+ getFloats(length, min = 0, max = 1) {
10
+ const result = [];
11
+ for (let i = 0; i < length; i++) {
12
+ result.push(this.getFloatInRange(min, max));
13
+ }
14
+ return result;
15
+ }
16
+ getInts(length, min, max) {
17
+ const result = [];
18
+ for (let i = 0; i < length; i++) {
19
+ result.push(this.getIntInRange(min, max));
20
+ }
21
+ return result;
22
+ }
23
+ getNormallyDistributedVector(featureCount, meanVector, standardDeviationVector) {
24
+ const features = this.getNormallyDistributedValues(featureCount);
25
+ for (let i = 0; i < features.length; i++) {
26
+ features[i] = meanVector[i] + (features[i] * standardDeviationVector[i]);
27
+ }
28
+ return features;
29
+ }
30
+ getNormallyDistributedValues(count, mean = 0, standardDeviation = 1) {
31
+ const result = [];
32
+ for (let i = 0; i < count; i += 2) {
33
+ const [n1, n2] = this.getNormallyDistributedPair();
34
+ result.push(mean + (n1 * standardDeviation));
35
+ if (i + 1 < count) {
36
+ result.push(mean + (n2 * standardDeviation));
37
+ }
38
+ }
39
+ return result;
40
+ }
41
+ getNormallyDistributedPair() {
42
+ // Using Marsaglia polar method
43
+ // https://en.wikipedia.org/wiki/Marsaglia_polar_method
44
+ let x;
45
+ let y;
46
+ let s;
47
+ do {
48
+ x = (this.nextFloat() * 2) - 1;
49
+ y = (this.nextFloat() * 2) - 1;
50
+ s = (x ** 2) + (y ** 2);
51
+ } while (s <= 0 || s >= 1);
52
+ const m = Math.sqrt((-2 * Math.log(s)) / s);
53
+ const n1 = x * m;
54
+ const n2 = y * m;
55
+ return [n1, n2];
56
+ }
57
+ }
58
+ export class MurmurRNG extends RandomGenerator {
59
+ state;
60
+ constructor(seed) {
61
+ super();
62
+ this.state = seed;
63
+ }
64
+ nextFloat() {
65
+ return this.nextUint32() / 4294967296;
66
+ }
67
+ nextUint32() {
68
+ return this.nextInt32() >>> 0;
69
+ }
70
+ nextInt32() {
71
+ const multiplier = 3332679571;
72
+ let s = this.state;
73
+ s = Math.imul(s, multiplier);
74
+ s ^= s >>> 16;
75
+ s = Math.imul(s, multiplier);
76
+ s ^= s >>> 10;
77
+ s = Math.imul(s, multiplier);
78
+ s ^= s >>> 17;
79
+ this.state = s;
80
+ return s;
81
+ }
82
+ static hashInt32(val, seed = 234928357) {
83
+ const rng = new MurmurRNG(seed ^ val);
84
+ return rng.nextUint32();
85
+ }
86
+ }
87
+ export class XorShift32RNG extends RandomGenerator {
88
+ state;
89
+ constructor(seed) {
90
+ super();
91
+ this.state = seed;
92
+ }
93
+ nextFloat() {
94
+ return this.nextUint32() / 4294967296;
95
+ }
96
+ nextUint32() {
97
+ return this.nextInt32() >>> 0;
98
+ }
99
+ nextInt32() {
100
+ let s = this.state;
101
+ s ^= s << 13;
102
+ s ^= s >>> 17;
103
+ s ^= s << 5;
104
+ this.state = s;
105
+ return s;
106
+ }
107
+ }
108
+ export class LehmerRNG extends RandomGenerator {
109
+ state;
110
+ constructor(seed) {
111
+ super();
112
+ this.state = seed;
113
+ }
114
+ nextFloat() {
115
+ return this.nextUint32() / 4294967296;
116
+ }
117
+ nextUint32() {
118
+ return this.nextInt32() >>> 0;
119
+ }
120
+ nextInt32() {
121
+ let s = this.state;
122
+ s = s * 48271 % 0x7fffffff;
123
+ this.state = s;
124
+ return s;
125
+ }
126
+ }
127
+ const log = logToStderr;
128
+ export function testRngCycleLength() {
129
+ const seed = 1;
130
+ const rng = new XorShift32RNG(seed);
131
+ const bucketCount = 1000000;
132
+ const seen = [];
133
+ for (let i = 0; i < bucketCount; i++) {
134
+ seen[i] = [];
135
+ }
136
+ for (let i = 0; i < 4294967296; i++) {
137
+ if (i % 1000000 == 0) {
138
+ log(`${i} iterations`);
139
+ }
140
+ const r = rng.nextUint32();
141
+ const bucket = seen[r % bucketCount];
142
+ if (bucket.includes(r)) {
143
+ log(`Cycles at iteration ${i}`);
144
+ return;
145
+ }
146
+ bucket.push(r);
147
+ }
148
+ }
149
+ //# sourceMappingURL=RandomGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../../src/utilities/RandomGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function makeTarballsForInstalledPackages(skipIfExists?: boolean): Promise<void>;
2
+ export declare function createNamedTarball(inputPath: string, name: string): Promise<void>;
3
+ export declare function createTarballForEachDirIn(baseDir: string, namePrefix: String): Promise<void>;
4
+ export declare function createTarballForEachFileIn(baseDir: string, namePrefix: String): Promise<void>;
@@ -0,0 +1,50 @@
1
+ import path from "path";
2
+ import { createTarball } from "./Compression.js";
3
+ import { ensureDir, existsSync, getAppTempDir, move, readdir, stat } from "./FileSystem.js";
4
+ import { ensureAndGetPackagesDir } from "./PackageManager.js";
5
+ import { appName } from "../api/Globals.js";
6
+ import { getRandomHexString } from "./Utilities.js";
7
+ const tarballDir = "../resources/tarballs";
8
+ export async function makeTarballsForInstalledPackages(skipIfExists = false) {
9
+ const packagesDir = await ensureAndGetPackagesDir();
10
+ const packageList = await readdir(packagesDir);
11
+ for (const packageName of packageList) {
12
+ if (skipIfExists && existsSync(path.join(tarballDir, `${packageName}.tar.gz`))) {
13
+ continue;
14
+ }
15
+ const packagePath = path.join(packagesDir, packageName);
16
+ await createNamedTarball(packagePath, packageName);
17
+ }
18
+ }
19
+ export async function createNamedTarball(inputPath, name) {
20
+ const tempDir = getAppTempDir(appName);
21
+ await ensureDir(tempDir);
22
+ const tempFilename = path.join(tempDir, getRandomHexString(16));
23
+ await createTarball(inputPath, tempFilename, name);
24
+ const targetFilname = path.join(tarballDir, `${name}.tar.gz`);
25
+ await move(tempFilename, targetFilname, { overwrite: true });
26
+ }
27
+ export async function createTarballForEachDirIn(baseDir, namePrefix) {
28
+ for (const dirName of await readdir(baseDir)) {
29
+ const dirPath = path.join(baseDir, dirName);
30
+ const fileStat = await stat(dirPath);
31
+ if (!fileStat.isDirectory()) {
32
+ continue;
33
+ }
34
+ const archiveName = `${namePrefix}-${dirName}`;
35
+ await createNamedTarball(dirPath, archiveName);
36
+ }
37
+ }
38
+ export async function createTarballForEachFileIn(baseDir, namePrefix) {
39
+ for (const filename of await readdir(baseDir)) {
40
+ const filenameWithoutExtension = path.parse(filename).name;
41
+ const filePath = path.join(baseDir, filename);
42
+ const fileStat = await stat(filePath);
43
+ if (!fileStat.isFile()) {
44
+ continue;
45
+ }
46
+ const archiveName = `${namePrefix}-${filenameWithoutExtension}`;
47
+ await createNamedTarball(filePath, archiveName);
48
+ }
49
+ }
50
+ //# sourceMappingURL=TarballMaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TarballMaker.js","sourceRoot":"","sources":["../../src/utilities/TarballMaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare function addTimeOffsetToTimeline(targetTimeline: Timeline, timeOffset: number): Timeline;
2
+ export declare function multiplyTimelineByFactor(targetTimeline: Timeline, factor: number): Timeline;
3
+ export declare function roundTimelineTimestamps(targetTimeline: Timeline, decimalDigits?: number): Timeline;
4
+ export declare function wordTimelineToSegmentSentenceTimeline(wordTimeline: Timeline, transcript: string, language: string): Promise<{
5
+ segmentTimeline: Timeline;
6
+ }>;
7
+ export type TimelineEntryType = "segment" | "paragraph" | "sentence" | "clause" | "phrase" | "word" | "token" | "letter" | "phone" | "subphone";
8
+ export type TimelineEntry = {
9
+ type: TimelineEntryType;
10
+ text: string;
11
+ startTime: number;
12
+ endTime: number;
13
+ timeline?: Timeline;
14
+ startSample?: number;
15
+ endSample?: number;
16
+ textStartOffset?: number;
17
+ textEndOffset?: number;
18
+ confidence?: number;
19
+ };
20
+ export type Timeline = TimelineEntry[];
@@ -0,0 +1,110 @@
1
+ import { isWord, splitToParagraphs, splitToSentences } from "../nlp/Segmentation.js";
2
+ import { deepClone } from "./ObjectUtilities.js";
3
+ import { roundToDigits } from "./Utilities.js";
4
+ export function addTimeOffsetToTimeline(targetTimeline, timeOffset) {
5
+ if (!targetTimeline) {
6
+ return targetTimeline;
7
+ }
8
+ const newTimeline = deepClone(targetTimeline);
9
+ for (const segmentTimelineEntry of newTimeline) {
10
+ segmentTimelineEntry.startTime = Math.max(segmentTimelineEntry.startTime + timeOffset, 0);
11
+ segmentTimelineEntry.endTime = Math.max(segmentTimelineEntry.endTime + timeOffset, 0);
12
+ if (segmentTimelineEntry.timeline) {
13
+ segmentTimelineEntry.timeline = addTimeOffsetToTimeline(segmentTimelineEntry.timeline, timeOffset);
14
+ }
15
+ }
16
+ return newTimeline;
17
+ }
18
+ export function multiplyTimelineByFactor(targetTimeline, factor) {
19
+ const newTimeline = deepClone(targetTimeline);
20
+ for (const segmentTimelineEntry of newTimeline) {
21
+ segmentTimelineEntry.startTime = segmentTimelineEntry.startTime * factor;
22
+ segmentTimelineEntry.endTime = segmentTimelineEntry.endTime * factor;
23
+ if (segmentTimelineEntry.timeline) {
24
+ segmentTimelineEntry.timeline = multiplyTimelineByFactor(segmentTimelineEntry.timeline, factor);
25
+ }
26
+ }
27
+ return newTimeline;
28
+ }
29
+ export function roundTimelineTimestamps(targetTimeline, decimalDigits = 2) {
30
+ const roundedTimeline = deepClone(targetTimeline);
31
+ for (const entry of roundedTimeline) {
32
+ if (entry.startTime) {
33
+ entry.startTime = roundToDigits(entry.startTime, decimalDigits);
34
+ }
35
+ if (entry.endTime) {
36
+ entry.endTime = roundToDigits(entry.endTime, decimalDigits);
37
+ }
38
+ if (entry.timeline) {
39
+ entry.timeline = roundTimelineTimestamps(entry.timeline);
40
+ }
41
+ }
42
+ return roundedTimeline;
43
+ }
44
+ export async function wordTimelineToSegmentSentenceTimeline(wordTimeline, transcript, language) {
45
+ const paragraphs = await splitToParagraphs(transcript);
46
+ const segments = paragraphs
47
+ .map(segment => splitToSentences(segment, language).map(sentence => sentence.trim() + " "));
48
+ let text = "";
49
+ const charIndexToSentenceEntryMapping = [];
50
+ const segmentTimeline = [];
51
+ for (const segment of segments) {
52
+ const sentencesInSegment = [];
53
+ const segmentEntry = {
54
+ type: "segment",
55
+ text: "",
56
+ startTime: -1,
57
+ endTime: -1,
58
+ timeline: sentencesInSegment
59
+ };
60
+ for (const sentence of segment) {
61
+ const sentenceEntry = {
62
+ type: "sentence",
63
+ text: sentence,
64
+ startTime: -1,
65
+ endTime: -1,
66
+ timeline: []
67
+ };
68
+ for (const char of sentence) {
69
+ text += char;
70
+ charIndexToSentenceEntryMapping.push(sentenceEntry);
71
+ }
72
+ sentencesInSegment.push(sentenceEntry);
73
+ }
74
+ segmentTimeline.push(segmentEntry);
75
+ }
76
+ let wordSearchStartOffset = 0;
77
+ for (let wordIndex = 0; wordIndex < wordTimeline.length; wordIndex++) {
78
+ const wordEntry = wordTimeline[wordIndex];
79
+ const wordText = wordEntry.text;
80
+ if (!isWord(wordText)) {
81
+ continue;
82
+ }
83
+ const indexOfWordInText = text.indexOf(wordText, wordSearchStartOffset);
84
+ if (indexOfWordInText == -1) {
85
+ throw new Error(`Couldn't find the word '${wordText}' in the text at start position ${wordSearchStartOffset}`);
86
+ }
87
+ const targetSentenceEntry = charIndexToSentenceEntryMapping[indexOfWordInText];
88
+ targetSentenceEntry.timeline.push(wordEntry);
89
+ wordSearchStartOffset = indexOfWordInText + wordText.length;
90
+ }
91
+ for (const segmentEntry of segmentTimeline) {
92
+ const sentenceTimeline = segmentEntry.timeline;
93
+ if (sentenceTimeline.length == 0) {
94
+ throw new Error("Segment has no sentence entries");
95
+ }
96
+ for (const sentenceEntry of sentenceTimeline) {
97
+ const wordTimeline = sentenceEntry.timeline;
98
+ if (wordTimeline.length == 0) {
99
+ throw new Error("Sentence has no word entries");
100
+ }
101
+ sentenceEntry.startTime = wordTimeline[0].startTime;
102
+ sentenceEntry.endTime = wordTimeline[wordTimeline.length - 1].endTime;
103
+ }
104
+ segmentEntry.text = sentenceTimeline.map(sentenceEntry => sentenceEntry.text).join("");
105
+ segmentEntry.startTime = sentenceTimeline[0].startTime;
106
+ segmentEntry.endTime = sentenceTimeline[sentenceTimeline.length - 1].endTime;
107
+ }
108
+ return { segmentTimeline };
109
+ }
110
+ //# sourceMappingURL=Timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timeline.js","sourceRoot":"","sources":["../../src/utilities/Timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare class Timer {
2
+ startTime: number;
3
+ constructor();
4
+ restart(): void;
5
+ get elapsedTime(): number;
6
+ get elapsedTimeSeconds(): number;
7
+ getElapsedTimeAndRestart(): number;
8
+ logAndRestart(title: string, timePrecision?: number): number;
9
+ static get currentTime(): number;
10
+ static get microsecondTimestamp(): number;
11
+ private static createGlobalTimestampFunction;
12
+ private static timestampFunc;
13
+ }
@@ -0,0 +1,70 @@
1
+ import { roundToDigits, writeToStderr } from "./Utilities.js";
2
+ export class Timer {
3
+ startTime = 0;
4
+ constructor() {
5
+ this.restart();
6
+ }
7
+ restart() {
8
+ this.startTime = Timer.currentTime;
9
+ }
10
+ get elapsedTime() {
11
+ // Elapsed time (milliseconds)
12
+ return Timer.currentTime - this.startTime;
13
+ }
14
+ get elapsedTimeSeconds() {
15
+ // Elapsed time (seconds)
16
+ return this.elapsedTime / 1000;
17
+ }
18
+ getElapsedTimeAndRestart() {
19
+ const elapsedTime = this.elapsedTime;
20
+ this.restart();
21
+ return elapsedTime;
22
+ }
23
+ logAndRestart(title, timePrecision = 3) {
24
+ const elapsedTime = this.elapsedTime;
25
+ //
26
+ const message = `${title}: ${roundToDigits(elapsedTime, timePrecision)}ms`;
27
+ writeToStderr(message);
28
+ //
29
+ this.restart();
30
+ return elapsedTime;
31
+ }
32
+ static get currentTime() {
33
+ if (!this.timestampFunc) {
34
+ this.createGlobalTimestampFunction();
35
+ }
36
+ return this.timestampFunc();
37
+ }
38
+ static get microsecondTimestamp() {
39
+ return Math.floor(Timer.currentTime * 1000);
40
+ }
41
+ static createGlobalTimestampFunction() {
42
+ if (typeof process === "object" && typeof process.hrtime === "function") {
43
+ let baseTimestamp = 0;
44
+ this.timestampFunc = () => {
45
+ const nodeTimeStamp = process.hrtime();
46
+ const millisecondTime = (nodeTimeStamp[0] * 1000) + (nodeTimeStamp[1] / 1000000);
47
+ return baseTimestamp + millisecondTime;
48
+ };
49
+ baseTimestamp = Date.now() - this.timestampFunc();
50
+ }
51
+ else if (typeof chrome === "object" && chrome.Interval) {
52
+ const baseTimestamp = Date.now();
53
+ const chromeIntervalObject = new chrome.Interval();
54
+ chromeIntervalObject.start();
55
+ this.timestampFunc = () => baseTimestamp + chromeIntervalObject.microseconds() / 1000;
56
+ }
57
+ else if (typeof performance === "object" && performance.now) {
58
+ const baseTimestamp = Date.now() - performance.now();
59
+ this.timestampFunc = () => baseTimestamp + performance.now();
60
+ }
61
+ else if (Date.now) {
62
+ this.timestampFunc = () => Date.now();
63
+ }
64
+ else {
65
+ this.timestampFunc = () => (new Date()).getTime();
66
+ }
67
+ }
68
+ static timestampFunc;
69
+ }
70
+ //# sourceMappingURL=Timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../src/utilities/Timer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { IncomingMessage } from 'node:http';
4
+ import { RandomGenerator } from './RandomGenerator.js';
5
+ export declare function concatFloat32Arrays(arrays: Float32Array[]): Float32Array;
6
+ export declare function shuffleArray<T>(array: T[], randomGen: RandomGenerator): T[];
7
+ export declare function shuffleArrayInPlace<T>(array: T[], randomGen: RandomGenerator): T[];
8
+ export declare function simplifyPunctuationCharacters(text: string): string;
9
+ export declare function writeToStderr(message: any): void;
10
+ export declare function printToStderr(message: any): void;
11
+ export declare function logToStderr(message: any): void;
12
+ export declare function objToString(obj: any): string;
13
+ export declare function getRandomHexString(charCount: number, upperCase?: boolean): string;
14
+ export declare function sumArray<T>(arr: Array<T>, valueGetter: (item: T) => number): number;
15
+ export declare function includesAnyOf(str: string, substrings: string[]): boolean;
16
+ export declare function indexOfAnyOf(str: string, substrings: string[]): number;
17
+ export declare function startsWithAnyOf(str: string, prefixes: string[]): boolean;
18
+ export declare function roundToDigits(val: number, digits?: number): number;
19
+ export declare function delay(timeMs: number): Promise<unknown>;
20
+ export declare function printMatrix(matrix: Float32Array[]): void;
21
+ export declare function stringifyAndFormatJson(obj: any): string;
22
+ export declare function secondsToHMS(totalSeconds: number): {
23
+ hours: number;
24
+ minutes: number;
25
+ seconds: number;
26
+ milliseconds: number;
27
+ };
28
+ export declare function secondsToMS(totalSeconds: number): {
29
+ minutes: number;
30
+ seconds: number;
31
+ milliseconds: number;
32
+ };
33
+ export declare function formatHMS(timeHMS: {
34
+ hours: number;
35
+ minutes: number;
36
+ seconds: number;
37
+ milliseconds: number;
38
+ }, decimalSeparator?: string): string;
39
+ export declare function formatMS(timeMS: {
40
+ minutes: number;
41
+ seconds: number;
42
+ milliseconds: number;
43
+ }, decimalSeparator?: string): string;
44
+ export declare function formatIntegerWithLeadingZeros(num: number, minDigitCount: number): string;
45
+ export declare function intsInRange(start: number, end: number): number[];
46
+ export declare function randomIntsInRange(count: number, min: number, max: number): number[];
47
+ export declare function randomIntInRange(min: number, max: number): number;
48
+ export declare function randomFloatsInRange(count: number, min?: number, max?: number): number[];
49
+ export declare function randomFloatInRange(min: number, max: number): number;
50
+ export declare function serializeMapToObject<V>(map: Map<string, V>): {
51
+ [key: string]: V;
52
+ };
53
+ export declare function deserializeObjectToMap<V>(obj: {
54
+ [key: string]: V;
55
+ }): Map<string, V>;
56
+ export declare function waitTimeout(timeout?: number): Promise<void>;
57
+ export declare function waitImmediate(): Promise<void>;
58
+ export declare function waitNextTick(): Promise<void>;
59
+ export declare function setupUnhandledExceptionListeners(): void;
60
+ export declare function setupProgramTerminationListeners(): void;
61
+ export declare function clip(num: number, min: number, max: number): number;
62
+ export declare function readBinaryIncomingMessage(incomingMessage: IncomingMessage): Promise<Buffer>;
63
+ export declare function splitFloat32Array(nums: Float32Array, partSize: number): Float32Array[];
64
+ export declare function sha256AsHex(input: string): Promise<string>;
65
+ export declare function commandExists(command: string): Promise<boolean>;
66
+ export declare function convertHtmlToText(html: string): Promise<any>;
67
+ export declare function formatListWithQuotedElements(strings: string[], quoteSymbol?: string): string;
68
+ export declare function resolveModuleMainPath(moduleName: string): Promise<string>;