earshot:给编码 Agent 的耳朵
让 AI 编码 Agent 听懂、评审并亲手合成声音:本地 CPU 运行,把音频变成 Agent 可推理的证据。
- Star 数
- ★ 3.2k
- 最近更新
- 6 天前
- License
- MIT
- 主语言
- Python
- FA 评分
- 78/100 · 表现良好
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 用 Claude Code 制作产品发布短片的开发者:让 Agent 听完音轨后用 critique 得到对照专业发布片的评分和修复清单
- 不适合
- 需要判断语音内容、品味或情感的项目
- 需要分析 14 kHz 以上音频的场景
- 想要开箱即用图形界面或云端音频服务的用户
- 源码审查
- 78/100 · 表现良好
这个 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。
- 用 Claude Code 制作产品发布短片的开发者:让 Agent 听完音轨后用 critique 得到对照专业发布片的评分和修复清单
- 给代码生成的影片配声音的团队:用 kit render 的 launch 预设把 252 个代码音效按音乐床电平和切点偏移量自动排布
- 需要筛选大量音频素材的 Agent 流程:用 rank 按一句描述给候选文件排序,用 find 找到长录音里的关键瞬间
- 音效设计师与 Agent 协作:用 forge 写物理合成配方,靠 critic 的文字反馈和频谱对比图迭代出接近真实录音的声音
- 需要把现有录音变成可变参代码的用户:用 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/kitPython 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?
查看各维度的扣分理由
工具默认全本地、CPU、无网络,模型与数据均在本地加载,唯一网络路径(llm 调 Gemini)要求 --yes-upload 显式同意,用户确认与数据流披露做得很好;扣分处:依赖 torch/transformers/librosa 等重量级供应链且无锁定版本,外部效果(写文件、依赖 ffmpeg、EARSHOT_BANK 环境变量注入 bank)存在但缺回滚机制说明,没有证据显示缓存/输出的清理或恢复路径。
test_one_version_everywhere 保证包、pyproject、CHANGELOG 版本一致;错误处理被专门测试(单行 stderr、exit 1、损坏文件可读报错、cp1252 下 JSON 合法),失败消息覆盖充分;扣分处:每个 CLI 调用加载模型 20–40 秒、torch 需要 CPU 专用 index-url,安装可用性在非标准环境是真实摩擦点。
受众(AI coding agent)与场景(CLI/Python API/MCP 三通道)界定清晰,能力边界表述极为诚实(Goodhart 风险、盲测仅一人 15 次、fit 未在 0.4 重测等);扣分处:环境适配依赖 ffmpeg 与 CPU torch wheel 的额外安装步骤,MCP 工具集的触发精度只能从文档推断、无法静态验证。
文档结构优秀:命令表、参数说明、limits 章节、CREDITS_FIT、CHANGELOG 一致性被测试锁定,MIT 许可完整;扣分处:README 缺少一步步安装说明(安装细节散落在 pyproject 注释),维护者仅一人(Leon Lin,版权 2026),无治理或更新承诺,publisher 未经注册验证。
每个命令输出普通语言摘要 + --json + 错误格式统一,agent 可直接消费,填补'agent 无法听声音'的真实空白,边际价值明确;扣分处:20–40 秒/次冷启动与大型依赖树抬高使用成本,成本效益在轻量调用场景打折。
事实与推断分离做得突出:明确标注'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 次),静态评审未执行任何测试,效果声明需自行复核。
- 单人维护、无发布治理承诺,企业采用前应评估长期维护风险。
常见问题
需要 API 密钥或付费服务吗?
llm_critique 工具,需要你自己的 GEMINI_API_KEY 并显式同意上传音频,不用它功能完整。能离线运行吗?
EARSHOT_OFFLINE=1 后 earshot 只从本地缓存加载模型,缓存缺失会报错而不是悄悄联网下载。首次部署仍需一次联网下载约 1.1 GB。每次调用都要等 20-40 秒吗?
measure、sfx、kit 不加载模型)。多次调用时用 MCP 服务器(模型常驻热加载)或在单个 Python 脚本里 from earshot import api。