@siteed/audio-studio 3.0.2 → 3.0.3

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 (86) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/android/src/main/java/net/siteed/audiostudio/AudioStudioModule.kt +7 -1
  3. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +1 -1
  4. package/build/cjs/AudioAnalysis/audioFeaturesWasm.js +10 -7
  5. package/build/cjs/AudioAnalysis/audioFeaturesWasm.js.map +1 -1
  6. package/build/cjs/AudioAnalysis/audioFeaturesWasm.web.js +78 -97
  7. package/build/cjs/AudioAnalysis/audioFeaturesWasm.web.js.map +1 -1
  8. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +15 -12
  9. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +1 -1
  10. package/build/cjs/AudioAnalysis/extractAudioData.js +144 -2
  11. package/build/cjs/AudioAnalysis/extractAudioData.js.map +1 -1
  12. package/build/cjs/AudioAnalysis/melSpectrogramWasm.web.js +9 -56
  13. package/build/cjs/AudioAnalysis/melSpectrogramWasm.web.js.map +1 -1
  14. package/build/cjs/AudioAnalysis/wasmConfig.js +4 -4
  15. package/build/cjs/AudioAnalysis/wasmConfig.js.map +1 -1
  16. package/build/cjs/AudioAnalysis/wasmLoader.web.js +78 -0
  17. package/build/cjs/AudioAnalysis/wasmLoader.web.js.map +1 -0
  18. package/build/cjs/AudioStudioModule.js +4 -599
  19. package/build/cjs/AudioStudioModule.js.map +1 -1
  20. package/build/cjs/trimAudio.js +227 -0
  21. package/build/cjs/trimAudio.js.map +1 -1
  22. package/build/cjs/utils/encodeCompressedAudio.web.js +65 -0
  23. package/build/cjs/utils/encodeCompressedAudio.web.js.map +1 -0
  24. package/build/cjs/utils/resampleAudioBuffer.web.js +25 -0
  25. package/build/cjs/utils/resampleAudioBuffer.web.js.map +1 -0
  26. package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +1 -1
  27. package/build/esm/AudioAnalysis/audioFeaturesWasm.js +8 -5
  28. package/build/esm/AudioAnalysis/audioFeaturesWasm.js.map +1 -1
  29. package/build/esm/AudioAnalysis/audioFeaturesWasm.web.js +76 -62
  30. package/build/esm/AudioAnalysis/audioFeaturesWasm.web.js.map +1 -1
  31. package/build/esm/AudioAnalysis/extractAudioAnalysis.js +15 -12
  32. package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +1 -1
  33. package/build/esm/AudioAnalysis/extractAudioData.js +144 -2
  34. package/build/esm/AudioAnalysis/extractAudioData.js.map +1 -1
  35. package/build/esm/AudioAnalysis/melSpectrogramWasm.web.js +9 -23
  36. package/build/esm/AudioAnalysis/melSpectrogramWasm.web.js.map +1 -1
  37. package/build/esm/AudioAnalysis/wasmConfig.js +4 -4
  38. package/build/esm/AudioAnalysis/wasmConfig.js.map +1 -1
  39. package/build/esm/AudioAnalysis/wasmLoader.web.js +42 -0
  40. package/build/esm/AudioAnalysis/wasmLoader.web.js.map +1 -0
  41. package/build/esm/AudioStudioModule.js +4 -596
  42. package/build/esm/AudioStudioModule.js.map +1 -1
  43. package/build/esm/trimAudio.js +227 -0
  44. package/build/esm/trimAudio.js.map +1 -1
  45. package/build/esm/utils/encodeCompressedAudio.web.js +62 -0
  46. package/build/esm/utils/encodeCompressedAudio.web.js.map +1 -0
  47. package/build/esm/utils/resampleAudioBuffer.web.js +22 -0
  48. package/build/esm/utils/resampleAudioBuffer.web.js.map +1 -0
  49. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts +11 -0
  50. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +1 -1
  51. package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts +5 -9
  52. package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts.map +1 -1
  53. package/build/types/AudioAnalysis/audioFeaturesWasm.web.d.ts +35 -16
  54. package/build/types/AudioAnalysis/audioFeaturesWasm.web.d.ts.map +1 -1
  55. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +1 -1
  56. package/build/types/AudioAnalysis/extractAudioData.d.ts +2 -2
  57. package/build/types/AudioAnalysis/extractAudioData.d.ts.map +1 -1
  58. package/build/types/AudioAnalysis/melSpectrogramWasm.web.d.ts.map +1 -1
  59. package/build/types/AudioAnalysis/wasmLoader.web.d.ts +3 -0
  60. package/build/types/AudioAnalysis/wasmLoader.web.d.ts.map +1 -0
  61. package/build/types/AudioStudioModule.d.ts.map +1 -1
  62. package/build/types/trimAudio.d.ts.map +1 -1
  63. package/build/types/utils/encodeCompressedAudio.web.d.ts +10 -0
  64. package/build/types/utils/encodeCompressedAudio.web.d.ts.map +1 -0
  65. package/build/types/utils/resampleAudioBuffer.web.d.ts +2 -0
  66. package/build/types/utils/resampleAudioBuffer.web.d.ts.map +1 -0
  67. package/package.json +1 -1
  68. package/src/AudioAnalysis/AudioAnalysis.types.ts +12 -0
  69. package/src/AudioAnalysis/audioFeaturesWasm.ts +17 -22
  70. package/src/AudioAnalysis/audioFeaturesWasm.web.ts +102 -94
  71. package/src/AudioAnalysis/extractAudioAnalysis.ts +23 -20
  72. package/src/AudioAnalysis/extractAudioData.ts +186 -4
  73. package/src/AudioAnalysis/melSpectrogramWasm.web.ts +10 -27
  74. package/src/AudioAnalysis/wasmConfig.ts +4 -4
  75. package/src/AudioAnalysis/wasmLoader.web.ts +48 -0
  76. package/src/AudioStudioModule.ts +6 -854
  77. package/src/trimAudio.ts +337 -0
  78. package/src/utils/encodeCompressedAudio.web.ts +78 -0
  79. package/src/utils/resampleAudioBuffer.web.ts +39 -0
  80. package/build/cjs/AudioAnalysis/extractWaveform.js +0 -18
  81. package/build/cjs/AudioAnalysis/extractWaveform.js.map +0 -1
  82. package/build/esm/AudioAnalysis/extractWaveform.js +0 -11
  83. package/build/esm/AudioAnalysis/extractWaveform.js.map +0 -1
  84. package/build/types/AudioAnalysis/extractWaveform.d.ts +0 -8
  85. package/build/types/AudioAnalysis/extractWaveform.d.ts.map +0 -1
  86. package/src/AudioAnalysis/extractWaveform.ts +0 -22
