尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Camera-based gesture instrument — play music with your hands, powered by a self-trained neural net running entirely client-side in the browser
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
AirKeys turns your webcam into a musical instrument. Eight gestures — fist, point, peace, open palm, pinch, OK sign, rock on, call me — each always play the same fixed note, laid out as a one-octave diatonic scale (do through do), so cycling through them plays an actual, reproducible melody instead of an approximate one (see the in-app Songs tab for ready-made tunes). Everything — hand tracking, gesture recognition, and audio — runs client-side, in your browser, with no account and no setup.查看完整 README ↗A camera-based gesture instrument that runs entirely in the browser — live demo.
Eight hand gestures each play a fixed note of a one-octave scale, so you can play real melodies (the in-app Songs tab has a few). You can also teach it gestures of your own. Hand tracking, gesture recognition and audio all run client-side: no account, no setup, nothing sent to a server.
The project is also a testbed for applied ML done properly — evaluating a gesture classifier on people it has never seen, then fixing what that reveals. It is a work in progress: see ROADMAP.md.
Webcam --> MediaPipe (21 landmarks + pretrained gesture) ---\
--> pinch (pure geometry) |
--> self-trained MLP (offline-trained, 3 poses) >--> Rule Engine --> Tone.js audio
--> your taught gestures (client-side kNN) -/
[all in the browser] [gesture -> musical action]
Built with Next.js, TypeScript, MediaPipe, Tone.js and scikit-learn. Design choices — why everything runs client-side, how the models ship without an inference runtime: docs/architecture.md.
The shipped MLP was trained on my hand only. Re-evaluated on other people's hands (HaGRID, 9k subjects) and on live webcam recordings:
| Evaluation | Accuracy |
|---|---|
| Shipped MLP — my hand (original test) | 99.8 % |
| Shipped MLP — 1,309 people it never saw | 71.9 % [70.2, 73.6] |
| Logistic regression trained on 6,753 HaGRID people, 9 gestures — people it never saw | 98.0 % [97.4, 98.5] |
| Same model — my live webcam (2 sessions), the 8 gestures | 98.0 % |
| Same model — my live webcam (2 sessions), recognizing "no gesture" | 6 % |
Brackets are bootstrap 95 % confidence intervals over subjects. Webcam results hold across artificial light and daylight. Generalizing to new hands is solved by training on many people. The open problem is rejection: resting or half-formed hands are taken for gestures, which would play wrong notes. That is the next phase of the roadmap; the app keeps the original MLP until then.
More detail:
Requires Python 3.11+, Node.js 18+, uv and a webcam.
git clone https://github.com/anastber/air-keys.git && cd air-keys
make install # Python + Node dependencies; downloads the MediaPipe model into frontend/public/
make dev # http://localhost:3000
make help lists the other commands: tests, lint, dataset validation, model evaluation.
The 8 gestures form one octave: fist = do, point = re, peace = mi, open palm = fa, pinch = sol, OK sign = la, rock on = ti, call me = do (an octave up). Raising or lowering your hand shifts the octave. The Songs tab has ready-made melodies, and the Rules tab remaps any gesture.
To add a gesture of your own, name it in the "Teach a Gesture" panel and hit Record: it captures ~20 samples and is recognized right away. Taught gestures stay in your browser's localStorage.
MIT — see LICENSE. The HaGRID dataset used for training and evaluation (Kapitanov et al.) is distributed under its own license, a variant of CC BY-SA 4.0, and is not redistributed here.