audio-ml 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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +213 -0
  3. package/dist/analysis/AutocorrelationAnalyzer.d.ts +23 -0
  4. package/dist/analysis/AutocorrelationAnalyzer.d.ts.map +1 -0
  5. package/dist/analysis/AutocorrelationAnalyzer.js +26 -0
  6. package/dist/analysis/AutocorrelationAnalyzer.js.map +1 -0
  7. package/dist/analysis/ChromaFeaturesAnalyzer.d.ts +12 -0
  8. package/dist/analysis/ChromaFeaturesAnalyzer.d.ts.map +1 -0
  9. package/dist/analysis/ChromaFeaturesAnalyzer.js +33 -0
  10. package/dist/analysis/ChromaFeaturesAnalyzer.js.map +1 -0
  11. package/dist/analysis/ConstantQTransformAnalyzer.d.ts +31 -0
  12. package/dist/analysis/ConstantQTransformAnalyzer.d.ts.map +1 -0
  13. package/dist/analysis/ConstantQTransformAnalyzer.js +101 -0
  14. package/dist/analysis/ConstantQTransformAnalyzer.js.map +1 -0
  15. package/dist/analysis/FFTAnalyzer.d.ts +16 -0
  16. package/dist/analysis/FFTAnalyzer.d.ts.map +1 -0
  17. package/dist/analysis/FFTAnalyzer.js +36 -0
  18. package/dist/analysis/FFTAnalyzer.js.map +1 -0
  19. package/dist/analysis/LPCAnalyzer.d.ts +10 -0
  20. package/dist/analysis/LPCAnalyzer.d.ts.map +1 -0
  21. package/dist/analysis/LPCAnalyzer.js +34 -0
  22. package/dist/analysis/LPCAnalyzer.js.map +1 -0
  23. package/dist/analysis/MFCCAnalyzer.d.ts +40 -0
  24. package/dist/analysis/MFCCAnalyzer.d.ts.map +1 -0
  25. package/dist/analysis/MFCCAnalyzer.js +101 -0
  26. package/dist/analysis/MFCCAnalyzer.js.map +1 -0
  27. package/dist/analysis/MelSpectrogramAnalyzer.d.ts +33 -0
  28. package/dist/analysis/MelSpectrogramAnalyzer.d.ts.map +1 -0
  29. package/dist/analysis/MelSpectrogramAnalyzer.js +86 -0
  30. package/dist/analysis/MelSpectrogramAnalyzer.js.map +1 -0
  31. package/dist/analysis/PLPAnalyzer.d.ts +47 -0
  32. package/dist/analysis/PLPAnalyzer.d.ts.map +1 -0
  33. package/dist/analysis/PLPAnalyzer.js +176 -0
  34. package/dist/analysis/PLPAnalyzer.js.map +1 -0
  35. package/dist/analysis/RMSEAnalyzer.d.ts +21 -0
  36. package/dist/analysis/RMSEAnalyzer.d.ts.map +1 -0
  37. package/dist/analysis/RMSEAnalyzer.js +20 -0
  38. package/dist/analysis/RMSEAnalyzer.js.map +1 -0
  39. package/dist/analysis/SpectralBandwidthAnalyzer.d.ts +22 -0
  40. package/dist/analysis/SpectralBandwidthAnalyzer.d.ts.map +1 -0
  41. package/dist/analysis/SpectralBandwidthAnalyzer.js +51 -0
  42. package/dist/analysis/SpectralBandwidthAnalyzer.js.map +1 -0
  43. package/dist/analysis/SpectralCentroidAnalyzer.d.ts +22 -0
  44. package/dist/analysis/SpectralCentroidAnalyzer.d.ts.map +1 -0
  45. package/dist/analysis/SpectralCentroidAnalyzer.js +44 -0
  46. package/dist/analysis/SpectralCentroidAnalyzer.js.map +1 -0
  47. package/dist/analysis/SpectralFlatnessAnalyzer.d.ts +21 -0
  48. package/dist/analysis/SpectralFlatnessAnalyzer.d.ts.map +1 -0
  49. package/dist/analysis/SpectralFlatnessAnalyzer.js +37 -0
  50. package/dist/analysis/SpectralFlatnessAnalyzer.js.map +1 -0
  51. package/dist/analysis/SpectralRolloffAnalyzer.d.ts +25 -0
  52. package/dist/analysis/SpectralRolloffAnalyzer.d.ts.map +1 -0
  53. package/dist/analysis/SpectralRolloffAnalyzer.js +48 -0
  54. package/dist/analysis/SpectralRolloffAnalyzer.js.map +1 -0
  55. package/dist/analysis/WaveformEnvelopeAnalyzer.d.ts +23 -0
  56. package/dist/analysis/WaveformEnvelopeAnalyzer.d.ts.map +1 -0
  57. package/dist/analysis/WaveformEnvelopeAnalyzer.js +28 -0
  58. package/dist/analysis/WaveformEnvelopeAnalyzer.js.map +1 -0
  59. package/dist/analysis/WaveletTransformAnalyzer.d.ts +10 -0
  60. package/dist/analysis/WaveletTransformAnalyzer.d.ts.map +1 -0
  61. package/dist/analysis/WaveletTransformAnalyzer.js +25 -0
  62. package/dist/analysis/WaveletTransformAnalyzer.js.map +1 -0
  63. package/dist/analysis/ZeroCrossingRateAnalyzer.d.ts +21 -0
  64. package/dist/analysis/ZeroCrossingRateAnalyzer.d.ts.map +1 -0
  65. package/dist/analysis/ZeroCrossingRateAnalyzer.js +22 -0
  66. package/dist/analysis/ZeroCrossingRateAnalyzer.js.map +1 -0
  67. package/dist/analysis/index.d.ts +31 -0
  68. package/dist/analysis/index.d.ts.map +1 -0
  69. package/dist/analysis/index.js +35 -0
  70. package/dist/analysis/index.js.map +1 -0
  71. package/package.json +57 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * SpectralCentroidAnalyzer computes the spectral centroid of a PCM audio frame.