@@ -1 +1 @@
1
- {"version":3,"file":"AudioAnalysis.types.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/AudioAnalysis.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioAnalysis.types.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/AudioAnalysis.types.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,8 @@
1
- export interface AudioFeaturesWasmResult {
2
- spectralCentroid: number;
3
- spectralFlatness: number;
4
- spectralRolloff: number;
5
- spectralBandwidth: number;
6
- mfcc: number[];
7
- chromagram: number[];
1
+ import type { AudioFeaturesWasmResult } from './AudioAnalysis.types';
2
+ export declare class AudioFeaturesStreamingSession {
3
+ static create(_sampleRate: number, _fftLength?: number, _nMfcc?: number, _nMelFilters?: number, _computeMfcc?: boolean, _computeChroma?: boolean): Promise<AudioFeaturesStreamingSession>;
4
+ computeFrame(_samples: Float32Array): AudioFeaturesWasmResult | null;
5
+ dispose(): void;
8
6
  }
9
- export declare function initAudioFeaturesWasm(_sampleRate: number, _fftLength?: number, _nMfcc?: number, _nMelFilters?: number, _computeMfcc?: boolean, _computeChroma?: boolean): Promise<void>;
10
- export declare function computeAudioFeaturesFrameWasm(_samples: Float32Array): AudioFeaturesWasmResult | null;
11
7
  export declare function computeAudioFeaturesWasm(_audioData: Float32Array, _sampleRate: number, _fftLength?: number, _nMfcc?: number, _nMelFilters?: number, _computeMfcc?: boolean, _computeChroma?: boolean): Promise<AudioFeaturesWasmResult>;
12
8
  //# sourceMappingURL=audioFeaturesWasm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audioFeaturesWasm.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/audioFeaturesWasm.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAsB,qBAAqB,CACvC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,6BAA6B,CACzC,QAAQ,EAAE,YAAY,GACvB,uBAAuB,GAAG,IAAI,CAEhC;AAED,wBAAsB,wBAAwB,CAC1C,UAAU,EAAE,YAAY,EACxB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAElC"}
1
+ {"version":3,"file":"audioFeaturesWasm.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/audioFeaturesWasm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAEpE,qBAAa,6BAA6B;WACzB,MAAM,CACf,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,6BAA6B,CAAC;IAIzC,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,uBAAuB,GAAG,IAAI;IAIpE,OAAO,IAAI,IAAI;CAClB;AAED,wBAAsB,wBAAwB,CAC1C,UAAU,EAAE,YAAY,EACxB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAElC"}
@@ -1,21 +1,40 @@
1
- export interface AudioFeaturesWasmResult {
2
- spectralCentroid: number;
3
- spectralFlatness: number;
4
- spectralRolloff: number;
5
- spectralBandwidth: number;
6
- mfcc: number[];
7
- chromagram: number[];
8
- }
9
- /**
10
- * Initialise the WASM streaming audio features processor.
11
- * Call once before computeAudioFeaturesFrameWasm().
12
- */
13
- export declare function initAudioFeaturesWasm(sampleRate: number, fftLength?: number, nMfcc?: number, nMelFilters?: number, computeMfcc?: boolean, computeChroma?: boolean): Promise<void>;
1
+ import type { AudioFeaturesWasmResult } from './AudioAnalysis.types';
14
2
  /**
15
- * Compute audio features for a single frame via WASM C++.
16
- * Returns null if not initialised or on error.
3
+ * Encapsulates a single WASM streaming audio features session.
4
+ * Each instance owns its own WASM heap allocations; multiple sessions
5
+ * can exist concurrently without interfering with each other.
6
+ *
7
+ * Usage:
8
+ * const session = await AudioFeaturesStreamingSession.create(sampleRate)
9
+ * try {
10
+ * for (const frame of frames) {
11
+ * const result = session.computeFrame(frame)
12
+ * }
13
+ * } finally {
14
+ * session.dispose()
15
+ * }
17
16
  */
18
- export declare function computeAudioFeaturesFrameWasm(samples: Float32Array): AudioFeaturesWasmResult | null;
17
+ export declare class AudioFeaturesStreamingSession {
18
+ private module;
19
+ private framePtr;
20
+ private frameCapacity;
21
+ private resultPtr;
22
+ private constructor();
23
+ /**
24
+ * Initialise a new streaming session. Loads the WASM module if needed.
25
+ */
26
+ static create(sampleRate: number, fftLength?: number, nMfcc?: number, nMelFilters?: number, computeMfcc?: boolean, computeChroma?: boolean): Promise<AudioFeaturesStreamingSession>;
27
+ /**
28
+ * Compute audio features for a single frame.
29
+ * Returns null on error or if the session has been disposed.
30
+ */
31
+ computeFrame(samples: Float32Array): AudioFeaturesWasmResult | null;
32
+ /**
33
+ * Free all WASM heap allocations owned by this session.
34
+ * The session must not be used after calling dispose().
35
+ */
36
+ dispose(): void;
37
+ }
19
38
  /**
20
39
  * Compute audio features for a buffer of samples via WASM C++.
21
40
  * Lazy-loads the WASM module on first call.
@@ -1 +1 @@
1
- {"version":3,"file":"audioFeaturesWasm.web.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/audioFeaturesWasm.web.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACpC,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAgFD;;;GAGG;AACH,wBAAsB,qBAAqB,CACvC,UAAU,EAAE,MAAM,EAClB,SAAS,SAAO,EAChB,KAAK,SAAK,EACV,WAAW,SAAK,EAChB,WAAW,UAAO,EAClB,aAAa,UAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,YAAY,GACtB,uBAAuB,GAAG,IAAI,CA2BhC;AAID;;;GAGG;AACH,wBAAsB,wBAAwB,CAC1C,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAO,EAChB,KAAK,SAAK,EACV,WAAW,SAAK,EAChB,WAAW,UAAO,EAClB,aAAa,UAAO,GACrB,OAAO,CAAC,uBAAuB,CAAC,CA4BlC"}
1
+ {"version":3,"file":"audioFeaturesWasm.web.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/audioFeaturesWasm.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAyDpE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,6BAA6B;IACtC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,SAAS,CAAI;IAErB,OAAO;IAIP;;OAEG;WACU,MAAM,CACf,UAAU,EAAE,MAAM,EAClB,SAAS,SAAO,EAChB,KAAK,SAAK,EACV,WAAW,SAAK,EAChB,WAAW,UAAO,EAClB,aAAa,UAAO,GACrB,OAAO,CAAC,6BAA6B,CAAC;IAyBzC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,uBAAuB,GAAG,IAAI;IA6BnE;;;OAGG;IACH,OAAO,IAAI,IAAI;CAYlB;AAID;;;GAGG;AACH,wBAAsB,wBAAwB,CAC1C,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAO,EAChB,KAAK,SAAK,EACV,WAAW,SAAK,EAChB,WAAW,UAAO,EAClB,aAAa,UAAO,GACrB,OAAO,CAAC,uBAAuB,CAAC,CA4BlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractAudioAnalysis.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/extractAudioAnalysis.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACjB,MAAM,uBAAuB,CAAA;AAK9B,OAAO,EAAkB,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAgBrE,MAAM,WAAW,4BAA4B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,cAAc,CAAA;CACnC;AAGD,UAAU,kBAAkB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB;AAGD,UAAU,gBAAiB,SAAQ,kBAAkB;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,MAAM,CAAC,EAAE,KAAK,CAAA;CACjB;AAGD,UAAU,gBAAiB,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,SAAS,CAAC,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAE3E;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,yBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA8HxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAU,sIAYzC,4BAA4B,KAAG,OAAO,CAAC,aAAa,CAsGtD,CAAA"}
1
+ {"version":3,"file":"extractAudioAnalysis.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/extractAudioAnalysis.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACjB,MAAM,uBAAuB,CAAA;AAK9B,OAAO,EAAkB,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAwBrE,MAAM,WAAW,4BAA4B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,cAAc,CAAA;CACnC;AAGD,UAAU,kBAAkB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB;AAGD,UAAU,gBAAiB,SAAQ,kBAAkB;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,MAAM,CAAC,EAAE,KAAK,CAAA;CACjB;AAGD,UAAU,gBAAiB,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,SAAS,CAAC,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAE3E;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,yBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA2HxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAU,sIAYzC,4BAA4B,KAAG,OAAO,CAAC,aAAa,CAoGtD,CAAA"}
@@ -1,3 +1,3 @@
1
- import { ExtractAudioDataOptions } from '../AudioStudio.types';
2
- export declare const extractAudioData: (props: ExtractAudioDataOptions) => Promise<any>;
1
+ import { ExtractAudioDataOptions, ExtractedAudioData } from '../AudioStudio.types';
2
+ export declare const extractAudioData: (props: ExtractAudioDataOptions) => Promise<ExtractedAudioData>;
3
3
  //# sourceMappingURL=extractAudioData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractAudioData.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/extractAudioData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAK9D,eAAO,MAAM,gBAAgB,GAAU,OAAO,uBAAuB,iBAWpE,CAAA"}
1
+ {"version":3,"file":"extractAudioData.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/extractAudioData.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,uBAAuB,EACvB,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAQ7B,eAAO,MAAM,gBAAgB,GACzB,OAAO,uBAAuB,KAC/B,OAAO,CAAC,kBAAkB,CAwL5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"melSpectrogramWasm.web.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/melSpectrogramWasm.web.ts"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,wBAAsB,oBAAoB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAM,EACX,SAAS,SAAO,EAChB,iBAAiB,SAAM,EACvB,gBAAgB,SAAM,EACtB,IAAI,SAAI,EACR,IAAI,SAAI,GACT,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,IAAI,CA4B1E;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC3C,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAgErB"}
1
+ {"version":3,"file":"melSpectrogramWasm.web.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/melSpectrogramWasm.web.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,wBAAsB,oBAAoB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAM,EACX,SAAS,SAAO,EAChB,iBAAiB,SAAM,EACvB,gBAAgB,SAAM,EACtB,IAAI,SAAI,EACR,IAAI,SAAI,GACT,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,IAAI,CA4B1E;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC3C,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAgErB"}
@@ -0,0 +1,3 @@
1
+ import type { AudioFeaturesWasmModule } from './audio-features-wasm';
2
+ export declare function getWasmModule(): Promise<AudioFeaturesWasmModule>;
3
+ //# sourceMappingURL=wasmLoader.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasmLoader.web.d.ts","sourceRoot":"","sources":["../../../src/AudioAnalysis/wasmLoader.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAsBpE,wBAAgB,aAAa,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAyBhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioStudioModule.d.ts","sourceRoot":"","sources":["../../src/AudioStudioModule.ts"],"names":[],"mappings":"AAgBA,QAAA,IAAI,iBAAiB,EAAE,GAAG,CAAA;AAu8B1B,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"AudioStudioModule.d.ts","sourceRoot":"","sources":["../../src/AudioStudioModule.ts"],"names":[],"mappings":"AAMA,QAAA,IAAI,iBAAiB,EAAE,GAAG,CAAA;AAiI1B,eAAe,iBAAiB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"trimAudio.d.ts","sourceRoot":"","sources":["../../src/trimAudio.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACpB,MAAM,qBAAqB,CAAA;AAO5B;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC3B,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GACtD,OAAO,CAAC,eAAe,CAAC,CAiD1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACjC,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB"}
1
+ {"version":3,"file":"trimAudio.d.ts","sourceRoot":"","sources":["../../src/trimAudio.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACpB,MAAM,qBAAqB,CAAA;AAkD5B;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC3B,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GACtD,OAAO,CAAC,eAAe,CAAC,CAsV1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACjC,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * NOTE: Encodes audio in real-time via AudioContext + MediaRecorder playback.
3
+ * A 60-second clip takes ~60 seconds to encode — this is a known Web Audio API
4
+ * limitation; there is no offline API for Opus/AAC encoding in browsers.
5
+ */
6
+ export declare function encodeCompressedAudio(buffer: AudioBuffer, format: 'opus' | 'aac', bitrate?: number): Promise<{
7
+ data: ArrayBuffer;
8
+ bitrate: number;
9
+ }>;
10
+ //# sourceMappingURL=encodeCompressedAudio.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encodeCompressedAudio.web.d.ts","sourceRoot":"","sources":["../../../src/utils/encodeCompressedAudio.web.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,GAAG,KAAK,EACtB,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAoEjD"}
@@ -0,0 +1,2 @@
1
+ export declare function resampleAudioBuffer(buffer: AudioBuffer, targetSampleRate: number, targetChannels: number): Promise<AudioBuffer>;
2
+ //# sourceMappingURL=resampleAudioBuffer.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resampleAudioBuffer.web.d.ts","sourceRoot":"","sources":["../../../src/utils/resampleAudioBuffer.web.ts"],"names":[],"mappings":"AAAA,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,CAAC,CAkCtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siteed/audio-studio",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "Comprehensive audio processing library for React Native and Expo with recording, analysis, visualization, and streaming capabilities across iOS, Android, and web",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -211,6 +211,18 @@ export interface ExtractMelSpectrogramOptions {
211
211
  logger?: ConsoleLike
212
212
  }
213
213
 
214
+ /**
215
+ * Result type for WASM-based audio feature extraction.
216
+ */
217
+ export interface AudioFeaturesWasmResult {
218
+ spectralCentroid: number
219
+ spectralFlatness: number
220
+ spectralRolloff: number
221
+ spectralBandwidth: number
222
+ mfcc: number[]
223
+ chromagram: number[]
224
+ }
225
+
214
226
  /**
215
227
  * Return type for mel spectrogram extraction
216
228
  *
@@ -1,29 +1,24 @@
1
1
  // Native stub — WASM audio features is web-only.
2
2
 
3
- export interface AudioFeaturesWasmResult {
4
- spectralCentroid: number
5
- spectralFlatness: number
6
- spectralRolloff: number
7
- spectralBandwidth: number
8
- mfcc: number[]
9
- chromagram: number[]
10
- }
3
+ import type { AudioFeaturesWasmResult } from './AudioAnalysis.types'
11
4
 
12
- export async function initAudioFeaturesWasm(
13
- _sampleRate: number,
14
- _fftLength?: number,
15
- _nMfcc?: number,
16
- _nMelFilters?: number,
17
- _computeMfcc?: boolean,
18
- _computeChroma?: boolean
19
- ): Promise<void> {
20
- throw new Error('WASM audio features is not available on native')
21
- }
5
+ export class AudioFeaturesStreamingSession {
6
+ static async create(
7
+ _sampleRate: number,
8
+ _fftLength?: number,
9
+ _nMfcc?: number,
10
+ _nMelFilters?: number,
11
+ _computeMfcc?: boolean,
12
+ _computeChroma?: boolean
13
+ ): Promise<AudioFeaturesStreamingSession> {
14
+ throw new Error('WASM audio features is not available on native')
15
+ }
16
+
17
+ computeFrame(_samples: Float32Array): AudioFeaturesWasmResult | null {
18
+ return null
19
+ }
22
20
 
23
- export function computeAudioFeaturesFrameWasm(
24
- _samples: Float32Array
25
- ): AudioFeaturesWasmResult | null {
26
- return null
21
+ dispose(): void {}
27
22
  }
28
23
 
29
24
  export async function computeAudioFeaturesWasm(
@@ -1,34 +1,6 @@
1
+ import type { AudioFeaturesWasmResult } from './AudioAnalysis.types'
1
2
  import type { AudioFeaturesWasmModule } from './audio-features-wasm'
2
- import { getMelSpectrogramWasmUrl } from './wasmConfig'
3
-
4
- export interface AudioFeaturesWasmResult {
5
- spectralCentroid: number
6
- spectralFlatness: number
7
- spectralRolloff: number
8
- spectralBandwidth: number
9
- mfcc: number[]
10
- chromagram: number[]
11
- }
12
-
13
- let modulePromise: Promise<AudioFeaturesWasmModule> | null = null
14
-
15
- function getModule(): Promise<AudioFeaturesWasmModule> {
16
- if (!modulePromise) {
17
- modulePromise = (async () => {
18
- const url = getMelSpectrogramWasmUrl()
19
- // webpackIgnore + @vite-ignore prevent bundlers from trying to resolve the URL
20
- const mod = await import(
21
- /* webpackIgnore: true */ /* @vite-ignore */ url
22
- )
23
- const factory = mod.default ?? mod
24
- return factory() as Promise<AudioFeaturesWasmModule>
25
- })().catch((err) => {
26
- modulePromise = null
27
- throw err
28
- })
29
- }
30
- return modulePromise
31
- }
3
+ import { getWasmModule } from './wasmLoader.web'
32
4
 
