echogarden 0.12.2 → 1.0.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 (334) hide show
  1. package/README.md +15 -14
  2. package/data/schemas/options.json +398 -111
  3. package/dist/alignment/DTWMfccSequenceAlignment.d.ts +1 -1
  4. package/dist/alignment/DTWMfccSequenceAlignment.js +8 -8
  5. package/dist/alignment/DTWSequenceAlignment.d.ts +1 -1
  6. package/dist/alignment/DTWSequenceAlignment.js +1 -1
  7. package/dist/alignment/DTWSequenceAlignmentWindowed.d.ts +1 -1
  8. package/dist/alignment/DTWSequenceAlignmentWindowed.js +2 -2
  9. package/dist/alignment/LevenshteinSequenceAlignment.d.ts +1 -1
  10. package/dist/alignment/LevenshteinSequenceAlignment.js +1 -1
  11. package/dist/alignment/SpeechAlignment.d.ts +9 -10
  12. package/dist/alignment/SpeechAlignment.js +136 -105
  13. package/dist/alignment/SpeechAlignment.js.map +1 -1
  14. package/dist/api/API.d.ts +13 -12
  15. package/dist/api/API.js +14 -13
  16. package/dist/api/API.js.map +1 -1
  17. package/dist/api/APIOptions.d.ts +5 -4
  18. package/dist/api/Alignment.d.ts +15 -9
  19. package/dist/api/Alignment.js +88 -74
  20. package/dist/api/Alignment.js.map +1 -1
  21. package/dist/api/Common.js +1 -1
  22. package/dist/api/Denoising.d.ts +6 -6
  23. package/dist/api/Denoising.js +23 -23
  24. package/dist/api/Denoising.js.map +1 -1
  25. package/dist/api/LanguageDetection.d.ts +19 -12
  26. package/dist/api/LanguageDetection.js +88 -38
  27. package/dist/api/LanguageDetection.js.map +1 -1
  28. package/dist/api/Recognition.d.ts +16 -6
  29. package/dist/api/Recognition.js +129 -55
  30. package/dist/api/Recognition.js.map +1 -1
  31. package/dist/api/SourceSeparation.d.ts +17 -0
  32. package/dist/api/SourceSeparation.js +61 -0
  33. package/dist/api/SourceSeparation.js.map +1 -0
  34. package/dist/api/Synthesis.d.ts +18 -18
  35. package/dist/api/Synthesis.js +191 -164
  36. package/dist/api/Synthesis.js.map +1 -1
  37. package/dist/api/Translation.d.ts +19 -8
  38. package/dist/api/Translation.js +132 -35
  39. package/dist/api/Translation.js.map +1 -1
  40. package/dist/api/Vad.d.ts +10 -5
  41. package/dist/api/Vad.js +76 -38
  42. package/dist/api/Vad.js.map +1 -1
  43. package/dist/audio/AudioBufferConversion.d.ts +1 -1
  44. package/dist/audio/AudioBufferConversion.js +4 -4
  45. package/dist/audio/AudioPlayer.d.ts +1 -1
  46. package/dist/audio/AudioPlayer.js +26 -26
  47. package/dist/audio/AudioPlayer.js.map +1 -1
  48. package/dist/audio/AudioRecorder.d.ts +1 -1
  49. package/dist/audio/AudioRecorder.js +5 -5
  50. package/dist/audio/AudioUtilities.d.ts +13 -9
  51. package/dist/audio/AudioUtilities.js +86 -24
  52. package/dist/audio/AudioUtilities.js.map +1 -1
  53. package/dist/cli/CLI.d.ts +3 -3
  54. package/dist/cli/CLI.js +271 -162
  55. package/dist/cli/CLI.js.map +1 -1
  56. package/dist/cli/CLIConfigFile.js +8 -8
  57. package/dist/cli/CLILauncher.js +6 -6
  58. package/dist/cli/CLIOptionsSchema.js +2 -2
  59. package/dist/cli/CLIParser.js +5 -5
  60. package/dist/cli/CLIStarter.js +4 -4
  61. package/dist/codecs/FFMpegTranscoder.d.ts +2 -2
  62. package/dist/codecs/FFMpegTranscoder.js +37 -37
  63. package/dist/codecs/FFMpegTranscoder.js.map +1 -1
  64. package/dist/codecs/TIMITCodec.js +5 -5
  65. package/dist/codecs/WaveCodec.d.ts +1 -1
  66. package/dist/codecs/WaveCodec.js +22 -22
  67. package/dist/denoising/RNNoise.d.ts +1 -1
  68. package/dist/denoising/RNNoise.js +9 -9
  69. package/dist/dsp/BiquadFilter.d.ts +3 -2
  70. package/dist/dsp/BiquadFilter.js +18 -11
  71. package/dist/dsp/BiquadFilter.js.map +1 -1
  72. package/dist/dsp/DecayingPeakEstimator.d.ts +16 -0
  73. package/dist/dsp/DecayingPeakEstimator.js +23 -0
  74. package/dist/dsp/DecayingPeakEstimator.js.map +1 -0
  75. package/dist/dsp/FFT.d.ts +8 -4
  76. package/dist/dsp/FFT.js +76 -30
  77. package/dist/dsp/FFT.js.map +1 -1
  78. package/dist/dsp/KWeightingFilter.d.ts +9 -0
  79. package/dist/dsp/KWeightingFilter.js +40 -0
  80. package/dist/dsp/KWeightingFilter.js.map +1 -0
  81. package/dist/dsp/LoudnessEstimator.d.ts +21 -0
  82. package/dist/dsp/LoudnessEstimator.js +47 -0
  83. package/dist/dsp/LoudnessEstimator.js.map +1 -0
  84. package/dist/dsp/MFCC.d.ts +2 -2
  85. package/dist/dsp/MFCC.js +15 -15
  86. package/dist/dsp/MelSpectogram.d.ts +1 -1
  87. package/dist/dsp/MelSpectogram.js +6 -6
  88. package/dist/dsp/Rubberband.d.ts +11 -11
  89. package/dist/dsp/Rubberband.js +27 -27
  90. package/dist/dsp/Sonic.d.ts +1 -1
  91. package/dist/dsp/Sonic.js +3 -3
  92. package/dist/dsp/SpeexResampler.d.ts +1 -1
  93. package/dist/dsp/SpeexResampler.js +2 -2
  94. package/dist/math/VectorMath.d.ts +12 -8
  95. package/dist/math/VectorMath.js +35 -32
  96. package/dist/math/VectorMath.js.map +1 -1
  97. package/dist/nlp/ChineseSegmentation.js +2 -2
  98. package/dist/nlp/CompromiseNLP.js +3 -3
  99. package/dist/nlp/EspeakPhonemizer.js +30 -30
  100. package/dist/nlp/IPA.js +20 -20
  101. package/dist/nlp/JapaneseSegmentation.js +6 -6
  102. package/dist/nlp/Lexicon.d.ts +1 -1
  103. package/dist/nlp/Lexicon.js +7 -7
  104. package/dist/nlp/Segmentation.d.ts +3 -0
  105. package/dist/nlp/Segmentation.js +21 -14
  106. package/dist/nlp/Segmentation.js.map +1 -1
  107. package/dist/nlp/TextNormalizer.js +16 -16
  108. package/dist/recognition/AmazonTranscribeSTT.d.ts +2 -2
  109. package/dist/recognition/AmazonTranscribeSTT.js +13 -14
  110. package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
  111. package/dist/recognition/AzureCognitiveServicesSTT.js +5 -6
  112. package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -1
  113. package/dist/recognition/GoogleCloudSTT.d.ts +3 -3
  114. package/dist/recognition/GoogleCloudSTT.js +18 -18
  115. package/dist/recognition/OpenAICloudSTT.d.ts +19 -0
  116. package/dist/recognition/OpenAICloudSTT.js +81 -0
  117. package/dist/recognition/OpenAICloudSTT.js.map +1 -0
  118. package/dist/recognition/SileroSTT.d.ts +2 -2
  119. package/dist/recognition/SileroSTT.js +25 -25
  120. package/dist/recognition/VoskSTT.d.ts +2 -2
  121. package/dist/recognition/VoskSTT.js +8 -8
  122. package/dist/recognition/WhisperCppSTT.d.ts +88 -0
  123. package/dist/recognition/WhisperCppSTT.js +332 -0
  124. package/dist/recognition/WhisperCppSTT.js.map +1 -0
  125. package/dist/recognition/WhisperSTT.d.ts +49 -25
  126. package/dist/recognition/WhisperSTT.js +626 -481
  127. package/dist/recognition/WhisperSTT.js.map +1 -1
  128. package/dist/server/Client.d.ts +1 -1
  129. package/dist/server/Client.js +22 -22
  130. package/dist/server/Server.js +9 -9
  131. package/dist/server/Server.js.map +1 -1
  132. package/dist/server/Worker.d.ts +22 -22
  133. package/dist/server/Worker.js +36 -36
  134. package/dist/server/Worker.js.map +1 -1
  135. package/dist/server/WorkerStarter.js +2 -2
  136. package/dist/source-separation/MDXNetSourceSeparation.d.ts +11 -0
  137. package/dist/source-separation/MDXNetSourceSeparation.js +161 -0
  138. package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -0
  139. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +1 -1
  140. package/dist/speech-language-detection/SileroLanguageDetection.js +7 -7
  141. package/dist/subtitles/Subtitles.d.ts +10 -0
  142. package/dist/subtitles/Subtitles.js +2 -2
  143. package/dist/subtitles/Subtitles.js.map +1 -1
  144. package/dist/synthesis/AwsPollyTTS.d.ts +1 -1
  145. package/dist/synthesis/AwsPollyTTS.js +12 -12
  146. package/dist/synthesis/AzureCognitiveServicesTTS.js +7 -7
  147. package/dist/synthesis/CoquiServerTTS.js +10 -10
  148. package/dist/synthesis/CoquiServerTTS.js.map +1 -1
  149. package/dist/synthesis/ElevenlabsTTS.d.ts +23 -0
  150. package/dist/synthesis/ElevenlabsTTS.js +103 -0
  151. package/dist/synthesis/ElevenlabsTTS.js.map +1 -0
  152. package/dist/synthesis/EspeakTTS.d.ts +6 -5
  153. package/dist/synthesis/EspeakTTS.js +81 -69
  154. package/dist/synthesis/EspeakTTS.js.map +1 -1
  155. package/dist/synthesis/FliteTTS.d.ts +3 -3
  156. package/dist/synthesis/FliteTTS.js +154 -154
  157. package/dist/synthesis/FliteTTS.js.map +1 -1
  158. package/dist/synthesis/GoogleCloudTTS.d.ts +3 -3
  159. package/dist/synthesis/GoogleCloudTTS.js +17 -17
  160. package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
  161. package/dist/synthesis/GoogleTranslateTTS.d.ts +1 -1
  162. package/dist/synthesis/GoogleTranslateTTS.js +103 -103
  163. package/dist/synthesis/MicrosoftEdgeTTS.d.ts +2 -2
  164. package/dist/synthesis/MicrosoftEdgeTTS.js +74 -74
  165. package/dist/synthesis/OpenAICloudTTS.d.ts +13 -0
  166. package/dist/synthesis/OpenAICloudTTS.js +169 -0
  167. package/dist/synthesis/OpenAICloudTTS.js.map +1 -0
  168. package/dist/synthesis/SamTTS.js +3 -3
  169. package/dist/synthesis/SapiTTS.d.ts +3 -3
  170. package/dist/synthesis/SapiTTS.js +26 -26
  171. package/dist/synthesis/StreamlabsPollyTTS.d.ts +2 -2
  172. package/dist/synthesis/StreamlabsPollyTTS.js +27 -27
  173. package/dist/synthesis/SvoxPicoTTS.d.ts +2 -2
  174. package/dist/synthesis/SvoxPicoTTS.js +65 -65
  175. package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
  176. package/dist/synthesis/VitsTTS.d.ts +3 -3
  177. package/dist/synthesis/VitsTTS.js +378 -378
  178. package/dist/synthesis/VitsTTS.js.map +1 -1
  179. package/dist/tests/Test.js +2 -2
  180. package/dist/utilities/Compression.d.ts +5 -0
  181. package/dist/utilities/Compression.js +29 -13
  182. package/dist/utilities/Compression.js.map +1 -1
  183. package/dist/utilities/FileDownloader.d.ts +1 -1
  184. package/dist/utilities/FileDownloader.js +16 -16
  185. package/dist/utilities/FileSystem.js +7 -7
  186. package/dist/utilities/Locale.d.ts +7 -7
  187. package/dist/utilities/Locale.js +15 -15
  188. package/dist/utilities/Logger.js +3 -3
  189. package/dist/utilities/ObjectUtilities.js +19 -19
  190. package/dist/utilities/OpenPromise.js +2 -2
  191. package/dist/utilities/OpenPromise.js.map +1 -1
  192. package/dist/utilities/PackageManager.js +31 -0
  193. package/dist/utilities/PackageManager.js.map +1 -1
  194. package/dist/utilities/PathUtilities.js +8 -8
  195. package/dist/utilities/RandomGenerator.js +2 -2
  196. package/dist/utilities/SmoothEstimator.d.ts +8 -0
  197. package/dist/utilities/SmoothEstimator.js +25 -0
  198. package/dist/utilities/SmoothEstimator.js.map +1 -0
  199. package/dist/utilities/TarballMaker.js +8 -8
  200. package/dist/utilities/Timeline.d.ts +3 -2
  201. package/dist/utilities/Timeline.js +11 -11
  202. package/dist/utilities/Timeline.js.map +1 -1
  203. package/dist/utilities/Timer.js +4 -4
  204. package/dist/utilities/Utilities.d.ts +4 -0
  205. package/dist/utilities/Utilities.js +38 -15
  206. package/dist/utilities/Utilities.js.map +1 -1
  207. package/dist/utilities/WasmMemoryManager.js +7 -7
  208. package/dist/utilities/WebReader.js +23 -23
  209. package/dist/utilities/WikipediaReader.js +2 -2
  210. package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts +28 -0
  211. package/dist/voice-activity-detection/AdaptiveGateVAD.js +138 -0
  212. package/dist/voice-activity-detection/AdaptiveGateVAD.js.map +1 -0
  213. package/dist/voice-activity-detection/SileroVAD.d.ts +1 -1
  214. package/dist/voice-activity-detection/SileroVAD.js +5 -5
  215. package/dist/voice-activity-detection/SileroVAD.js.map +1 -1
  216. package/dist/voice-activity-detection/WebRtcVAD.d.ts +1 -1
  217. package/dist/voice-activity-detection/WebRtcVAD.js +4 -4
  218. package/docs/API.md +29 -11
  219. package/docs/CLI.md +31 -7
  220. package/docs/Contributing.md +38 -0
  221. package/docs/Development.md +93 -19
  222. package/docs/Engines.md +28 -16
  223. package/docs/Licenses.md +4 -1
  224. package/docs/Options.md +158 -78
  225. package/docs/Releases.md +262 -0
  226. package/docs/Server.md +7 -7
  227. package/docs/Tasklist.md +95 -76
  228. package/docs/Technical.md +4 -4
  229. package/package.json +13 -14
  230. package/src/alignment/DTWMfccSequenceAlignment.ts +9 -9
  231. package/src/alignment/DTWSequenceAlignment.ts +2 -2
  232. package/src/alignment/DTWSequenceAlignmentWindowed.ts +3 -3
  233. package/src/alignment/LevenshteinSequenceAlignment.ts +2 -2
  234. package/src/alignment/SpeechAlignment.ts +204 -119
  235. package/src/api/API.ts +14 -13
  236. package/src/api/APIOptions.ts +12 -11
  237. package/src/api/Alignment.ts +147 -90
  238. package/src/api/Common.ts +1 -1
  239. package/src/api/Denoising.ts +28 -28
  240. package/src/api/LanguageDetection.ts +135 -48
  241. package/src/api/Recognition.ts +198 -59
  242. package/src/api/SourceSeparation.ts +99 -0
  243. package/src/api/Synthesis.ts +217 -181
  244. package/src/api/Translation.ts +193 -40
  245. package/src/api/Vad.ts +110 -41
  246. package/src/audio/AudioBufferConversion.ts +4 -4
  247. package/src/audio/AudioPlayer.ts +27 -27
  248. package/src/audio/AudioRecorder.ts +5 -5
  249. package/src/audio/AudioUtilities.ts +107 -24
  250. package/src/cli/CLI.ts +313 -164
  251. package/src/cli/CLIConfigFile.ts +8 -8
  252. package/src/cli/CLILauncher.ts +6 -6
  253. package/src/cli/CLIOptionsSchema.ts +2 -2
  254. package/src/cli/CLIParser.ts +5 -5
  255. package/src/cli/CLIStarter.ts +4 -4
  256. package/src/codecs/FFMpegTranscoder.ts +38 -38
  257. package/src/codecs/TIMITCodec.ts +5 -5
  258. package/src/codecs/WaveCodec.ts +22 -22
  259. package/src/denoising/RNNoise.ts +9 -9
  260. package/src/dsp/BiquadFilter.ts +19 -11
  261. package/src/dsp/DecayingPeakEstimator.ts +35 -0
  262. package/src/dsp/FFT.ts +103 -35
  263. package/src/dsp/KWeightingFilter.ts +43 -0
  264. package/src/dsp/LoudnessEstimator.ts +74 -0
  265. package/src/dsp/MFCC.ts +15 -15
  266. package/src/dsp/MelSpectogram.ts +7 -7
  267. package/src/dsp/Rubberband.ts +38 -38
  268. package/src/dsp/Sonic.ts +4 -4
  269. package/src/dsp/SpeexResampler.ts +2 -2
  270. package/src/math/VectorMath.ts +42 -33
  271. package/src/nlp/ChineseSegmentation.ts +3 -3
  272. package/src/nlp/CompromiseNLP.ts +3 -3
  273. package/src/nlp/EspeakPhonemizer.ts +30 -30
  274. package/src/nlp/IPA.ts +20 -20
  275. package/src/nlp/JapaneseSegmentation.ts +6 -6
  276. package/src/nlp/Lexicon.ts +8 -8
  277. package/src/nlp/Segmentation.ts +23 -14
  278. package/src/nlp/TextNormalizer.ts +16 -16
  279. package/src/recognition/AmazonTranscribeSTT.ts +16 -17
  280. package/src/recognition/AzureCognitiveServicesSTT.ts +8 -6
  281. package/src/recognition/GoogleCloudSTT.ts +21 -21
  282. package/src/recognition/OpenAICloudSTT.ts +142 -0
  283. package/src/recognition/SileroSTT.ts +26 -26
  284. package/src/recognition/VoskSTT.ts +10 -10
  285. package/src/recognition/WhisperCppSTT.ts +555 -0
  286. package/src/recognition/WhisperSTT.ts +760 -507
  287. package/src/server/Client.ts +23 -23
  288. package/src/server/Server.ts +9 -9
  289. package/src/server/Worker.ts +53 -53
  290. package/src/server/WorkerStarter.ts +2 -2
  291. package/src/source-separation/MDXNetSourceSeparation.ts +228 -0
  292. package/src/speech-language-detection/SileroLanguageDetection.ts +8 -8
  293. package/src/subtitles/Subtitles.ts +3 -3
  294. package/src/synthesis/AwsPollyTTS.ts +14 -14
  295. package/src/synthesis/AzureCognitiveServicesTTS.ts +10 -10
  296. package/src/synthesis/CoquiServerTTS.ts +10 -10
  297. package/src/synthesis/ElevenlabsTTS.ts +137 -0
  298. package/src/synthesis/EspeakTTS.ts +90 -71
  299. package/src/synthesis/FliteTTS.ts +157 -157
  300. package/src/synthesis/GoogleCloudTTS.ts +19 -19
  301. package/src/synthesis/GoogleTranslateTTS.ts +104 -104
  302. package/src/synthesis/MicrosoftEdgeTTS.ts +80 -80
  303. package/src/synthesis/OpenAICloudTTS.ts +196 -0
  304. package/src/synthesis/SamTTS.ts +3 -3
  305. package/src/synthesis/SapiTTS.ts +29 -29
  306. package/src/synthesis/StreamlabsPollyTTS.ts +29 -29
  307. package/src/synthesis/SvoxPicoTTS.ts +67 -67
  308. package/src/synthesis/VitsTTS.ts +380 -380
  309. package/src/tests/Test.ts +4 -4
  310. package/src/utilities/Compression.ts +34 -13
  311. package/src/utilities/FileDownloader.ts +19 -19
  312. package/src/utilities/FileSystem.ts +7 -7
  313. package/src/utilities/Locale.ts +22 -22
  314. package/src/utilities/Logger.ts +4 -4
  315. package/src/utilities/ObjectUtilities.ts +19 -19
  316. package/src/utilities/OpenPromise.ts +2 -2
  317. package/src/utilities/PackageManager.ts +40 -0
  318. package/src/utilities/PathUtilities.ts +8 -8
  319. package/src/utilities/RandomGenerator.ts +3 -3
  320. package/src/utilities/SmoothEstimator.ts +35 -0
  321. package/src/utilities/TarballMaker.ts +9 -9
  322. package/src/utilities/Timeline.ts +15 -13
  323. package/src/utilities/Timer.ts +4 -4
  324. package/src/utilities/Utilities.ts +49 -15
  325. package/src/utilities/WasmMemoryManager.ts +7 -7
  326. package/src/utilities/WebReader.ts +23 -23
  327. package/src/utilities/WikipediaReader.ts +2 -2
  328. package/src/voice-activity-detection/AdaptiveGateVAD.ts +202 -0
  329. package/src/voice-activity-detection/SileroVAD.ts +5 -5
  330. package/src/voice-activity-detection/WebRtcVAD.ts +5 -5
  331. package/dist/synthesis/ElevenLabsTTS.d.ts +0 -8
  332. package/dist/synthesis/ElevenLabsTTS.js +0 -82
  333. package/dist/synthesis/ElevenLabsTTS.js.map +0 -1
  334. package/src/synthesis/ElevenLabsTTS.ts +0 -104
