audio-analyzer-rs

by JuzzyDee (community) · Claude Desktop, Claude Code, OpenCode, macOS, Linux, Windows

MCP MCP Servers Open Source v1.0.0 · 13.03.2026 активный

MCP-сервер, дающий Claude способность «слышать» музыку. Чистый Rust-анализ аудио — спектральный, гармонический, ритмический, тембральный — возвращается как структурированные данные.

v1.0.0
13.03.2026 current

Установка
# Homebrew (macOS)
brew tap JuzzyDee/tap
brew install audio-analyzer
claude mcp add --scope user audio-analyzer -- $(which audio-analyzer-mcp)

# Вручную (все платформы) — сначала скачайте бинарник mcp-server с GitHub Releases
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
показать оригинал переведено ИИ

audio_visualizer_rs

MCP-сервер, который даёт Клоду возможность слышать музыку.

Укажите Клоду на любой аудиофайл, и он сможет определить тональность, темп, динамику, тембр, ударный характер, стереополе, структурные секции и то, как музыка развивается во времени — всё это на основе реального анализа аудио, без изображений, без догадок, менее 1% использования контекстного окна.

Сравнивайте два трека бок о бок. Обнаруживайте, где музыка меняется структурно — интро, куплет, припев, бридж — и приближайте моменты, которые важны.

Что это?

LLM могут видеть (зрение) и читать (текст), но не могут слышать. Этот проект устраняет этот разрыв, выполняя реальный анализ аудио — те же методы DSP, используемые в исследованиях по поиску музыкальной информации, — и возвращая структурированные числовые данные, которые Клод может обдумывать.

Это MCP-сервер, который предоставляет анализ аудио в виде инструментов, которые Клод может вызывать по запросу. Попросите Клода проанализировать песню, и он декодирует аудио, выполнит спектральный/гармонический/ритмический/ударный анализ и вернёт результаты в виде компапактного текста. Никаких спектрограмм, никаких изображений, никаких потраченных впустую токенов.

Полный анализ 60-секундного трека выполняется менее чем за 2 секунды (включая разделение источников). Чистый Rust. Никакого Python, никакого FFmpeg, никаких системных зависимостей.

Возможности

  • Декодирование аудио -- mp3, wav, flac, ogg, aac через Symphonia (чистый Rust)
  • Спектральный анализ -- центроид (яркость), ширина полосы (насыщенность), спад, плоскостность (тональность)
  • Энергия частотных полос -- RMS-энергия по 7 стандартным продюсерским полосам (от суб-баса до бриллиантности) для диагностики микса
  • Спектральный контраст -- пик против впадины для каждой полосы в дБ, показывает чёткость против мутности
  • Динамический диапазон -- крест-фактор, диапазон громкости (95-й-5-й перцентиль), пиковый дБFS
  • Громкость LUFS -- интегрированная громкость EBU R128 (суммирование стереоканалов ITU-R BS.1770-4), истинный пик (дБTP), диапазон громкости (LRA), цели стриминговых платформ. Проверено с точностью до 0,0 дБ от FabFilter Pro-L 2.
  • Анализ стереополя -- фазовая корреляция (совместимость с моно), ширина стерео (соотношение mid/side), баланс L/R, оценка совместимости с моно. Покадровые временные ряды для точного определения мест фазовых проблем.
  • Временные характеристики -- RMS-энергия (громкость), частота пересечения нуля (текстура)
  • Тембр -- 13 MFCC (мел-частотные кепстральные коэффициенты)
  • Гармонический анализ -- хромаграмма, определение тональности (алгоритм Крумхансла-Шмуклера), тоннетц
  • Ритмический анализ -- оценка темпа, отслеживание битов, обнаружение атак, стабильность темпа
  • Ударный характер -- разделение гармонических/ударных источников (HPSS), резкость атак, плотность атак
  • Обнаружение границ секций -- многофакторный анализ новизны обнаруживает структурные изменения (энергия, спектр, гармония, текстура). Обеспечивает рабочий процесс сводка→приближение: получите карту, затем погрузитесь в интересные моменты
  • Сравнение A/B -- анализируйте два трека бок о бок, получайте компактную таблицу различий, выделяющую отличия в громкости, динамике, спектральном балансе, стереополе, тональности и темпе
  • Данные временных рядов -- отслеживайте, как каждый признак развивается во времени с выбираемым разрешением
  • Эффективность токенов -- пониженная дискретизация вывода, откалиброванная для комфортного размещения в контекстном окне

Посмотрите в действии

Посмотрите, как свежий Клод анализирует четыре трека за одну сессию — оригинальная композиция для фортепиано/духовых, полная структура Bohemian Rhapsody с границами секций, A/B-сравнение микса с производственными советами, и полевая запись грозы, где он классифицирует музыкальные метрики как «бессмысленные» против «физически реальных». Все четыре анализа помещаются в одно контекстное окно.

Установка

Claude Desktop — установка в один клик

Загрузите пакет .mcpb для вашей платформы из GitHub Releases и откройте его. 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 — вручную (все платформы)

Загрузите бинарный файл mcp-server для вашей платформы из GitHub Releases, затем:

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. Инструменты анализа аудио будут доступны в ваших беседах.

Примечание: Это локальный MCP-сервер, использующий stdio-транспорт, поэтому он требует Claude Code или Claude Desktop. Он не работает с claude.ai в браузере или мобильных приложениях.

Использование

Важно: Этот инструтель анализирует файлы на вашем локальном компьютере. Укажите Claude полный путь к файлу (например, /Users/you/Music/song.mp3) — не пытайтесь загружать или прикреплять файлы к чату. 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 Определение тональности, распределение классов высот, тоннетц
rhythm_analysis Темп (BPM), позиции долей, стабильность темпа
full_analysis Всё вышеперечисное одним вызовом, плюс перкуссивный характер (HPSS), стереополе и границы секций. Рекомендуемый порядок: сначала вызов без разрешения для получения сводки и карты секций, затем увеличение интересных секций с start_time/end_time при высоком разрешении
compare Сравнение двух треков — анализирует оба и возвращает компактную таблицу различий

Пример: вывод 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, динамический диапазон, хрома, сила атаки, перкуссивное соотношение, энергия полос, спектральный контраст и многое другое, всё согласовано по одной временной оси.

Пресеты откалиброваны для эффективности токенов. Трек длительностью 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

Два бинарных файла используют одну библиотеку анализа: - cli (src/main.rs) — выполняет все анализы и выводит результаты - mcp-server (src/mcp_server.rs) — предоставляет инструменты через stdio JSON-RPC с помощью rmcp

Ключевые зависимости: symphonia (декодирование аудио), rustfft (БПФ), rmcp (MCP SDK).

Журнал изменений

См. CHANGELOG.md для истории версий.

Лицензия

Лицензия MIT. См. LICENSE для подробностей.

Войдите, чтобы оставить комментарий