{"id":31830992,"url":"https://github.com/sfluor/musig","last_synced_at":"2025-10-11T21:29:57.558Z","repository":{"id":45972101,"uuid":"174857089","full_name":"sfluor/musig","owner":"sfluor","description":"A shazam like tool to store songs fingerprints and retrieve them","archived":false,"fork":false,"pushed_at":"2023-02-25T05:14:27.000Z","size":2690,"stargazers_count":443,"open_issues_count":3,"forks_count":30,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-14T16:56:11.549Z","etag":null,"topics":["audio","audio-processing","digital-signal-processing","go","golang","microphone","musig","shazam","song"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sfluor.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-03-10T17:29:35.000Z","updated_at":"2025-08-06T10:49:53.000Z","dependencies_parsed_at":"2022-07-18T12:19:25.923Z","dependency_job_id":"3b5d0930-99e9-4be0-bb28-724f3f9f7414","html_url":"https://github.com/sfluor/musig","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sfluor/musig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfluor%2Fmusig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfluor%2Fmusig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfluor%2Fmusig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfluor%2Fmusig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sfluor","download_url":"https://codeload.github.com/sfluor/musig/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfluor%2Fmusig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279008860,"owners_count":26084518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-processing","digital-signal-processing","go","golang","microphone","musig","shazam","song"],"created_at":"2025-10-11T21:29:42.375Z","updated_at":"2025-10-11T21:29:57.553Z","avatar_url":"https://github.com/sfluor.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# musig :speaker:\n\n[![GoDoc](https://godoc.org/github.com/sfluor/musig?status.svg)](https://godoc.org/github.com/sfluor/musig)\n[![CircleCI](https://circleci.com/gh/sfluor/musig/tree/master.svg?style=svg)](https://circleci.com/gh/sfluor/musig/tree/master)\n\nA shazam-like tool that allows you to compute song's fingerprints and reverse lookup song names.\n\nIt's more or less an implementation of the shazam paper as described in [this awesome article](http://coding-geek.com/how-shazam-works/)\n\n## Installation\n\nYou will need to have [go](https://golang.org/doc/install) on your computer (version \u003e 1.11 to be able to use go modules).\n\nYou will also need to have [portaudio](http://www.portaudio.com/) installed (`brew install portaudio` on macOS, `apt install portaudio19-dev` on Ubuntu / Debian, for other distributions you can search for the `portaudio` package), it is required for the `listen` command that listens on your microphone to match the recording against the database.\n\nTo build the binary:\n\n```bash\ngit clone git@github.com:sfluor/musig.git\ncd musig\nmake\n```\n\nYou will then be able to run the binary with:\n\n`./bin/musig help`\n\n## Usage\n\n![musig usage](./docs/musig.gif)\n\nTo do some testing you can download `wav` songs by doing `make download`.\n\nLoad them with `./bin/musig load \"./assets/dataset/wav/*.wav\"`\n\nAnd try to find one of your song name with:\n\n`./bin/musig read \"$(ls ./assets/dataset/wav/*.wav | head -n 1)\"`\n\nYou can also try to use it with your microphone using the `listen` command:\n\n`./bin/musig listen`\n\nIf you want to record a sample and reuse it multiple times after you can also use the `record` command:\n\n`./bin/musig record`\n\nFor more details on the usage see the help command:\n\n```\nA shazam like CLI tool\n\nUsage:\n  musig [command]\n\nAvailable Commands:\n  help        Help about any command\n  listen      listen will record the microphone input and try to find a matching song from the database (Ctrl-C will stop the recording)\n  load        Load loads all the audio files matching the provided glob into the database (TODO: only .wav are supported for now)\n  read        Read reads the given audio file trying to find it's song name\n  record      record will record the microphone input and save the signal to the given file\n  spectrogram spectrogram generate a spectrogram image for the given audio file in png (TODO: only .wav are supported for now)\n\nFlags:\n      --database string   database file to use (default \"/tmp/musig.bolt\")\n  -h, --help              help for musig\n\nUse \"musig [command] --help\" for more information about a command.\n```\n\n## Testing\n\nTo run the tests you can use `make test` in the root directory.\n\n## TODOs\n\n- [ ] improve the documentation\n- [ ] support for `mp3` files\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfluor%2Fmusig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsfluor%2Fmusig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfluor%2Fmusig/lists"}