Skip to main content
Glama
JuzzyDee

audio_visualizer_rs

by JuzzyDee

audio_visualizer_rs

一个让 Claude 能够“听”音乐的 MCP 服务器。

将任意音频文件交给 Claude,它就能告诉你调性、速度、动态、音色、打击乐特征、立体声场、结构段落,以及音乐如何随时间演变——全部来自原始音频分析,无需图像,无需猜测,上下文窗口占用不到 1%。

并排比较两首曲目。检测音乐在结构上发生变化的位置——前奏、主歌、副歌、桥段——并放大到关键时刻。

这是什么?

LLM 能看(视觉)能读(文本),但听不见。本项目通过运行真实的音频分析——与音乐信息检索研究中使用的 DSP 技术相同——并返回 Claude 可以推理的结构化数值数据,来弥合这一差距。

它是一个 MCP 服务器,将音频分析作为工具暴露给 Claude 按需调用。让 Claude 分析一首歌,它会解码音频,运行频谱/和声/节奏/打击乐分析,并以紧凑的文本形式返回结果。没有频谱图,没有图像,不浪费 token。

对 60 秒曲目的完整分析在 2 秒内完成(包括声源分离)。纯 Rust 实现。无需 Python、FFmpeg 或系统依赖。

Related MCP server: Claud-Ear

特性

  • 音频解码 -- 通过 Symphonia 支持 mp3、wav、flac、ogg、aac(纯 Rust)

  • 频谱分析 -- 质心(亮度)、带宽(丰富度)、滚降、平坦度(调性)

  • 频段能量 -- 7 个标准制作频段(次低音到极高频)的 RMS 能量,用于混音诊断

  • 频谱对比度 -- 每个频段的峰值与谷值(dB),揭示清晰度与浑浊度

  • 动态范围 -- 波峰因数、响度范围(第 95 百分位 - 第 5 百分位)、峰值 dBFS

  • LUFS 响度 -- EBU R128 综合响度(ITU-R BS.1770-4 立体声通道求和)、真峰值(dBTP)、响度范围(LRA)、流媒体平台目标。已通过 FabFilter Pro-L 2 验证,误差为 0.0 dB。

  • 立体声场分析 -- 相位相关性(单声道兼容性)、立体声宽度(中/侧比值)、左右平衡、单声道兼容性评分。提供逐帧时间序列,精确定位相位问题发生的位置。

  • 时间特征 -- RMS 能量(响度)、过零率(纹理)

  • 音色 -- 13 个 MFCC(梅尔频率倒谱系数)

  • 和声分析 -- 色度图、调性检测(Krumhansl-Schmuckler 算法)、tonnetz

  • 节奏分析 -- 速度估计、节拍跟踪、起始点检测、速度稳定性

  • 打击乐特征 -- 谐波/打击乐源分离(HPSS)、起音锐度、起始点密度

  • 段落边界检测 -- 多特征新颖性分析检测结构变化(能量、频谱、和声、纹理)。支持摘要→缩放工作流:先获取地图,再深入感兴趣的时刻

  • A/B 比较 -- 并排分析两首曲目,生成紧凑的差异表,突出显示响度、动态、频谱平衡、立体声场、调性和速度的差异

  • 时间序列数据 -- 以可选的精度跟踪每个特征随时间的演变

  • Token 高效 -- 降采样输出,校准后适合上下文窗口

实际效果

观看一个全新的 Claude 在单次会话中分析四首曲目 —— 一首原创钢琴/铜管作品、一首带段落边界的《波西米亚狂想曲》完整结构、一次带制作建议的 A/B 混音比较,以及一段雷雨天气的现场录音,其中它把音乐指标判定为“无意义”与“物理真实”的对比。所有四次分析都适合放在同一个上下文窗口中。

安装

Claude Desktop — 一键安装

GitHub Releases 下载适用于您平台的 .mcpb 包并打开。Claude Desktop 将处理其余部分——无需配置文件、终端或设置。

平台

文件

macOS(Apple Silicon)

audio-analyzer-darwin-arm64.mcpb

macOS(Intel)

audio-analyzer-darwin-x64.mcpb

Windows

audio-analyzer-win32-x64.mcpb

Linux

audio-analyzer-linux-x64.mcpb

