Local-first acoustic fingerprint search, alignment, and WASM workbench for MoonBit.
Dependencies
git clone https://github.com/lin2077-zeming/MoonEcho.git
cd MoonEcho
moon update
moon check --target all --deny-warn
moon test --target native --deny-warnmoon check
moon test
moon run cmd/moonecho
moon run examples/basic
moon run examples/wav-adapter
moon run examples/spectrum
moon run examples/fingerprint
moon run examples/index
moon run examples/matchmoon run cmd/moonecho -- version
moon run cmd/moonecho -- index --input track.wav --output track.idx --name demo
moon run cmd/moonecho -- index --manifest tracks.tsv --output library.idx
moon run cmd/moonecho -- index --input clip.wav --output library.idx --id 2 --append
moon run cmd/moonecho -- match --index track.idx --input clip.wav
moon run cmd/moonecho -- info --index library.idx --json
moon run cmd/moonecho -- bench --jsonnpm run build:demo
npm run serve:demoMoonEcho (月响) v0.1.0: Local-first acoustic fingerprint search and audio alignment toolkit///|
fn main {
println(status())
}///|
fn inspect_wav(bytes : Array[Int]) -> Unit raise {
let audio = @audio.load_wav_mono(bytes, target_sample_rate=16000)
println(audio.frame_count())
}///|
let audio = @audio.load_wav_mono(bytes, target_sample_rate=16000)
///|
let config = @spectrum.SpectrumConfig::new(window_length=1024, hop_size=512)
///|
let result = @spectrum.spectrogram(audio, config)
///|
let peaks = @spectrum.extract_peaks(result, @spectrum.PeakConfig::new())///|
let config = @fingerprint.HashConfig::new()
///|
let fp = @fingerprint.fingerprint(
peaks,
config,
frame_count=result.magnitudes.length(),
bin_count=result.frequencies.length(),
)
///|
let encoded = @fingerprint.encode(fp)let index = @index.FingerprintIndex::new(config)
index.add_track(1, "track-a", fingerprint)
let snapshot = @index.encode(index)
let restored = @index.decode(snapshot)let config = @match.MatchConfig::new(min_votes=3, min_confidence=0.2)
let result = @match.match_fingerprint(index, query, config)
println(@match.status_label(result.status))moonecho index # single track, manifest, or append
moonecho match # search and optional sample alignment
moonecho info # inspect snapshot metadata and tracks
moonecho bench # robustness and performance report
fn project_name() -> Stringfn project_version() -> StringInstall
Download zipLocal-first acoustic fingerprint search, alignment, and WASM workbench for MoonBit.
Dependencies