[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f6z4rn3jhq7e5":3},{"code":4,"message":5,"data":6,"timestamp":43},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":39,"homepage":40,"updated_at":41,"history":42},"dsmurrell\u002Fonkey",17,"Learn to sing the songs you love. A free, open-source singing trainer for Mac that listens to the music you play.","Rust",294,16,46,6,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},50195488,"Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key",228,91,"2026-10-22","一款 Mac 练唱打分应用，用你自己的音乐 App 播放歌曲，实时显示音高并逐句评分。","如果你在 Apple Silicon Mac 上跟着 Spotify、Apple Music 或 YouTube 唱歌，并且想立刻看到自己哪一句跑调，OnKey 值得一试。它是一款绑定单一平台的练习工具，不是跨设备的卡拉 OK 服务，硬件和法律边界也决定了它适合谁。\n\n## 解决什么问题\n\n想练一首歌的人通常要录下自己再对照原唱回放，或者买一份未必对应你所爱版本的伴奏。OnKey 换了一种做法：在平时的音乐 App 里播放歌曲并跟着唱，应用会从这次播放中学习主唱旋律。之后再次播放时，音符条会向播放头滚动，你的实时音高叠在上面，每句还能得到报告。音乐始终来自你自己的 App，OnKey 不提供、不串流也不下载歌曲。\n\n## 有什么不同\n\n核心机制是在本机分析它听到的系统声音。首次播放结束后，人声分离模型和 CREPE 音高跟踪提取歌手旋律，GAME 音符模型把旋律转成每个音节一条音符。这样它就能配合你本来就在听的歌，而不是一个固定的曲库，转录内容只留在本机。README 说明学过的歌和录音保存在本机，应用不会保存它听到的音乐。\n\n代价也来自这个设计。首次播放必须先学歌：没法直接给一首没听过的歌打分，因为旋律是在歌曲结束时建立的。评分对低八度演唱和稍微延迟比较宽容，适合业余练习，但不是严格试唱评委。分享也有边界：分享的是一段只有你的声音和音高线、不含音乐的短视频。“合理使用 OnKey”一节还要求用户不对外发布转录出的旋律、不修改应用去保存音乐、在酒吧或活动等公开场合使用有授权的卡拉 OK。这些是作者的要求和法律立场，不是技术保证。\n\n## 谁值得试\n\n适合已经在用 Spotify、Apple Music 或 YouTube 的 Apple Silicon Mac（M1 或更新，macOS 14.2 或更新）用户，想练歌时看到自己哪里跑调。[官方入门文档](https:\u002F\u002Fsingonkey.app\u002Fdocs\u002F)会要求麦克风和系统声音录制权限，并提供“Listen only”模式，仅凭声音跟随 Spotify 和 Apple Music。老师或伴奏者也可以把逐句报告当作参考。\n\n不适合想在 Windows、Linux、Intel Mac 或手机上练习的人，README 没有给出其他平台路径。也不适合乐队、酒吧或活动场景：那里需要公开播放音乐，或者你想在网上分享完整演唱，而分享会去掉音乐，README 也建议这类场景使用有授权的卡拉 OK。想要一套会随水平提高逐步撤掉视觉辅助的正规教学体系的人，也不在它的设计目标内；[Show HN 讨论](https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=50195488)中有评论者提出过这一顾虑，作者回应说可以开启 mini 模式，在看不到音高线的情况下练唱。\n\n## 使用条件与边界\n\n硬性门槛是 Apple Silicon Mac 和 macOS 14.2 或更新，Intel Mac 和非 Mac 用户被排除在外。应用需要麦克风和系统声音录制两项权限，有些用户可能不愿授予。当音乐 App 没有报告正在播放什么时，它还会通过 Shazam 识别歌曲；README 说可以在设置里关闭 Shazam、歌词和更新检查。从源码构建可以避免信任分发的二进制文件，但需要 Xcode 命令行工具、Rust、Node、Python 3，并下载模型；即便如此，源码构建也无法用 Shazam 识别新歌，因为这需要作者的 Apple 签名。这个限制只影响 YouTube 和“Listen only”模式，因为 Spotify 和 Apple Music 会自己报告曲目。日常维护还包括模型下载、每天检查更新，以及 LRCLIB 社区歌词的准确性，README 并未说明这些歌词获准用于公开表演。\n\n## HotRepo 点评\n\nHotRepo 在 2026-10-25 首次记录这个仓库，当时总星数 285，在 Rust 新项目榜（不是总榜或日榜）排第 17；提供的样本只覆盖 2026-10-24 到 2026-10-25，因此还无法判断热度能否持续。Show HN 帖子获得 228 分和 91 条评论，这只能说明讨论量，不代表长期价值。对潜在用户来说，实际该确认的是 [FAQ](https:\u002F\u002Fsingonkey.app\u002Fdocs\u002Ffaq\u002F) 是否解决了你的音乐 App 和权限设置问题，再决定是否依赖首次播放学歌。",{"slug":25,"name":26},"media","多媒体与设计",[28,29,30,31,32,33,34,35,36,37,38],"apple-silicon","audio","macos","music","nextjs","onnx","pitch-detection","rust","singing","tauri","vocal-training","MIT","https:\u002F\u002Fsingonkey.app","2026-10-25T03:00:23Z",[],1792918699]