earshot:给编码 Agent 的耳朵

让 AI 编码 Agent 听懂、评审并亲手合成声音:本地 CPU 运行,把音频变成 Agent 可推理的证据。

Star 数
★ 3.2k
最近更新
6 天前
License
MIT
主语言
Python

30 秒速览

运行形态
命令行工具MCP 服务器代码库 / SDK
可在哪里用
通用 · 跨平台Claude Code
费用
免费,无需付费服务
上手难度
中 · 需要几步配置
开始前需要
Python 3.10+ffmpeg / ffprobePyTorch(CPU 版本)CLAP laion/larger_clap_general 模型(首次使用约下载 1.1 GB)AST MIT/ast-finetuned-audioset-10-10-0.4593 模型Shell / 命令行网络访问本地文件系统MCP Server
典型场景
用 Claude Code 制作产品发布短片的开发者:让 Agent 听完音轨后用 critique 得到对照专业发布片的评分和修复清单
不适合
  • 需要判断语音内容、品味或情感的项目
  • 需要分析 14 kHz 以上音频的场景
  • 想要开箱即用图形界面或云端音频服务的用户

这个 Agent 能做什么,适合哪些场景?

earshot 是一个让 AI 编码 Agent「听见」声音的开源工具:它把音频文件转化为文字描述、描述匹配度、最佳片段定位、真假录音判别、逐秒听感时间轴和对照专业发布片的评分卡。它以 CLI、Python API 和 MCP 服务器三种形态提供同一套能力,完全在本地 CPU 上运行,不需要 GPU。内含 forge 组件让 Agent 用代码(物理合成配方)直接造声音并用评分器迭代改进,fit 组件能把一段录音反译成可变参的代码配方,sfx/kit 则提供 252 个纯代码渲染的音效库和电影音效套件。模型(CLAP 和 AudioSet 标注器)首次使用时下载后全部离线运行,仓库本身不含任何音频文件。

earshot 读取音频/视频文件后运行两条开源模型(CLAP 文本-音频嵌入和 AST AudioSet 标注器)加一组无模型测量。核心命令包括:describe(生成带 z 分校准标签和测量的描述)、match / rank(判断描述与文件的匹配度并排序候选文件)、find(在长录音中定位最佳片段并输出裁剪点)、realness(判断真实录音还是代码合成)、timeline 和 sheet(逐秒事件时间轴与带标注的 PNG 图)、critique(对照 7 部专业发布片档案的评分卡并给出带时间戳的修复建议)。forge 用物理合成配方(模态谐振器、滤波噪声、房间模拟等)渲染候选声音,由基于 earshot 的 critic 评分并用进化搜索迭代;fit 通过分析-综合把录音拟合成含 render() 的配方模块,支持变体与 morph;sfx render / kit render 按秒级速度渲染 252 个音效库成员并审计点击、削波等问题。全部能力通过 earshot mcp 作为 MCP 服务器暴露给 Claude Code 等 Agent。

  1. 用 Claude Code 制作产品发布短片的开发者:让 Agent 听完音轨后用 critique 得到对照专业发布片的评分和修复清单
  2. 给代码生成的影片配声音的团队:用 kit render 的 launch 预设把 252 个代码音效按音乐床电平和切点偏移量自动排布
  3. 需要筛选大量音频素材的 Agent 流程:用 rank 按一句描述给候选文件排序,用 find 找到长录音里的关键瞬间
  4. 音效设计师与 Agent 协作:用 forge 写物理合成配方,靠 critic 的文字反馈和频谱对比图迭代出接近真实录音的声音
  5. 需要把现有录音变成可变参代码的用户:用 fit 把一段点击声转成配方模块,再调整音高、阻尼、衰减生成变体

如何安装或部署这个 Agent?

前置条件:Python 3.10+,PATH 上有 ffmpeg/ffprobe;仅用 CPU,无 GPU 需求。

git clone https://github.com/Leonxlnx/earshot && cd earshot
python -m venv .venv
.venv/bin/python -m pip install torch --index-url https://download.pytorch.org/whl/cpu   # Windows: .venv/Scripts/python
.venv/bin/python -m pip install -e ".[mcp,llm,dev]"
.venv/bin/python -m earshot doctor --load

