PowerShell module for generating AcoustID/Chromaprint fingerprints from local audio files.
This module exports one public function:
Get-AcoustIDFingerprint
It decodes audio with NAudio and computes fingerprints via AcoustID/Chromaprint bindings.
PsAcoustId/PsAcoustId.psd1- module manifestPsAcoustId/PsAcoustId.psm1- module loader (dot-sources functions and exports Public commands)PsAcoustId/Public/- user-facing functions ({FunctionName}.ps1)PsAcoustId/Private/- internal helper functions ({FunctionName}.ps1)Build-Dependencies.ps1- dependency bootstrap/build script (writes artifacts toPsAcoustId/lib)PsAcoustId/lib/- compiled managed/native dependencies
- PowerShell 7+
- .NET SDK (used by
Build-Dependencies.ps1) - Git (used by
Build-Dependencies.ps1to clone dependency source)
Platform notes:
- macOS: Homebrew is required by the build script to install Chromaprint (
brew install chromaprint). - Windows/Linux: Build script attempts to fetch Chromaprint binaries from NuGet.
.aiff,.aif(AIFF).wav.mp3(requiresNAudio.Mpeg.dllinlib/).flac(requiresNAudio.Flac.dllinlib/)
Not supported:
.m4a/ AAC
git clone https://github.com/<your-org>/psAcoustID.git
cd psAcoustIDFrom repository root:
./Build-Dependencies.ps1 -CleanThis script:
- Builds
AcoustID.dllandNAudio.*.dll - Places binaries in
PsAcoustId/lib/ - Installs/copies native Chromaprint library for your platform
From repository root:
Import-Module ./PsAcoustId/PsAcoustId.psd1 -ForceVerify:
Get-Command -Module PsAcoustIdAfter building dependencies, copy the module folder into one of your module paths (current user scope shown):
$dest = Join-Path $HOME "Documents/PowerShell/Modules/PsAcoustId"
New-Item -ItemType Directory -Path $dest -Force | Out-Null
Copy-Item ./PsAcoustId/* $dest -Recurse -Force
Import-Module PsAcoustId -ForceIf you want others to install with Install-Module:
# one-time (create API key in PSGallery account)
$NuGetApiKey = "<PSGallery API Key>"
# from repository root
Publish-Module -Path ./PsAcoustId -NuGetApiKey $NuGetApiKeyUsers can then install it with:
Install-Module PsAcoustId -Scope CurrentUserGet-AcoustIDFingerprint -Path ./samples/test.flacGet-AcoustIDFingerprint -Path ./a.wav, ./b.mp3, ./c.flacGet-ChildItem ./music -File -Include *.wav,*.aif,*.aiff,*.mp3,*.flac -Recurse |
Get-AcoustIDFingerprintGet-ChildItem ./music -File -Include *.flac -Recurse |
Get-AcoustIDFingerprint -Parallel -ThrottleLimit 4Get-AcoustIDFingerprint returns objects with:
Path- input file pathDuration- duration in secondsFingerprint- generated Chromaprint fingerprint string
Example formatting:
Get-AcoustIDFingerprint -Path ./samples/test.wav |
Select-Object Path, Duration, Fingerprint |
Format-ListParameters:
-Path <string[]>(required, accepts pipeline input andFullNameby property name)-Parallel(optional switch)-ThrottleLimit <int>(optional, default = processor count)
- If you see missing DLL errors, re-run:
./Build-Dependencies.ps1 -Clean- If MP3/FLAC files fail to open, ensure the corresponding reader DLLs exist in
PsAcoustId/lib/. - On macOS, if native library loading fails, confirm
libchromaprint.dylibexists inPsAcoustId/lib/. .m4ais currently not supported by this module.
- The module only generates local fingerprints and does not call the AcoustID web API.
- Any local key file such as
PsAcoustId/AccoustIDAPIKeyis ignored by git and is not required for fingerprint generation. - Fingerprint generation currently supports 16-bit and 24-bit PCM decoding paths.
For attribution and upstream project links for bundled external binaries, see:
PsAcoustId/lib/README.mdPsAcoustId/THIRD-PARTY-NOTICES.mdPsAcoustId/licenses/