Claude Code — Homebrew(macOS)

brew tap JuzzyDee/tap
brew install audio-analyzer
claude mcp add --scope user audio-analyzer -- $(which audio-analyzer-mcp)

Claude Code — 手动安装(所有平台)

GitHub Releases 下载适用于您平台的 mcp-server 二进制文件,然后:

claude mcp add --scope user audio-analyzer -- /path/to/mcp-server

从源码构建

git clone https://github.com/JuzzyDee/audio-analyzer-rs.git
cd audio-analyzer-rs
cargo build --release
claude mcp add --scope user audio-analyzer -- target/release/mcp-server

重启 Claude Desktop。音频分析工具将在您的对话中可用。

注意:这是一个使用 stdio 传输的本地 MCP 服务器,因此需要 Claude Code 或 Claude Desktop。它不适用于浏览器或移动应用中的 claude.ai。

使用方法

重要:此工具分析您本地机器上的文件。请将完整文件路径(例如 /Users/you/Music/song.mp3)提供给 Claude——不要尝试上传或附加文件到聊天中。Claude 将直接从磁盘读取文件。

CLI(独立)

cargo run --bin cli -- /path/to/song.mp3
cargo run --bin cli -- compare /path/to/mix_v1.mp3 /path/to/mix_v2.mp3

MCP 工具

配置完成后,Claude 可以直接调用这些工具:

工具

功能

audio_info

基本文件信息:时长、采样率、采样数

spectral_features

亮度、丰富度、响度、纹理、音色(MFCC)、频段能量、频谱对比度、动态范围、LUFS 响度、立体声场

harmonic_analysis

调性检测、音高类别分布、tonnetz

rhythm_analysis

速度(BPM)、节拍位置、速度稳定性

full_analysis

以上所有功能一次调用,外加打击乐特征(HPSS)、立体声场和段落边界。推荐工作流:先不带分辨率调用以获取摘要和段落地图,然后使用高分辨率的 start_time/end_time 放大到感兴趣的段落

compare

A/B 比较两首曲目——分析两者并返回紧凑的差异表

示例:full_analysis 输出

以下是 full_analysis 对一首 60 秒爵士三重奏曲目的返回结果:

═══ Full Audio Analysis ═══
File: /music/jazz_trio.mp3
Duration: 60.62 sec | Sample rate: 48000 Hz | Samples: 2909952
Analysis completed in: 2.02s

── Spectral/Temporal Features ──
Centroid (brightness):  2812 Hz — moderate
Bandwidth (richness):   3933 Hz — complex
Rolloff (energy focus): 6489 Hz
Flatness (tonality):    0.0824 — strongly tonal
RMS Energy (loudness):  0.1160
Zero Crossing Rate:     0.0402 — mixed
MFCCs (timbre):         [-141.3, 13.7, 0.9, 7.7, -2.5, 3.1, -1.7, 2.3, -0.9, 1.0, -0.5, 0.9, 0.6]

── Frequency Band Energy ──
Sub bass  (20–60 Hz):     0.007803
Bass      (60–250 Hz):    0.013043
Low-mid   (250–500 Hz):   0.004906
Mid       (500–2k Hz):    0.002165
Upper-mid (2k–4k Hz):     0.000203
Presence  (4k–6k Hz):     0.000166
Brilliance(6k–20k Hz):    0.000089

── Spectral Contrast (peak–valley dB) ──
Sub bass  (20–60 Hz):     10.4
Bass      (60–250 Hz):    20.4
Low-mid   (250–500 Hz):   26.0
Mid       (500–2k Hz):    30.9
Upper-mid (2k–4k Hz):     19.4
Presence  (4k–6k Hz):     16.6
Brilliance(6k–20k Hz):    55.2

── Harmonic Content ──
Estimated key: E minor (confidence: 0.538)
Top pitch classes:
   1. G  0.627 ███████████████
   2. E  0.561 ██████████████
   3. C  0.512 ████████████
   4. D# 0.495 ████████████
   5. F# 0.487 ████████████
   6. C# 0.459 ███████████

── Rhythm ──
Tempo: 84.0 BPM (confidence: 0.316)
Beats detected: 69
Mean tempo: 84.3 BPM | Median: 84.0 BPM
Stability: 0.951 (0=free, 1=locked)

