跳到正文
Hacker News· dsmurrell·· 23 小时前AI 评分38

Show HN:五音不全的开发者做了款 Mac 练歌应用 OnKey,实时显示跑调位置

Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key

AI 导读

开发者 Daniel Murrell 发布免费开源 Mac 练歌应用 OnKey,可在 Spotify、Apple Music 或 YouTube 播放歌曲时跟唱,实时显示音高曲线并逐句打分。歌曲首次播放结束后,OnKey 在本地用 CREPE 与 GAME 等模型学习主唱旋律,后续播放时音符滚动提示。需 Apple Silicon Mac 与 macOS 14.2 以上,采用 MIT 许可。

正文 · AI 翻译

学会唱你喜爱的歌曲。 · singonkey.app

自 2026 年起,拯救那些在淋浴时唱歌的人。

OnKey's singing lane: note bars scroll towards the playhead and the singer's pitch is drawn over them, green where it's on the note
我跟着一首 OnKey 只听一遍就学会的歌一起唱。带声音的完整演示。

OnKey 是一款免费、开源的 Mac 唱歌训练器。在浏览器里用 Spotify、Apple Music 或 YouTube 播放一首歌,然后跟着唱。第一次,你会看到歌词,歌曲结束时 OnKey 会学会歌手的旋律。之后,音符会朝你滚动而来,你的音高会绘制在音符之上,你会得到一个分数,以及每一句的详细报告。

OnKey 不提供、不流式传输也不下载音乐。由你自己的音乐应用来播放。

安装

你需要一台搭载 Apple Silicon(M1 或更新)的 Mac,以及 macOS 14.2 或更新版本。

下载 OnKey.dmg(来自最新版本),打开它并把 OnKey 拖到“应用程序”文件夹。

设置过程会请求麦克风权限(用于听到你的声音)和系统音频录制权限(用于听到音乐应用的声音)。它还会询问 OnKey 是否可以跟随 Spotify 和 Apple Music:选择仅聆听,它就会仅凭声音来跟随歌曲。入门指南会带你走一遍流程,常见问题则解答常见疑问。

工作原理

当一首歌结束时,OnKey 会在你的 Mac 上学习它:一个模型将主唱从音乐中分离出来,CREPE 追踪歌手的音高,GAME 音符模型将其转换为每个音节一个小节。在之后的播放中,它会根据音乐本身找到自己的位置,并实时追踪你的声音。低八度演唱也算数,稍微晚一点也不会被扣分。工作原理和评分中有详细说明。

隐私

OnKey 从不保存它听到的音乐。它在播放时于内存中分析声音。你的录音和它学会的歌曲都留在你的 Mac 上(通过扬声器演唱的录音可能会包含一些音乐)。没有账户,没有分析,也没有崩溃报告。

以下请求确实会发出:

  • Shazam(Apple):音乐应用声音的一段短签名,不是音频,也绝不是你的麦克风,用于在音乐应用没有说明正在播放什么时,识别一首 OnKey 尚未学会的歌曲。
  • LRCLIB:歌曲的艺术家、标题、专辑和时长,用于获取歌词。
  • iTunes Search and Lookup(Apple):艺术家和标题,或 Shazam 返回的 ID,用于获取封面和歌曲时长。封面图片来自 Spotify、Apple 或 YouTube 的图片主机。
  • GitHub:启动一分钟后以及每天一次检查新版本,以及其下载。

设置中有 Shazam、歌词和更新检查的开关。隐私列出了 OnKey 保存和发送的所有内容,scripts/release-hosts.txt列出了发布版本中的每个网址。

合理使用 OnKey

OnKey 用于在家中练习,使用你有权播放的音乐。请:

  • 将它学会的内容留给自己。它对每首歌旋律的转录仅供你练习使用,所以不要分享或发布它。
  • 要分享一段录音,请使用其页面上的分享。它会生成一段你声音和音高线的短视频,不含音乐,你可以从 Instagram 自带的音乐库中添加歌曲,该音乐库已为此获得授权。戴耳机录音效果最好:通过扬声器演唱时,你的录音中会包含一些歌曲。不要发布音乐正在播放的屏幕录制。
  • 在酒吧或活动中请使用有授权的卡拉 OK 服务。OnKey 的歌词来自一个免费的社区数据库。
  • 不要修改 OnKey 来保存音乐。

权利持有人可以通过 hello@singonkey.app(LEGAL.md)联系我。

帮助

使用应用中的 报告问题(设置、帮助菜单或某首歌曲的页面)。它会在你的 Mac 上保存一个包含数字和日志的 zip 文件,不含音频,也不含对你的录音,你可以按需将其附加到 issue 中。 故障排除 涵盖了常见问题。有疑问,或者某首歌 不同步?在 OnKey 的 Discord 中提问,或发送邮件至 hello@singonkey.app。

从源码构建

如果你不想信任我的构建,可以自行构建。你需要一台装有 Xcode 命令行工具的 Apple Silicon Mac,以及 Rust、Node 和 Python 3:

git clone https://github.com/dsmurrell/onkey && cd onkey
npm install && npm --prefix ui install
python3 -m venv .venv && .venv/bin/pip install -r scripts/requirements-models.txt
PYTHON=.venv/bin/python scripts/fetch-models.sh   # downloads the models and checks them by SHA-256
npx tauri build

你的构建运行在你自己的 Mac 上。它唯一做不到的是让 Shazam 识别新歌,这需要我的 Apple 签名。Spotify 和 Apple Music 会自行报告正在播放的内容,因此这只影响 YouTube 和仅收听模式。CONTRIBUTING.md 中有详细信息、测试以及如何校验发布版本的校验和。我的 发布版本使用我的 Apple Developer ID 签名,并由 Apple 公证(spctl -a -vv /Applications/OnKey.app 显示签名者)。

许可与致谢

MIT。参见 LICENSE。修改版本不得称为 OnKey 或使用其图标。如果你基于 OnKey 的代码进行构建, 欢迎注明出处并链接回此处。

OnKey 使用 CREPE、GAME、wav2vec 2.0 和 UVR 的 MDX-Net Karaoke 2 来学习歌曲。 致谢 列出了每一项,THIRD_PARTY_NOTICES.md 包含完整的声明和许可文本。

OnKey 由 Daniel Murrell 制作。

来源:Hacker News · github.com