dspx 1.0.1 → 1.1.2

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.
package/dist/types.d.ts CHANGED
@@ -1090,4 +1090,239 @@ export interface AutocorrelationOptions {
1090
1090
  */
1091
1091
  export interface CrossCorrelationOptions {
1092
1092
  }
1093
+ /**
1094
+ * Parameters for FFT processing in pipeline
1095
+ */
1096
+ export interface fftParams {
1097
+ /** FFT size (must be power of 2 for FFT, any size for DFT) */
1098
+ size: number;
1099
+ /**
1100
+ * Transform type
1101
+ * - 'fft': Fast Fourier Transform (O(N log N), requires power of 2)
1102
+ * - 'dft': Discrete Fourier Transform (O(N²), works with any size)
1103
+ * - 'rfft': Real FFT (O(N log N), for real-valued signals)
1104
+ * - 'rdft': Real DFT (O(N²), for real-valued signals)
1105
+ */
1106
+ type?: "fft" | "dft" | "rfft" | "rdft";
1107
+ /**
1108
+ * Forward or inverse transform
1109
+ * - true: Forward transform (time -> frequency)
1110
+ * - false: Inverse transform (frequency -> time)
1111
+ */
1112
+ forward?: boolean;
1113
+ /**
1114
+ * Output format
1115
+ * - 'complex': Return {real, imag} arrays
1116
+ * - 'magnitude': Return magnitude spectrum
1117
+ * - 'power': Return power spectrum (magnitude squared)
1118
+ * - 'phase': Return phase spectrum
1119
+ */
1120
+ output?: "complex" | "magnitude" | "power" | "phase";
1121
+ }
1122
+ /**
1123
+ * Parameters for STFT (Short-Time Fourier Transform) processing in pipeline
1124
+ *
1125
+ * STFT computes the Fourier transform over sliding windows, producing a time-frequency
1126
+ * representation (spectrogram). Useful for analyzing non-stationary signals where
1127
+ * frequency content changes over time.
1128
+ *
1129
+ * **Window Size vs Hop Size Trade-offs:**
1130
+ * - Larger window: Better frequency resolution, worse time resolution
1131
+ * - Smaller window: Better time resolution, worse frequency resolution
1132
+ * - Larger hop: Faster processing, less overlap
1133
+ * - Smaller hop: Smoother spectrogram, more overlap
1134
+ *
1135
+ * **Common Overlap Settings:**
1136
+ * - 50% overlap: hopSize = windowSize / 2 (standard)
1137
+ * - 75% overlap: hopSize = windowSize / 4 (high quality)
1138
+ * - No overlap: hopSize = windowSize (fast, blocky)
1139
+ */
1140
+ export interface stftParams {
1141
+ /**
1142
+ * Window size (FFT size) in samples
1143
+ * - For FFT/RFFT: Must be power of 2 (e.g., 256, 512, 1024, 2048)
1144
+ * - For DFT/RDFT: Can be any positive integer
1145
+ *
1146
+ * Typical values:
1147
+ * - Audio analysis: 1024-4096 samples
1148
+ * - Speech: 256-512 samples
1149
+ * - Vibration: 512-2048 samples
1150
+ */
1151
+ windowSize: number;
1152
+ /**
1153
+ * Hop size (stride) in samples between consecutive windows
1154
+ *
1155
+ * Default: windowSize / 2 (50% overlap)
1156
+ *
1157
+ * Examples:
1158
+ * - windowSize=1024, hopSize=512 → 50% overlap
1159
+ * - windowSize=1024, hopSize=256 → 75% overlap
1160
+ * - windowSize=1024, hopSize=1024 → No overlap
1161
+ */
1162
+ hopSize?: number;
1163
+ /**
1164
+ * Transform method
1165
+ * - 'fft': Fast transform (O(N log N), requires power-of-2 windowSize)
1166
+ * - 'dft': Direct transform (O(N²), works with any windowSize)
1167
+ *
1168
+ * Default: 'fft' if windowSize is power of 2, else 'dft'
1169
+ */
1170
+ method?: "fft" | "dft";
1171
+ /**
1172
+ * Input signal type
1173
+ * - 'real': Real-valued input (uses RFFT/RDFT, outputs N/2+1 bins)
1174
+ * - 'complex': Complex-valued input (uses FFT/DFT, outputs N bins)
1175
+ *
1176
+ * Default: 'real' (most common for audio/sensor data)
1177
+ */
1178
+ type?: "real" | "complex";
1179
+ /**
1180
+ * Transform direction
1181
+ * - true: Forward STFT (time → time-frequency)
1182
+ * - false: Inverse STFT (time-frequency → time)
1183
+ *
1184
+ * Default: true (forward)
1185
+ */
1186
+ forward?: boolean;
1187
+ /**
1188
+ * Output format for each time window
1189
+ * - 'complex': Complex spectrum {real, imag}
1190
+ * - 'magnitude': Magnitude spectrum |X[k]|
1191
+ * - 'power': Power spectrum |X[k]|²
1192
+ * - 'phase': Phase spectrum ∠X[k]
1193
+ *
1194
+ * Default: 'magnitude'
1195
+ *
1196
+ * Output shape: [numWindows, numFreqBins] flattened
1197
+ */
1198
+ output?: "complex" | "magnitude" | "power" | "phase";
1199
+ /**
1200
+ * Window function to reduce spectral leakage
1201
+ * - 'none': Rectangular window (no tapering)
1202
+ * - 'hann': Hann window (smooth, general purpose)
1203
+ * - 'hamming': Hamming window (better frequency resolution)
1204
+ * - 'blackman': Blackman window (best sidelobe suppression)
1205
+ * - 'bartlett': Triangular window
1206
+ *
1207
+ * Default: 'hann'
1208
+ */
1209
+ window?: "none" | "hann" | "hamming" | "blackman" | "bartlett";
1210
+ }
1211
+ /**
1212
+ * Parameters for Mel Spectrogram processing in pipeline
1213
+ *
1214
+ * Converts power spectrum to Mel-scale representation using filterbank matrix multiplication.
1215
+ * The Mel scale is a perceptual scale of pitches judged by listeners to be equal in distance.
1216
+ *
1217
+ * **Pipeline Position:**
1218
+ * Typically used after STFT + Power: STFT → Power → MelSpectrogram → Log → MFCC
1219
+ *
1220
+ * **Filterbank Creation:**
1221
+ * The filterbank matrix must be pre-computed in TypeScript using a helper function
1222
+ * that creates triangular filters distributed along the Mel scale.
1223
+ *
1224
+ * **What it does:**
1225
+ * Applies matrix multiplication: mel_energies = filterbank × power_spectrum
1226
+ * This groups frequency bins into perceptually-meaningful Mel bands.
1227
+ */
1228
+ export interface MelSpectrogramParams {
1229
+ /**
1230
+ * Pre-computed Mel filterbank matrix (numMelBands × numBins)
1231
+ *
1232
+ * This matrix contains triangular filters that convert linear frequency bins
1233
+ * to Mel-scale bands. Must be pre-computed using a Mel filterbank generator.
1234
+ *
1235
+ * Shape: Float32Array of length (numMelBands * numBins), row-major order
1236
+ */
1237
+ filterbankMatrix: Float32Array;
1238
+ /**
1239
+ * Number of input frequency bins (from STFT/FFT)
1240
+ *
1241
+ * For real signals: numBins = fftSize / 2 + 1
1242
+ * For complex signals: numBins = fftSize
1243
+ *
1244
+ * Example: FFT size 512 → 257 bins (real)
1245
+ */
1246
+ numBins: number;
1247
+ /**
1248
+ * Number of output Mel frequency bands
1249
+ *
1250
+ * Common values:
1251
+ * - Speech: 20-40 bands
1252
+ * - Music: 40-128 bands
1253
+ * - MFCC: 20-40 bands (13-20 MFCCs extracted from these)
1254
+ *
1255
+ * More bands = finer frequency resolution but higher computational cost
1256
+ */
1257
+ numMelBands: number;
1258
+ }
1259
+ /**
1260
+ * Parameters for MFCC (Mel-Frequency Cepstral Coefficients) processing in pipeline
1261
+ *
1262
+ * Applies Discrete Cosine Transform (DCT) to log Mel energies to produce MFCCs.
1263
+ * MFCCs are widely used in speech recognition, audio classification, and speaker
1264
+ * identification because they:
1265
+ * - Decorrelate Mel energies
1266
+ * - Compress information into lower-order coefficients
1267
+ * - Mimic human auditory perception
1268
+ * - Provide compact representation suitable for ML models
1269
+ *
1270
+ * **Pipeline Position:**
1271
+ * Final stage: STFT → Power → MelSpectrogram → Log → MFCC
1272
+ *
1273
+ * **Typical Output:**
1274
+ * 13-20 MFCC coefficients per frame, representing the spectral envelope shape.
1275
+ * Often the first coefficient (C0) represents energy and may be discarded.
1276
+ */
1277
+ export interface MfccParams {
1278
+ /**
1279
+ * Number of input Mel frequency bands (from MelSpectrogram)
1280
+ *
1281
+ * Must match the numMelBands from the preceding MelSpectrogram stage.
1282
+ *
1283
+ * Typical values: 20-40 bands
1284
+ */
1285
+ numMelBands: number;
1286
+ /**
1287
+ * Number of MFCC coefficients to output
1288
+ *
1289
+ * Common values:
1290
+ * - Speech recognition: 13 coefficients
1291
+ * - Speaker recognition: 20 coefficients
1292
+ * - Music: 13-20 coefficients
1293
+ *
1294
+ * Must be ≤ numMelBands. Lower coefficients capture envelope,
1295
+ * higher coefficients capture fine spectral detail.
1296
+ *
1297
+ * Default: 13
1298
+ */
1299
+ numCoefficients?: number;
1300
+ /**
1301
+ * Apply logarithm to input energies before DCT
1302
+ *
1303
+ * - true: Apply log (standard for MFCCs, matches human perception)
1304
+ * - false: Skip log (use when input is already in log domain)
1305
+ *
1306
+ * Default: true
1307
+ *
1308
+ * The log compression mimics human hearing's logarithmic loudness perception.
1309
+ */
1310
+ useLogEnergy?: boolean;
1311
+ /**
1312
+ * Cepstral liftering coefficient
1313
+ *
1314
+ * Liftering weights lower-order coefficients more than higher-order ones,
1315
+ * improving recognition performance by emphasizing the spectral envelope.
1316
+ *
1317
+ * - 0: No liftering (disabled)
1318
+ * - 22: Common value for speech (HTK standard)
1319
+ * - Higher values: Stronger emphasis on lower coefficients
1320
+ *
1321
+ * Default: 0 (disabled)
1322
+ *
1323
+ * Lifter formula: L[n] = 1 + (Q/2) * sin(πn/Q)
1324
+ * where Q is the liftering coefficient.
1325
+ */
1326
+ lifterCoefficient?: number;
1327
+ }
1093
1328
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/ts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7E;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;IAGvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjE;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAEvC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9D;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEhD;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,CACN,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,UAAU,KACjB,IAAI,CAAC;IAEV;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAExC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;IAEhC;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE1B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,IAAI,EAAE,YAAY,CAAC;IAEnB,+EAA+E;IAC/E,SAAS,EAAE,YAAY,CAAC;IAExB,wDAAwD;IACxD,WAAW,EAAE,YAAY,CAAC;IAE1B,sEAAsE;IACtE,iBAAiB,EAAE,YAAY,CAAC;IAEhC,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,YAAY,CAAC;IAEnB,qFAAqF;IACrF,eAAe,EAAE,YAAY,CAAC;IAE9B,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IAEtB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,IAAI,EAAE,YAAY,CAAC;IAEnB,yEAAyE;IACzE,SAAS,EAAE,YAAY,CAAC;IAExB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IAEnB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,SAAS,EAAE,YAAY,CAAC;IAExB,sCAAsC;IACtC,IAAI,EAAE,YAAY,CAAC;IAEnB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,SAAS,EAAE,YAAY,CAAC;IAExB,sCAAsC;IACtC,IAAI,EAAE,YAAY,CAAC;IAEnB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,eAAe,EAAE,YAAY,CAAC;IAE9B,4CAA4C;IAC5C,IAAI,EAAE,YAAY,CAAC;IAEnB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,eAAe,EAAE,YAAY,CAAC;IAE9B,uGAAuG;IACvG,cAAc,EAAE,YAAY,CAAC;IAE7B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IAEpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,+EAA+E;IAC/E,SAAS,EAAE,YAAY,CAAC;IAExB,iFAAiF;IACjF,WAAW,EAAE,YAAY,CAAC;IAE1B,8CAA8C;IAC9C,IAAI,EAAE,YAAY,CAAC;IAEnB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,eAAe,EAAE,YAAY,CAAC;IAE9B,wDAAwD;IACxD,cAAc,EAAE,YAAY,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,SAAS,EAAE,YAAY,CAAC;IAExB,wDAAwD;IACxD,IAAI,EAAE,YAAY,CAAC;IAEnB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,WAAW,sBAAsB;CAGtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,WAAW,uBAAuB;CAGvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/ts/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dspx",
3
- "version": "1.0.1",
3
+ "version": "1.1.2",
4
4
  "description": "High-performance DSP library with native C++ acceleration and Redis state persistence",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -10,11 +10,14 @@
10
10
  "src/native",
11
11
  "binding.gyp",
12
12
  "package.json",
13
+ "scripts",
13
14
  "README.md"
14
15
  ],
15
16
  "scripts": {
17
+ "install": "node scripts/install.js",
16
18
  "test": "node scripts/test.js",
17
19
  "test:clean": "node -e \"require('fs').rmSync('node_modules/.cache', {recursive: true, force: true})\" && npm test",
20
+ "test:install": "node scripts/test-install.js",
18
21
  "build:ts": "tsc",
19
22
  "build:native": "node-gyp rebuild",
20
23
  "build": "npm run build:native && npm run build:ts",
Binary file
Binary file
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Smart installation script for dspx native addon
5
+ *
6
+ * Strategy:
7
+ * - ARM architectures: Always compile locally (better performance tuning)
8
+ * - x64/ia32: Use prebuilt binaries from node-gyp-build (avoids C++ toolchain requirement)
9
+ *
10
+ * This ensures:
11
+ * 1. Most users (x64) get fast installs without needing build tools
12
+ * 2. ARM users get optimized builds for their specific hardware
13
+ */
14
+
15
+ import { arch, platform } from "os";
16
+ import { execSync } from "child_process";
17
+ import { existsSync } from "fs";
18
+ import { join, dirname } from "path";
19
+ import { fileURLToPath } from "url";
20
+
21
+ const __filename = fileURLToPath(import.meta.url);
22
+ const __dirname = dirname(__filename);
23
+ const projectRoot = join(__dirname, "..");
24
+
25
+ // Detect architecture
26
+ const architecture = arch();
27
+ const isArm = architecture.includes("arm") || architecture.includes("aarch");
28
+
29
+ console.log(
30
+ `\nDetected platform: ${platform()}, architecture: ${architecture}`
31
+ );
32
+
33
+ if (isArm) {
34
+ console.log(
35
+ "ARM architecture detected - compiling native addon locally for optimal performance..."
36
+ );
37
+
38
+ try {
39
+ // Check if node-gyp is available
40
+ try {
41
+ execSync("node-gyp --version", { stdio: "ignore" });
42
+ } catch (e) {
43
+ console.log("Installing node-gyp...");
44
+ execSync("npm install -g node-gyp", { stdio: "inherit" });
45
+ }
46
+
47
+ // Compile the native addon
48
+ console.log("Building native addon...");
49
+ execSync("node-gyp rebuild", {
50
+ cwd: projectRoot,
51
+ stdio: "inherit",
52
+ env: { ...process.env },
53
+ });
54
+
55
+ console.log("Native addon compiled successfully!");
56
+ } catch (error) {
57
+ console.error("Failed to compile native addon:");
58
+ console.error(error.message);
59
+ console.error("\nMake sure you have C++ build tools installed:");
60
+ console.error(" - macOS: xcode-select --install");
61
+ console.error(" - Linux: sudo apt-get install build-essential");
62
+ console.error(" - Windows: npm install --global windows-build-tools");
63
+ process.exit(1);
64
+ }
65
+ } else {
66
+ console.log("x64 architecture detected - using prebuilt binary...");
67
+
68
+ // Check if prebuild exists
69
+ const prebuildsDir = join(projectRoot, "prebuilds");
70
+
71
+ if (!existsSync(prebuildsDir)) {
72
+ console.warn(
73
+ "No prebuilds directory found. Falling back to local compilation..."
74
+ );
75
+
76
+ try {
77
+ execSync("node-gyp rebuild", {
78
+ cwd: projectRoot,
79
+ stdio: "inherit",
80
+ });
81
+ console.log("Native addon compiled successfully!");
82
+ } catch (error) {
83
+ console.error("Failed to compile native addon:");
84
+ console.error(error.message);
85
+ console.error(
86
+ "\nThis package requires prebuilt binaries or a C++ toolchain."
87
+ );
88
+ console.error(
89
+ " Please report this issue at: https://github.com/A-KGeorge/dspx/issues"
90
+ );
91
+ process.exit(1);
92
+ }
93
+ } else {
94
+ console.log("Using prebuilt binary - no compilation needed!");
95
+ }
96
+ }
97
+
98
+ console.log("Installation complete!\n");
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Post-install verification script
5
+ * Ensures the native addon loaded successfully
6
+ */
7
+
8
+ try {
9
+ // Try to load the native addon directly
10
+ const nodeGypBuild = await import("node-gyp-build");
11
+ const { dirname, join } = await import("path");
12
+ const { fileURLToPath } = await import("url");
13
+
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ const projectRoot = join(__dirname, "..");
17
+
18
+ const addon = nodeGypBuild.default(projectRoot);
19
+
20
+ console.log("Native addon loaded successfully!");
21
+ console.log(" dspx is ready to use.");
22
+ process.exit(0);
23
+ } catch (error) {
24
+ console.error("❌ Failed to load native addon:");
25
+ console.error(error.message);
26
+ console.error("\n💡 This usually means:");
27
+ console.error(" 1. Compilation failed (check logs above)");
28
+ console.error(" 2. No prebuilt binary for your platform");
29
+ console.error(" 3. Node.js version mismatch");
30
+ console.error("\nSee: https://github.com/A-KGeorge/dspx#installation");
31
+ process.exit(1);
32
+ }
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Test installation behavior
5
+ * Usage: node scripts/test-install.js
6
+ */
7
+
8
+ import { arch, platform } from "os";
9
+ import { existsSync, rmSync } from "fs";
10
+ import { execSync } from "child_process";
11
+ import { join, dirname } from "path";
12
+ import { fileURLToPath } from "url";
13
+
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ const projectRoot = join(__dirname, "..");
17
+
18
+ console.log("\nTesting dspx installation behavior\n");
19
+ console.log(`Platform: ${platform()}`);
20
+ console.log(`Architecture: ${arch()}`);
21
+
22
+ const isArm = arch().includes("arm") || arch().includes("aarch");
23
+ const buildDir = join(projectRoot, "build");
24
+ const prebuildsDir = join(projectRoot, "prebuilds");
25
+
26
+ console.log(
27
+ `\nBuild directory: ${existsSync(buildDir) ? " exists" : " missing"}`
28
+ );
29
+ console.log(
30
+ `Prebuilds directory: ${existsSync(prebuildsDir) ? " exists" : " missing"}`
31
+ );
32
+
33
+ console.log("\n Test Options:");
34
+ console.log("1. Test with prebuilds (simulate x64 user)");
35
+ console.log("2. Test without prebuilds (force compilation)");
36
+ console.log("3. Test current state");
37
+ console.log("4. Clean all build artifacts");
38
+
39
+ // For simplicity, run test 3 (current state)
40
+ console.log("\n Running test: Current state\n");
41
+
42
+ try {
43
+ // Try to load the module
44
+ const startTime = Date.now();
45
+
46
+ console.log("Attempting to load native addon...");
47
+
48
+ execSync("node scripts/postinstall-verify.js", {
49
+ cwd: projectRoot,
50
+ stdio: "inherit",
51
+ });
52
+
53
+ const elapsed = Date.now() - startTime;
54
+ console.log(`\n Success! Loaded in ${elapsed}ms`);
55
+
56
+ if (isArm) {
57
+ console.log("\n ARM detected: Module was compiled locally");
58
+ } else {
59
+ if (existsSync(prebuildsDir)) {
60
+ console.log("\n x64 detected: Module loaded from prebuilds");
61
+ } else {
62
+ console.log(
63
+ "\n💡 x64 detected: Module was compiled (no prebuilds available)"
64
+ );
65
+ }
66
+ }
67
+ } catch (error) {
68
+ console.error("\nFailed to load module");
69
+ console.error(error.message);
70
+ process.exit(1);
71
+ }
72
+
73
+ console.log("\nInstallation test complete!\n");
74
+
75
+ // Show next steps
76
+ console.log("Next steps:");
77
+ console.log(' - Run "npm test" to verify functionality');
78
+ console.log(" - Check PREBUILDS.md for prebuild generation");
79
+ if (!existsSync(prebuildsDir)) {
80
+ console.log(' - Run "npm run prebuildify" to generate prebuilds');
81
+ }
82
+ console.log("");
@@ -0,0 +1,24 @@
1
+ import { readdirSync } from "fs";
2
+ import { join } from "path";
3
+ import { spawn } from "child_process";
4
+ import { fileURLToPath } from "url";
5
+ import { dirname } from "path";
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const testDir = join(__dirname, "../src/ts/__tests__");
9
+
10
+ // Get all test files
11
+ const testFiles = readdirSync(testDir)
12
+ .filter((file) => file.endsWith(".test.ts"))
13
+ .map((file) => join(testDir, file));
14
+
15
+ // Run node test runner with all test files
16
+ const args = ["--import", "tsx", "--test", ...testFiles];
17
+ const child = spawn("node", args, {
18
+ stdio: "inherit",
19
+ shell: true,
20
+ });
21
+
22
+ child.on("exit", (code) => {
23
+ process.exit(code);
24
+ });
@@ -18,6 +18,9 @@
18
18
  #include "adapters/RlsStage.h" // RLS Adaptive Filter stage
19
19
  #include "adapters/WaveletTransformStage.h" // Wavelet Transform stage
20
20
  #include "adapters/HilbertEnvelopeStage.h" // Hilbert Envelope stage
21
+ #include "adapters/StftStage.h" // STFT (Short-Time Fourier Transform) stage
22
+ #include "adapters/MelSpectrogramStage.h" // Mel Spectrogram stage
23
+ #include "adapters/MfccStage.h" // MFCC (Mel-Frequency Cepstral Coefficients) stage
21
24
  #include "adapters/MatrixTransformStage.h" // Matrix Transform stage (PCA/ICA/Whitening)
22
25
  #include "adapters/GscPreprocessorStage.h" // GSC Preprocessor for adaptive beamforming
23
26
  #include "adapters/ChannelSelectorStage.h" // Channel selector for reducing channel count
@@ -574,6 +577,108 @@ namespace dsp
574
577
  return std::make_unique<dsp::adapters::HilbertEnvelopeStage>(windowSize, hopSize);
575
578
  };
