Skip to main content
Glama

🎵 Audio Sonic MCP

Tests License: MIT Python 3.10+ MCP

将任何歌曲转化为结构化的“声音签名”——提取节奏、音乐调性、512 维 CLAP 氛围嵌入、可读的氛围标签以及制作配置文件——仅需一次本地调用。

Audio Sonic MCP 完全在您的本地机器上运行(无需 API 密钥、外部服务器或云依赖),并为同一底层高保真音频分析引擎提供两个高级访问入口:

适用对象

核心接口与机制

🤖 MCP 服务器

LLM、AI 代理和 IDE(Claude、Cursor、Windsurf、Cline)

异步、即发即忘的 YouTube URL 分析。避免在繁重的音频处理过程中阻塞客户端 LLM。

🎚️ 本地 CLI

音乐人、声音制作人和音频工程师

面向本地文件的深度命令行工具,支持全曲多窗口分析和高保真输出。


🎹 快速体验:您将获得什么

1. 音乐人友好的 CLI 摘要(--summary 模式)

🎵 SONIC SIGNATURE — my_demo.mp3  (3:24)

  TEMPO    153.8 BPM  (steady)
  KEY      G Major  ·  shifts to G Phrygian @0:30   (confidence 74%)
  VIBE     aggressive · dark · driving · hip-hop · gritty

  PRODUCTION
     Vocals     forward
     Punch      0.62  (moderate)
     Stereo     wide
     Low end    ~55 Hz dominant

  Overall confidence: 88%   ·   analyzed in 0:28 (GPU-accelerated)

2. 综合 JSON(由 MCP 和 CLI 默认返回)

{
  "header": {
    "job_id": "sig_a3f9b2c1",
    "status": "success",
    "confidence_score": 0.88,
    "source_metadata": {
      "title": "Acoustic Vibe Demo",
      "duration_sec": 204,
      "source_type": "file"
    }
  },
  "sonic_signature": {
    "bpm": 153.8,
    "bpm_engine": "madmom",
    "bpm_variable": false,
    "key": "G Major",
    "key_variable": true,
    "key_map": [
      { "start_sec": 0.0,  "end_sec": 30.0, "key": "G Major" },
      { "start_sec": 30.0, "end_sec": 90.0, "key": "G Phrygian" }
    ],
    "mode_confidence": 0.74,
    "vibe_vector": [0.012, -0.034, "... 512 float dimensions ..."],
    "vibe_tags": ["aggressive", "dark", "driving", "hip-hop", "gritty"],
    "production_profile": {
      "vocal_presence": "forward",
      "transient_punch": 0.62,
      "stereo_width": "wide",
      "dominant_freq_peaks_hz": {
        "harmonic": [55.0, 110.2],
        "percussive": [125.0, 250.1]
      }
    }
  },
  "telemetry": {
    "inference_time_sec": 28.0
  }
}

Related MCP server: music-perception-mcp

⚡ 核心特性

  • 🥁 节奏与节拍跟踪 — 完整的 BPM 计算,包含变速漂移检测和瞬态窗口化。

  • 🎹 调性与和声映射 — 计算结构性的音乐调性和调式,生成详细的 key_map,跟踪逐段转调。

  • 🌈 氛围与风格嵌入 — 编译 512 维 CLAP 嵌入和人类可读的风格标签(涵盖能量、质感、情绪和流派),使用零样本音乐词汇分类。

  • 🎚️ 制作分析 — 测量人声空间存在感、瞬态冲击系数、立体声宽度和主频峰值。

  • 🤖 MCP 原生系统 — 完全暴露 4 个标准化的 Model Context Protocol 工具,便于即时集成到 AI 工具中。

  • 🪶 稳健的优雅降级 — 如果存在 CUDA GPU 则自动使用,否则回退到 CPU;如果省略重型深度学习包([clap]),则优雅降级到 HPSS 和标准 librosa 特征数组。

  • 🔒 100% 离线且私密 — 所有转换、分离和推理均在本地进行。


📦 安装与设置

系统先决条件

确保您的系统 PATH 中已安装并可用 Python 3.10+FFmpeg

安装 FFmpeg:

  • macOSbrew install ffmpeg

  • Linux(Debian/Ubuntu)sudo apt update && sudo apt install -y ffmpeg

  • Windows:通过 PowerShell(管理员)运行 winget install Gyan.FFmpeg,或从 ffmpeg.org 手动下载并将 bin 目录添加到系统环境变量中。