首次使用模型时会在仓库内的 .cache/hf(或 EARSHOT_HOME)下载两个开源模型(共约 1.1 GB):CLAP laion/larger_clap_general 和 AST MIT/ast-finetuned-audioset-10-10-0.4593,之后完全离线。可用 earshot doctor --fetch 提前下载。

作为 MCP 服务器接入 Claude Code:

claude mcp add earshot --scope user -e EARSHOT_THREADS=3 -- /path/to/earshot/.venv/bin/python -m earshot mcp

如何使用这个 Agent?

CLI 用法(每个命令先输出自然语言摘要,--json 给出完整结果):

earshot describe enter.ogg
eatshot match key.ogg "a deep thocky mechanical keyboard press" --alts "a mouse click"
earshot find keys.ogg "a single mechanical key press" --top 4
eatshot critique film.mp4
eatshot forge whoosh --refset whoosh_fast --budget 96 --dir made/whoosh
eatshot fit click.wav -o made/click_fit.py --report
eatshot sfx render whoosh_fast/crisp -o w.wav --dur 0.8 --apex 0.32
eatshot kit init --preset launch -o audio/kit.json && earshot kit render audio/kit.json --out audio/kit

Python API:

import earshot
earshot.describe('whoosh.wav')
earshot.find('typing.ogg', 'a single isolated key press')
from earshot import api

注意:每次 CLI 调用都加载模型(约 20-40 秒),多次调用建议用 MCP 服务器(模型常驻)或 from earshot import api 写脚本。可选的 llm_critique 需自备 GEMINI_API_KEY 并显式同意上传。

这个 Agent 有哪些优点和局限?

优点
  • 完全本地 CPU 运行,模型缓存后零联网,音频数据不出机器
  • 带验证数据:描述匹配在 125 条留出录音上强判定准确率 98%,realness ROC-AUC 0.92,且文档诚实列出 Goodhart 等已知缺陷
  • 从「听」(describe/critique)到「做」(forge/fit/sfx/kit)形成闭环,Agent 能自主迭代声音
  • MCP 服务器和两个内置 Agent skill(skills/earshot、skills/real-sound)让 Claude Code 开箱即用
局限
  • 首次下载约 1.1 GB 模型,每次 CLI 调用有 20-40 秒模型加载开销,长流程必须改用 MCP 或 Python API
  • forge 的参考录音需自行提供(授权原因不入库),无参考时 critic 退化为 designed 模式
  • 不能判断品味、情感、语音内容和 14 kHz 以上频段;盲测样本极小(15 次、1 名听众),作者自己声明不构成证明
  • fit 是源录音的衍生品,需保留源录音许可证;复刻基准显示部分新版本 onsets 变钝、通过审核的 take 更少

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
earshot:给编码 Agent 的耳朵 当前 78 · 表现良好 命令行工具免费 ★ 3.2k 6 天前 Python Claude Code
Julep — 持久化、可组合的 AI 智能体框架 64 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 6.6k 3 个月前 Python —
CLI Agent Orchestrator 65 · 存在缺口 命令行工具免费 + 模型费 ★ 1.5k 今天 Python Codex · Claude Code
ClawCodex 51 · 缺口较多 命令行工具免费 + 模型费 ★ 924 8 天前 TypeScript ChatGPT · OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
表现良好
78/ 100 五分制 3.9 / 5
信任安全 18/29
可靠稳定 12/14
适用触发 15/18
规范维护 15/18
有效结果 12/13
证据核验 6/8
查看各维度的扣分理由
信任安全18 / 29 · 3.1/5

工具默认全本地、CPU、无网络,模型与数据均在本地加载,唯一网络路径(llm 调 Gemini)要求 --yes-upload 显式同意,用户确认与数据流披露做得很好;扣分处:依赖 torch/transformers/librosa 等重量级供应链且无锁定版本,外部效果(写文件、依赖 ffmpeg、EARSHOT_BANK 环境变量注入 bank)存在但缺回滚机制说明,没有证据显示缓存/输出的清理或恢复路径。

可靠稳定12 / 14 · 4.3/5

