Turn audio into structured analysis and annotated visualizations for AI perception
Project description
sense-music
Turn audio into structured analysis and annotated visualizations for AI perception. Liner notes for an AI.
Built by humanjava.com — find this and other tools for the agentic age at huje.tools.
Install
pip install sense-music
Quick Start
from sense_music import analyze
result = analyze("song.mp3")
print(result.summary)
result.save("output/")
Full Example
from sense_music import analyze
result = analyze("song.mp3")
# Structured data
print(f"{result.bpm.tempo} BPM, {result.key.key} {result.key.mode}")
print(f"Genre: {result.genre}, Mood: {', '.join(result.mood)}")
# Sections
for s in result.sections:
print(f" {s.label}: {s.start:.1f}s — {s.end:.1f}s")
# Lyrics (requires whisper)
for line in result.lyrics:
print(f" [{line.start:.1f}s] {line.text}")
# Save everything
result.save("output/") # spectrogram.png, waveform.png, analysis.json, analysis.html
result.render_page("song.html") # self-contained HTML report
Skip Lyrics
If you don't have Whisper installed or want faster analysis:
result = analyze("song.mp3", lyrics=False)
What You Get
| Output | Description |
|---|---|
result.spectrogram |
PIL Image — annotated mel spectrogram with section markers and energy curve |
result.waveform |
PIL Image — waveform with colored section regions |
result.bpm |
BPMInfo(tempo, confidence) |
result.key |
KeyInfo(key, mode, confidence) |
result.sections |
List of Section(label, start, end) |
result.lyrics |
List of LyricLine(start, end, text) |
result.energy_curve |
Per-second normalized energy values |
result.genre |
Simple genre classification |
result.mood |
List of mood descriptors |
result.summary |
Natural language track description |
Dependencies
- librosa — audio analysis
- matplotlib — visualization
- Pillow — image handling
- openai-whisper — lyrics transcription (optional via
lyrics=False)
Usage & Copyright
You are responsible for ensuring you have the legal right to analyze any audio you submit to this tool, whether running locally or via the hosted service at huje.tools. sense-music provides compute and analysis only — it does not store, host, or redistribute audio content. By using this tool, you accept full responsibility for the content you process and how you use the results.
For details, see huje.tools/support.
License
MIT — Humanjava Enterprises Inc.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sense_music-0.1.4.tar.gz.
File metadata
- Download URL: sense_music-0.1.4.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac316674c3a4cd74a26a97e64ca40a0e433f64e03b97eacc4c88c3e0ce3884a0
|
|
| MD5 |
bdc34a6301c7541153a8ec9e97a9f026
|
|
| BLAKE2b-256 |
7347775a274c3f396972f6517ad59a4b40c9f65b6d83ed99ff2ee0d33fff5876
|
File details
Details for the file sense_music-0.1.4-py3-none-any.whl.
File metadata
- Download URL: sense_music-0.1.4-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc6bfb63c8b93e3ff0752c318b0d9bd0cdf4119551e020104f6eb55fe82a1725
|
|
| MD5 |
11f362b21b6e8882d8843427a9dd67d3
|
|
| BLAKE2b-256 |
8c3e450adcc695bd64fb9102fbad4baffb405e70642da0a301c855a20cd5a35d
|