package/dist/api/Vad.js CHANGED
@@ -1,87 +1,125 @@
1
- import { extendDeep } from "../utilities/ObjectUtilities.js";
2
- import { logToStderr } from "../utilities/Utilities.js";
3
- import { ensureRawAudio, } from "../audio/AudioUtilities.js";
4
- import { Logger } from "../utilities/Logger.js";
5
- import path from "path";
6
- import { loadPackage } from "../utilities/PackageManager.js";
7
- import chalk from "chalk";
1
+ import { extendDeep } from '../utilities/ObjectUtilities.js';
2
+ import { logToStderr } from '../utilities/Utilities.js';
3
+ import { cropToTimeline, ensureRawAudio, } from '../audio/AudioUtilities.js';
4
+ import { Logger } from '../utilities/Logger.js';
5
+ import path from 'path';
6
+ import { loadPackage } from '../utilities/PackageManager.js';
7
+ import chalk from 'chalk';
8
8
  const log = logToStderr;
9
9
  export async function detectVoiceActivity(input, options) {
10
10
  const logger = new Logger();
11
11
  const startTimestamp = logger.getTimestamp();
12
- logger.start("Prepare for voice activity detection");
12
+ logger.start('Prepare for voice activity detection');
13
13
  const inputRawAudio = await ensureRawAudio(input);
14
14
  let sourceRawAudio = await ensureRawAudio(inputRawAudio, 16000, 1);
15
15
  options = extendDeep(defaultVADOptions, options);
16
16
  logger.start(`Detect voice activity with ${options.engine}`);
17
- let frameDurationSeconds;
18
- let frameProbabilities;
17
+ const activityThreshold = options.activityThreshold;
18
+ let verboseTimeline;
19
19
  switch (options.engine) {
20
- case "webrtc": {
21
- const WebRtcVAD = await import("../voice-activity-detection/WebRtcVAD.js");
20
+ case 'webrtc': {
21
+ const WebRtcVAD = await import('../voice-activity-detection/WebRtcVAD.js');
22
22
  const webrtcOptions = options.webrtc;
23
- frameProbabilities = await WebRtcVAD.detectVoiceActivity(sourceRawAudio, webrtcOptions.frameDuration);
24
- frameDurationSeconds = webrtcOptions.frameDuration / 1000;
23
+ const frameProbabilities = await WebRtcVAD.detectVoiceActivity(sourceRawAudio, webrtcOptions.frameDuration);
24
+ const frameDurationSeconds = webrtcOptions.frameDuration / 1000;
25
+ verboseTimeline = frameProbabilitiesToTimeline(frameProbabilities, frameDurationSeconds, activityThreshold);
25
26
  break;
26
27
  }
27
- case "silero": {
28
- const SileroVAD = await import("../voice-activity-detection/SileroVAD.js");
28
+ case 'silero': {
29
+ const SileroVAD = await import('../voice-activity-detection/SileroVAD.js');
29
30
  const sileroOptions = options.silero;
30
- const modelDir = await loadPackage("silero-vad");
31
- const modelPath = path.join(modelDir, "silero-vad.onnx");
31
+ const modelDir = await loadPackage('silero-vad');
32
+ const modelPath = path.join(modelDir, 'silero-vad.onnx');
32
33
  const frameDuration = sileroOptions.frameDuration;
33
- frameProbabilities = await SileroVAD.detectVoiceActivity(sourceRawAudio, modelPath, frameDuration);
34
- frameDurationSeconds = sileroOptions.frameDuration / 1000;
34
+ const frameProbabilities = await SileroVAD.detectVoiceActivity(sourceRawAudio, modelPath, frameDuration);
35
+ const frameDurationSeconds = sileroOptions.frameDuration / 1000;
36
+ verboseTimeline = frameProbabilitiesToTimeline(frameProbabilities, frameDurationSeconds, activityThreshold);
35
37
  break;
36
38
  }
37
- case "rnnoise": {
38
- const RNNoise = await import("../denoising/RNNoise.js");
39
+ case 'rnnoise': {
40
+ const RNNoise = await import('../denoising/RNNoise.js');
41
+ const audio48k = await ensureRawAudio(sourceRawAudio, 48000, 1);
39
42
  const rnnoiseOptions = options.rnnoise;
40
- const { denoisedRawAudio, frameVadProbabilities } = await RNNoise.denoiseAudio(sourceRawAudio);
41
- frameDurationSeconds = 0.01;
42
- frameProbabilities = frameVadProbabilities;
43
+ const { denoisedRawAudio, frameVadProbabilities } = await RNNoise.denoiseAudio(audio48k);
44
+ const frameDurationSeconds = 0.01;
45
+ const frameProbabilities = frameVadProbabilities;
46
+ verboseTimeline = frameProbabilitiesToTimeline(frameProbabilities, frameDurationSeconds, activityThreshold);
47
+ break;
48
+ }
49
+ case 'adaptive-gate': {
50
+ const AdaptiveGateVAD = await import('../voice-activity-detection/AdaptiveGateVAD.js');
51
+ const adaptiveGateOptions = options.adaptiveGate;
52
+ verboseTimeline = await AdaptiveGateVAD.detectVoiceActivity(sourceRawAudio, adaptiveGateOptions);
43
53
  break;
44
54
  }
45
55
  default: {
46
56
  throw new Error(`Engine '${options.engine}' is not supported`);
47
57
  }
48
58
  }
59
+ const timeline = verboseTimeline.filter(entry => entry.text === 'active');
60
+ const croppedRawAudio = cropToTimeline(inputRawAudio, timeline);
61
+ logger.end();
62
+ logger.log('');
63
+ logger.logDuration(`Total voice activity detection time`, startTimestamp, chalk.magentaBright);
64
+ return { timeline, verboseTimeline, inputRawAudio, croppedRawAudio };
65
+ }
66
+ function frameProbabilitiesToTimeline(frameProbabilities, frameDurationSeconds, activityThreshold) {
49
67
  const timeline = [];
50
68
  for (let i = 0; i < frameProbabilities.length; i++) {
51
69
  const frameProbability = frameProbabilities[i];
52
70
  const startTime = i * frameDurationSeconds;
53
71
  const endTime = (i + 1) * frameDurationSeconds;
54
- if (frameProbability >= options.activityThreshold) {
55
- if (timeline.length == 0 || timeline[timeline.length - 1].text == "nonspeech") {
56
- timeline.push({ type: "segment", text: "speech", startTime, endTime });
72
+ if (frameProbability >= activityThreshold) {
73
+ if (timeline.length == 0 || timeline[timeline.length - 1].text == 'inactive') {
74
+ timeline.push({ type: 'segment', text: 'active', startTime, endTime });
57
75
  continue;
58
76
  }
59
77
  }
60
78
  else {
61
- if (timeline.length == 0 || timeline[timeline.length - 1].text == "speech") {
62
- timeline.push({ type: "segment", text: "nonspeech", startTime, endTime });
79
+ if (timeline.length == 0 || timeline[timeline.length - 1].text == 'active') {
80
+ timeline.push({ type: 'segment', text: 'inactive', startTime, endTime });
63
81
  continue;
64
82
  }
65
83
  }
66
84
  timeline[timeline.length - 1].endTime = endTime;
67
85
  }
68
- logger.end();
69
- logger.log('');
70
- logger.logDuration(`Total voice activity detection time`, startTimestamp, chalk.magentaBright);
71
- return { timeline, inputRawAudio };
86
+ return timeline;
87
+ }
88
+ export function convertCroppedToUncroppedTimeline(timeline, uncropTimeline) {
89
+ for (const entry of timeline) {
90
+ entry.startTime = mapTimestampUsingUncropTimeline(entry.startTime, uncropTimeline);
91
+ entry.endTime = mapTimestampUsingUncropTimeline(entry.endTime, uncropTimeline);
92
+ if (entry.timeline) {
93
+ convertCroppedToUncroppedTimeline(entry.timeline, uncropTimeline);
94
+ }
95
+ }
96
+ }
97
+ export function mapTimestampUsingUncropTimeline(timeInCroppedAudio, uncropTimeline) {
98
+ let offsetInCroppedAudio = 0;
99
+ for (let i = 0; i < uncropTimeline.length; i++) {
100
+ const entry = uncropTimeline[i];
101
+ const entryDuration = entry.endTime - entry.startTime;
102
+ const endOffset = offsetInCroppedAudio + entryDuration;
103
+ if ((i === uncropTimeline.length - 1) ||
104
+ (timeInCroppedAudio >= offsetInCroppedAudio && timeInCroppedAudio < endOffset)) {
105
+ return entry.startTime + (timeInCroppedAudio - offsetInCroppedAudio);
106
+ }
107
+ offsetInCroppedAudio += entryDuration;
108
+ }
109
+ throw new Error(`Should not be reached`);
72
110
  }
73
111
  export const defaultVADOptions = {
74
- engine: "webrtc",
112
+ engine: 'silero',
75
113
  activityThreshold: 0.5,
76
114
  webrtc: {
77
115
  frameDuration: 30,
78
116
  mode: 1
79
117
  },
80
118
  silero: {
81
- modelPath: undefined,
82
119
  frameDuration: 90,
83
120
  },
84
- rnnoise: {}
121
+ rnnoise: {},
122
+ adaptiveGate: {}
85
123
  };
86
124
  export const vadEngines = [
87
125
  {
@@ -99,7 +137,7 @@ export const vadEngines = [
99
137
  {
100
138
  id: 'rnnoise',
101
139
  name: 'RNNoise',
102
- description: "Uses RNNoise's speech probabilities as VAD metrics.",
140
+ description: `Uses RNNoise's internal speech probabilities as VAD metrics.`,
103
141
  type: 'local'
104
142
  }
105
143
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"Vad.js","sourceRoot":"","sources":["../../src/api/Vad.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vad.js","sourceRoot":"","sources":["../../src/api/Vad.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { BitDepth, SampleFormat } from "../codecs/WaveCodec.js";
2
+ import { BitDepth, SampleFormat } from '../codecs/WaveCodec.js';
3
3
  export declare function encodeToAudioBuffer(audioChannels: Float32Array[], targetBitDepth?: BitDepth, targetSampleFormat?: SampleFormat): Buffer;
4
4
  export declare function decodeToChannels(audioBuffer: Buffer, channelCount: number, sourceBitDepth: number, sourceSampleFormat: SampleFormat): Float32Array[];
5
5
  export declare function uint8PcmToFloat32(input: Uint8Array): Float32Array;
@@ -1,6 +1,6 @@
1
- import AlawMulaw from "alawmulaw";
1
+ import AlawMulaw from 'alawmulaw';
2
2
  import * as BinaryArrayConversion from '../utilities/BinaryArrayConversion.js';
3
- import { SampleFormat } from "../codecs/WaveCodec.js";
3
+ import { SampleFormat } from '../codecs/WaveCodec.js';
4
4
  /////////////////////////////////////////////////////////////////////////////////////////////
5
5
  // Low level audio sample conversions
6
6
  /////////////////////////////////////////////////////////////////////////////////////////////
@@ -179,7 +179,7 @@ export function float32ToInt32Pcm(input) {
179
179
  export function interleaveChannels(channels) {
180
180
  const channelCount = channels.length;
181
181
  if (channelCount == 0) {
182
- throw new Error("Empty channel array received");
182
+ throw new Error('Empty channel array received');
183
183
  }
184
184
  if (channelCount == 1) {
185
185
  return channels[0];
@@ -197,7 +197,7 @@ export function interleaveChannels(channels) {
197
197
  }
198
198
  export function deInterleaveChannels(interleavedChannels, channelCount) {
199
199
  if (channelCount == 0) {
200
- throw new Error("0 channel count received");
200
+ throw new Error('0 channel count received');
201
201
  }
202
202
  if (channelCount == 1) {
203
203
  return [interleavedChannels];
@@ -1,4 +1,4 @@
1
- import { RawAudio } from "./AudioUtilities.js";
1
+ import { RawAudio } from './AudioUtilities.js';
2
2
  import { Timeline } from '../utilities/Timeline.js';
3
3
  import { SignalChannel } from '../utilities/SignalChannel.js';
4
4
  export declare function playAudioFileWithTimelineFile(audioFilename: string, timelineFileName: string, transcriptFileName?: string): Promise<void>;
@@ -1,9 +1,9 @@
1
1
  import { parentPort } from 'node:worker_threads';
2
2
  import { spawn } from 'child_process';
3
- import { encodeWaveBuffer, fadeAudioInOut, getRawAudioDuration, sliceRawAudioByTime } from "./AudioUtilities.js";
3
+ import { encodeRawAudioToWave, fadeAudioInOut, getRawAudioDuration, sliceRawAudioByTime } from './AudioUtilities.js';
4
4
  import * as AudioBufferConversion from './AudioBufferConversion.js';
5
- import * as FFMpegTranscoder from "../codecs/FFMpegTranscoder.js";
6
- import { Timer } from "../utilities/Timer.js";
5
+ import * as FFMpegTranscoder from '../codecs/FFMpegTranscoder.js';
6
+ import { Timer } from '../utilities/Timer.js';
7
7
  import { getRandomHexString, waitTimeout, writeToStderr } from '../utilities/Utilities.js';
8
8
  import { encodeToAudioBuffer } from './AudioBufferConversion.js';
9
9
  import { OpenPromise } from '../utilities/OpenPromise.js';
@@ -20,7 +20,7 @@ export async function playAudioFileWithTimelineFile(audioFilename, timelineFileN
20
20
  const timeline = await readAndParseJsonFile(timelineFileName);
21
21
  let transcript;
22
22
  if (transcriptFileName) {
23
- transcript = await readFile(transcriptFileName, "utf8");
23
+ transcript = await readFile(transcriptFileName, 'utf8');
24
24
  }
25
25
  await playAudioWithWordTimeline(rawAudio, timeline, transcript);
26
26
  }
@@ -42,7 +42,7 @@ export async function playAudioWithWordTimeline(rawAudio, wordTimeline, transcri
42
42
  const wordStartOffset = entry.startOffsetUtf16;
43
43
  let wordEndOffset = entry.endOffsetUtf16;
44
44
  if (wordStartOffset == null || wordEndOffset == null) {
45
- //writeToStderr(` [No offset availble for '${entry.text}'] `)
45
+ //writeToStderr(` [No offset available for '${entry.text}'] `)
46
46
  continue;
47
47
  }
48
48
  while (wordEndOffset < text.length &&
@@ -54,20 +54,20 @@ export async function playAudioWithWordTimeline(rawAudio, wordTimeline, transcri
54
54
  transcriptOffset = wordEndOffset;
55
55
  }
56
56
  }
57
- writeToStderr("\n");
57
+ writeToStderr('\n');
58
58
  const signalChannel = new SignalChannel();
59
59
  const keypressListenerStartTimestamp = Date.now();
60
60
  function keypressHandler(message) {
61
- if (message.name == "keypress" &&
61
+ if (message.name == 'keypress' &&
62
62
  message.key.name == 'return' &&
63
63
  message.timestamp >= keypressListenerStartTimestamp) {
64
- signalChannel.send("abort");
64
+ signalChannel.send('abort');
65
65
  }
66
66
  }
67
67
  parentPort?.on('message', keypressHandler);
68
68
  await playAudioSamples(rawAudio, onTimePosition, signalChannel);
69
69
  parentPort?.off('message', keypressHandler);
70
- writeToStderr("\n");
70
+ writeToStderr('\n');
71
71
  }
72
72
  export async function playAudioWithTimelinePhones(rawAudio, timeline) {
73
73
  let wordIndex = 0;
@@ -76,7 +76,7 @@ export async function playAudioWithTimelinePhones(rawAudio, timeline) {
76
76
  for (; wordIndex < timeline.length; wordIndex++) {
77
77
  const wordEntry = timeline[wordIndex];
78
78
  const phoneTimeline = wordEntry.timeline;
79
- if (phoneTimeline.every(phoneEntry => phoneEntry.text == "")) {
79
+ if (phoneTimeline.every(phoneEntry => phoneEntry.text == '')) {
80
80
  continue;
81
81
  }
82
82
  for (; phoneIndex < phoneTimeline.length; phoneIndex++) {
@@ -90,13 +90,13 @@ export async function playAudioWithTimelinePhones(rawAudio, timeline) {
90
90
  phoneIndex = 0;
91
91
  }
92
92
  }
93
- writeToStderr("\n");
93
+ writeToStderr('\n');
94
94
  await playAudioSamples(rawAudio, onTimePosition);
95
- writeToStderr("\n");
95
+ writeToStderr('\n');
96
96
  }
97
97
  export async function playAudioPairWithTimelineInterleaved(rawAudio1, rawAudio2, timeline1, timeline2) {
98
98
  if (timeline1.length != timeline2.length) {
99
- throw new Error("Timelines have different lengths");
99
+ throw new Error('Timelines have different lengths');
100
100
  }
101
101
  for (let i = 0; i < timeline1.length; i++) {
102
102
  writeToStderr(`${timeline1[i].text} `);
@@ -105,7 +105,7 @@ export async function playAudioPairWithTimelineInterleaved(rawAudio1, rawAudio2,
105
105
  await playAudioSamples(sliceRawAudioByTime(rawAudio2, timeline2[i].startTime, timeline2[i].endTime));
106
106
  await waitTimeout(500);
107
107
  }
108
- writeToStderr("\n");
108
+ writeToStderr('\n');
109
109
  }
110
110
  export function playAudioSamples(rawAudio, onTimePosition, signalChannel, microFadeInOut = true) {
111
111
  return new Promise(async (resolve, reject) => {
@@ -117,12 +117,12 @@ export function playAudioSamples(rawAudio, onTimePosition, signalChannel, microF
117
117
  const audioDuration = getRawAudioDuration(rawAudio);
118
118
  const playerSpawnedOpenPromise = new OpenPromise();
119
119
  const soxPath = await tryResolvingSoxPath();
120
- let aborted = false;
121
120
  if (!soxPath) {
122
121
  throw new Error(`Couldn't find or install the SoX utility. Please install the SoX utility on your system path to enable audio playback.`);
123
122
  }
123
+ let aborted = false;
124
124
  let streamToStdin = true;
125
- if (process.platform == "darwin") {
125
+ if (process.platform == 'darwin') {
126
126
  streamToStdin = false;
127
127
  }
128
128
  let tempFilePath;
@@ -139,32 +139,32 @@ export function playAudioSamples(rawAudio, onTimePosition, signalChannel, microF
139
139
  }
140
140
  else {
141
141
  tempFilePath = path.join(getAppTempDir(appName), `${getRandomHexString(16)}.wav`);
142
- const waveFileBuffer = encodeWaveBuffer(rawAudio);
142
+ const waveFileBuffer = encodeRawAudioToWave(rawAudio);
143
143
  await outputFile(tempFilePath, waveFileBuffer);
144
144
  playerProcess = spawn(soxPath, [tempFilePath, '-d'], {});
145
145
  }
146
146
  if (signalChannel) {
147
- signalChannel.on("abort", () => {
147
+ signalChannel.on('abort', () => {
148
148
  aborted = true;
149
149
  playerProcess.kill('SIGKILL');
150
150
  });
151
151
  }
152
152
  // Required to work around SoX bug:
153
- playerProcess.stderr.on("data", (data) => {
153
+ playerProcess.stderr.on('data', (data) => {
154
154
  //writeToStderr(data.toString('utf-8'))
155
155
  });
156
- playerProcess.stdout.on("data", (data) => {
156
+ playerProcess.stdout.on('data', (data) => {
157
157
  //writeToStderr(data.toString('utf-8'))
158
158
  });
159
- playerProcess.once("spawn", () => {
159
+ playerProcess.once('spawn', () => {
160
160
  if (audioBuffer != undefined) {
161
161
  playerProcess.stdin.write(audioBuffer);
162
162
  playerProcess.stdin.end();
163
- playerProcess.stdin.on("error", () => { });
163
+ playerProcess.stdin.on('error', () => { });
164
164
  }
165
165
  playerSpawnedOpenPromise.resolve(null);
166
166
  });
167
- playerProcess.once("error", async (e) => {
167
+ playerProcess.once('error', async (e) => {
168
168
  await cleanup();
169
169
  playerProcessClosed = true;
170
170
  reject(e);
@@ -204,7 +204,7 @@ export function playAudioSamples_Speaker(rawAudio, onTimePosition, microFadeInOu
204
204
  bitDepth: 16,
205
205
  sampleRate: rawAudio.sampleRate,
206
206
  });
207
- speaker.on("error", (e) => {
207
+ speaker.on('error', (e) => {
208
208
  reject(e);
209
209
  });
210
210
  const bytesPerSecond = rawAudio.sampleRate * 2 * channelCount;
@@ -214,7 +214,7 @@ export function playAudioSamples_Speaker(rawAudio, onTimePosition, microFadeInOu
214
214
  const audioDuration = byteCountToDuration(audioData.length);
215
215
  let mpg123AudioBufferSize;
216
216
  let mpg123AudioBufferDuration;
217
- if (process.platform == "win32") {
217
+ if (process.platform == 'win32') {
218
218
  mpg123AudioBufferSize = 65536;
219
219
  mpg123AudioBufferDuration = byteCountToDuration(mpg123AudioBufferSize);
220
220
  }
@@ -251,5 +251,5 @@ export function playAudioSamples_Speaker(rawAudio, onTimePosition, microFadeInOu
251
251
  }
252
252
  });
253
253
  }
254
- export const charactersToWriteAhead = [",", ".", "", "", "", "", "", ":", ";", "?", "!", ")", "]", "}", "\"", "'", "", "", "-", "", "»"];
254
+ export const charactersToWriteAhead = [',', '.', '', '', '', '', '', ':', ';', '?', '!', ')', ']', '}', `"`, `'`, '', '', '-', '', '»'];
255
255
  //# sourceMappingURL=AudioPlayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../../src/audio/AudioPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../../src/audio/AudioPlayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAkC,KAAK,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAY,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9H,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAY,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,aAAqB,EAAE,gBAAwB,EAAE,kBAA2B;IAC/H,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAEjF,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IAE7D,IAAI,UAA8B,CAAA;IAClC,IAAI,kBAAkB,EAAE,CAAC;QACxB,UAAU,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAkB,EAAE,YAAsB,EAAE,UAAmB;IAC9G,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC;IAED,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;IAEtC,4BAA4B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAEtD,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,IAAI,gBAAgB,GAAG,CAAC,CAAA;IAExB,SAAS,cAAc,CAAC,YAAoB;QAC3C,MAAM,IAAI,GAAG,UAAW,CAAA;QAExB,OAAO,kBAAkB,GAAG,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAA;YAE9C,IAAI,KAAK,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;gBACpC,OAAM;YACP,CAAC;YAED,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAA;YAC9C,IAAI,aAAa,GAAG,KAAK,CAAC,cAAc,CAAA;YAExC,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBACtD,8DAA8D;gBAE9D,SAAQ;YACT,CAAC;YAED,OAAO,aAAa,GAAG,IAAI,CAAC,MAAM;gBACjC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpD,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACpE,aAAa,IAAI,CAAC,CAAA;YACnB,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAA;YAE9D,gBAAgB,GAAG,aAAa,CAAA;QACjC,CAAC;IACF,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,CAAA;IAEnB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA;IAEzC,MAAM,8BAA8B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEjD,SAAS,eAAe,CAAC,OAAY;QACpC,IAAI,OAAO,CAAC,IAAI,IAAI,UAAU;YAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ;YAC5B,OAAO,CAAC,SAAS,IAAI,8BAA8B,EAAE,CAAC;YAEtD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;IACF,CAAC;IAED,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IAE1C,MAAM,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;IAE/D,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IAE3C,aAAa,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,QAAkB,EAAE,QAAkB;IACvF,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,SAAS,cAAc,CAAC,YAAoB;QAC3C,OAAO,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAS,CAAA;YAEzC,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9D,SAAQ;YACT,CAAC;YAED,OAAO,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;gBACxD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;gBAEvC,IAAI,KAAK,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;oBACpC,OAAM;gBACP,CAAC;gBAED,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;YAChC,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,UAAU,GAAG,CAAC,CAAA;QACf,CAAC;IACF,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,CAAA;IAEnB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;IAEhD,aAAa,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,SAAmB,EAAE,SAAmB,EAAE,SAAmB,EAAE,SAAmB;IAC5I,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,aAAa,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;QAEtC,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QACpG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;QACtB,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QACpG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,cAA+C,EAAE,aAA6B,EAAE,cAAc,GAAG,IAAI;IACzJ,OAAO,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,IAAI,cAAc,EAAE,CAAC;YACpB,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,mBAAmB,GAAG,KAAK,CAAA;QAE/B,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAA;QAClD,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAEnD,MAAM,wBAAwB,GAAG,IAAI,WAAW,EAAQ,CAAA;QAExD,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAE3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,wHAAwH,CAAC,CAAA;QAC1I,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,IAAI,aAAa,GAAG,IAAI,CAAA;QAExB,IAAI,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAClC,aAAa,GAAG,KAAK,CAAA;QACtB,CAAC;QAED,IAAI,YAAgC,CAAA;QACpC,IAAI,WAA+B,CAAA;QAEnC,KAAK,UAAU,OAAO;YACrB,IAAI,YAAY,EAAE,CAAC;gBAClB,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC;QAED,IAAI,aAA6C,CAAA;QAEjD,IAAI,aAAa,EAAE,CAAC;YACnB,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;YAEzD,aAAa,GAAG,KAAK,CACpB,OAAO,EACP,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EACnH,EAAE,CACF,CAAA;QACF,CAAC;aAAM,CAAC;YACP,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;YACjF,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACrD,MAAM,UAAU,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;YAE9C,aAAa,GAAG,KAAK,CACpB,OAAO,EACP,CAAC,YAAY,EAAE,IAAI,CAAC,EACpB,EAAE,CACF,CAAA;QACF,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YACnB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC9B,OAAO,GAAG,IAAI,CAAA;gBACd,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACH,CAAC;QAED,mCAAmC;QACnC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxC,uCAAuC;QACxC,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxC,uCAAuC;QACxC,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YAChC,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;gBAC9B,aAAa,CAAC,KAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBACvC,aAAa,CAAC,KAAM,CAAC,GAAG,EAAE,CAAA;gBAC1B,aAAa,CAAC,KAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YAC5C,CAAC;YAED,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,OAAO,EAAE,CAAA;YACf,mBAAmB,GAAG,IAAI,CAAA;YAE1B,MAAM,CAAC,CAAC,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,OAAO,EAAE,CAAA;YACf,mBAAmB,GAAG,IAAI,CAAA;YAE1B,OAAO,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,MAAM,wBAAwB,CAAC,OAAO,CAAA;QAEtC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;QAEzB,OAAO,CAAC,mBAAmB,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAA;YAE5C,IAAI,cAAc,EAAE,CAAC;gBACpB,cAAc,CAAC,WAAW,CAAC,CAAA;YAC5B,CAAC;YAED,IAAI,mBAAmB,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;gBACzD,IAAI,cAAc,EAAE,CAAC;oBACpB,cAAc,CAAC,aAAa,CAAC,CAAA;gBAC9B,CAAC;gBAED,OAAM;YACP,CAAC;YAED,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;IACF,CAAC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAkB,EAAE,cAA+C,EAAE,cAAc,GAAG,IAAI;IAClI,OAAO,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,IAAI,cAAc,EAAE,CAAC;YACpB,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAA;QAClD,IAAI,SAAS,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAEjF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;QAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC3B,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM;YACvC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,QAAQ,CAAC,UAAU;SAC/B,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;YAC9B,MAAM,CAAC,CAAC,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,GAAG,YAAY,CAAA;QAE7D,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,EAAE;YACjD,OAAO,SAAS,GAAG,cAAc,CAAA;QAClC,CAAC,CAAA;QAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAE3D,IAAI,qBAA6B,CAAA;QACjC,IAAI,yBAAiC,CAAA;QAErC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC;YACjC,qBAAqB,GAAG,KAAK,CAAA;YAC7B,yBAAyB,GAAG,mBAAmB,CAAC,qBAAqB,CAAC,CAAA;QACvE,CAAC;aAAM,CAAC;YACP,yBAAyB,GAAG,GAAG,CAAA;YAC/B,qBAAqB,GAAG,cAAc,GAAG,yBAAyB,CAAA;QACnE,CAAC;QAED,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAE3E,MAAM,YAAY,GAAG,qBAAqB,CAAA;QAE1C,MAAM,kBAAkB,GAAG,GAAG,CAAA;QAE9B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;QACzB,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,kBAAkB,GAAG,CAAC,CAAA;QAE1B,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAA;YAE5C,IAAI,cAAc,EAAE,CAAC;gBACpB,cAAc,CAAC,WAAW,CAAC,CAAA;YAC5B,CAAC;YAED,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,CAAA;gBAE/D,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;oBACpC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,CAAA;oBAEvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBAEpB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAA;oBAC1B,kBAAkB,IAAI,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACxD,CAAC;YACF,CAAC;YAED,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;gBAClC,sBAAsB;gBACtB,OAAO,EAAE,CAAA;gBACT,OAAM;YACP,CAAC;YAED,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;IACF,CAAC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAClC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
- import { RawAudio } from "./AudioUtilities.js";
1
+ import { RawAudio } from './AudioUtilities.js';
2
2
  export declare function recordAudioInput(channelCount?: number, sampleRate?: number, maxTime?: number): Promise<RawAudio>;
3
3
  export declare function captureAudioInput(channelCount?: number, sampleRate?: number, maxTime?: number, onAudioSamples?: (rawAudio: Float32Array[]) => void): Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import { spawn } from 'child_process';
2
- import { concatAudioSegments } from "./AudioUtilities.js";
2
+ import { concatAudioSegments } from './AudioUtilities.js';
3
3
  import * as AudioBufferConversion from './AudioBufferConversion.js';
4
- import { Timer } from "../utilities/Timer.js";
4
+ import { Timer } from '../utilities/Timer.js';
5
5
  import { logToStderr } from '../utilities/Utilities.js';
6
6
  import { OpenPromise } from '../utilities/OpenPromise.js';
7
7
  import { SampleFormat } from '../codecs/WaveCodec.js';
@@ -25,7 +25,7 @@ export function captureAudioInput(channelCount = 1, sampleRate = 48000, maxTime
25
25
  const recorderSpawnedOpenPromise = new OpenPromise();
26
26
  const soxPath = await tryResolvingSoxPath();
27
27
  if (!soxPath) {
28
- throw new Error("Could not resolve a SoX executable");
28
+ throw new Error('Could not resolve a SoX executable');
29
29
  }
30
30
  let args;
31
31
  if (process.platform == 'win32') {
@@ -39,10 +39,10 @@ export function captureAudioInput(channelCount = 1, sampleRate = 48000, maxTime
39
39
  '-t', 'raw', '-'];
40
40
  }
41
41
  else {
42
- throw new Error("");
42
+ throw new Error('');
43
43
  }
44
44
  const recorder = spawn(soxPath, args, {});
45
- recorder.once("spawn", () => {
45
+ recorder.once('spawn', () => {
46
46
  recorderSpawnedOpenPromise.resolve(null);
47
47
  timer.restart();
48
48
  });
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { SampleFormat, BitDepth } from "../codecs/WaveCodec.js";
3
- export declare function encodeWaveBuffer(rawAudio: RawAudio, bitDepth?: BitDepth, sampleFormat?: SampleFormat, speakerPositionMask?: number): Buffer;
4
- export declare function decodeWaveBuffer(waveFileBuffer: Buffer, ignoreTruncatedChunks?: boolean): {
2
+ import { SampleFormat, BitDepth } from '../codecs/WaveCodec.js';
3
+ import { Timeline } from '../utilities/Timeline.js';
4
+ export declare function encodeRawAudioToWave(rawAudio: RawAudio, bitDepth?: BitDepth, sampleFormat?: SampleFormat, speakerPositionMask?: number): Buffer;
5
+ export declare function decodeWaveToRawAudio(waveFileBuffer: Buffer, ignoreTruncatedChunks?: boolean): {
5
6
  rawAudio: {
6
7
  audioChannels: Float32Array[];
7
8
  sampleRate: number;
@@ -14,25 +15,28 @@ export declare function trimAudioStart(audioSamples: Float32Array, targetStartSi
14
15
  export declare function trimAudioEnd(audioSamples: Float32Array, targetEndSilentSampleCount?: number, amplitudeThresholdDecibels?: number): Float32Array;
15
16
  export declare function getStartingSilentSampleCount(audioSamples: Float32Array, amplitudeThresholdDecibels?: number): number;
16
17
  export declare function getEndingSilentSampleCount(audioSamples: Float32Array, amplitudeThresholdDecibels?: number): number;
17
- export declare function downmixToMonoAndNormalize(rawAudio: RawAudio, targetPeakDb?: number): RawAudio;
18
- export declare function normalizeAudioLevel(rawAudio: RawAudio, targetPeakDb?: number, maxIncreaseDb?: number): RawAudio;
18
+ export declare function downmixToMonoAndNormalize(rawAudio: RawAudio, targetPeakDecibels?: number): RawAudio;
19
+ export declare function attenuateIfClipping(rawAudio: RawAudio): RawAudio;
20
+ export declare function normalizeAudioLevel(rawAudio: RawAudio, targetPeakDecibels?: number, maxGainIncreaseDecibels?: number): RawAudio;
19
21
  export declare function correctDCBias(rawAudio: RawAudio): RawAudio;
20
- export declare function applyGainDecibels(rawAudio: RawAudio, decibelGain: number): RawAudio;
21
- export declare function applyGain(rawAudio: RawAudio, gainFactor: number): RawAudio;
22
+ export declare function applyGainDecibels(rawAudio: RawAudio, gainDecibels: number): RawAudio;
23
+ export declare function applyGainFactor(rawAudio: RawAudio, gainFactor: number): RawAudio;
22
24
  export declare function downmixToMono(rawAudio: RawAudio): RawAudio;
23
- export declare function getAudioPeakDecibels(audioChannels: Float32Array[]): number;
24
- export declare function getAudioPeakAmplitude(audioChannels: Float32Array[]): number;
25
+ export declare function getSamplePeakDecibels(audioChannels: Float32Array[]): number;
26
+ export declare function getSamplePeakAmplitude(audioChannels: Float32Array[]): number;
25
27
  export declare function mixAudio(rawAudio1: RawAudio, rawAudio2: RawAudio): RawAudio;
26
28
  export declare function sliceRawAudioByTime(rawAudio: RawAudio, startTime: number, endTime: number): RawAudio;
27
29
  export declare function sliceRawAudio(rawAudio: RawAudio, startSampleIndex: number, endSampleIndex: number): RawAudio;
28
30
  export declare function sliceAudioChannels(audioChannels: Float32Array[], startSampleIndex: number, endSampleIndex: number): Float32Array[];
29
31
  export declare function concatAudioSegments(audioSegments: Float32Array[][]): Float32Array[];
32
+ export declare function cropToTimeline(rawAudio: RawAudio, timeline: Timeline): RawAudio;
30
33
  export declare function fadeAudioInOut(rawAudio: RawAudio, fadeTime: number): RawAudio;
31
34
  export declare function cloneRawAudio(rawAudio: RawAudio): RawAudio;
32
35
  export declare function getSilentAudio(sampleCount: number, channelCount: number): Float32Array[];
33
36
  export declare function getEmptyRawAudio(channelCount: number, sampleRate: number): RawAudio;
34
37
  export declare function getRawAudioDuration(rawAudio: RawAudio): number;
35
38
  export declare function ensureRawAudio(input: AudioSourceParam, outSampleRate?: number, outChannelCount?: number): Promise<RawAudio>;
39
+ export declare function subtractAudio(audio1: RawAudio, audio2: RawAudio): RawAudio;
36
40
  export declare function gainFactorToDecibels(gainFactor: number): number;
37
41
  export declare function decibelsToGainFactor(decibels: number): number;
38
42
  export declare function powerToDecibels(power: number): number;