echogarden 0.0.1 → 0.1.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 (295) hide show
  1. package/README.md +65 -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 +17 -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,407 @@
1
+ export class WasmMemoryManager {
2
+ wasmModule;
3
+ allocatedReferences = new Set();
4
+ constructor(wasmModule) {
5
+ this.wasmModule = wasmModule;
6
+ }
7
+ allocInt8() {
8
+ const address = this.alloc(1);
9
+ return this.wrapInt8(address).clear();
10
+ }
11
+ wrapInt8(address) {
12
+ const ref = new Int8Ref(address, this);
13
+ this.allocatedReferences.add(ref);
14
+ return ref;
15
+ }
16
+ allocUint8() {
17
+ const address = this.alloc(1);
18
+ return this.wrapUint8(address).clear();
19
+ }
20
+ wrapUint8(address) {
21
+ const ref = new Uint8Ref(address, this);
22
+ this.allocatedReferences.add(ref);
23
+ return ref;
24
+ }
25
+ allocInt16() {
26
+ const address = this.alloc(2);
27
+ return this.wrapInt16(address).clear();
28
+ }
29
+ wrapInt16(address) {
30
+ const ref = new Int16Ref(address, this);
31
+ this.allocatedReferences.add(ref);
32
+ return ref;
33
+ }
34
+ allocUint16() {
35
+ const address = this.alloc(2);
36
+ return this.wrapUint16(address).clear();
37
+ }
38
+ wrapUint16(address) {
39
+ const ref = new Uint16Ref(address, this);
40
+ this.allocatedReferences.add(ref);
41
+ return ref;
42
+ }
43
+ allocInt32() {
44
+ const address = this.alloc(4);
45
+ return this.wrapInt32(address).clear();
46
+ }
47
+ wrapInt32(address) {
48
+ const ref = new Int32Ref(address, this);
49
+ this.allocatedReferences.add(ref);
50
+ return ref;
51
+ }
52
+ allocUint32() {
53
+ const address = this.alloc(4);
54
+ return this.wrapUint32(address).clear();
55
+ }
56
+ wrapUint32(address) {
57
+ const ref = new Uint32Ref(address, this);
58
+ this.allocatedReferences.add(ref);
59
+ return ref;
60
+ }
61
+ allocPointer() {
62
+ const address = this.alloc(4);
63
+ return this.wrapPointer(address).clear();
64
+ }
65
+ wrapPointer(address) {
66
+ const ref = new PointerRef(address, this);
67
+ this.allocatedReferences.add(ref);
68
+ return ref;
69
+ }
70
+ allocFloat32() {
71
+ const address = this.alloc(4);
72
+ return this.wrapFloat64(address).clear();
73
+ }
74
+ wrapFloat32(address) {
75
+ const ref = new Float32Ref(address, this);
76
+ this.allocatedReferences.add(ref);
77
+ return ref;
78
+ }
79
+ allocFloat64() {
80
+ const address = this.alloc(8);
81
+ return this.wrapFloat64(address).clear();
82
+ }
83
+ wrapFloat64(address) {
84
+ const ref = new Float64Ref(address, this);
85
+ this.allocatedReferences.add(ref);
86
+ return ref;
87
+ }
88
+ // Allocate or wrap arrays
89
+ allocInt8Array(length) {
90
+ const address = this.alloc(length << 0);
91
+ return this.wrapInt8Array(address, length).clear();
92
+ }
93
+ wrapInt8Array(address, length) {
94
+ const ref = new Int8ArrayRef(address, length, this);
95
+ this.allocatedReferences.add(ref);
96
+ return ref;
97
+ }
98
+ allocUint8Array(length) {
99
+ const address = this.alloc(length << 0);
100
+ return this.wrapUint8Array(address, length).clear();
101
+ }
102
+ wrapUint8Array(address, length) {
103
+ const ref = new Uint8ArrayRef(address, length, this);
104
+ this.allocatedReferences.add(ref);
105
+ return ref;
106
+ }
107
+ allocInt16Array(length) {
108
+ const address = this.alloc(length << 1);
109
+ return this.wrapInt16Array(address, length).clear();
110
+ }
111
+ wrapInt16Array(address, length) {
112
+ const ref = new Int16ArrayRef(address, length, this);
113
+ this.allocatedReferences.add(ref);
114
+ return ref;
115
+ }
116
+ allocUint16Array(length) {
117
+ const address = this.alloc(length << 1);
118
+ return this.wrapUint16Array(address, length).clear();
119
+ }
120
+ wrapUint16Array(address, length) {
121
+ const ref = new Uint16ArrayRef(address, length, this);
122
+ this.allocatedReferences.add(ref);
123
+ return ref;
124
+ }
125
+ allocInt32Array(length) {
126
+ const address = this.alloc(length << 2);
127
+ return this.wrapInt32Array(address, length).clear();
128
+ }
129
+ wrapInt32Array(address, length) {
130
+ const ref = new Int32ArrayRef(address, length, this);
131
+ this.allocatedReferences.add(ref);
132
+ return ref;
133
+ }
134
+ allocUint32Array(length) {
135
+ const address = this.alloc(length << 2);
136
+ return this.wrapUint32Array(address, length).clear();
137
+ }
138
+ wrapUint32Array(address, length) {
139
+ const ref = new Uint32ArrayRef(address, length, this);
140
+ this.allocatedReferences.add(ref);
141
+ return ref;
142
+ }
143
+ allocFloat32Array(length) {
144
+ const address = this.alloc(length << 2);
145
+ return this.wrapFloat32Array(address, length).clear();
146
+ }
147
+ wrapFloat32Array(address, length) {
148
+ const ref = new Float32ArrayRef(address, length, this);
149
+ this.allocatedReferences.add(ref);
150
+ return ref;
151
+ }
152
+ allocFloat64Array(length) {
153
+ const address = this.alloc(length << 3);
154
+ return this.wrapFloat64Array(address, length).clear();
155
+ }
156
+ wrapFloat64Array(address, length) {
157
+ const ref = new Float64ArrayRef(address, length, this);
158
+ this.allocatedReferences.add(ref);
159
+ return ref;
160
+ }
161
+ allocNullTerminatedUtf8String(str) {
162
+ const strBuffer = Buffer.concat([Buffer.from(str, "utf8"), Buffer.alloc(1)]);
163
+ const ref = this.allocUint8Array(strBuffer.length);
164
+ ref.view.set(strBuffer);
165
+ return ref;
166
+ }
167
+ wrapNullTerminatedUtf8String(address) {
168
+ const ref = new NullTerminatedUtf8StringRef(address, this);
169
+ this.allocatedReferences.add(ref);
170
+ return ref;
171
+ }
172
+ alloc(size) {
173
+ const ptr = this.wasmModule._malloc(size);
174
+ return ptr;
175
+ }
176
+ free(wasmReference) {
177
+ if (wasmReference.isFreed) {
178
+ return;
179
+ }
180
+ this.wasmModule._free(wasmReference.address);
181
+ this.allocatedReferences.delete(wasmReference);
182
+ wasmReference.clearAddress();
183
+ }
184
+ freeAll() {
185
+ for (const wasmReference of this.allocatedReferences) {
186
+ this.free(wasmReference);
187
+ }
188
+ }
189
+ }
190
+ class ValueRef {
191
+ ptr;
192
+ manager;
193
+ get module() { return this.manager.wasmModule; }
194
+ constructor(ptr, manager) {
195
+ this.ptr = ptr;
196
+ this.manager = manager;
197
+ }
198
+ get value() {
199
+ this.assertNotFreed();
200
+ return this.getValue();
201
+ }
202
+ set value(newValue) {
203
+ this.assertNotFreed();
204
+ this.setValue(newValue);
205
+ }
206
+ get address() {
207
+ this.assertNotFreed();
208
+ return this.ptr;
209
+ }
210
+ clear() {
211
+ this.assertNotFreed();
212
+ if (typeof this.value == 'number') {
213
+ this.value = 0;
214
+ }
215
+ else if (typeof this.value == 'string') {
216
+ throw new Error("Unimplemented");
217
+ }
218
+ return this;
219
+ }
220
+ free() {
221
+ this.manager.free(this);
222
+ }
223
+ clearAddress() {
224
+ this.ptr = 0;
225
+ }
226
+ get isFreed() { return this.ptr == 0; }
227
+ assertNotFreed() {
228
+ if (this.isFreed) {
229
+ throw new Error("Attempt to read a freed WASM value reference.");
230
+ }
231
+ }
232
+ }
233
+ export class Int8Ref extends ValueRef {
234
+ getValue() {
235
+ return this.module.HEAP8[this.ptr >>> 0];
236
+ }
237
+ setValue(newValue) {
238
+ this.module.HEAP8[this.ptr >>> 0] = newValue;
239
+ }
240
+ }
241
+ export class Uint8Ref extends ValueRef {
242
+ getValue() {
243
+ return this.module.HEAPU8[this.ptr >>> 0];
244
+ }
245
+ setValue(newValue) {
246
+ this.module.HEAPU8[this.ptr >>> 0] = newValue;
247
+ }
248
+ }
249
+ export class Int16Ref extends ValueRef {
250
+ getValue() {
251
+ return this.module.HEAP16[this.ptr >>> 1];
252
+ }
253
+ setValue(newValue) {
254
+ this.module.HEAP16[this.ptr >>> 1] = newValue;
255
+ }
256
+ }
257
+ export class Uint16Ref extends ValueRef {
258
+ getValue() {
259
+ return this.module.HEAPU16[this.ptr >>> 1];
260
+ }
261
+ setValue(newValue) {
262
+ this.module.HEAPU16[this.ptr >>> 1] = newValue;
263
+ }
264
+ }
265
+ export class Int32Ref extends ValueRef {
266
+ getValue() {
267
+ return this.module.HEAP32[this.ptr >>> 2];
268
+ }
269
+ setValue(newValue) {
270
+ this.module.HEAP32[this.ptr >>> 2] = newValue;
271
+ }
272
+ }
273
+ export class Uint32Ref extends ValueRef {
274
+ getValue() {
275
+ return this.module.HEAPU32[this.ptr >>> 2];
276
+ }
277
+ setValue(newValue) {
278
+ this.module.HEAPU32[this.ptr >>> 2] = newValue;
279
+ }
280
+ }
281
+ export class PointerRef extends Uint32Ref {
282
+ }
283
+ export class Float32Ref extends ValueRef {
284
+ getValue() {
285
+ return this.module.HEAPF32[this.ptr >>> 2];
286
+ }
287
+ setValue(newValue) {
288
+ this.module.HEAPF32[this.ptr >>> 2] = newValue;
289
+ }
290
+ }
291
+ export class Float64Ref extends ValueRef {
292
+ getValue() {
293
+ return this.module.HEAPF64[this.ptr >>> 3];
294
+ }
295
+ setValue(newValue) {
296
+ this.module.HEAPF64[this.ptr >>> 3] = newValue;
297
+ }
298
+ }
299
+ export class NullTerminatedUtf8StringRef extends ValueRef {
300
+ getValue() {
301
+ const ptr = this.ptr >>> 0;
302
+ const heapU8 = this.module.HEAPU8;
303
+ const endByteOffset = heapU8.subarray(ptr).indexOf(0);
304
+ const strBytes = heapU8.subarray(ptr, ptr + endByteOffset);
305
+ const str = Buffer.from(strBytes).toString("utf8");
306
+ return str;
307
+ }
308
+ setValue(newValue) {
309
+ throw new Error("Unimplemented");
310
+ }
311
+ }
312
+ class TypedArrayRef {
313
+ ptr;
314
+ length;
315
+ manager;
316
+ get module() { return this.manager.wasmModule; }
317
+ constructor(ptr, length, manager) {
318
+ this.ptr = ptr;
319
+ this.length = length;
320
+ this.manager = manager;
321
+ }
322
+ get view() {
323
+ this.assertNotFreed();
324
+ return this.getView();
325
+ }
326
+ slice(start, end) {
327
+ return this.view.slice(start, end);
328
+ }
329
+ get address() {
330
+ this.assertNotFreed();
331
+ return this.ptr;
332
+ }
333
+ clear() {
334
+ this.view.fill(0);
335
+ return this;
336
+ }
337
+ free() {
338
+ this.manager.free(this);
339
+ }
340
+ clearAddress() {
341
+ this.ptr = 0;
342
+ }
343
+ get isFreed() { return this.ptr == 0; }
344
+ assertNotFreed() {
345
+ if (this.isFreed) {
346
+ throw new Error("Attempt to read a freed WASM typed array reference.");
347
+ }
348
+ }
349
+ }
350
+ export class Int8ArrayRef extends TypedArrayRef {
351
+ getView() {
352
+ const startIndex = this.ptr >>> 0;
353
+ return this.module.HEAP8.subarray(startIndex, startIndex + this.length);
354
+ }
355
+ }
356
+ export class Uint8ArrayRef extends TypedArrayRef {
357
+ getView() {
358
+ const startIndex = this.ptr >>> 0;
359
+ return this.module.HEAPU8.subarray(startIndex, startIndex + this.length);
360
+ }
361
+ readAsNullTerminatedUtf8String() {
362
+ let strBytes = this.view;
363
+ const indexOfFirstZero = strBytes.indexOf(0);
364
+ if (indexOfFirstZero >= 0) {
365
+ strBytes = strBytes.subarray(0, indexOfFirstZero);
366
+ }
367
+ const str = Buffer.from(strBytes).toString("utf8");
368
+ return str;
369
+ }
370
+ }
371
+ export class Int16ArrayRef extends TypedArrayRef {
372
+ getView() {
373
+ const startIndex = this.ptr >>> 1;
374
+ return this.module.HEAP16.subarray(startIndex, startIndex + this.length);
375
+ }
376
+ }
377
+ export class Uint16ArrayRef extends TypedArrayRef {
378
+ getView() {
379
+ const startIndex = this.ptr >>> 1;
380
+ return this.module.HEAPU16.subarray(startIndex, startIndex + this.length);
381
+ }
382
+ }
383
+ export class Int32ArrayRef extends TypedArrayRef {
384
+ getView() {
385
+ const startIndex = this.ptr >>> 2;
386
+ return this.module.HEAP32.subarray(startIndex, startIndex + this.length);
387
+ }
388
+ }
389
+ export class Uint32ArrayRef extends TypedArrayRef {
390
+ getView() {
391
+ const startIndex = this.ptr >>> 2;
392
+ return this.module.HEAPU32.subarray(startIndex, startIndex + this.length);
393
+ }
394
+ }
395
+ export class Float32ArrayRef extends TypedArrayRef {
396
+ getView() {
397
+ const startIndex = this.ptr >>> 2;
398
+ return this.module.HEAPF32.subarray(startIndex, startIndex + this.length);
399
+ }
400
+ }
401
+ export class Float64ArrayRef extends TypedArrayRef {
402
+ getView() {
403
+ const startIndex = this.ptr >>> 3;
404
+ return this.module.HEAPF64.subarray(startIndex, startIndex + this.length);
405
+ }
406
+ }
407
+ //# sourceMappingURL=WasmMemoryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmMemoryManager.js","sourceRoot":"","sources":["../../src/utilities/WasmMemoryManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function fetchDocumentText(url: string): Promise<string>;
@@ -0,0 +1,47 @@
1
+ import { Readability } from '@mozilla/readability';
2
+ import { JSDOM, VirtualConsole } from 'jsdom';
3
+ import { request } from 'gaxios';
4
+ import { Logger } from './Logger.js';
5
+ import { convertHtmlToText } from './Utilities.js';
6
+ export async function fetchDocumentText(url) {
7
+ const progressLogger = new Logger();
8
+ progressLogger.start(`Fetching ${url}`);
9
+ const response = await request({
10
+ url,
11
+ responseType: "text",
12
+ headers: {
13
+ "sec-ch-ua": `".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"`,
14
+ "x-same-domain": "1",
15
+ "dnt": "1",
16
+ "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
17
+ "sec-ch-ua-mobile": "?0",
18
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
19
+ "sec-ch-ua-arch": "x86",
20
+ "sec-ch-ua-full-version": "103.0.5060.114",
21
+ "sec-ch-ua-platform-version": "10.0.0",
22
+ "sec-ch-ua-full-version-list": `".Not/A)Brand";v="99.0.0.0", "Google Chrome";v="103.0.5060.114", "Chromium";v="103.0.5060.114"`,
23
+ "sec-ch-ua-bitness": "64",
24
+ "sec-ch-ua-model": "",
25
+ "sec-ch-ua-platform": "Windows",
26
+ "accept": "*/*",
27
+ //"origin": "https://www.google.com/",
28
+ "sec-fetch-site": "same-origin",
29
+ "sec-fetch-mode": "cors",
30
+ "sec-fetch-dest": "empty",
31
+ "referer": "https://www.google.com/",
32
+ "accept-encoding": "gzip, deflate, br",
33
+ "accept-language": "en-US,en;q=0.9",
34
+ },
35
+ });
36
+ progressLogger.start(`Parsing document body`);
37
+ const doc = new JSDOM(response.data, {
38
+ url,
39
+ virtualConsole: new VirtualConsole()
40
+ });
41
+ const reader = new Readability(doc.window.document);
42
+ const article = reader.parse();
43
+ const text = await convertHtmlToText(article?.content || "");
44
+ progressLogger.end();
45
+ return text;
46
+ }
47
+ //# sourceMappingURL=WebReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebReader.js","sourceRoot":"","sources":["../../src/utilities/WebReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAClD,MAAM,cAAc,GAAG,IAAI,MAAM,EAAE,CAAA;IACnC,cAAc,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAS;QACtC,GAAG;QACH,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE;YACR,WAAW,EAAE,oEAAoE;YACjF,eAAe,EAAE,GAAG;YACpB,KAAK,EAAE,GAAG;YACV,cAAc,EAAE,iDAAiD;YACjE,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,iHAAiH;YAC/H,gBAAgB,EAAE,KAAK;YACvB,wBAAwB,EAAE,gBAAgB;YAC1C,4BAA4B,EAAE,QAAQ;YACtC,6BAA6B,EAAE,gGAAgG;YAC/H,mBAAmB,EAAE,IAAI;YACzB,iBAAiB,EAAE,EAAE;YACrB,oBAAoB,EAAE,SAAS;YAC/B,QAAQ,EAAE,KAAK;YACf,sCAAsC;YACtC,gBAAgB,EAAE,aAAa;YAC/B,gBAAgB,EAAE,MAAM;YACxB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,yBAAyB;YACpC,iBAAiB,EAAE,mBAAmB;YACtC,iBAAiB,EAAE,gBAAgB;SACnC;KACD,CAAC,CAAA;IAEF,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAE7C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QACpC,GAAG;QACH,cAAc,EAAE,IAAI,cAAc,EAAE;KACpC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;IAE9B,MAAM,IAAI,GAAW,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IAEpE,cAAc,CAAC,GAAG,EAAE,CAAA;IAEpB,OAAO,IAAI,CAAA;AACZ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function parseWikipediaArticle(articleName: string, language: string): Promise<string[]>;
@@ -0,0 +1,31 @@
1
+ import { splitToParagraphs, wordCharacterPattern } from '../nlp/Segmentation.js';
2
+ import { Logger } from './Logger.js';
3
+ export async function parseWikipediaArticle(articleName, language) {
4
+ const logger = new Logger();
5
+ logger.startAsync("Fetching Wikipedia article");
6
+ const { default: wtf } = await import('wtf_wikipedia');
7
+ const document = await wtf.fetch(articleName, language);
8
+ if (!document) {
9
+ throw new Error("Error fetching Wikipedia article");
10
+ }
11
+ const sections = document.sections();
12
+ const sectionsText = [];
13
+ for (const section of sections) {
14
+ const sectionTitle = section.title();
15
+ if (wordCharacterPattern.test(sectionTitle)) {
16
+ sectionsText.push(sectionTitle);
17
+ }
18
+ //sectionsText.push()
19
+ //const sectionParagraphs = section.paragraphs()
20
+ const sectionParagraphs = splitToParagraphs(section.text());
21
+ for (const paragraph of sectionParagraphs) {
22
+ const paragraphText = paragraph;
23
+ if (wordCharacterPattern.test(paragraphText)) {
24
+ sectionsText.push(paragraphText);
25
+ }
26
+ }
27
+ }
28
+ logger.end();
29
+ return sectionsText;
30
+ }
31
+ //# sourceMappingURL=WikipediaReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WikipediaReader.js","sourceRoot":"","sources":["../../src/utilities/WikipediaReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,WAAmB,EAAE,QAAgB;IAChF,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAE3B,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAA;IAE/C,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;IAEtD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAEvD,IAAI,CAAC,QAAQ,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;KACnD;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;IACpC,MAAM,YAAY,GAAa,EAAE,CAAA;IAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;QAEpC,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC5C,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC/B;QAED,qBAAqB;QAErB,gDAAgD;QAChD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAE3D,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE;YAC1C,MAAM,aAAa,GAAG,SAAS,CAAA;YAE/B,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAC7C,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;aAChC;SACD;KACD;IAED,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,OAAO,YAAY,CAAA;AACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import Onnx from 'onnxruntime-node';
2
+ import { RawAudio } from '../audio/AudioUtilities.js';
3
+ export declare function detectVoiceActivity(rawAudio: RawAudio, modelPath: string, frameDuration?: 30 | 60 | 90): Promise<number[]>;
4
+ export declare class SileroVAD {
5
+ session?: Onnx.InferenceSession;
6
+ modelStateH: Onnx.Tensor;
7
+ modelStateC: Onnx.Tensor;
8
+ modelSampleRate: Onnx.Tensor;
9
+ modelPath: string;
10
+ constructor(modelPath: string);
11
+ predictAudioFrame(frame: Float32Array): Promise<number>;
12
+ private initializeSession;
13
+ }
@@ -0,0 +1,58 @@
1
+ import Onnx from 'onnxruntime-node';
2
+ import { concatFloat32Arrays } from '../utilities/Utilities.js';
3
+ let sileroVad;
4
+ export async function detectVoiceActivity(rawAudio, modelPath, frameDuration = 30) {
5
+ if (rawAudio.sampleRate != 16000) {
6
+ throw new Error("Audio sample rate must be 16KHz");
7
+ }
8
+ const audioSamples = rawAudio.audioChannels[0];
9
+ const frameLength = Math.floor(16000 * (frameDuration / 1000));
10
+ if (!sileroVad) {
11
+ sileroVad = new SileroVAD(modelPath);
12
+ }
13
+ const frameProbabilities = [];
14
+ for (let position = 0; position < audioSamples.length; position += frameLength) {
15
+ let chunk = audioSamples.subarray(position, position + frameLength);
16
+ if (chunk.length < frameLength) {
17
+ chunk = concatFloat32Arrays([chunk, new Float32Array(frameLength - chunk.length)]);
18
+ }
19
+ const probability = await sileroVad.predictAudioFrame(chunk);
20
+ frameProbabilities.push(probability);
21
+ }
22
+ return frameProbabilities;
23
+ }
24
+ export class SileroVAD {
25
+ session;
26
+ modelStateH;
27
+ modelStateC;
28
+ modelSampleRate;
29
+ modelPath;
30
+ constructor(modelPath) {
31
+ this.modelSampleRate = new Onnx.Tensor('int64', new BigInt64Array([BigInt(16000)]), []);
32
+ const h = new Float32Array(2 * 1 * 64);
33
+ const c = new Float32Array(2 * 1 * 64);
34
+ this.modelStateH = new Onnx.Tensor('float32', h, [2, 1, 64]);
35
+ this.modelStateC = new Onnx.Tensor('float32', c, [2, 1, 64]);
36
+ this.modelPath = modelPath;
37
+ }
38
+ async predictAudioFrame(frame) {
39
+ if (!this.session) {
40
+ await this.initializeSession(this.modelPath);
41
+ }
42
+ const inputTensor = new Onnx.Tensor('float32', frame, [1, frame.length]);
43
+ //const inputs = { input: inputTensor, h0: this.modelStateH, c0: this.modelStateC }
44
+ const inputs = { input: inputTensor, sr: this.modelSampleRate, h: this.modelStateH, c: this.modelStateC };
45
+ const results = await this.session.run(inputs);
46
+ const probability = results["output"].data[0];
47
+ this.modelStateH = results["hn"];
48
+ this.modelStateC = results["cn"];
49
+ return probability;
50
+ }
51
+ async initializeSession(modelPath) {
52
+ const onnxOptions = {
53
+ logSeverityLevel: 3
54
+ };
55
+ this.session = await Onnx.InferenceSession.create(modelPath, onnxOptions);
56
+ }
57
+ }
58
+ //# sourceMappingURL=SileroVAD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SileroVAD.js","sourceRoot":"","sources":["../../src/voice-activity-detection/SileroVAD.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { RawAudio } from "../audio/AudioUtilities.js";
2
+ export declare function detectVoiceActivity(rawAudio: RawAudio, frameDuration?: 10 | 20 | 30, mode?: 0 | 1 | 2 | 3): Promise<(0 | 1)[]>;
3
+ export declare function fvad(samples: Int16Array, sampleRate: number, frameDuration: 10 | 20 | 30, mode: 0 | 1 | 2 | 3): Promise<any[]>;
@@ -0,0 +1,53 @@
1
+ import * as AudioBufferConversion from "../audio/AudioBufferConversion.js";
2
+ import { WasmMemoryManager } from "../utilities/WasmMemoryManager.js";
3
+ export async function detectVoiceActivity(rawAudio, frameDuration = 10, mode = 0) {
4
+ if (rawAudio.sampleRate != 16000) {
5
+ throw new Error("Audio sample rate must be 16KHz");
6
+ }
7
+ const frameClassifications = await fvad(AudioBufferConversion.float32ToInt16Pcm(rawAudio.audioChannels[0]), rawAudio.sampleRate, frameDuration, mode);
8
+ return frameClassifications;
9
+ }
10
+ export async function fvad(samples, sampleRate, frameDuration, mode) {
11
+ const m = await getFvadInstance();
12
+ const wasmMemory = new WasmMemoryManager(m);
13
+ const fvad_new = m._fvad_new;
14
+ const fvad_free = m._fvad_free;
15
+ const fvad_reset = m._fvad_reset;
16
+ const fvad_set_mode = m._fvad_set_mode;
17
+ const fvad_set_sample_rate = m._fvad_set_sample_rate;
18
+ const fvad_process = m._fvad_process;
19
+ const instancePtr = fvad_new();
20
+ const sampleRateValid = fvad_set_sample_rate(instancePtr, sampleRate);
21
+ if (sampleRateValid != 0) {
22
+ throw new Error(`fvad_set_sample_rate failed for value ${sampleRate}`);
23
+ }
24
+ const modeValid = fvad_set_mode(instancePtr, mode);
25
+ if (modeValid != 0) {
26
+ throw new Error(`fvad_set_mode failed for mode ${mode}`);
27
+ }
28
+ const frameSampleCount = Math.floor(sampleRate * (frameDuration / 1000));
29
+ const frameSamplesRef = wasmMemory.allocInt16Array(frameSampleCount);
30
+ const result = [];
31
+ for (let sampleOffset = 0; sampleOffset < samples.length; sampleOffset += frameSampleCount) {
32
+ const frame = samples.subarray(sampleOffset, sampleOffset + frameSampleCount);
33
+ frameSamplesRef.clear();
34
+ frameSamplesRef.view.set(frame);
35
+ const fvadResult = fvad_process(instancePtr, frameSamplesRef.address, frameSampleCount);
36
+ if (fvadResult == -1) {
37
+ throw new Error("fvad_process failed");
38
+ }
39
+ result.push(fvadResult);
40
+ }
41
+ fvad_free(instancePtr);
42
+ wasmMemory.freeAll();
43
+ return result;
44
+ }
45
+ let fvadInstance;
46
+ async function getFvadInstance() {
47
+ if (!fvadInstance) {
48
+ const { default: fvadInitializer } = await import('@echogarden/fvad-wasm');
49
+ fvadInstance = await fvadInitializer();
50
+ }
51
+ return fvadInstance;
52
+ }
53
+ //# sourceMappingURL=WebRtcVAD.js.map