分步安装

  1. 克隆仓库

    git clone https://github.com/ripunjay-kashyap/audio-sonic-mcp.git
    cd audio-sonic-mcp
  2. 初始化虚拟环境

    python -m venv .venv
    # Activate on macOS/Linux:
    source .venv/bin/activate
    # Activate on Windows (PowerShell):
    .venv\Scripts\activate
  3. 安装依赖 选择轻量级核心引擎或完整的高保真 ML 套件:

    • 选项 A:完整高保真 ML 套件(推荐) 包含分离音轨(Demucs)和零样本氛围向量(CLAP)。需要约 4 GB 磁盘空间。

      pip install -e ".[clap]"
    • 选项 B:核心轻量级流水线 使用标准数字信号处理(HPSS/librosa)。快速安装,占用空间极小。

      pip install -e .

[!NOTE] 可选的 [clap] 栈会安装 torchtorchaudiotransformersdemucs。如果没有这些,服务器会自动切换到轻量级回退方案(用 HPSS 代替 Demucs,用标准特征矩阵代替 CLAP 向量,并省略 vibe_tags)。


🤖 MCP 客户端配置指南

Audio Sonic MCP 注册为标准包脚本。这使您可以直接从虚拟环境的 bin 文件夹中使用全局可执行名称(audio-sonic-mcp)运行它,或手动运行脚本文件。

1. Claude Desktop 设置

打开您的 Claude 配置文件:

  • Windows%APPDATA%\Claude\claude_desktop_config.json

  • macOS~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux~/.config/Claude/claude_desktop_config.json

将服务器添加到您的 mcpServers 对象中:

{
  "mcpServers": {
    "audio-sonic-mcp": {
      "command": "C:\\path\\to\\audio-sonic-mcp\\.venv\\Scripts\\audio-sonic-mcp.exe",
      "args": [],
      "env": {
        "JOBS_ROOT": "C:\\path\\to\\audio-sonic-mcp\\jobs"
      }
    }
  }
}

[!IMPORTANT] Windows 用户:在 JSON 配置路径中始终使用双反斜杠\\)。将可执行文件直接指向 .venv\Scripts\ 目录中的 .exe


2. Cursor IDE 集成

要将 Audio Sonic MCP 集成到 Cursor 的 AI 面板中:

  1. 导航到 设置功能MCP

  2. 点击 + 添加新的 MCP 服务器

  3. 填写参数:

    • 名称audio-sonic-mcp

    • 类型command

    • 命令/path/to/audio-sonic-mcp/.venv/bin/audio-sonic-mcp(在 Windows 上使用 .exe 扩展名)


3. Windsurf 集成

打开您的 Windsurf MCP 配置文件(通常位于 ~/.codeium/windsurf/mcp_config.json)并追加配置:

{
  "mcpServers": {
    "audio-sonic-mcp": {
      "command": "/path/to/audio-sonic-mcp/.venv/bin/python",
      "args": ["/path/to/audio-sonic-mcp/server.py"],
      "env": {
        "JOBS_ROOT": "/path/to/audio-sonic-mcp/jobs"
      }
    }
  }
}

4. Cline(VS Code 扩展)设置

打开 Cline 的 MCP 设置文件(通常位于 %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json 或等效的平台存储位置)并添加:

{
  "mcpServers": {
    "audio-sonic-mcp": {
      "command": "/path/to/audio-sonic-mcp/.venv/bin/audio-sonic-mcp",
      "args": [],
      "env": {
        "JOBS_ROOT": "/path/to/audio-sonic-mcp/jobs"
      }
    }
  }
}

🤖 AI 代理和 LLM 的交互流程

LLM 通过读取暴露的工具定义自动学习如何使用此服务器。由于音频音轨分离和 CLAP 嵌入计算量较大,Audio Sonic MCP 使用异步即发即忘作业模式

自动化 LLM 工作流

  [User Prompts LLM]
          │
          ▼
1. Submit URL ──────────────► [Tool: get_sonic_signature]
                                      │ (Returns Job ID instantly)
                                      ▼
2. Notify User ◄───────────── [LLM acknowledges job is queued]
          │
          ├───► 3. Wait 10-15s (Or proceed with other tasks)
          │
          ▼
4. Check Progress ──────────► [Tool: get_job_status]
                                      │ (Checks status: running/success/error)
                                      ▼
5. Present Signature ◄─────── [LLM formats rich output for user]

可尝试的自然提示

  • “检查我的 audio-sonic-mcp 服务器的健康状况,确保所有 ML 组件都已就绪。”

  • “提交这个 YouTube 曲目进行声音分析:https://www.youtube.com/watch?v=XXXXXX。”

  • “检查我的声音签名作业 sig_a1b2c3d4 的进度,并在完成后总结 BPM、制作宽度和氛围。”