── Percussive Character ──
Percussive ratio:    0.277 — harmony-dominated
Onset density:       7.0/sec — very dense
Peak attack sharp:   1.000

── Dynamic Range ──
Peak:            -0.44 dBFS
Crest factor:    16.2 dB — very dynamic
Loudness range:  76.4 dB — very dynamic
Quiet sections:  -87.5 dBFS | Loud sections: -11.1 dBFS

── Loudness (EBU R128) ──
Integrated:      -12.1 LUFS
True peak:       0.0 dBTP
Loudness range:  3.7 LU
Spotify (-14):   turned DOWN 1.9 dB | Apple (-16): turned DOWN 3.9 dB | YouTube (-14): turned DOWN 1.9 dB

── Stereo Field ──
Phase correlation:   0.257 avg, -0.822 min — some phase issues
Phase warnings:      20.6% of frames have negative correlation
Stereo width:        0.812 avg, 2.747 max — wide
Balance:             -0.095 — slightly left
Mono compatibility:  0.620 avg, 0.117 min — significant mono loss

── Section Boundaries ──
  Working BPM:     84 (confidence: 0.32)
  Boundaries:      2
     0:18.3s  energy+spectral+texture (confidence: 0.85)
     0:42.1s  energy+harmonic (confidence: 0.67)

当您添加 resolution: "medium" 时,输出还会包含一个时间序列表,显示每个特征在曲目时长内的变化——让 Claude 看到前奏的铺垫、动态的独奏部分和安静的尾声。

时间序列分辨率

所有分析工具都接受可选的 resolution 参数,用于控制时间序列输出:

预设

数据点/秒

使用场景

"low"

~0.5/秒

大致概览,相当于从频谱图图像中目测

"medium"

~1/秒

大多数分析任务的良好默认值

"high"

~4/秒

用于短段落或放大过渡的详细视图

您也可以传入数字字符串(例如 "20")来自定义速率。

如果不带 resolution,工具仅返回摘要统计信息(整个曲目的平均值)。带上的话,您将获得一个紧凑的 TSV 表格,显示特征随时间的演变——质心、RMS、动态范围、色度、起始点强度、打击乐比例、频段能量、频谱对比度等,全部对齐到同一时间轴。

预设针对 token 效率进行了校准。一首 3 分钟的曲目在 "medium" 分辨率下会产生大约 180 行数据——足以跟踪音乐结构而不会撑爆上下文窗口。

架构

audio file
    |
    +---> load_audio()          -- Symphonia decodes to mono f32 samples
    |         |
    |         v
    |     compute_spectrogram() -- STFT via rustfft, time-frequency matrix
    |         |
    |         +---> spectral.rs    -- centroid, bandwidth, rolloff, flatness, MFCCs, band energy, contrast
    |         +---> temporal.rs    -- RMS energy, zero crossing rate, dynamic range
    |         +---> harmonic.rs    -- chromagram, key detection, tonnetz
    |         +---> rhythm.rs      -- onset detection, tempo, beat tracking
    |         +---> percussive.rs  -- HPSS (source separation), attack sharpness, onset density
    |         +---> sections.rs    -- section boundary detection (multi-feature novelty)
    |
    +---> load_audio_stereo()   -- preserves L/R channels
              |
              +---> stereo.rs      -- phase correlation, width, balance, mono compatibility
              +---> temporal.rs    -- LUFS loudness (ITU-R BS.1770-4 stereo channel summing)
    |
    v
downsample.rs                   -- bin-average to target resolution, format as TSV

两个二进制文件共享同一个分析库:

  • clisrc/main.rs)——运行所有分析并打印结果

  • mcp-serversrc/mcp_server.rs)——通过 rmcp 在 stdio JSON-RPC 上暴露工具

关键依赖项:symphonia(音频解码)、rustfft(FFT)、rmcp(MCP SDK)。

更新日志

版本历史请参阅 CHANGELOG.md

许可证

MIT 许可证。详情请参阅 LICENSE

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
10Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.

  • MCP server for Producer/Riffusion AI music generation

  • Augments MCP Server - A comprehensive framework documentation provider for Claude Code

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JuzzyDee/audio-analyzer-rs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server