@siteed/audio-studio 3.0.2-beta.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 +16 -150
  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 -96
  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 -55
  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 -61
  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 -22
  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 +2 -2
  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 -92
  71. package/src/AudioAnalysis/extractAudioAnalysis.ts +23 -20
  72. package/src/AudioAnalysis/extractAudioData.ts +186 -4
  73. package/src/AudioAnalysis/melSpectrogramWasm.web.ts +10 -25
  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;AA8ED;;;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":"AAiCA;;;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-beta.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",
@@ -144,4 +144,4 @@
144
144
  "access": "public",
145
145
  "registry": "https://registry.npmjs.org"
146
146
  }
147
- }
147
+ }
@@ -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,32 +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(/* webpackIgnore: true */ /* @vite-ignore */ url)
21
- const factory = mod.default ?? mod
22
- return factory() as Promise<AudioFeaturesWasmModule>
23
- })().catch((err) => {
24
- modulePromise = null
25
- throw err
26
- })
27
- }
28
- return modulePromise
29
- }
3
+ import { getWasmModule } from './wasmLoader.web'
30
4
 
31
5
  // --- Struct layout for CAudioFeaturesResult (wasm32) ---
32
6
  // Offset 0: float spectralCentroid (4 bytes)
@@ -81,79 +55,115 @@ function readResult(
81
55
 
82
56
  // --- Streaming (per-frame) API ---
83
57
 
84
- let streamingModule: AudioFeaturesWasmModule | null = null
85
- let streamingFramePtr = 0
86
- let streamingFrameCapacity = 0
87
- let streamingResultPtr = 0
88
-
89
58
  /**
90
- * Initialise the WASM streaming audio features processor.
91
- * 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
+ * }
92
72
  */
93
- export async function initAudioFeaturesWasm(
94
- sampleRate: number,
95
- fftLength = 1024,
96
- nMfcc = 13,
97
- nMelFilters = 26,
98
- computeMfcc = true,
99
- computeChroma = true
100
- ): Promise<void> {
101
- const Module = await getModule()
102
- streamingModule = Module
103
-
104
- Module._audio_features_init(
105
- sampleRate,
106
- fftLength,
107
- nMfcc,
108
- nMelFilters,
109
- computeMfcc ? 1 : 0,
110
- computeChroma ? 1 : 0
111
- )
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
+ }
112
82
 
113
- // Pre-allocate result struct on WASM heap
114
- if (streamingResultPtr) Module._free(streamingResultPtr)
115
- streamingResultPtr = Module._malloc(STRUCT_SIZE)
116
- // Zero-initialize to prevent freeing garbage pointers on first use
117
- 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
+ }
118
117
 
119
- // Frame input buffer allocated on demand
120
- streamingFrameCapacity = 0
121
- streamingFramePtr = 0
122
- }
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
+ }
123
132
 
124
- /**
125
- * Compute audio features for a single frame via WASM C++.
126
- * Returns null if not initialised or on error.
127
- */
128
- export function computeAudioFeaturesFrameWasm(
129
- samples: Float32Array
130
- ): AudioFeaturesWasmResult | null {
131
- if (!streamingModule || !streamingResultPtr) return null
132
- const Module = streamingModule
133
-
134
- // (Re-)allocate frame input buffer if needed
135
- if (samples.length > streamingFrameCapacity) {
136
- if (streamingFramePtr) Module._free(streamingFramePtr)
137
- streamingFramePtr = Module._malloc(samples.length * 4)
138
- streamingFrameCapacity = samples.length
139
- }
133
+ // Copy samples to WASM heap
134
+ Module.HEAPF32.set(samples, this.framePtr >> 2)
140
135
 
141
- // Copy samples to WASM heap
142
- 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
143
142
 
144
- const ok = Module._audio_features_compute_frame(
145
- streamingFramePtr,
146
- samples.length,
147
- streamingResultPtr
148
- )
149
- if (!ok) return null
143
+ const result = readResult(Module, this.resultPtr)
150
144
 
151
- const result = readResult(Module, streamingResultPtr)
145
+ // Free internal arrays (mfcc, chromagram) allocated by C
146
+ Module._audio_features_free_arrays(this.resultPtr)
152
147
 
153
- // Free internal arrays (mfcc, chromagram) allocated by C
154
- Module._audio_features_free_arrays(streamingResultPtr)
148
+ return result
149
+ }
155
150
 
156
- 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
+ }
157
167
  }
158
168
 
159
169
  // --- Batch API ---
@@ -171,7 +181,7 @@ export async function computeAudioFeaturesWasm(
171
181
  computeMfcc = true,
172
182
  computeChroma = true
173
183
  ): Promise<AudioFeaturesWasmResult> {
174
- const Module = await getModule()
184
+ const Module = await getWasmModule()
175
185
 
176
186
  const numSamples = audioData.length
177
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
  }