test_one_version_everywhere 保证包、pyproject、CHANGELOG 版本一致;错误处理被专门测试(单行 stderr、exit 1、损坏文件可读报错、cp1252 下 JSON 合法),失败消息覆盖充分;扣分处:每个 CLI 调用加载模型 20–40 秒、torch 需要 CPU 专用 index-url,安装可用性在非标准环境是真实摩擦点。

适用触发15 / 18 · 4.2/5

受众(AI coding agent)与场景(CLI/Python API/MCP 三通道)界定清晰,能力边界表述极为诚实(Goodhart 风险、盲测仅一人 15 次、fit 未在 0.4 重测等);扣分处:环境适配依赖 ffmpeg 与 CPU torch wheel 的额外安装步骤,MCP 工具集的触发精度只能从文档推断、无法静态验证。

规范维护15 / 18 · 4.2/5

文档结构优秀:命令表、参数说明、limits 章节、CREDITS_FIT、CHANGELOG 一致性被测试锁定,MIT 许可完整;扣分处:README 缺少一步步安装说明(安装细节散落在 pyproject 注释),维护者仅一人(Leon Lin,版权 2026),无治理或更新承诺,publisher 未经注册验证。

有效结果12 / 13 · 4.6/5

每个命令输出普通语言摘要 + --json + 错误格式统一,agent 可直接消费,填补'agent 无法听声音'的真实空白,边际价值明确;扣分处:20–40 秒/次冷启动与大型依赖树抬高使用成本,成本效益在轻量调用场景打折。

证据核验6 / 8 · 3.8/5

事实与推断分离做得突出:明确标注'one listener is a small test, not a proof'、CLAP 是 proxy、v2 盲测未发布;测试代码佐证部分声明(bank 183+51 条目、CC0 来源、版本号);扣分处:核心基准数字(CLAP 0.9x 等)指向的 docs 文件不在本次证据内,无法追溯验证,测试文件不完整(截断),无法交叉核实全部声明。

风险与缓解建议
  • 依赖 torch/transformers 等大型库且无版本锁定,安装时应按 pyproject 注释使用 CPU 专用 index-url,并在受控环境核对依赖完整性。
  • 使用 llm 命令会把音频上传给 Gemini:仅在理解并接受外发内容时使用 --yes-upload,其余命令默认离线。
  • EARSHOT_BANK 环境变量可指向任意 bank 文件,加载外部 bank 前应确认其来源可信。
  • 所有基准数字均为作者自报(部分盲测仅一人 15 次),静态评审未执行任何测试,效果声明需自行复核。
  • 单人维护、无发布治理承诺,企业采用前应评估长期维护风险。
证据充分度:低 评估于 2026年10月29日 审查版本 591fa3e02803
查看完整评分方法 →

常见问题

需要 API 密钥或付费服务吗?
核心功能不需要。两个开源模型(CLAP Apache-2.0、AST BSD-3-Clause)本地运行,首次自动下载。唯一可选的付费项是 llm_critique 工具,需要你自己的 GEMINI_API_KEY 并显式同意上传音频,不用它功能完整。
能离线运行吗?
可以。设置 EARSHOT_OFFLINE=1 后 earshot 只从本地缓存加载模型,缓存缺失会报错而不是悄悄联网下载。首次部署仍需一次联网下载约 1.1 GB。
每次调用都要等 20-40 秒吗?
只有加载模型的 CLI 调用如此(measure、sfx、kit 不加载模型)。多次调用时用 MCP 服务器(模型常驻热加载)或在单个 Python 脚本里 from earshot import api。
它给出的判断可以全信吗?
不可全信。响度、时序、与画面同步、单暴露声音的匹配判定较可靠;嘈杂混音里的事件标签和音乐情绪仅是提示。README 明确说明 realness 模型容易被欺骗,造出的声音应以无模型测量、频谱对比图和人类盲测为准。
音效库里的声音是录的吗?
不是。252 个音效全部存储为代码渲染块,按 id 秒级渲染,仓库不含任何音频;其中 183 个是 forge v2 成品、51 个是 0.4 新配方、3 个调音 kalimba、15 个从 CC0 录音拟合而来。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents