playlist-data-engine 1.5.7 → 1.5.8
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/core/analysis/MusicClassifier.d.ts +15 -27
- package/dist/core/analysis/MusicClassifier.d.ts.map +1 -1
- package/dist/core/parser/MetadataExtractor.d.ts +22 -6
- package/dist/core/parser/MetadataExtractor.d.ts.map +1 -1
- package/dist/playlist-data-engine.js +24 -24
- package/dist/playlist-data-engine.mjs +952 -983
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import type { MusicClassificationProfile } from '../types/AudioProfile.js';
|
|
|
3
3
|
* Supported model architectures for audio feature extraction.
|
|
4
4
|
* Each architecture requires different mel-band configurations:
|
|
5
5
|
* - `musicnn`: 96 mel bands - MusiCNN / MSD style models
|
|
6
|
-
* - `effnet`:
|
|
6
|
+
* - `effnet`: 96 mel bands, consumed as 128-frame patches - Discogs-EffNet embedding models
|
|
7
7
|
* - `vggish`: 64 mel bands - VGGish-based models (e.g., audioset classifiers)
|
|
8
8
|
* - `tempocnn`: 40 mel bands - TempoCNN-based models (e.g., tempo estimation)
|
|
9
9
|
*/
|
|
@@ -192,7 +192,7 @@ export declare function isSingleStepModel(config: ModelConfig): config is Single
|
|
|
192
192
|
* Used to select the correct feature extractor (mel-band count) and model class.
|
|
193
193
|
*
|
|
194
194
|
* Architecture → Mel Bands mapping:
|
|
195
|
-
* - effnet:
|
|
195
|
+
* - effnet: 96 bands in 128-frame patches (Discogs-EffNet)
|
|
196
196
|
* - vggish: 64 bands
|
|
197
197
|
* - tempocnn: 40 bands
|
|
198
198
|
* - musicnn: 96 bands (default)
|
|
@@ -326,7 +326,7 @@ export declare class MusicClassifier {
|
|
|
326
326
|
* Architecture-specific feature extractors.
|
|
327
327
|
* Each architecture requires different mel-band configurations:
|
|
328
328
|
* - musicnn: 96 bands (default extractor)
|
|
329
|
-
* - effnet:
|
|
329
|
+
* - effnet: 96 bands (same TensorflowInputMusiCNN features as musicnn)
|
|
330
330
|
* - vggish: 64 bands
|
|
331
331
|
* - tempocnn: 40 bands
|
|
332
332
|
*/
|
|
@@ -414,34 +414,20 @@ export declare class MusicClassifier {
|
|
|
414
414
|
* Clears all model caches (embedding, classifier, and resolved URLs).
|
|
415
415
|
*/
|
|
416
416
|
clearAllCaches(): void;
|
|
417
|
-
/**
|
|
418
|
-
* Computes 128-band mel-spectrogram features for Discogs-EffNet models.
|
|
419
|
-
*
|
|
420
|
-
* Unlike the standard musicnn extractor (96 bands), EffNet requires 128 mel bands.
|
|
421
|
-
* This method uses Essentia WASM's core MelBands algorithm directly.
|
|
422
|
-
*
|
|
423
|
-
* @param audioSignal - Mono audio signal at 16kHz sample rate
|
|
424
|
-
* @returns 2D array of mel-spectrogram frames, shape [frames][128]
|
|
425
|
-
*/
|
|
426
|
-
/**
|
|
427
|
-
* Creates a wrapper object that combines EssentiaJS algorithms with WASM utility methods.
|
|
428
|
-
* This is needed because EssentiaJS has algorithms (Windowing, Spectrum, etc.) but lacks
|
|
429
|
-
* utility methods like arrayToVector/vectorToArray which are on the WASM module directly.
|
|
430
|
-
*/
|
|
431
|
-
private createEssentiaWrapper;
|
|
432
|
-
private computeEffnetFeatures;
|
|
433
417
|
/**
|
|
434
418
|
* Gets the appropriate mel-spectrogram features for a given model architecture.
|
|
435
419
|
*
|
|
436
420
|
* Different architectures require different mel-band configurations:
|
|
437
421
|
* - musicnn: 96 bands (default)
|
|
438
|
-
* - effnet:
|
|
422
|
+
* - effnet: 96 bands (same features as musicnn)
|
|
439
423
|
* - vggish: 64 bands
|
|
440
424
|
* - tempocnn: 40 bands
|
|
441
425
|
*
|
|
442
426
|
* @param audioSignal - Mono audio signal at 16kHz sample rate
|
|
443
427
|
* @param architecture - The model architecture type
|
|
444
|
-
* @returns
|
|
428
|
+
* @returns For 'effnet': number[][] of mel frames. For all other
|
|
429
|
+
* architectures: the EssentiaTFInputExtractorOutput object that
|
|
430
|
+
* essentia.js model predict() methods expect
|
|
445
431
|
*/
|
|
446
432
|
private getFeaturesForArchitecture;
|
|
447
433
|
/**
|
|
@@ -461,8 +447,8 @@ export declare class MusicClassifier {
|
|
|
461
447
|
* 2. Classifier model produces class predictions from embeddings
|
|
462
448
|
*
|
|
463
449
|
* @param classifierUrl - URL to the classifier model (GraphModel format)
|
|
464
|
-
* @param embeddings - 2D array of embeddings, shape [
|
|
465
|
-
* @returns Promise resolving to 1D array of averaged
|
|
450
|
+
* @param embeddings - 2D array of embeddings, shape [patches][embedding_dim]
|
|
451
|
+
* @returns Promise resolving to 1D array of class predictions averaged across patches
|
|
466
452
|
*/
|
|
467
453
|
private runClassifierOnEmbeddings;
|
|
468
454
|
/**
|
|
@@ -496,13 +482,15 @@ export declare class MusicClassifier {
|
|
|
496
482
|
*
|
|
497
483
|
* EffNet models are TensorFlow.js GraphModels that expect:
|
|
498
484
|
* - Named inputs discovered dynamically from model signature
|
|
499
|
-
* - Mel-spectrogram shape: [batch=64,
|
|
485
|
+
* - Mel-spectrogram shape: [batch=64, time_frames=128, mel_bands=96]
|
|
500
486
|
*
|
|
501
|
-
* The
|
|
487
|
+
* The input axis order is time-major: each of the 64 patches is 128
|
|
488
|
+
* consecutive TensorflowInputMusiCNN frames of 96 mel bands. The 'bs64'
|
|
489
|
+
* in the model name means a fixed batch size of 64.
|
|
502
490
|
*
|
|
503
491
|
* @param model - TensorFlow.js GraphModel instance
|
|
504
|
-
* @param features - 2D array of mel-spectrogram frames, shape [frames][
|
|
505
|
-
* @returns 2D array of embeddings, shape [
|
|
492
|
+
* @param features - 2D array of mel-spectrogram frames, shape [frames][96]
|
|
493
|
+
* @returns 2D array of embeddings, one per patch, shape [patches][embedding_dim]
|
|
506
494
|
*/
|
|
507
495
|
private runEffnetEmbedding;
|
|
508
496
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MusicClassifier.d.ts","sourceRoot":"","sources":["../../../src/core/analysis/MusicClassifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,0BAA0B,EAG7B,MAAM,0BAA0B,CAAC;AAKlC;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,qEAAqE;IACrE,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,aAAa,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,WAAW,GAAG,qBAAqB,GAAG,kBAAkB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,cAAc,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,YAAY,CAAC,EAAE,WAAW,CAAC;QAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;KAC1B,CAAC;IAEF,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAeD,eAAO,MAAM,iBAAiB,UAiZ7B,CAAC;AA0CF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,kBAAkB,CAGhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,qBAAqB,CAEtF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,iBAAiB,GACjC,iBAAiB,CAuBnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,aAAa,GAC7B,aAAa,CA8Bf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,EAAE,CAajE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAMlE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAoBlE;AASD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB;;;;gCAIA,iBAAiB;iCACZ,aAAa;;;;;gCAKlB,iBAAiB;;;;4BAIpB,iBAAiB;;CAEvC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAuB1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,CAWxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAKxE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;oBACW,WAAW,EAAE;mBACf,UAAU,EAAE;2BACI,kBAAkB,EAAE;CACjE,CAAC;AAcX,qBAAa,eAAe;IACxB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB,CAA+B;IAE1D;;;;OAIG;IACH,OAAO,CAAC,oBAAoB,CAA+B;IAE3D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,CAA0C;gBAEhD,OAAO,GAAE,sBAA2B;IA8BhD;;;OAGG;YACW,kBAAkB;IAgChC;;;;;;;;;;;;OAYG;YACW,mBAAmB;IAmCjC;;;;;;;;;;;;OAYG;YACW,kBAAkB;IA6ChC;;;;;;;;;;;OAWG;IACH;;;;;OAKG;YACW,gCAAgC;IA+C9C;;;;;;;;;;OAUG;YACW,iBAAiB;IAkD/B;;;;;;;;OAQG;IACI,mBAAmB,IAAI,IAAI;IAalC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IASnC;;OAEG;IACI,cAAc,IAAI,IAAI;IAM7B
|
|
1
|
+
{"version":3,"file":"MusicClassifier.d.ts","sourceRoot":"","sources":["../../../src/core/analysis/MusicClassifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,16 +64,32 @@ export declare class MetadataExtractor {
|
|
|
64
64
|
*/
|
|
65
65
|
static parseMetadata(metadata: unknown): Record<string, unknown> | null;
|
|
66
66
|
/**
|
|
67
|
-
* Extract genre with support for string or array formats
|
|
68
|
-
*
|
|
69
|
-
* -
|
|
70
|
-
* -
|
|
67
|
+
* Extract genre with support for string or array formats.
|
|
68
|
+
* Sources are checked in priority order; first non-empty wins:
|
|
69
|
+
* - `genre` field as a string
|
|
70
|
+
* - `genre` field as an array (first element)
|
|
71
|
+
* - OpenSea `attributes` array with `trait_type` of "genre" (case-insensitive)
|
|
72
|
+
* - `attributes` as an object keyed by trait name (e.g. `attributes.Genre`)
|
|
73
|
+
* - malformed `attribute ` key (literal trailing space) with `.genre`
|
|
74
|
+
* Stays strict: only fields literally named "genre" are considered
|
|
75
|
+
* (no fallback to `category` or similar).
|
|
71
76
|
*/
|
|
72
77
|
static extractGenre(data: Record<string, unknown>): string;
|
|
73
78
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
79
|
+
* Extract tags from track metadata, normalized to a deduped,
|
|
80
|
+
* lowercased, trimmed string[] with empties removed.
|
|
81
|
+
* Sources (concatenated, then deduped):
|
|
82
|
+
* - `tags` field as an array, or a single comma-separated string
|
|
83
|
+
* - `properties.tags` array (when `properties` is an object)
|
|
84
|
+
* - OpenSea `attributes` array with `trait_type` of "tag"/"tags" (case-insensitive)
|
|
85
|
+
* - `attributes` as an object keyed by trait name (e.g. `attributes.Tags`)
|
|
76
86
|
*/
|
|
87
|
+
static extractTags(data: Record<string, unknown>): string[];
|
|
88
|
+
/**
|
|
89
|
+
* Normalize a list of raw tag values into a deduped, lowercased,
|
|
90
|
+
* trimmed string[] with empties removed.
|
|
91
|
+
*/
|
|
92
|
+
private static normalizeTags;
|
|
77
93
|
static convertAttributes(attributes: unknown): Record<string, string | number> | null;
|
|
78
94
|
/**
|
|
79
95
|
* Safely extract a URI string from a nested object path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataExtractor.d.ts","sourceRoot":"","sources":["../../../src/core/parser/MetadataExtractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,iBAAiB;IAC1B;;;;;;;;;OASG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAYpE;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAY5E;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAsBpE;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAczE;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAUjE;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAsBlE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0BvE
|
|
1
|
+
{"version":3,"file":"MetadataExtractor.d.ts","sourceRoot":"","sources":["../../../src/core/parser/MetadataExtractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,iBAAiB;IAC1B;;;;;;;;;OASG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAYpE;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAY5E;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAsBpE;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAczE;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAUjE;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAsBlE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0BvE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAmD1D;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE;IAmD3D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAW5B,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAerF;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAWlC"}
|