🎚️ CLI 用法(本地文件)

对于直接在终端工作的音乐人、工程师和制作人,您可以直接分析本地完整文件,无需运行任何后台服务器:

# Get a visual, musician-friendly sonic signature digest (recommended)
python analyze_file.py "my_demo.wav" --summary

# Print full raw JSON directly to the stdout stream
python analyze_file.py "my_demo.wav"

# Dump JSON payload to a file while keeping the stdout clean
python analyze_file.py "my_demo.wav" > signature.json

CLI 命令选项参考

选项

简写

描述

path

本地音频文件的绝对或相对路径(必需)。

--summary

-s

打印干净、格式化的终端摘要,而不是标准 JSON。

--no-vector

生成 JSON 签名,但省略沉重的 512 维氛围浮点数组。

--out FILE

-o

将最终 JSON 签名直接输出到指定文件。

--keep

-k

不删除 jobs/ 中的中间 WAV 文件或分离的音轨文件。

--job-id ID

-j

显式定义内部标识符(适用于批处理脚本)。

支持的文件格式wavmp3flacoggm4aaac


🔧 环境变量参考

通过在当前终端会话、容器环境或 MCP 配置文件的 env 块中声明这些变量来配置环境选项:

变量

默认值

描述 / 实际用途

JOBS_ROOT

./jobs

工作目录,用于处理音频文件、临时转换的 WAV 和音轨。

KEEP_JOB_FILES

未设置

设置为 1true 以在磁盘上保留分离的音轨 WAV(每个作业增加约 75MB,便于故障排除)。

FILE_MAX_DURATION_SEC

600

本地文件处理时长的安全上限(YouTube 下载限制为 60 分钟)。

FFMPEG_BIN

未设置

如果 ffmpeg 二进制文件不在系统 PATH 中,则指向包含它的文件夹路径。

YTDLP_PROXY

未设置

直接传递给 yt-dlp 的 HTTP/SOCKS 代理字符串,用于绕过速率限制或网络封锁。

TRANSPORT_MODE

stdio

服务器监听的传输方式:stdio(默认,用于本地 MCP 客户端)、sse(通过 HTTP 的远程 MCP)或 hybrid(MCP SSE 来自 app_cloud.py 的 REST API)。sse/hybrid 需要 pip install ".[cloud]"

PORT

8000

TRANSPORT_MODEssehybrid 时的监听端口。对于 stdio 忽略。


🐳 Docker / Podman 执行

如果您希望避免设置本地 Python 库,通过容器运行可以封装 FFmpeg、yt-dlp 和核心 Python 依赖(基于 CPU 的流水线):

# Build the container image
docker build -t audio-sonic-mcp .

# Run the MCP server over stdio, mounting local folders for job persistence
docker run -i --rm \
  -v "$(pwd)/jobs:/app/jobs" \
  -v "$(pwd)/models:/app/models" \
  audio-sonic-mcp

要将 Claude Desktop 连接到您的 Docker 容器,请配置 claude_desktop_config.json

{
  "mcpServers": {
    "audio-sonic-mcp-docker": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/absolute/path/to/jobs:/app/jobs",
        "-v", "/absolute/path/to/models:/app/models",
        "audio-sonic-mcp"
      ]
    }
  }
}

⚙️ 底层工作原理

Audio Sonic MCP 的流水线是模块化构建的,使用事务性检查点确保可靠性。

  LLM Agent / Claude Desktop                 Musician (Terminal)
            │                                          │
            │  MCP (stdio JSON-RPC)                    │  analyze_file.py
            ▼                                          ▼
┌──────────────────────────────────────────────────────────────────────────┐
│  Modular 6-Stage Analysis Pipeline                                       │
│                                                                          │
│  Stage 1: Ingestion   │ Pre-checks format, scans duration metadata       │
│  Stage 2: Download    │ Fetches audio tracks via yt-dlp (URLs only)      │
│  Stage 3: Conversion  │ normalizes sample formats to 44.1kHz WAV (FFmpeg)│
│  Stage 4: Separation  │ Splits stems: Vocals, Drums, Bass, Other (Demucs)│
│  Stage 5: Analysis    │ Computes BPM, modulations, key, punch (librosa)  │
│  Stage 6: Embeddings  │ Generates 512-dim zero-shot music vibe tags (CLAP)│
└─────────────────────────────────────┬────────────────────────────────────┘
                                      ▼
             Result Payload: (header · sonic_signature · telemetry)
  1. 音轨分离:Meta AI 的 Demucs(mdx_extra 将曲目分离为隔离音轨(vocalsdrumsbassother)。如果缺失,则优雅地回退到谐波-打击乐源分离(HPSS)

  2. 分析引擎librosa 提取节奏和音调结构,将和弦模式和次低音运动与 Krumhansl-Schmuckler 和 Phrygian 模板引擎进行匹配。

  3. 语义氛围标签LAION CLAPlaion/larger_clap_music_and_speech)对高覆盖美学描述符(情绪、质感、流派)进行零样本推理,在风格两极之间选择最佳候选。


🩺 韧性与故障排除

1. 一次性设置下载延迟

首次分析作业使用完整 ML 流水线时,demucstransformers 将下载其预训练模型权重(Demucs 约 400 MB,CLAP 约 200 MB)。

  • 服务器将下载进度指示器重定向到 stderr,因此它们不会破坏 JSON-RPC 标准流。

  • 在此下载期间,get_job_status 将保持 running 状态。根据您的网络速度,允许 1–3 分钟。后续启动时间不到 10 秒

2. FastMCP 并发控制

多阶段架构上的模型推理对 CPU/VRAM 消耗极高。为了保护消费级硬件和虚拟环境免于崩溃(OutOfMemory 异常),Audio Sonic MCP 强制执行严格的全局序列化锁(CONCURRENCY_LOCK)。

  • 如果您同时提交多个 URL,它们将被顺序处理。

  • 轮询后续作业的 get_job_status 将在它们等待流水线队列时报告 queuedrunning

3. Windows Librosa 死锁修复

Windows 下的 FastMCP 线程调度可能导致后台工作线程内的 Numba 编译死锁。为防止这种情况,Audio Sonic MCP 在启动时加入了预热例程_prewarm_librosa()_prewarm_demucs())。它在启动 RPC 监听器之前,强制在主线程中对重采样、HPSS 和单声道混音函数进行 JIT 编译。

4. BPM 精度与 bpm_engine 字段

节奏由 madmom 的 RNN 节拍追踪器估算。madmom 是一个可选依赖:它已不再维护(最新版本 0.16.1,分类器止步于 Python 3.7),并且需要 Cython 构建,因此无法在所有环境中可靠安装,也不是默认安装的一部分。

当 madmom 不可用时,流水线回退到 librosa。该回退在稳定的四踩底鼓素材上表现良好,但可能锁定到真实节奏的2:3 或八度倍数——在我们的一个回归测试样本中,它对 148 的真实值报告了 99.4 BPM。

因此,节奏永远不会无凭据地报告。每个负载都携带一个 bpm_engine 字段,指明实际产生该数值的引擎:

bpm_engine

含义

madmom

RNN 节拍追踪器——完全精度。

librosa-fallback

madmom 不可用;将 BPM 视为近似值,并预期偶尔出现八度/三连音误差。

check_health 明确报告 madmom 的状态。要启用精确路径:

pip install ".[beats]"

如果在较新的 Python 上构建失败,请为分析环境使用 3.10——madmom 没有针对更新解释器的 wheel 包。

5. 使用 check_health 进行诊断

如果服务器报告为 degraded 或工具缺失,请调用 check_health 工具或检查 CLI 警告。它会查询:

  • 执行路径上 ffmpeg 的可用性。

  • Python 包(librosasoundfilemcp 等)的安装状态。

  • 可选 madmom 节拍追踪器的存在情况,以及由此将使用哪个 bpm_engine

  • JOBS_ROOT 目录的访问权限。


🛠️ 开发与测试

在虚拟环境中运行单元测试,使用合成的音频波形验证数学流水线:

# Install development test framework
pip install -e ".[dev]"

# Execute full suite (requires no network or model downloads)
pytest

# Test specifically CLI execution code paths
pytest tests/test_cli.py

📄 许可证

根据 MIT 许可证分发。详见 LICENSE

© 2026 Ripunjay Kashyap。保留所有权利。

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

Maintenance

Maintainers
Response time
Release cycle
Releases (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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to analyze audio files, extracting tempo, key, beat drops, volume surges, high tones, loudness, brightness, and structure, and returning structured JSON and visualizations.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Privacy-first audio intelligence: BPM, key, waveform. Audio never stored. Pay per second.

  • AI transcription from URLs or files. 119 languages, diarization, SRT/VTT/text export.

  • Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.

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/ripunjay-kashyap/audio-sonic-mcp'

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