低延迟 · 高精度 · 卡拉 OK 打轴工具
A low-latency, high-precision karaoke timing tool — inspired by RhythmicaLyrics.
🇨🇳 中文 · 🇬🇧 English | Nicokara · Karaoke · ASS · 卡拉OK · 打轴
觉得有帮助?点亮一颗 ⭐ Star 就是对作者最大的鼓励!
Found it useful? A ⭐ Star is the warmest "thank you".
💜 简介 / About
StrangeUtaGame(简称 SUG)是一款受 RhythmicaLyrics 启发的卡拉 OK 歌词打轴软件。它在保留 RhythmicaLyrics工作流的同时,重写了音频引擎与渲染管线,专注于低延迟、高精度的时间标签制作,并把对中文创作者友好的体验放在首位 —— 无需日语转区、全格式音视频导入、高质量变速、演唱者管理。
> StrangeUtaGame (SUG) is a karaoke timing tool inspired by RhythmicaLyrics. It rebuilds the audio engine and rendering pipeline around ultra-low latency and frame-accurate timestamping, with a focus on a smoother experience for Chinese-speaking creators — no Japanese locale switch required, import any audio/video format, and studio-grade time-stretching, Singer Management.
|
🎯 适合谁 / Who it's for
|
🚫 不是什么 / What it isn't
|
🎬 截图 / Screenshots
✨ 功能特性 / Features
| ⚡ |
低延迟、高精度打轴 / Frame-accurate timing 基于 BASS 音频库 + sounddevice 的低延迟回放管线,按键 → 音频指针 → 时间戳一气呵成;可配置 tag_offset_ms 全局补偿与每首歌偏移。Powered by the BASS audio library with a tuned sounddevice output path; per-tag offset and per-song global offset are both adjustable.
|
| 🤖 |
AI 打轴(Beta) / AI-assisted timing (Beta) 在 打轴界面 → AI 打轴 中,根据人声音频、歌词与已有注音自动生成整首歌曲的时间戳;支持日文及歌词中的中文、英文、韩文内容,可自动复用或分离人声,并提供日文推荐模型与多语言通用模型。默认日文推荐模型仅限非商业用途。结果仅供辅助参考,完成后请人工校准,尤其是和声与重叠人声段落。 Generate full-song timestamps from vocals, lyrics and existing readings under Timing → AI Timing. Japanese, Chinese, English and Korean content are supported, with reusable/automatic vocal separation and both Japanese-focused and multilingual models. The default Japanese-focused model is non-commercial only. Always review the result manually, especially harmony and overlapping-vocal sections. |
| 📤 |
13 种歌词格式导出 / Thirteen export formats LRC(增强型 / 逐行 / 逐字)· KRA · TXT · SRT · txt2ass · ASS · Nicokara · Nicokara(带注音) · RL 编辑模式 · 春日向注音 · Kirakara —— Aegisub、NicokaraMaker、RhythmicaLyrics 工作流无缝衔接;KRL 文件也可直接导入。 LRC (enhanced / per-line / per-word), KRA, TXT, SRT, txt2ass, ASS, Nicokara, Nicokara-with-furigana, RL edit-mode, Kasugamuki and Kirakara. KRL files can also be imported directly. |
| 🎤 |
多演唱者管理 + 分色 / Multi-singer manager + split colors 支持任意数量演唱者,自带配色、互补色生成、分色(单人最多 5 色)、分组、拖拽排序、启用/禁用、软件级预设;可逐字(per-char)指定演唱者并支持跨行划选批量应用;导出时可按演唱者过滤,或在切换处自动插入 【名】 标签,另配分色标签助手。Unlimited singers with auto color generation, split colors (up to 5 per singer), grouping, drag-reorder, enable/disable and presets; per-char singer assignment with cross-line selection; export can filter by singer or auto-inject 【name】 tags, plus a color-tag helper.
|
| 🇯🇵 |
自动注音(多引擎 + LLM + 罗马音) / Auto-furigana (multi-engine + LLM + romaji) 主引擎 WinRT JapanesePhoneticAnalyzer(main 变体)/ SudachiPy(noWinIME·mac 变体),辅以 pykakasi + 本地/联网词典;可在 设置 → 读音词典 → LLM 注音 启用 LLM 并配置 API;支持一键转罗马音与「仅注音」模式;按平假名/片假名/汉字/字母/数字分类启停,自动补全句首停顿点、促音、长音、括号、英文音节等规则。片假名英文注音开关位于 设置 → 读音词典 → 根据用户词典给片假名标注英文。Primary engine is WinRT JapanesePhoneticAnalyzer (main build) or SudachiPy (noWinIME/mac); pykakasi + local/online dictionaries fall in behind. Optional LLM-based furigana (bring-your-own API, auto-fallback) and one-click romaji. Per-category toggles plus rules for sokuon, long vowel, parentheses, English syllables …
|
| 🌐 |
联网读音词典 / Online reading dictionary 内置 RhythmicaLyrics 官方源;可自定义源顺序、自定义源 URL、定时自动更新;查询结果合并本地词典, {原文||读音} 即写即用。Ships with the RhythmicaLyrics official source; sources are user-orderable with custom URLs and scheduled auto-update. |
| 🎞️ |
全格式音视频导入 / All-format ingest BASS 自带 FLAC / OPUS / MP3 / WMA / WV / DSD / ALAC / AAC / AC3 / WebM 解码;视频文件由内置 video_converter 抽轨。BASS decodes FLAC / OPUS / MP3 / WMA / WV / DSD / ALAC / AAC / AC3 / WebM natively; video files are demuxed by the built-in converter. |
| 🐢 |
变速不变调,慢放扒轴 / Pitch-preserved time-stretch BASS-FX + pedalboard 双管线,最低可拉到 0.2×,慢放扒轴细听咬字、气口与连唱不再走样。BASS-FX + pedalboard dual pipeline; drop the rate down to 0.2× and still hear clear syllable onsets.
|
| 📝 |
全文本编辑模式 / Inline full-text editor 整段 inline 格式: {原文||读音} 注音 + [mm:ss.cc] 时间戳 + 停顿点 [>...] + 演唱者 【名】,所见即所得,键盘流编辑神器。Edit lyrics as one fluent text: {text||reading} furigana, [mm:ss.cc] timestamps, end-of-line [>...] and 【singer】 all live inline.
|
| 🧠 |
AutoCheck 智能补全 / AutoCheck rules engine 按字符类型、句首停顿点、空格、标点、英语音节等多达 20+ 项规则一键补全节奏点;删除节奏点时智能回跳 jump_before_ms 毫秒以便复听。20+ rules cover character class, sentence boundaries, spaces, punctuation, English syllables; deleting a checkpoint smart-rewinds to let you re-listen. |
| 🧰 |
时间戳工具箱 / Timestamp toolbox 打轴界面「时间戳工具」集合:批量删除(全部 / 保留首行 / 所选范围)、按行或按所选范围整体移动、自动补偿、分离符号时间戳、超宽的原始时间戳调整 —— 扒轴返工不再手忙脚乱。 A "Timestamp tools" suite: bulk delete (all / keep first line / selected range), shift by line or range, auto-compensate, split symbol timestamps, and wide raw-timestamp tweaking. |
| 🎯 |
打轴预览指引 / Customizable timing guide 预览走字可叠加「上一个 / 正在打 / 下一个」字的引导着色,每档不透明度与开关均可自定义;另有导唱符待办标记,对无时间戳处提前标注「此处需导唱符」。 The karaoke preview can overlay prev / current / next guide coloring with per-level alpha and toggles; plus a "needs guide symbol" to-do marker for untimed spots. |
| 🔊 |
打轴按键音 / Key sounds 可选 default / arcade / osu / sci 等多种按键音效,把打轴体验拉近音游手感(默认关闭,按需开启)。 Optional key-press/-release sounds (default / arcade / osu / sci …) for a rhythm-game-like feel — off by default. |
| 🌏 |
无需日语转区 / No Japanese locale required 原生 UTF-8 路径与文本,告别 mojibake、告别 AppLocale;中文 UI 默认开箱即用。 Native UTF-8 paths and text everywhere — no AppLocale, no mojibake. |
| 💾 |
自动保存 + 撤销栈 / Autosave + undo stack 默认每 5 分钟落盘一次 .sug 工程;命令模式撤销栈支持几十步回退,配合 Ctrl+Z / Ctrl+Y 标准操作。Auto-saves the .sug project every 5 min by default; a command-pattern undo stack supports deep Ctrl+Z / Ctrl+Y.
|
| 🚀 |
内置自动更新器 / Built-in updater 启动时检查 GitHub 发行版;可选 ghproxy / gh-proxy / ghproxy-net 镜像加速;支持系统代理 / 手动代理 / 跳过版本。 Auto-checks GitHub releases at launch; supports ghproxy / gh-proxy / ghproxy-net mirrors plus system or manual proxy. |
| 🌍 |
多语言界面 / Multilingual UI 内置简体中文 / 日本語 / English 三语,默认 Auto 跟随系统语言,也可在 设置 → 关于/语言 固定;基于 Qt .ts/.qm 翻译资源,欢迎贡献新语言。Ships Simplified Chinese / Japanese / English; defaults to Auto (follows the OS) or pin it under Settings → About/Language. Built on Qt .ts/.qm — new languages welcome.
|
| 🎨 |
Fluent Design 现代 UI / Modern Fluent UI 基于 PyQt6-Fluent-Widgets 的 Win11 风格界面,支持浅色 / 深色 / 跟随系统三种主题。A Windows 11–style UI built on PyQt6-Fluent-Widgets with light / dark / system theme.
|
🧭 常用功能入口 / Where to find settings
| 功能 / Feature | 入口或设置位置 / Location | 说明 / Notes |
|---|---|---|
| AI 打轴(Beta) / AI-assisted timing | 打轴界面 → AI 打轴 | 模型、设备、下载镜像、模型目录、AI 缓存和运行环境均在弹窗内设置;执行结果可撤销一次。 |
| 播放区间锁定 / Playback range locks | 设置 → 快捷键 → 锁定播放起点 / 锁定播放终点 | 默认按键为 [ / ];再次触发可取消锁定。 |
| 播放头居中模式 / Centered playhead | 设置 → 打轴 → 波形时间标签 → 播放头居中模式 | 默认关闭;开启后播放头固定在时间轴中央。 |
| Karaoke 实时预览 / Live preview | 设置 → 界面 | 进入该页面后自动显示;拖动标题可移动,拖动边缘可缩放。 |
| 软件界面字体 / Interface font | 设置 → 界面 → 界面设定 → 界面字体 | 留空时按界面语言自动选择,修改后立即应用。 |
| Karaoke 预览横向滚动 / Horizontal preview scrolling | Karaoke 预览区域 | 内容超宽时自动显示横向滚动条;也可按住 Alt 滚动鼠标滚轮。 |
| 最近打开的项目 / Recent projects | 打轴界面 → 文件管理 → 最近打开的文件 | 最多显示 10 条记录,可在同一菜单中清空。 |
| F2 注音快捷编辑 / Quick ruby editor | 设置 → 快捷键 → 字符与行编辑 → 注音编辑窗口 | 默认 F2;可选择迷你浮窗或经典大窗口。 |
| Kirakara 导入与导出 / Kirakara import & export | 导入:首页 → 导入歌词文件或打轴界面 → 文件管理 → 加载歌词;导出:导出 → 导出格式 → Kirakara | 支持带 config 配置块的 KRL;默认导出格式可在 设置 → 导出 → 默认导出格式 中修改。 |
📦 安装与运行 / Installation
🪟 支持系统 / Supported OS: Windows 10 / 11 · 🍎 macOS(实验性 / experimental)
🚀 方式一 · 直接运行(推荐) / Pre-built release (recommended)
从 Releases 页面下载最新版本,解压后双击 StrangeUtaGame.exe 即可。
Download the latest archive from the Releases page, unzip, then run StrangeUtaGame.exe.
📦 体积参考 / Approx. size: ~250 MB
🍎 macOS 注意事项 / macOS notes
macOS 版为实验性构建,使用前请留意:
- 按芯片选择安装包 / Pick the build for your chip. Apple Silicon(M1/M2/M3…)下载
StrangeUtaGame-mac-arm64-vX.Y.Z.dmg;Intel 芯片下载StrangeUtaGame-mac-intel-vX.Y.Z.dmg。不确定芯片类型可在「终端」执行uname -m(arm64= Apple Silicon,x86_64= Intel)。装错架构会在启动时报Bad CPU type in executable。(另有一个名为StrangeUtaGame-mac-vX.Y.Z.zip的旧命名包仅为老版本的更新检测保留,请勿下载。) - 首次打开被拦截(未签名)/ Unsigned app blocked on first launch. 应用未做 Apple 签名与公证,双击会提示「无法打开,因为无法验证开发者」。绕过方式:在
StrangeUtaGame.app上右键 → 打开,在弹窗里再次点「打开」;或在终端执行xattr -dr com.apple.quarantine /path/to/StrangeUtaGame.app后再启动。 - 无自动更新 / No auto-update. macOS 不支持应用内自动更新;检测到新版本时只会在浏览器打开 Releases 页面,需手动下载并替换旧的
.app。
macOS builds are experimental. Pick by chip: Apple Silicon →…-mac-arm64-.dmg, Intel →…-mac-intel-.dmg(rununame -mif unsure —arm64= Apple Silicon,x86_64= Intel; the wrong arch fails withBad CPU type in executable). The app is not signed/notarized — on first launch use right-click → Open (orxattr -dr com.apple.quarantine) to bypass Gatekeeper. No in-app auto-update; new versions open the Releases page in your browser for a manual download.
🛠️ 方式二 · 从源码运行 / Run from source
# 克隆仓库 / Clone
git clone https://github.com/karaoke-studio/StrangeUtaGame.git
cd StrangeUtaGame
创建虚拟环境(推荐) / Create a virtualenv (recommended)
python -m venv venv
venv\Scripts\activate
安装依赖 / Install dependencies
pip install -r requirements.txt
启动 / Launch
python main.py
或使用 uv(更快) / Or with uv (faster):
uv venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -r requirements.txt -r requirements-dev.txt
python main.py
依赖文件说明 / Dependency files. 依赖真源是锁定版本的requirements*.txt(被发布流程做内容哈希用于增量更新,改动需谨慎);pyproject.toml仅承载工具配置(ruff/black/mypy/pytest)。安装时按平台/变体追加其一:
- main 变体(Windows,WinRT 注音):额外 pip install -r requirements-winrt.txt
- noWinIME / mac 变体(sudachi 注音):额外 pip install -r requirements-variants.txt
> Source of truth for deps is the pinnedrequirements*.txt(content-hashed by the release pipeline for incremental updates — change with care);pyproject.tomlonly holds tool config. Add one extra file per platform/variant as above.
📦 方式三 · 自行打包 / Build it yourself
# 安装 PyInstaller / Install PyInstaller
pip install pyinstaller
使用打包脚本(推荐) / Run the build script
python build.py
打包完成后可在 dist/StrangeUtaGame/ 目录找到可执行文件。
The packaged executable will appear in dist/StrangeUtaGame/.
⌨️ 键位说明 / Hotkeys
✅ 以下为打轴模式的默认键位,可在 设置 → 快捷键 中重新映射。
These are the default Timing Mode bindings. Remap them under Settings → Hotkeys.
| 🎯 播放与跳转 · Playback & Seek | ||
|---|---|---|
| 播放 / 暂停 · Play / Pause | A | 音频与光标同步控制 |
| 停止 · Stop | S | 停止并回到行首 |
| 从头播放 · Play from Beginning | Shift+S | 停止、回到开头并立即播放 |
| 后退 / 前进 · Seek back / forward | Z X | 默认后退 2000 ms / 前进 3000 ms |
| 减速 / 加速 · Speed − / + | Q W | 0.2× ~ 2.0×,变速不变调 |
| 恢复默认速度 · Reset speed | E | 也可双击速度条 |
| 音量 − / + · Volume − / + | 未绑定 | 可在快捷键设置中按需绑定 |
| 锁定播放起点 / 终点 · Lock range start / end | [ ] | 再次按下取消锁定,操作支持撤销 |
| 🎯 打轴主操作 · Tagging | ||
| 打轴 · Mark timestamp (now) | D / F / Space | 打轴模式下:在当前字打节奏点 |
| 清除当前节奏点 · Clear timestamp | Backspace | 仅清除时间戳,不删字 |
| 停顿点标记切换 · Toggle line-end | 2 | 停顿点「●」标记 |
| 打到停顿点 · Mark up to line-end | P | 把剩余字符全部打上时间戳 |
| 切换字内节奏点 · Cycle in-char checkpoint | Alt+← Alt+→ | 在多重 check 之间切换 |
| 增加 / 减少节奏点 · Add / Remove checkpoint | 1 3 | 用于字内多重 check |
| 插入导唱符 · Insert guide symbol | Ctrl+1 | 默认符号「●」 |
| 时间戳微调 ± · Nudge timestamp | Alt+↑ Alt+↓ | 默认步进 10 ms |
| 🎯 光标导航 · Navigation | ||
| 上一行 / 下一行 · Prev / Next line | ↑ ↓ | — |
| 上一字 / 下一字 · Prev / Next char | ← → | — |
| 断行 · Break line here | Enter | 从当前光标断行 |
| 与上一行合并 · Merge into previous line | Shift+Enter | — |
| 🎯 编辑 · Editing | ||
| 编辑注音 · Edit ruby (furigana) | F2 | 编辑当前字注音,并可设置与下一字符连词 |
| 切换连字 · Toggle word-join | F3 | — |
| 批量修改 · Bulk change | Ctrl+H | 批量替换 |
| 修改字 / 行 · Modify char / line | J Ctrl+2 | — |
| 插入空格 · Insert space | M | — |
| 删除字 · Delete char | Delete | — |
| 撤销 / 重做 · Undo / Redo | Ctrl+Z Ctrl+Y | 深度命令栈 |
| 复制字 / 粘贴歌词 · Copy / Paste | Ctrl+C Ctrl+V | — |
| 🎯 注音 / 演唱者 · Ruby & Singer | ||
| 分析整篇注音 · Analyze all rubies | Ctrl+3 | WinRT IME 全文跑一遍 |
| 分析选区注音 · Analyze selected | Ctrl+A | — |
| 分析当前行注音 · Analyze line | Ctrl+Shift+A | — |
| 按类型删除注音 · Delete rubies by type | Ctrl+4 | 按假名 / 符号 / 长音… 过滤 |
| 按行设置演唱者 · Set singer by line | Ctrl+5 | — |
| 应用演唱者 · Apply singer | K | — |
| 🎯 工程与导出 · Project & Export | ||
| 打开全文本编辑 · Open full-text editor | Ctrl+T | inline 整段编辑窗口 |
| 保存工程 · Save project | Ctrl+S | 保存 .sug 工程 |
| 快速导出 · Quick export | Ctrl+E | 按上次格式与目录一键导出 |
💡 还有一个独立的 编辑模式(Edit Mode):其中 Space / Backspace / . 分别用于增加节奏点、删除节奏点和切换停顿点;上表列出的是音乐播放时使用的打轴模式键位。
Edit Mode uses Space / Backspace / . to add a checkpoint, remove one, and toggle the line end. The table above lists the Timing Mode bindings used during playback.
🧰 技术栈 / Tech Stack
以上仅为代表性依赖;完整清单以仓库 requirements.txt / requirements-dev.txt 为准。
Representative deps only — see requirements.txt & requirements-dev.txt for the full list.
🗂️ 项目结构 / Project Structure
StrangeUtaGame/
├── main.py # 入口 / Entry point
├── build.py · build_all.py # PyInstaller 打包脚本(单变体 / 全变体)
├── pyproject.toml # 工具配置(ruff/black/mypy/pytest)/ Tool config
├── requirements.txt # 运行依赖(锁定版本)/ Runtime deps (pinned)
├── requirements-winrt.txt # main 变体:WinRT 注音 / WinRT furigana (main)
├── requirements-variants.txt # noWinIME / mac 变体:sudachi 注音
├── requirements-dev.txt # 开发依赖 / Dev deps
├── setup_env.bat # Windows 一键环境 / Win one-click setup
│
├── config.json # 全局配置(含快捷键 / AutoCheck / 网络源)
├── dictionary.json # 读音词典 / Reading dictionary
├── network_dictionary.json # 联网词典缓存 / Online dict cache
├── singers.json # 演唱者预设 / Singer presets
│
├── docs/ # 设计文档 / Design docs
│ ├── application.md # 应用层 / App layer
│ ├── architecture.md # 总体架构 / Architecture
│ ├── auto_update.md # 自动更新 / Auto-update
│ ├── domain.md # 领域模型 / Domain model
│ ├── infrastructure.md # 基础设施 / Infrastructure
│ ├── timetag-spec-mapping.md # 时间标签规范 / Timetag spec
│ ├── ui.md # UI 设计 / UI design
│ └── 更新日志-0.2.0.md
│
├── src/strange_uta_game/ # 主包 / Main package
│ ├── __version__.py # 版本号 + 变体标识 / Version & build variant
│ │
│ ├── backend/ # 后端(无 Qt 依赖)/ Backend (Qt-free)
│ │ ├── domain/ # 领域层 / Domain (纯数据模型)
│ │ │ └── entities.py · models.py · project.py
│ │ ├── application/ # 应用服务 / Application services
│ │ │ ├── timing_service.py · export_service.py
│ │ │ ├── auto_check_service.py · calibration_service.py
│ │ │ ├── command_manager.py · singer_service.py
│ │ │ └── project_service.py · project_import_service.py
│ │ └── infrastructure/ # 基础设施 / Infrastructure
│ │ ├── audio/ # 音频引擎 / Audio engine
│ │ │ ├── bass_engine.py · bass_tsm_engine.py
│ │ │ ├── sounddevice_engine.py · ring_buffer.py
│ │ │ └── tsm_cache.py · keysound_player.py · video_converter.py
│ │ ├── parsers/ # 解析与注音 / Parsers & furigana
│ │ │ ├── lyric_parser.py · ass_parser.py · srt_parser.py
│ │ │ ├── ruby_analyzer.py · english_ruby.py · e2k_engine.py
│ │ │ ├── inline_format.py · annotated_text.py · romaji.py
│ │ │ └── kanji_reading_split.py · rl_dictionary.py · text_splitter.py · llm_ruby.py
│ │ ├── exporters/ # 导出器 / Exporters
│ │ │ ├── lrc_exporter.py · nicokara_exporter.py · srt_exporter.py
│ │ │ └── txt_exporter.py · txt2ass_exporter.py · inline_exporter.py
│ │ ├── data/default_dictionary.py # 内置词典 / Built-in dict
│ │ ├── persistence/sug_io.py # .sug 工程读写 / Project IO
│ │ └── network_dictionary.py # 联网词典 / Online dict
│ │
│ ├── frontend/ # 界面层 / UI layer (PyQt6 + Fluent)
│ │ ├── main_window.py · theme.py · workers.py
│ │ ├── window_sizing.py · splash_screen.py · winrt_japanese_guide.py
│ │ ├── editor/ # 编辑器 / Editors
│ │ │ ├── timing_interface.py + timing/ # 打轴主界面 + 子组件
│ │ │ ├── fulltext_interface.py # 全文本编辑(已废弃)
│ │ │ └── line_interface.py # 行编辑
│ │ ├── home/ · export/ · singer/ · online/ # 起始 / 导出 / 演唱者 / 联网词典
│ │ ├── settings/ # 设置页 + cards + dialogs
│ │ ├── localization/ # 多语言 i18n (zh / en / ja)
│ │ └── startup/ · log/
│ │
│ ├── updater/ # 自动更新器 / Auto-updater
│ │ ├── http_client.py · installer.py · manifest.py · worker.py
│ │ ├── proxy.py · settings.py · sources.py · version.py
│ │ └── ui/ # 更新弹窗 / Update dialogs
│ │
│ ├── bass/ # BASS DLLs(x86 + x64)/ BASS DLLs
│ ├── config/ # 默认配置与词典 / Default config & dicts
│ │ ├── config.json · dictionary.json · singers.json
│ │ └── cmudict-0.7b · e2k.txt · kanji_readings.json
│ └── resource/ # 图标与音效 / Icons & key sounds
│ └── icon.ico · icon.icns · mascot.png · sounds/
│
├── tests/ # 测试 / Tests (pytest + pytest-qt)
│ ├── app/services/ · app/domain/
│ ├── infrastructure/ · ui/
│ └── updater/
│
└── scripts/ # 杂项脚本 / Misc scripts
├── release.py
├── import_rl_builtin_dict.py
└── migrate_dictionary*.py
📌 节略自仓库实际目录;命名 / 层级以 src/strange_uta_game/ 真实内容为准。
Compressed from the real repo layout — see src/strange_uta_game/ for the authoritative tree.
🤝 贡献指南 / Contributing
我们欢迎任何形式的贡献! We welcome contributions of all kinds.
|
🐛 报 Bug / Report a bug
|
✨ 提功能 / Propose a feature
|
|
🔧 改代码 / Send a pull request
|
🌍 翻译 / Translate 已支持 中 / 日 / 英;新增语言可基于
Already in zh / ja / en — add a language by
translating the Qt |
提交前请运行 ruff check . 与 pytest。
Please run ruff check . and pytest before opening a PR.
💐 致谢 / Credits
- RhythmicaLyrics — 灵感来源与工作流原型 / Original inspiration & workflow
- FA-Kara (moriwx) — AI 打轴对齐与注音转写思路参考(MIT)/ Forced-alignment & transcription reference for AI timing
- yohane (Japan7) — AI 打轴 Wav2Vec2 CTC 对齐思路参考 / Wav2Vec2 CTC alignment reference for AI timing
- BASS Audio Library (un4seen) — 低延迟音频引擎与解码 / Low-latency audio engine & decoding
- BASS-FX — 实时音频变速 / Real-time pitch-preserving stretch
- pedalboard (Spotify) — 音频效果与高质量变速 / Audio effects & HQ stretch
- sounddevice · soundfile — 音频 I/O
- PyQt6 + PyQt6-Fluent-Widgets — UI 框架 / UI framework
- WinRT JapanesePhoneticAnalyzer — 系统 IME 注音 / System IME furigana
- pykakasi · jaconv · pyphen — 日语 / 英文音节处理
- CMUdict · e2k — 英文注音词典 / English pronunciation dicts
- 所有提 issue / PR 的伙伴们 · Everyone who filed an issue or PR 💜
❓ FAQ
Q1. 为什么叫 "StrangeUtaGame"?这是音游吗? Why "StrangeUtaGame"? Is it a rhythm game?
不是 🙅 —— 这只是个有点意思的名字。Uta 就是日语「歌」,项目本质是卡拉 OK 打轴工具,不是音游。 No 🙅 — the name is just a bit of fun. Uta means "song" in Japanese; the project is a karaoke timing tool, not a rhythm game.
Q2. 和 RhythmicaLyrics、Aegisub-kara-templater 有什么区别? How is it different from RhythmicaLyrics or Aegisub kara-templater?
- 相比 RL:现代 UI、毫秒级低延迟回放、无需日语转区、原生 UTF-8。
- 相比 Aegisub kara-templater:SUG 专注「打轴」这一步,导出后再交给 Aegisub 做样式与特效,两者互补。
Q3. 支持 macOS / Linux 吗? Does it support macOS / Linux?
目前仅官方支持 Windows 10/11。源码本身是 Python + Qt,理论上跨平台 —— 欢迎社区贡献构建脚本与测试报告。 Officially Windows 10/11 only for now. The code is Python + Qt and should be portable; build scripts & test reports for other OSes are very welcome.
Q4. 我之前的 RhythmicaLyrics工程能直接导入吗? Can I import my existing RhythmicaLyricsproject?
支持导入 RhythmicaLyrics导出的 ASS / LRC / TXT 与 RL 编辑模式 文本格式;联网词典同时兼容 RhythmicaLyrics 官方接口,原有词典资产可直接复用。 ASS / LRC / TXT and the RL edit-mode text format from RhythmicaLyricscan be imported; the online dictionary is wire-compatible with the RhythmicaLyrics official endpoint, so your existing dictionary assets keep working.
Q5. 打开后没有声音 或 加载某个音频报错? No sound, or an audio format fails to load?
发行版自带全套 BASS DLL(含 FLAC / OPUS / AAC / AC3 / WMA / DSD / ALAC / WebM 插件)位于 lib/;若从源码运行请保证 src/strange_uta_game/lib/ 下的插件完整。视频文件由内置 video_converter 抽轨。
The release ships the full BASS codec set (FLAC / OPUS / AAC / AC3 / WMA / DSD / ALAC / WebM) under lib/. From source, keep the DLL set at src/strange_uta_game/lib/ intact.
Q6. 自动注音怎么工作?为什么某些词的读音不准? How does auto-furigana work? Why are some readings off?
主引擎是 Windows 系统自带的 WinRT JapanesePhoneticAnalyzer。首次运行需在 设置 → 时间和语言 → 语言 中启用 日语基本包 (Language.Basic~~~ja-JP);未启用时应用内会探测并引导安装。本地 / 联网词典会覆盖 IME 结果,遇到生僻词可补充本地词典。 The primary engine is Windows' WinRT JapanesePhoneticAnalyzer, which needs the Japanese basic IME pack. The app probes for it and guides you to install. The local + online dictionaries override IME results for tricky readings.
Q7. 联网词典不走?代理 / 镜像怎么设? Online dictionary blocked? Proxy / mirror?
在 设置 → 网络可切换词典源(内置 RhythmicaLyrics 官方)、自定义 URL、调整源优先级。自动更新则内置 ghproxy / gh-proxy / ghproxy-net 三个 GitHub 镜像。 Under Settings → Network you can switch dictionary sources (RhythmicaLyrics official), add custom URLs, reorder priorities. The updater can route through ghproxy / gh-proxy / ghproxy-net.
📜 License
本项目采用 GNU General Public License v3.0 开源。 Released under the GNU General Public License v3.0.
Copyright (C) 2026 karaoke-studio and contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.