3
+ * The spectral centroid is the "center of mass" of the spectrum and is related to the perceived brightness of a sound.
4
+ * Usage: const sc = new SpectralCentroidAnalyzer({ sampleRate: 16000 }); sc.analyzeFrame(pcm)
5
+ */
6
+ import FFT from 'fft.js';
7
+ export class SpectralCentroidAnalyzer {
8
+ fft;
9
+ fftSize;
10
+ sampleRate;
11
+ /**
12
+ * @param config - Configuration with sample rate and optional FFT size
13
+ */
14
+ constructor(config) {
15
+ this.fftSize = config.fftSize || 1024;
16
+ this.fft = new FFT(this.fftSize);
17
+ this.sampleRate = config.sampleRate;
18
+ }
19
+ /**
20
+ * Compute the spectral centroid for a PCM frame.
21
+ * @param pcm - Input PCM audio frame
22
+ * @returns Spectral centroid in Hz
23
+ */
24
+ analyzeFrame(pcm) {
25
+ const spectrum = this.fft.createComplexArray();
26
+ this.fft.realTransform(spectrum, pcm);
27
+ this.fft.completeSpectrum(spectrum);
28
+ let mags = [];
29
+ for (let i = 0; i < this.fftSize / 2; i++) {
30
+ const re = spectrum[2 * i];
31
+ const im = spectrum[2 * i + 1];
32
+ mags.push(Math.sqrt(re * re + im * im));
33
+ }
34
+ let num = 0, denom = 0;
35
+ for (let i = 0; i < mags.length; i++) {
36
+ num += i * mags[i];
37
+ denom += mags[i];
38
+ }
39
+ if (denom === 0)
40
+ return 0;
41
+ return (num / denom) * (this.sampleRate / 2) / mags.length;
42
+ }
43
+ }
44
+ //# sourceMappingURL=SpectralCentroidAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpectralCentroidAnalyzer.js","sourceRoot":"","sources":["../../src/analysis/SpectralCentroidAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,GAAG,MAAM,QAAQ,CAAC;AASzB,MAAM,OAAO,wBAAwB;IAC3B,GAAG,CAAM;IACT,OAAO,CAAS;IAChB,UAAU,CAAS;IAC3B;;OAEG;IACH,YAAY,MAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IACD;;;;OAIG;IACH,YAAY,CAAC,GAAiB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7D,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ export interface SpectralFlatnessConfig {
2
+ /** Sample rate of the audio (Hz) */
3
+ sampleRate: number;
4
+ /** FFT size (default: 1024) */
5
+ fftSize?: number;
6
+ }
7
+ export declare class SpectralFlatnessAnalyzer {
8
+ private fft;
9
+ private fftSize;
10
+ /**
11
+ * @param config - Configuration with sample rate and optional FFT size
12
+ */
13
+ constructor(config: SpectralFlatnessConfig);
14
+ /**
15
+ * Compute the spectral flatness for a PCM frame.
16
+ * @param pcm - Input PCM audio frame
17
+ * @returns Spectral flatness (0 = tone, 1 = noise)
18
+ */
19
+ analyzeFrame(pcm: Float32Array): number;
20
+ }
21
+ //# sourceMappingURL=SpectralFlatnessAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpectralFlatnessAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analysis/SpectralFlatnessAnalyzer.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB;;OAEG;gBACS,MAAM,EAAE,sBAAsB;IAI1C;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;CAcxC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * SpectralFlatnessAnalyzer computes the spectral flatness of a PCM audio frame.
3
+ * Spectral flatness measures how noise-like a sound is (flat = noise, peaked = tone).
4
+ * Usage: const sf = new SpectralFlatnessAnalyzer({ sampleRate: 16000 }); sf.analyzeFrame(pcm)
5
+ */
6
+ import FFT from 'fft.js';
7
+ export class SpectralFlatnessAnalyzer {
8
+ fft;
9
+ fftSize;
10
+ /**
11
+ * @param config - Configuration with sample rate and optional FFT size
12
+ */
13
+ constructor(config) {
14
+ this.fftSize = config.fftSize || 1024;
15
+ this.fft = new FFT(this.fftSize);
16
+ }
17
+ /**
18
+ * Compute the spectral flatness for a PCM frame.
19
+ * @param pcm - Input PCM audio frame
20
+ * @returns Spectral flatness (0 = tone, 1 = noise)
21
+ */
22
+ analyzeFrame(pcm) {
23
+ const spectrum = this.fft.createComplexArray();
24
+ this.fft.realTransform(spectrum, pcm);
25
+ this.fft.completeSpectrum(spectrum);
26
+ let mags = [];
27
+ for (let i = 0; i < this.fftSize / 2; i++) {
28
+ const re = spectrum[2 * i];
29
+ const im = spectrum[2 * i + 1];
30
+ mags.push(Math.sqrt(re * re + im * im));
31
+ }
32
+ const geoMean = Math.exp(mags.reduce((a, b) => a + Math.log(b + 1e-12), 0) / mags.length);
33
+ const arithMean = mags.reduce((a, b) => a + b, 0) / mags.length;
34
+ return geoMean / (arithMean + 1e-12);
35
+ }
36
+ }
37
+ //# sourceMappingURL=SpectralFlatnessAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpectralFlatnessAnalyzer.js","sourceRoot":"","sources":["../../src/analysis/SpectralFlatnessAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,GAAG,MAAM,QAAQ,CAAC;AASzB,MAAM,OAAO,wBAAwB;IAC3B,GAAG,CAAM;IACT,OAAO,CAAS;IACxB;;OAEG;IACH,YAAY,MAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD;;;;OAIG;IACH,YAAY,CAAC,GAAiB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAChE,OAAO,OAAO,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ export interface SpectralRolloffConfig {
2
+ /** Sample rate of the audio (Hz) */
3
+ sampleRate: number;
4
+ /** FFT size (default: 1024) */
5
+ fftSize?: number;
6
+ /** Rolloff percent (default: 0.85) */
7
+ rolloffPercent?: number;
8
+ }
9
+ export declare class SpectralRolloffAnalyzer {
10
+ private fft;
11
+ private fftSize;
12
+ private sampleRate;
13
+ private rolloffPercent;
14
+ /**
15
+ * @param config - Configuration with sample rate, optional FFT size, and rolloff percent
16
+ */
17
+ constructor(config: SpectralRolloffConfig);
18
+ /**
19
+ * Compute the spectral rolloff for a PCM frame.
20
+ * @param pcm - Input PCM audio frame
21
+ * @returns Spectral rolloff frequency in Hz
22
+ */
23
+ analyzeFrame(pcm: Float32Array): number;
24
+ }
25
+ //# sourceMappingURL=SpectralRolloffAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpectralRolloffAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analysis/SpectralRolloffAnalyzer.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B;;OAEG;gBACS,MAAM,EAAE,qBAAqB;IAMzC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;CAqBxC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * SpectralRolloffAnalyzer computes the spectral rolloff point of a PCM audio frame.
3
+ * The rolloff is the frequency below which a certain percentage (e.g., 85%) of the total spectral energy lies.
4
+ * Usage: const sr = new SpectralRolloffAnalyzer({ sampleRate: 16000 }); sr.analyzeFrame(pcm)
5
+ */
6
+ import FFT from 'fft.js';
7
+ export class SpectralRolloffAnalyzer {
8
+ fft;
9
+ fftSize;
10
+ sampleRate;
11
+ rolloffPercent;
12
+ /**
13
+ * @param config - Configuration with sample rate, optional FFT size, and rolloff percent
14
+ */
15
+ constructor(config) {
16
+ this.fftSize = config.fftSize || 1024;
17
+ this.fft = new FFT(this.fftSize);
18
+ this.sampleRate = config.sampleRate;
19
+ this.rolloffPercent = config.rolloffPercent || 0.85;
20
+ }
21
+ /**
22
+ * Compute the spectral rolloff for a PCM frame.
23
+ * @param pcm - Input PCM audio frame
24
+ * @returns Spectral rolloff frequency in Hz
25
+ */
26
+ analyzeFrame(pcm) {
27
+ const spectrum = this.fft.createComplexArray();
28
+ this.fft.realTransform(spectrum, pcm);
29
+ this.fft.completeSpectrum(spectrum);
30
+ let mags = [];
31
+ for (let i = 0; i < this.fftSize / 2; i++) {
32
+ const re = spectrum[2 * i];
33
+ const im = spectrum[2 * i + 1];
34
+ mags.push(Math.sqrt(re * re + im * im));
35
+ }
36
+ const totalEnergy = mags.reduce((a, b) => a + b, 0);
37
+ let threshold = totalEnergy * this.rolloffPercent;
38
+ let cumulative = 0;
39
+ for (let i = 0; i < mags.length; i++) {
40
+ cumulative += mags[i];
41
+ if (cumulative >= threshold) {
42
+ return (i / mags.length) * (this.sampleRate / 2);
43
+ }
44
+ }
45
+ return 0;
46
+ }
47
+ }
48
+ //# sourceMappingURL=SpectralRolloffAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpectralRolloffAnalyzer.js","sourceRoot":"","sources":["../../src/analysis/SpectralRolloffAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,GAAG,MAAM,QAAQ,CAAC;AAWzB,MAAM,OAAO,uBAAuB;IAC1B,GAAG,CAAM;IACT,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,cAAc,CAAS;IAC/B;;OAEG;IACH,YAAY,MAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;IACtD,CAAC;IACD;;;;OAIG;IACH,YAAY,CAAC,GAAiB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QAClD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC5B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WaveformEnvelopeAnalyzer computes the amplitude envelope of a PCM audio frame.
3
+ * The envelope tracks the maximum absolute amplitude in a sliding window, useful for visualizing signal dynamics.
4
+ * Usage: const env = new WaveformEnvelopeAnalyzer({ sampleRate: 16000 }); env.analyzeFrame(pcm)
5
+ */
6
+ export interface WaveformEnvelopeConfig {
7
+ sampleRate: number;
8
+ windowSize?: number;
9
+ }
10
+ export declare class WaveformEnvelopeAnalyzer {
11
+ private windowSize;
12
+ /**
13
+ * @param config - Configuration with sample rate and optional window size
14
+ */
15
+ constructor(config: WaveformEnvelopeConfig);
16
+ /**
17
+ * Compute the amplitude envelope for a PCM frame.
18
+ * @param pcm - Input PCM audio frame
19
+ * @returns Envelope as a Float32Array
20
+ */
21
+ analyzeFrame(pcm: Float32Array): Float32Array;
22
+ }
23
+ //# sourceMappingURL=WaveformEnvelopeAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveformEnvelopeAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analysis/WaveformEnvelopeAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AAEnF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B;;OAEG;gBACS,MAAM,EAAE,sBAAsB;IAG1C;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;CAa9C"}
@@ -0,0 +1,28 @@
1
+ export class WaveformEnvelopeAnalyzer {
2
+ windowSize;
3
+ /**
4
+ * @param config - Configuration with sample rate and optional window size
5
+ */
6
+ constructor(config) {
7
+ this.windowSize = config.windowSize || Math.floor(config.sampleRate * 0.01); // 10ms default
8
+ }
9
+ /**
10
+ * Compute the amplitude envelope for a PCM frame.
11
+ * @param pcm - Input PCM audio frame
12
+ * @returns Envelope as a Float32Array
13
+ */
14
+ analyzeFrame(pcm) {
15
+ const env = new Float32Array(pcm.length);
16
+ for (let i = 0; i < pcm.length; i++) {
17
+ let start = Math.max(0, i - Math.floor(this.windowSize / 2));
18
+ let end = Math.min(pcm.length, i + Math.floor(this.windowSize / 2));
19
+ let max = 0;
20
+ for (let j = start; j < end; j++) {
21
+ max = Math.max(max, Math.abs(pcm[j]));
22
+ }
23
+ env[i] = max;
24
+ }
25
+ return env;
26
+ }
27
+ }
28
+ //# sourceMappingURL=WaveformEnvelopeAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveformEnvelopeAnalyzer.js","sourceRoot":"","sources":["../../src/analysis/WaveformEnvelopeAnalyzer.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,wBAAwB;IAC3B,UAAU,CAAS;IAC3B;;OAEG;IACH,YAAY,MAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,eAAe;IAC9F,CAAC;IACD;;;;OAIG;IACH,YAAY,CAAC,GAAiB;QAC5B,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACf,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export interface WaveletTransformConfig {
2
+ sampleRate: number;
3
+ levels?: number;
4
+ }
5
+ export declare class WaveletTransformAnalyzer {
6
+ private levels;
7
+ constructor(config: WaveletTransformConfig);
8
+ analyzeFrame(pcm: Float32Array): Float32Array[];
9
+ }
10
+ //# sourceMappingURL=WaveletTransformAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveletTransformAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analysis/WaveletTransformAnalyzer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAC/E,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAS;gBACX,MAAM,EAAE,sBAAsB;IAI1C,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,EAAE;CAiBhD"}
@@ -0,0 +1,25 @@
1
+ export class WaveletTransformAnalyzer {
2
+ levels;
3
+ constructor(config) {
4
+ this.levels = config.levels || 1;
5
+ }
6
+ // Haar DWT (minimal, single-level or multi-level)
7
+ analyzeFrame(pcm) {
8
+ let coeffs = [];
9
+ let current = Float32Array.from(pcm);
10
+ for (let l = 0; l < this.levels; l++) {
11
+ const N = current.length;
12
+ const approx = new Float32Array(N / 2);
13
+ const detail = new Float32Array(N / 2);
14
+ for (let i = 0; i < N; i += 2) {
15
+ approx[i / 2] = (current[i] + current[i + 1]) / Math.sqrt(2);
16
+ detail[i / 2] = (current[i] - current[i + 1]) / Math.sqrt(2);
17
+ }
18
+ coeffs.push(detail);
19
+ current = approx;
20
+ }
21
+ coeffs.push(current); // final approx
22
+ return coeffs;
23
+ }
24
+ }
25
+ //# sourceMappingURL=WaveletTransformAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveletTransformAnalyzer.js","sourceRoot":"","sources":["../../src/analysis/WaveletTransformAnalyzer.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,wBAAwB;IAC3B,MAAM,CAAS;IACvB,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,kDAAkD;IAClD,YAAY,CAAC,GAAiB;QAC5B,IAAI,MAAM,GAAmB,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ZeroCrossingRateAnalyzer computes the rate at which the audio signal changes sign (crosses zero).
3
+ * This is a simple time-domain feature useful for distinguishing voiced/unvoiced speech and percussive sounds.
4
+ * Usage: const zcr = new ZeroCrossingRateAnalyzer({ sampleRate: 16000 }); zcr.analyzeFrame(pcm)
5
+ */
6
+ export interface ZeroCrossingRateConfig {
7
+ sampleRate: number;
8
+ }
9
+ export declare class ZeroCrossingRateAnalyzer {
10
+ /**
11
+ * @param _config - Configuration with sample rate
12
+ */
13
+ constructor(_config: ZeroCrossingRateConfig);
14
+ /**
15
+ * Compute the zero crossing rate for a PCM frame.
16
+ * @param pcm - Input PCM audio frame
17
+ * @returns Zero crossing rate (crossings per sample)
18
+ */
19
+ analyzeFrame(pcm: Float32Array): number;
20
+ }
21
+ //# sourceMappingURL=ZeroCrossingRateAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZeroCrossingRateAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analysis/ZeroCrossingRateAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAAG,UAAU,EAAE,MAAM,CAAA;CAAE;AAE9D,qBAAa,wBAAwB;IACnC;;OAEG;gBACS,OAAO,EAAE,sBAAsB;IAE3C;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;CASxC"}
@@ -0,0 +1,22 @@
1
+ export class ZeroCrossingRateAnalyzer {
2
+ /**
3
+ * @param _config - Configuration with sample rate
4
+ */
5
+ constructor(_config) {
6
+ }
7
+ /**
8
+ * Compute the zero crossing rate for a PCM frame.
9
+ * @param pcm - Input PCM audio frame
10
+ * @returns Zero crossing rate (crossings per sample)
11
+ */
12
+ analyzeFrame(pcm) {
13
+ let zcr = 0;
14
+ for (let i = 1; i < pcm.length; i++) {
15
+ if ((pcm[i - 1] >= 0 && pcm[i] < 0) || (pcm[i - 1] < 0 && pcm[i] >= 0)) {
16
+ zcr++;
17
+ }
18
+ }
19
+ return zcr / pcm.length;
20
+ }
21
+ }
22
+ //# sourceMappingURL=ZeroCrossingRateAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZeroCrossingRateAnalyzer.js","sourceRoot":"","sources":["../../src/analysis/ZeroCrossingRateAnalyzer.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,wBAAwB;IACnC;;OAEG;IACH,YAAY,OAA+B;IAC3C,CAAC;IACD;;;;OAIG;IACH,YAAY,CAAC,GAAiB;QAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,EAAE,CAAC;YACR,CAAC;QACH,CAAC;QACD,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Audio Analysis Library
3
+ *
4
+ * A comprehensive collection of audio feature extractors for machine learning applications.
5
+ * All analyzers work in both browser and Node.js environments.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { MFCCAnalyzer, FFTAnalyzer } from '@your-package/audio-analyzers';
10
+ *
11
+ * const mfcc = new MFCCAnalyzer({ sampleRate: 44100 });
12
+ * const features = mfcc.analyzeFrame(pcmData);
13
+ * ```
14
+ */
15
+ export { FFTAnalyzer, type FFTConfig } from './FFTAnalyzer';
16
+ export { MFCCAnalyzer, type MFCCConfig } from './MFCCAnalyzer';
17
+ export { PLPAnalyzer, type PLPConfig } from './PLPAnalyzer';
18
+ export { MelSpectrogramAnalyzer, type MelSpectrogramConfig } from './MelSpectrogramAnalyzer';
19
+ export { ConstantQTransformAnalyzer, type ConstantQTransformConfig } from './ConstantQTransformAnalyzer';
20
+ export { ChromaFeaturesAnalyzer, type ChromaFeaturesConfig } from './ChromaFeaturesAnalyzer';
21
+ export { SpectralCentroidAnalyzer, type SpectralCentroidConfig } from './SpectralCentroidAnalyzer';
22
+ export { SpectralRolloffAnalyzer, type SpectralRolloffConfig } from './SpectralRolloffAnalyzer';
23
+ export { SpectralBandwidthAnalyzer, type SpectralBandwidthConfig } from './SpectralBandwidthAnalyzer';
24
+ export { SpectralFlatnessAnalyzer, type SpectralFlatnessConfig } from './SpectralFlatnessAnalyzer';
25
+ export { ZeroCrossingRateAnalyzer, type ZeroCrossingRateConfig } from './ZeroCrossingRateAnalyzer';
26
+ export { RMSEAnalyzer, type RMSEConfig } from './RMSEAnalyzer';
27
+ export { WaveformEnvelopeAnalyzer, type WaveformEnvelopeConfig } from './WaveformEnvelopeAnalyzer';
28
+ export { AutocorrelationAnalyzer, type AutocorrelationConfig } from './AutocorrelationAnalyzer';
29
+ export { LPCAnalyzer, type LPCConfig } from './LPCAnalyzer';
30
+ export { WaveletTransformAnalyzer, type WaveletTransformConfig } from './WaveletTransformAnalyzer';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,KAAK,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAG7F,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGnG,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGhG,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Audio Analysis Library
3
+ *
4
+ * A comprehensive collection of audio feature extractors for machine learning applications.
5
+ * All analyzers work in both browser and Node.js environments.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { MFCCAnalyzer, FFTAnalyzer } from '@your-package/audio-analyzers';
10
+ *
11
+ * const mfcc = new MFCCAnalyzer({ sampleRate: 44100 });
12
+ * const features = mfcc.analyzeFrame(pcmData);
13
+ * ```
14
+ */
15
+ // Frequency Domain Analyzers
16
+ export { FFTAnalyzer } from './FFTAnalyzer';
17
+ export { MFCCAnalyzer } from './MFCCAnalyzer';
18
+ export { PLPAnalyzer } from './PLPAnalyzer';
19
+ export { MelSpectrogramAnalyzer } from './MelSpectrogramAnalyzer';
20
+ export { ConstantQTransformAnalyzer } from './ConstantQTransformAnalyzer';
21
+ export { ChromaFeaturesAnalyzer } from './ChromaFeaturesAnalyzer';
22
+ // Spectral Feature Analyzers
23
+ export { SpectralCentroidAnalyzer } from './SpectralCentroidAnalyzer';
24
+ export { SpectralRolloffAnalyzer } from './SpectralRolloffAnalyzer';
25
+ export { SpectralBandwidthAnalyzer } from './SpectralBandwidthAnalyzer';
26
+ export { SpectralFlatnessAnalyzer } from './SpectralFlatnessAnalyzer';
27
+ // Time Domain Analyzers
28
+ export { ZeroCrossingRateAnalyzer } from './ZeroCrossingRateAnalyzer';
29
+ export { RMSEAnalyzer } from './RMSEAnalyzer';
30
+ export { WaveformEnvelopeAnalyzer } from './WaveformEnvelopeAnalyzer';
31
+ export { AutocorrelationAnalyzer } from './AutocorrelationAnalyzer';
32
+ // Advanced Analyzers
33
+ export { LPCAnalyzer } from './LPCAnalyzer';
34
+ export { WaveletTransformAnalyzer } from './WaveletTransformAnalyzer';
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAkB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAkB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAA6B,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAiC,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAA6B,MAAM,0BAA0B,CAAC;AAE7F,6BAA6B;AAC7B,OAAO,EAAE,wBAAwB,EAA+B,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAA8B,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAgC,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAA+B,MAAM,4BAA4B,CAAC;AAEnG,wBAAwB;AACxB,OAAO,EAAE,wBAAwB,EAA+B,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAA+B,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAA8B,MAAM,2BAA2B,CAAC;AAEhG,qBAAqB;AACrB,OAAO,EAAE,WAAW,EAAkB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAA+B,MAAM,4BAA4B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "audio-ml",
3
+ "version": "1.0.0",
4
+ "description": "A comprehensive JavaScript/TypeScript library for audio feature extraction, designed for machine learning applications and voice AI systems",
5
+ "type": "module",
6
+ "main": "./dist/analysis/index.js",
7
+ "types": "./dist/analysis/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/analysis/index.js",
11
+ "types": "./dist/analysis/index.d.ts"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "dev": "vite",
22
+ "build": "tsc -p tsconfig.build.json",
23
+ "build:app": "tsc && vite build",
24
+ "preview": "vite preview",
25
+ "prepublishOnly": "yarn build"
26
+ },
27
+ "keywords": [
28
+ "audio",
29
+ "audio-analysis",
30
+ "feature-extraction",
31
+ "mfcc",
32
+ "fft",
33
+ "spectral-analysis",
34
+ "voice-ai",
35
+ "speech-recognition",
36
+ "machine-learning",
37
+ "signal-processing",
38
+ "dsp",
39
+ "typescript"
40
+ ],
41
+ "author": "Abijah Kajabika",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/AbijahKaj/audio-ml.git"
46
+ },
47
+ "devDependencies": {
48
+ "typescript": "~5.9.3",
49
+ "vite": "^7.2.4"
50
+ },
51
+ "dependencies": {
52
+ "fft.js": "^4.0.4"
53
+ },
54
+ "engines": {
55
+ "node": ">=18.0.0"
56
+ }
57
+ }