33
5
  // --- Struct layout for CAudioFeaturesResult (wasm32) ---
34
6
  // Offset 0: float spectralCentroid (4 bytes)
@@ -83,79 +55,115 @@ function readResult(
83
55
 
84
56
  // --- Streaming (per-frame) API ---
85
57
 
86
- let streamingModule: AudioFeaturesWasmModule | null = null
87
- let streamingFramePtr = 0
88
- let streamingFrameCapacity = 0
89
- let streamingResultPtr = 0
90
-
91
58
  /**
92
- * Initialise the WASM streaming audio features processor.
93
- * Call once before computeAudioFeaturesFrameWasm().
59
+ * Encapsulates a single WASM streaming audio features session.
60
+ * Each instance owns its own WASM heap allocations; multiple sessions
61
+ * can exist concurrently without interfering with each other.
62
+ *
63
+ * Usage:
64
+ * const session = await AudioFeaturesStreamingSession.create(sampleRate)
65
+ * try {
66
+ * for (const frame of frames) {
67
+ * const result = session.computeFrame(frame)
68
+ * }
69
+ * } finally {
70
+ * session.dispose()
71
+ * }
94
72
  */
95
- export async function initAudioFeaturesWasm(
96
- sampleRate: number,
97
- fftLength = 1024,
98
- nMfcc = 13,
99
- nMelFilters = 26,
100
- computeMfcc = true,
101
- computeChroma = true
102
- ): Promise<void> {
103
- const Module = await getModule()
104
- streamingModule = Module
105
-
106
- Module._audio_features_init(
107
- sampleRate,
108
- fftLength,
109
- nMfcc,
110
- nMelFilters,
111
- computeMfcc ? 1 : 0,
112
- computeChroma ? 1 : 0
113
- )
73
+ export class AudioFeaturesStreamingSession {
74
+ private module: AudioFeaturesWasmModule
75
+ private framePtr = 0
76
+ private frameCapacity = 0
77
+ private resultPtr = 0
78
+
79
+ private constructor(module: AudioFeaturesWasmModule) {
80
+ this.module = module
81
+ }
114
82
 
115
- // Pre-allocate result struct on WASM heap
116
- if (streamingResultPtr) Module._free(streamingResultPtr)
117
- streamingResultPtr = Module._malloc(STRUCT_SIZE)
118
- // Zero-initialize to prevent freeing garbage pointers on first use
119
- Module.HEAPU8.fill(0, streamingResultPtr, streamingResultPtr + STRUCT_SIZE)
83
+ /**
84
+ * Initialise a new streaming session. Loads the WASM module if needed.
85
+ */
86
+ static async create(
87
+ sampleRate: number,
88
+ fftLength = 1024,
89
+ nMfcc = 13,
90
+ nMelFilters = 26,
91
+ computeMfcc = true,
92
+ computeChroma = true
93
+ ): Promise<AudioFeaturesStreamingSession> {
94
+ const Module = await getWasmModule()
95
+ const session = new AudioFeaturesStreamingSession(Module)
96
+
97
+ Module._audio_features_init(
98
+ sampleRate,
99
+ fftLength,
100
+ nMfcc,
101
+ nMelFilters,
102
+ computeMfcc ? 1 : 0,
103
+ computeChroma ? 1 : 0
104
+ )
105
+
106
+ // Pre-allocate result struct on WASM heap
107
+ session.resultPtr = Module._malloc(STRUCT_SIZE)
108
+ // Zero-initialize to prevent freeing garbage pointers on first use
109
+ Module.HEAPU8.fill(
110
+ 0,
111
+ session.resultPtr,
112
+ session.resultPtr + STRUCT_SIZE
113
+ )
114
+
115
+ return session
116
+ }
120
117
 
121
- // Frame input buffer allocated on demand
122
- streamingFrameCapacity = 0
123
- streamingFramePtr = 0
124
- }
118
+ /**
119
+ * Compute audio features for a single frame.
120
+ * Returns null on error or if the session has been disposed.
121
+ */
122
+ computeFrame(samples: Float32Array): AudioFeaturesWasmResult | null {
123
+ if (!this.resultPtr) return null
124
+ const Module = this.module
125
+
126
+ // (Re-)allocate frame input buffer if needed
127
+ if (samples.length > this.frameCapacity) {
128
+ if (this.framePtr) Module._free(this.framePtr)
129
+ this.framePtr = Module._malloc(samples.length * 4)
130
+ this.frameCapacity = samples.length
131
+ }
125
132
 
126
- /**
127
- * Compute audio features for a single frame via WASM C++.
128
- * Returns null if not initialised or on error.
129
- */
130
- export function computeAudioFeaturesFrameWasm(
131
- samples: Float32Array
132
- ): AudioFeaturesWasmResult | null {
133
- if (!streamingModule || !streamingResultPtr) return null
134
- const Module = streamingModule
135
-
136
- // (Re-)allocate frame input buffer if needed
137
- if (samples.length > streamingFrameCapacity) {
138
- if (streamingFramePtr) Module._free(streamingFramePtr)
139
- streamingFramePtr = Module._malloc(samples.length * 4)
140
- streamingFrameCapacity = samples.length
141
- }
133
+ // Copy samples to WASM heap
134
+ Module.HEAPF32.set(samples, this.framePtr >> 2)
142
135
 
143
- // Copy samples to WASM heap
144
- Module.HEAPF32.set(samples, streamingFramePtr >> 2)
136
+ const ok = Module._audio_features_compute_frame(
137
+ this.framePtr,
138
+ samples.length,
139
+ this.resultPtr
140
+ )
141
+ if (!ok) return null
145
142
 
146
- const ok = Module._audio_features_compute_frame(
147
- streamingFramePtr,
148
- samples.length,
149
- streamingResultPtr
150
- )
151
- if (!ok) return null
143
+ const result = readResult(Module, this.resultPtr)
152
144
 
153
- const result = readResult(Module, streamingResultPtr)
145
+ // Free internal arrays (mfcc, chromagram) allocated by C
146
+ Module._audio_features_free_arrays(this.resultPtr)
154
147
 
155
- // Free internal arrays (mfcc, chromagram) allocated by C
156
- Module._audio_features_free_arrays(streamingResultPtr)
148
+ return result
149
+ }
157
150
 
158
- return result
151
+ /**
152
+ * Free all WASM heap allocations owned by this session.
153
+ * The session must not be used after calling dispose().
154
+ */
155
+ dispose(): void {
156
+ const Module = this.module
157
+ if (this.framePtr) {
158
+ Module._free(this.framePtr)
159
+ this.framePtr = 0
160
+ this.frameCapacity = 0
161
+ }
162
+ if (this.resultPtr) {
163
+ Module._free(this.resultPtr)
164
+ this.resultPtr = 0
165
+ }
166
+ }
159
167
  }
160
168
 
161
169
  // --- Batch API ---
@@ -173,7 +181,7 @@ export async function computeAudioFeaturesWasm(
173
181
  computeMfcc = true,
174
182
  computeChroma = true
175
183
  ): Promise<AudioFeaturesWasmResult> {
176
- const Module = await getModule()
184
+ const Module = await getWasmModule()
177
185
 
178
186
  const numSamples = audioData.length
179
187
  const inputPtr = Module._malloc(numSamples * 4)
@@ -22,6 +22,14 @@ import { getWavFileInfo, WavFileInfo } from '../utils/getWavFileInfo'
22
22
  import { InlineFeaturesExtractor } from '../workers/InlineFeaturesExtractor.web'
23
23
  import { wasmGlueJs } from '../workers/wasmGlueString.web'
24
24
 
25
+ function createAnalysisWorker(): { worker: Worker; workerUrl: string } {
26
+ const blob = new Blob([wasmGlueJs, '\n', InlineFeaturesExtractor], {
27
+ type: 'application/javascript',
28
+ })
29
+ const workerUrl = URL.createObjectURL(blob)
30
+ return { worker: new Worker(workerUrl), workerUrl }
31
+ }
32
+
25
33
  function calculateCRC32ForDataPoint(data: Float32Array): number {
26
34
  // Convert float array to byte array for CRC32
27
35
  const byteArray = new Uint8Array(data.length * 4)
@@ -137,16 +145,13 @@ export async function extractAudioAnalysis(
137
145
  const channelData = processedBuffer.buffer.getChannelData(0)
138
146
 
139
147
  // Create worker blob: WASM glue (defines createMelSpectrogramModule) + worker code
140
- const blob = new Blob(
141
- [wasmGlueJs, '\n', InlineFeaturesExtractor],
142
- { type: 'application/javascript' }
143
- )
144
- const workerUrl = URL.createObjectURL(blob)
145
- const worker = new Worker(workerUrl)
148
+ const { worker, workerUrl } = createAnalysisWorker()
146
149
 
147
150
  return new Promise((resolve, reject) => {
148
151
  worker.onmessage = (event) => {
149
152
  if (event.data.error) {
153
+ URL.revokeObjectURL(workerUrl)
154
+ worker.terminate()
150
155
  reject(new Error(event.data.error))
151
156
  return
152
157
  }
@@ -300,20 +305,16 @@ export const extractRawWavAnalysis = async ({
300
305
  const constrainedChannelData = channelData.slice(startIndex, endIndex)
301
306
 
302
307
  return new Promise((resolve, reject) => {
303
- const blob = new Blob([wasmGlueJs, '\n', InlineFeaturesExtractor], {
304
- type: 'application/javascript',
305
- })
306
- const url = URL.createObjectURL(blob)
307
- const worker = new Worker(url)
308
+ const { worker, workerUrl } = createAnalysisWorker()
308
309
 
309
310
  worker.onmessage = (event) => {
310
- URL.revokeObjectURL(url)
311
+ URL.revokeObjectURL(workerUrl)
311
312
  worker.terminate()
312
313
  resolve(event.data.result)
313
314
  }
314
315
 
315
316
  worker.onerror = (error) => {
316
- URL.revokeObjectURL(url)
317
+ URL.revokeObjectURL(workerUrl)
317
318
  worker.terminate()
318
319
  reject(error)
319
320
  }
@@ -337,13 +338,15 @@ export const extractRawWavAnalysis = async ({
337
338
  fileUri,
338
339
  segmentDurationMs,
339
340
  })
340
- const res = await AudioStudioModule.extractAudioAnalysis({
341
- fileUri,
342
- segmentDurationMs,
343
- features,
344
- position,
345
- length,
346
- })
341
+ const res = await AudioStudioModule.extractAudioAnalysis(
342
+ cleanNativeOptions({
343
+ fileUri,
344
+ segmentDurationMs,
345
+ features,
346
+ position,
347
+ length,
348
+ })
349
+ )
347
350
  logger?.log(`extractAudioAnalysis`, res)
348
351
  return res
349
352
  }