audio-duplicates
Version:
Fast audio duplicate detection using Chromaprint fingerprinting
83 lines (70 loc) ⢠2.93 kB
JavaScript
/**
* Demo script showing how the audio duplicates library would work
* This runs without requiring the C++ addon to be built
*/
console.log('šµ Audio Duplicates Library - Demo\n');
console.log('This is what the audio duplicates library can do:\n');
console.log('š CLI Usage Examples:');
console.log(' npx audio-duplicates scan /path/to/music');
console.log(' npx audio-duplicates compare song1.mp3 song2.mp3');
console.log(' npx audio-duplicates fingerprint mysong.mp3');
console.log();
console.log('š» API Usage Example:');
console.log(`
const audioDuplicates = require('audio-duplicates');
async function findDuplicates() {
// Scan directory with progress tracking
const duplicates = await audioDuplicates.scanDirectoryForDuplicates('/music', {
threshold: 0.85,
onProgress: (progress) => {
console.log(\`\${progress.current}/\${progress.total}: \${progress.file}\`);
}
});
// Results would look like:
console.log('Duplicate groups found:', duplicates);
/*
[
{
filePaths: [
'/music/song.mp3',
'/music/backup/song_copy.mp3',
'/music/song_320kbps.mp3'
],
avgSimilarity: 0.97
}
]
*/
}
// Compare individual files
async function compareFiles() {
const fp1 = await audioDuplicates.generateFingerprint('song1.mp3');
const fp2 = await audioDuplicates.generateFingerprint('song2.mp3');
const result = await audioDuplicates.compareFingerprints(fp1, fp2);
console.log('Similarity:', result.similarityScore); // 0.95
console.log('Are duplicates:', result.isDuplicate); // true
}
`);
console.log('ā” Performance Features:');
console.log(' ⢠Native C++ implementation with Chromaprint');
console.log(' ⢠~200x faster than JavaScript fingerprinting');
console.log(' ⢠Handles 10,000+ files efficiently');
console.log(' ⢠Memory usage: ~4KB per minute of audio');
console.log(' ⢠Fast O(1) lookups with inverted index');
console.log();
console.log('šÆ Detection Capabilities:');
console.log(' ⢠Exact duplicates (same file, different location)');
console.log(' ⢠Near duplicates (different bitrate/encoding)');
console.log(' ⢠Handles MP3, WAV, FLAC, OGG, M4A, AAC, WMA');
console.log(' ⢠Sample rate and format independent');
console.log(' ⢠Robust against audio processing artifacts');
console.log();
console.log('š§ To actually use this library:');
console.log(' 1. Install system dependencies:');
console.log(' macOS: brew install chromaprint libsndfile');
console.log(' Ubuntu: sudo apt-get install libchromaprint-dev libsndfile1-dev');
console.log(' 2. Build the addon: npm run build');
console.log(' 3. Run your code or use the CLI tool');
console.log();
console.log('š For complete documentation, see README.md');
console.log('š§Ŗ For working examples, see examples/basic-usage.js');
console.log('\n⨠Ready to detect audio duplicates at scale!');