576
579
 
580
+ // Factory for STFT (Short-Time Fourier Transform) stage
581
+ m_stageFactories["stft"] = [](const Napi::Object &params)
582
+ {
583
+ if (!params.Has("windowSize"))
584
+ {
585
+ throw std::invalid_argument("STFT: 'windowSize' is required");
586
+ }
587
+ size_t windowSize = params.Get("windowSize").As<Napi::Number>().Uint32Value();
588
+
589
+ // Get optional parameters with defaults
590
+ size_t hopSize = windowSize / 2; // Default: 50% overlap
591
+ if (params.Has("hopSize"))
592
+ {
593
+ hopSize = params.Get("hopSize").As<Napi::Number>().Uint32Value();
594
+ }
595
+
596
+ std::string method = "fft"; // Default: fft
597
+ if (params.Has("method"))
598
+ {
599
+ method = params.Get("method").As<Napi::String>().Utf8Value();
600
+ }
601
+
602
+ std::string type = "real"; // Default: real
603
+ if (params.Has("type"))
604
+ {
605
+ type = params.Get("type").As<Napi::String>().Utf8Value();
606
+ }
607
+
608
+ bool forward = true; // Default: forward transform
609
+ if (params.Has("forward"))
610
+ {
611
+ forward = params.Get("forward").As<Napi::Boolean>().Value();
612
+ }
613
+
614
+ std::string output = "magnitude"; // Default: magnitude
615
+ if (params.Has("output"))
616
+ {
617
+ output = params.Get("output").As<Napi::String>().Utf8Value();
618
+ }
619
+
620
+ std::string window = "hann"; // Default: hann window
621
+ if (params.Has("window"))
622
+ {
623
+ window = params.Get("window").As<Napi::String>().Utf8Value();
624
+ }
625
+
626
+ return std::make_unique<dsp::adapters::StftStage>(
627
+ windowSize, hopSize, method, type, forward, output, window);
628
+ };
629
+
630
+ // Factory for Mel Spectrogram stage
631
+ m_stageFactories["melSpectrogram"] = [](const Napi::Object &params)
632
+ {
633
+ if (!params.Has("filterbankMatrix") || !params.Has("numBins") || !params.Has("numMelBands"))
634
+ {
635
+ throw std::invalid_argument("MelSpectrogram: requires 'filterbankMatrix', 'numBins', 'numMelBands'");
636
+ }
637
+
638
+ Napi::Float32Array filterbankArray = params.Get("filterbankMatrix").As<Napi::Float32Array>();
639
+ size_t numBins = params.Get("numBins").As<Napi::Number>().Uint32Value();
640
+ size_t numMelBands = params.Get("numMelBands").As<Napi::Number>().Uint32Value();
641
+
642
+ std::vector<float> filterbank(filterbankArray.Data(),
643
+ filterbankArray.Data() + filterbankArray.ElementLength());
644
+
645
+ return std::make_unique<dsp::adapters::MelSpectrogramStage>(
646
+ filterbank, numBins, numMelBands);
647
+ };
648
+
649
+ // Factory for MFCC stage
650
+ m_stageFactories["mfcc"] = [](const Napi::Object &params)
651
+ {
652
+ if (!params.Has("numMelBands"))
653
+ {
654
+ throw std::invalid_argument("MFCC: 'numMelBands' is required");
655
+ }
656
+
657
+ size_t numMelBands = params.Get("numMelBands").As<Napi::Number>().Uint32Value();
658
+
659
+ // Optional parameters with defaults
660
+ size_t numCoefficients = 13; // Default: 13 MFCCs
661
+ if (params.Has("numCoefficients"))
662
+ {
663
+ numCoefficients = params.Get("numCoefficients").As<Napi::Number>().Uint32Value();
664
+ }
665
+
666
+ bool useLogEnergy = true; // Default: apply log
667
+ if (params.Has("useLogEnergy"))
668
+ {
669
+ useLogEnergy = params.Get("useLogEnergy").As<Napi::Boolean>().Value();
670
+ }
671
+
672
+ float lifterCoefficient = 0.0f; // Default: no liftering
673
+ if (params.Has("lifterCoefficient"))
674
+ {
675
+ lifterCoefficient = params.Get("lifterCoefficient").As<Napi::Number>().FloatValue();
676
+ }
677
+
678
+ return std::make_unique<dsp::adapters::MfccStage>(
679
+ numMelBands, numCoefficients, useLogEnergy, lifterCoefficient);
680
+ };
681
+
577
682
  // Factory for PCA Transform stage
578
683
  m_stageFactories["pcaTransform"] = [](const Napi::Object &params)
579
684
  {