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/README.md +56 -16
- package/dist/bindings.d.ts +272 -1
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +419 -1
- package/dist/bindings.js.map +1 -1
- package/dist/types.d.ts +235 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -1
- package/prebuilds/darwin-arm64/dspx.node +0 -0
- package/prebuilds/win32-x64/dspx.node +0 -0
- package/scripts/install.js +98 -0
- package/scripts/postinstall-verify.js +32 -0
- package/scripts/test-install.js +82 -0
- package/scripts/test.js +24 -0
- package/src/native/DspPipeline.cc +105 -0
- package/src/native/adapters/MelSpectrogramStage.h +211 -0
- package/src/native/adapters/MfccStage.h +220 -0
- package/src/native/adapters/StftStage.h +466 -0
- package/src/native/core/DctEngine.h +172 -0
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/ts/types.ts"],"names":[],"mappings":"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"}
|
|
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.
|
|
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("");
|
package/scripts/test.js
ADDED
|
@@ -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 ¶ms)
|
|
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 ¶ms)
|
|
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 ¶ms)
|
|
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 ¶ms)
|
|
579
684
|
{
|