earshot: ears for coding agents (judge, find, time-align and make game sound on CPU)
/earshot
Let an agent hear: rank sound-effect candidates against a description, find the clean trim in a long recording, tell real recordings from code-synthesised sound, check that every hit lands on its picture cut, and render effects from a bank of 252 code-made sounds. Runs locally on CPU with two open audio models (~1.1 GB, downloaded once); no API key needed.
- 许可证
- MIT
- 出品
- GameSkill 出品
信息来自作者的 README。 GameSkill 还没完整跑过。支持的 Agent 和安装步骤以作者文档为准。
这个 skill 做什么
什么时候触发
Listen with earshot whenever you must judge, choose, trim, verify or compare sound you cannot hear - picking a sound effect, music or ambience from candidates, finding the cleanest moment in a recording …
GameSkill 测过的版本
GameSkill 调优版:skill 文件取自提交 591fa3e02803,按我们的 skill 流程加上可运行示例、测试报告、自检清单和中文指南。
协议:基于 Leonxlnx/earshot(作者 Leonxlnx),协议 MIT。ZIP 保留协议文件(LICENSE),CHANGES.md 列出了 GameSkill 加的所有文件。

自检清单
- 说声音怎么样之前先跑 earshot,并引用数字 / Run earshot before saying how anything sounds, and quote the number
- z >= 3 才算强匹配 / Only z >= 3 is a strong match
- 用 find 给出的干净片段,不用 head cut 或 tail cut / Use clean trims from find, never a head or tail cut
- 每个画面切点都要有声音落在一帧以内 / Every picture cut gets a sound within one frame
- 上传音频给 Gemini 前先问用户 / Ask before uploading audio to Gemini
中文指南
这个 skill 做什么
让 agent「听」声音:给候选音效按描述打分排序、在长录音里找干净的片段、判断是真实录音还是代码合成、检查每个击打声是否落在画面切点上,还能从 252 个代码生成的音效里直接渲染 WAV。全部在 CPU 上本地运行,用两个开源音频模型(约 1.1 GB,只下载一次),不需要 API 密钥。
什么时候用
- 从一堆候选里给游戏挑音效
- 检查预告片或过场:每个击打是否对上切点、响度多少
- 判断下载来的音效是真实录音还是廉价合成
怎么装
下载本页 ZIP,把 earshot/ 放进 agent 的 skills 文件夹:Claude Code 用 .claude/skills/,Codex、Gemini CLI、OpenCode 用 .agents/skills/,Cursor 用 .cursor/skills/。然后按 SKILL.md 的 Setup 做一次:建虚拟环境、装 torch CPU 版、pip install ZIP 里的 upstream-support/ 文件夹。也可以直接对 agent 说:Install the skill from https://gameskill.dev/skills/earshot/install.md
最小示例
原创的「灯笼点亮」镜头:从音效库渲染四个候选(小铃、轻点击、重拳、水滴),用 earshot 按「明亮的小铃声」和「沉重的拳击」排序,再把铃声放进 3 秒的视频里,灯笼在 1.0 秒亮起:声音在 1.0 秒时 earshot 报告「切点 +2 ms OK」,挪到 1.3 秒时报告这个切点没有声音。
我们怎么测的
总分 27/27,结果在 gameskill/test-report.json。在 Linux CPU 上用 ZIP 自带的 earshot 0.4.0(torch 2.15 CPU、transformers 5、ffmpeg 7),模型下载一次后全程断网(EARSHOT_OFFLINE=1)。doctor 无问题、两个模型都在缓存里、没用 GPU;音效库 252 个、其中 15 个拟合自 CC0 录音;渲染四个候选后 sfx check 都干净;「明亮的小铃声」排序第一是铃声,「沉重的拳击」第一是拳击(z ≥ 3);find 在 4 秒噪声里找到 2.0 秒处的铃声;realness 把 880 Hz 衰减正弦波判为代码合成;timeline 在灯笼 1.0 秒亮起的切点上报告铃声在一帧以内,铃声晚 300 ms 时报告这个切点没有声音;sheet 画出同步图(本页截图)。整套约 40 秒。没测:MCP 服务、forge 迭代、可选的 Gemini llm 命令(要上传音频和密钥)。原仓库的 pytest 套件没有跑。
和原仓库的区别
原仓库里的 skill 让你 pip install -e 整个仓库。GameSkill 的 ZIP 把同一版本的 earshot Python 包放在 upstream-support/ 里,Setup 改成在虚拟环境里普通安装(模型缓存放在 ~/.cache/earshot,不会写进 skills 文件夹);SKILL.md 里指向仓库 docs、eval 和 real-sound skill 的路径改成固定版本的 GitHub 链接。代码没有改动。
安装
告诉你的 AI
Install the skill from https://gameskill.dev/skills/earshot/install.md
GameSkill 测过的版本
mkdir -p .claude/skills
curl -fsSL https://gameskill.dev/dl/skills/earshot.zip -o /tmp/gameskill-earshot.zip
unzip -oq /tmp/gameskill-earshot.zip -d .claude/skills
rm /tmp/gameskill-earshot.zip包含内容
- describe, match, rank and find: what a sound sounds like, with calibrated scores, and the best trims in a long file
- realness: real or pro-produced recording versus code-synthesised sound, with its evidence
- timeline and sheet: events, loudness and sync of a film's sound to its picture cuts, as text and as a PNG
- sfx and kit: 252 code-made sounds (15 fitted from CC0 recordings) rendered to WAV, aimed at the picture
- An MCP server with the same tools, so the models load once
适合
- Picking sound effects for a game from a folder of candidates
- Checking a trailer or cutscene: does each hit land on its cut, how loud is it
- Telling whether a downloaded effect is a real recording or a cheap synth
不适合
- Composing music
- Machines without about 3 GB free (torch CPU plus the two models)
试试这条提示词
Here are four candidate sounds for the moment the lantern lights in my trailer. Pick the one that sounds like a small bright bell, check it is clean, and tell me whether it lands on the cut at 1.0 s.关于这个 Skill
earshot gives a coding agent a way to judge sound it cannot hear. Every command returns numbers (calibrated match scores, LUFS, sync offsets in milliseconds) and a plain summary, and SKILL.md teaches the agent never to say how something sounds without one of those numbers behind it.
For game work the useful loops are: shortlist effects from a folder by description (rank), cut the clean moment out of a long recording (find), check that a downloaded effect is a real recording (realness), and listen through a trailer or cutscene to see whether each hit lands on its picture cut (timeline, sheet). The bank of 252 code-made sounds (sfx, kit) covers clicks, pops, whooshes, hits, risers and UI tones without any download.
It runs on CPU with two open models, LAION CLAP (Apache-2.0) and the MIT AST AudioSet tagger (BSD-3-Clause), pinned to fixed revisions and downloaded once (about 1.1 GB).
Related
- web-audio-sfx-synth to make effects in code for the browser.
- game-trailer-from-code for the trailer whose sound earshot checks.
环境要求
- Python 3.10+ and ffmpeg
- torch (CPU wheel) and transformers, about 1.7 GB installed
- About 1.1 GB for the two audio models (CLAP Apache-2.0, AST BSD-3-Clause), downloaded once from Hugging Face at pinned revisions
常见问题
基于 Leonxlnx/earshot (作者 Leonxlnx,协议 MIT)。ZIP 里保留原作者的 LICENSE 和 NOTICE,ATTRIBUTION.md 和 CHANGES.md 写明来源提交和 GameSkill 加的内容。
搭配使用
作者标注的相关 Skills,或更适合相邻任务的 Skills。
Web Audio SFX Synth (no audio files)
A GameSkill original: 12 game sound effects made from code with the Web Audio API, plus the mixer around them: unlock on the first tap, a compressed master bus with mute, pitch and level variation, stereo pan, distance falloff and a voice limiter. Every sound is rendered offline and checked for clipping.
Game Trailer from Code (Steam trailer and store images)
A GameSkill original: turn your own running game into a 15-second Steam gameplay trailer and every store image with code. Frame-exact capture, a JSON cut list, zh/en captions and SRT, a soundtrack synced to game events, an H.264/AAC encode, and a checker for Steam's trailer rules, loudness, the 6-second microtrailer and the capsule sizes.
Pixel Blocks Motion: 8-bit motion graphics drawn by code
Make pixel-art motion graphics for a game (launch intro, level-up clip, data story, title card) entirely with code: a beat-locked storyboard, a scene drawn on a 320×180 framebuffer, probe stills, then an MP4 or GIF from ffmpeg in about a second, with synthesised chiptune sound effects. No browser, no npm packages, no API key.
相似 skills
Universal Modder
Skills, tools and a fal MCP that let Claude Code mod PC games you own: recon, reverse engineering, generated assets, in-game testing.
One Sentence to Game (prompt, iterate, check)
A GameSkill original for any model: a round-1 prompt that turns one sentence into a small finished browser game, a one-change-per-round loop with a creation log, a reusable spec template, and a headless checker that reports console errors, blank frames and dead controls as PASS or FAIL. It does not promise one-shot.
Playtest Report (Claude Code Game Studios)
Structured playtest report template, or turn existing playtest notes into structured feedback.
image-blaster
Eight Claude Code skills that turn one image into a 3D scene: GLB/OBJ meshes of objects, a Gaussian splat of the environment, and SFX. Needs paid World Labs and FAL keys.