Audio Sonic MCP
🎵 Audio Sonic 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:
macOS:
brew install ffmpegLinux(Debian/Ubuntu):
sudo apt update && sudo apt install -y ffmpegWindows:通过 PowerShell(管理员)运行
winget install Gyan.FFmpeg,或从 ffmpeg.org 手动下载并将bin目录添加到系统环境变量中。
分步安装
克隆仓库
git clone https://github.com/ripunjay-kashyap/audio-sonic-mcp.git cd audio-sonic-mcp初始化虚拟环境
python -m venv .venv # Activate on macOS/Linux: source .venv/bin/activate # Activate on Windows (PowerShell): .venv\Scripts\activate安装依赖 选择轻量级核心引擎或完整的高保真 ML 套件:
选项 A:完整高保真 ML 套件(推荐) 包含分离音轨(Demucs)和零样本氛围向量(CLAP)。需要约 4 GB 磁盘空间。
pip install -e ".[clap]"选项 B:核心轻量级流水线 使用标准数字信号处理(HPSS/librosa)。快速安装,占用空间极小。
pip install -e .
[!NOTE] 可选的
[clap]栈会安装torch、torchaudio、transformers和demucs。如果没有这些,服务器会自动切换到轻量级回退方案(用 HPSS 代替 Demucs,用标准特征矩阵代替 CLAP 向量,并省略vibe_tags)。
🤖 MCP 客户端配置指南
Audio Sonic MCP 注册为标准包脚本。这使您可以直接从虚拟环境的 bin 文件夹中使用全局可执行名称(audio-sonic-mcp)运行它,或手动运行脚本文件。
1. Claude Desktop 设置
打开您的 Claude 配置文件:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.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 面板中:
导航到 设置 ➔ 功能 ➔ MCP。
点击 + 添加新的 MCP 服务器。
填写参数:
名称:
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.jsonCLI 命令选项参考
选项 | 简写 | 描述 |
| 无 | 本地音频文件的绝对或相对路径(必需)。 |
|
| 打印干净、格式化的终端摘要,而不是标准 JSON。 |
| 无 | 生成 JSON 签名,但省略沉重的 512 维氛围浮点数组。 |
|
| 将最终 JSON 签名直接输出到指定文件。 |
|
| 不删除 |
|
| 显式定义内部标识符(适用于批处理脚本)。 |
支持的文件格式:wav、mp3、flac、ogg、m4a、aac。
🔧 环境变量参考
通过在当前终端会话、容器环境或 MCP 配置文件的 env 块中声明这些变量来配置环境选项:
变量 | 默认值 | 描述 / 实际用途 |
|
| 工作目录,用于处理音频文件、临时转换的 WAV 和音轨。 |
| 未设置 | 设置为 |
|
| 本地文件处理时长的安全上限(YouTube 下载限制为 60 分钟)。 |
| 未设置 | 如果 |
| 未设置 | 直接传递给 |
|
| 服务器监听的传输方式: |
|
| 当 |
🐳 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)音轨分离:Meta AI 的 Demucs(
mdx_extra) 将曲目分离为隔离音轨(vocals、drums、bass、other)。如果缺失,则优雅地回退到谐波-打击乐源分离(HPSS)。分析引擎:librosa 提取节奏和音调结构,将和弦模式和次低音运动与 Krumhansl-Schmuckler 和 Phrygian 模板引擎进行匹配。
语义氛围标签:LAION CLAP(
laion/larger_clap_music_and_speech)对高覆盖美学描述符(情绪、质感、流派)进行零样本推理,在风格两极之间选择最佳候选。
🩺 韧性与故障排除
1. 一次性设置下载延迟
在首次分析作业使用完整 ML 流水线时,demucs 和 transformers 将下载其预训练模型权重(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将在它们等待流水线队列时报告queued或running。
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 字段,指明实际产生该数值的引擎:
| 含义 |
| RNN 节拍追踪器——完全精度。 |
| madmom 不可用;将 BPM 视为近似值,并预期偶尔出现八度/三连音误差。 |
check_health 明确报告 madmom 的状态。要启用精确路径:
pip install ".[beats]"如果在较新的 Python 上构建失败,请为分析环境使用 3.10——madmom 没有针对更新解释器的 wheel 包。
5. 使用 check_health 进行诊断
如果服务器报告为 degraded 或工具缺失,请调用 check_health 工具或检查 CLI 警告。它会查询:
执行路径上
ffmpeg的可用性。Python 包(
librosa、soundfile、mcp等)的安装状态。可选
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。保留所有权利。
This server cannot be deployed
Maintenance
Related MCP Connectors
Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement.
Cut audio from YouTube, TikTok or Instagram links to MP3/WAV, and fetch video transcripts.
Local ML: speech to text (SRT/VTT), text embeddings, reranking, similarity, entities, zero-shot.
151Transcribe YouTube via Whisper. Summaries, chapters, semantic-search across your corpus.
Related MCP Servers
- AlicenseAqualityDmaintenanceDownloads audio from YouTube, analyzes with Essentia for BPM, mood, energy, spectrograms, and fetches synced lyrics from LRCLIB.57Apache 2.0
- FlicenseNot gradedqualityBmaintenanceAnalyzes audio files to extract exact, reproducible measurements like loudness, tempo, key, spectral balance, and clipping for LLM-based DAW control.-
- AlicenseNot gradedqualityDmaintenanceEnables 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.2MIT
- AlicenseAqualityCmaintenanceProvides local audio analysis tools for LLMs, enabling transcription, conversation dynamics, prosody analysis, and visual inspection without API keys.8MIT