Releases: MXAntian/lip-sync-studio
Lip Sync Studio v0.1.7
中文 / English
中文
修了 v0.1.6 持久化失效(小天实测),顺手做了三件相关的 UX:
修复 1:持久化失效(关键)
根因:v0.1.6 用的 electron-builder portable target 启动时把 exe 解压到 %TEMP%/elevate-XXX/ 跑,process.execPath 是临时路径,settings.json 写在临时目录里——下次启动新临时目录就丢了。
修法:打包 target portable → dir(one-dir 文件夹分发)。one-dir 模式下 process.execPath 就是真实目录,settings.json 落在 EXE 旁边持久保留。同时给 settings 路径解析加 PORTABLE_EXECUTABLE_DIR 兜底。
修复 2:Rhubarb 路径自动探测
启动时扫 EXE 同目录 + 下一级子目录找 rhubarb.exe,找到自动填。把 Rhubarb 文件夹丢到 Lip Sync Studio.exe 旁边就完事,不用每次手选。已存路径失效也会重跑探测兜底。
修复 3:高级选项展开后下方被挡
window 改 resizable: true,默认高度 700 → 820(min 480×640)。
分发变化
- v0.1.6:单 EXE 69 MB(portable)
- v0.1.7:ZIP 107 MB(解压后 264 MB,one-dir 文件夹)
37 MB 增量换来配置持久化能跑 + 启动更快。
使用方法
- 下载
LipSyncStudio-v0.1.7-win-x64.zip,解压到永久目录(别留 Downloads) - 把 Rhubarb 文件夹丢到解压后的目录里(GUI 自动识别)
- 双击
Lip Sync Studio.exe
English
Fixes the v0.1.6 settings persistence bug + three related UX improvements.
Fix 1: Settings persistence (critical)
Root cause: v0.1.6 used electron-builder's portable target, which extracts the EXE to %TEMP%/elevate-XXX/ on launch. process.execPath resolves to that temp path, so settings.json got written to a temp dir that gets wiped on next launch.
Fix: Switched packaging target from portable → dir (one-dir folder distribution). settings.json now lives next to the EXE persistently. Also added PORTABLE_EXECUTABLE_DIR env-var fallback for safety.
Fix 2: Rhubarb path auto-detection
On startup, scans the EXE directory and one level of subdirectories for rhubarb.exe and auto-fills the GUI. Drop the Rhubarb folder beside Lip Sync Studio.exe — no manual picking. Re-runs detection if the stored path becomes invalid.
Fix 3: Advanced options panel clipping
Window is now resizable: true and defaults to 820px height (was 700; min 480×640). Generate button is fully visible even with advanced options expanded.
Distribution change
- v0.1.6: single EXE, 69 MB (portable)
- v0.1.7: ZIP, 107 MB (264 MB extracted, one-dir folder)
The 37 MB increase buys persistent settings + faster startup (no per-launch temp extraction).
Usage
- Download
LipSyncStudio-v0.1.7-win-x64.zip, extract to a permanent location - Drop your Rhubarb folder into the extracted directory
- Double-click
Lip Sync Studio.exe
Requirements
- Windows 10 / 11 (x64)
- Premiere Pro
- Rhubarb Lip Sync (download separately)
Built on top of Rhubarb Lip Sync by Daniel S. Wolf.
Lip Sync Studio v0.1.6
中文 / English
中文
下次打开 GUI 自动恢复上次配置——口型文件夹、Rhubarb 路径、帧率、高级选项、甚至上次用的音频文件,全部记住。
持久化字段(7 个)
| 字段 | 说明 |
|---|---|
| audioPath | 上次用的音频文件 |
| mouthDir | 口型文件夹 |
| rhubarbPath | Rhubarb 路径 |
| fps | 帧率 |
| recognizer | 识别器选择 |
| extendedShapes | 扩展嘴型选择 |
| dialogPath | 台本文件 |
落地位置
lip-sync-settings.json 写在 exe 同目录——跟 v0.1.0 portable 设计一致,把整个文件夹拷到别的机器,配置一起跟过去。
实现细节
- 启动时 IPC 拉取 settings.json 注入 zustand store
- store 监听 7 字段变化 → 300ms 防抖写盘(避免 keystroke 级 IO)
- 文件不存在或解析失败时静默回退到默认值
下载
Lip Sync Studio 0.1.6.exe (~69 MB · portable)
English
Settings persistence — next time you open the GUI, your previous mouth folder, Rhubarb path, FPS, advanced options, and even the last audio file are all remembered.
Persisted fields (7)
| Field | Description |
|---|---|
| audioPath | Last audio file |
| mouthDir | Mouth shape folder |
| rhubarbPath | Rhubarb executable path |
| fps | Frame rate |
| recognizer | Recognizer choice |
| extendedShapes | Extended shapes selection |
| dialogPath | Dialog file |
Storage location
lip-sync-settings.json is written next to the exe — consistent with v0.1.0's portable design. Copy the folder to another machine and your settings travel with it.
Implementation
- On startup, IPC pulls settings.json and hydrates the zustand store
- Store subscribes to changes on the 7 fields → debounced (300ms) write to disk to avoid keystroke-level IO
- Silently falls back to defaults if file missing or unparseable
Download
Lip Sync Studio 0.1.6.exe (~69 MB · portable)
Requirements
- Windows 10 / 11 (x64)
- Premiere Pro
- Rhubarb Lip Sync (download separately)
Built on top of Rhubarb Lip Sync by Daniel S. Wolf.
Lip Sync Studio v0.1.5
中文 / English
中文
紧急修复:v0.1.4 的「⚙️ 高级选项」折叠面板点不开。
根因
v0.1.4 用 HTML 原生 <details> / <summary> 实现折叠,实测在 Tailwind preflight + Electron webview 组合下 toggle 行为静默失效——点击没反应、▶ 三角形不变 ▼。
修法
改用 React state 控制折叠态:
<summary>→<button>(onClick toggle)<details>→<div>(内容 conditional render)- 自己渲染 ▶ / ▼ 指示符(Tailwind preflight 会去掉 native marker)
- 加 hover 背景高亮,增强可点击感
100% 可控,绕开所有 native <details> 兼容陷阱。
下载
Lip Sync Studio 0.1.5.exe (~69 MB · portable)
English
Hotfix: the "⚙️ Advanced options" collapsible panel introduced in v0.1.4 was not clickable.
Root cause
v0.1.4 used the native HTML <details> / <summary> element. Under the Tailwind preflight + Electron webview combination the toggle silently no-ops — clicks register but the panel never expands and the ▶ marker never flips to ▼.
Fix
Replaced with React state-controlled disclosure:
<summary>→<button>(onClicktogglesuseState)<details>→<div>(children rendered conditionally)- Render the ▶ / ▼ indicator manually (Tailwind preflight strips the native marker)
- Added hover background highlight for clearer affordance
Fully controllable, bypasses all native <details> compatibility traps.
Download
Lip Sync Studio 0.1.5.exe (~69 MB · portable)
Requirements
- Windows 10 / 11 (x64)
- Premiere Pro
- Rhubarb Lip Sync (download separately)
Built on top of Rhubarb Lip Sync by Daniel S. Wolf.
Lip Sync Studio v0.1.4
中文 / English
中文
GUI 接入 Rhubarb 真正对用户有意义的高级参数。v0.1.3 写死 --extendedShapes "X" 是过度修复——回退掉,交给 GUI 选。
新增高级选项
主界面下方新增「⚙️ 高级选项」折叠面板(默认收起,不打扰主流程),点开后包含:
1. 识别器
pocketSphinx(英语 · 精度高,默认)phonetic(任意语言 · 中文必选)
2. 扩展嘴型(4 档)
- 基础(A-F):6 种基础嘴型,没有静音/扩展
-
- 静音(A-F + X):加上 X 静音
-
- G(A-G + X):加上 G(F 的扩展变体)
- 完整(A-H + X,默认):Rhubarb 默认全套 9 种
3. 台本文件(选填)
txt 路径,仅 pocketSphinx 英文场景提升识别准度。配 ✕ 清除按钮。
同步改动
- 嘴型 PNG regex 从
[A-FX]扩到[A-HX],覆盖完整 9 种嘴型 - main process 透传新参数到
rhubarbCLI
不加进 GUI 的参数(避免噪音)
--quiet / --machineReadable / --consoleLevel / --threads / --logFile:纯程序员选项;DAT 相关 (--datFrameRate / --datUsePrestonBlair):我们用 JSON 输出。
下载
Lip Sync Studio 0.1.4.exe (~69 MB · portable,免安装)
English
GUI now exposes Rhubarb's user-facing advanced parameters. v0.1.3 hardcoded --extendedShapes "X" was an over-correction — reverted in favor of letting the user choose.
New advanced options
A collapsible "⚙️ Advanced options" panel appears under the main controls (collapsed by default to avoid clutter):
1. Recognizer
pocketSphinx(English · high accuracy, default)phonetic(any language · required for Chinese / Japanese / etc.)
2. Extended shapes (4 presets)
- Basic (A–F): 6 basic shapes, no idle/extended
-
- Silence (A–F + X): adds X idle shape
-
- G (A–G + X): adds G (F-like extended variant)
- Full (A–H + X, default): Rhubarb's full 9-shape set
3. Dialog file (optional)
A .txt path. Only improves pocketSphinx (English) recognition accuracy. Ships with a ✕ clear button.
Related fixes
- Mouth PNG regex broadened from
[A-FX]to[A-HX], covering all 9 shape variants - Main process forwards new params to the
rhubarbCLI
Parameters intentionally not exposed (to avoid UI noise)
--quiet / --machineReadable / --consoleLevel / --threads / --logFile: pure developer flags; DAT-related (--datFrameRate / --datUsePrestonBlair): we output JSON.
Download
Lip Sync Studio 0.1.4.exe (~69 MB · portable, no install required)
Requirements
- Windows 10 / 11 (x64)
- Premiere Pro
- Rhubarb Lip Sync (download separately)
Built on top of Rhubarb Lip Sync by Daniel S. Wolf — all credit for the actual lip-sync analysis goes upstream.
Lip Sync Studio v0.1.3
Lip Sync Studio v0.1.3
完整研读 Rhubarb 官方 README 后修了两个时间精度 bug。
修复 1:序列长度被拉长 11.67%(小天实测需要加速到 111.66% 才对齐)
根因(跟"GUI 参数没传过去"无关,是 frame sampler 自身 bug):
Rhubarb JSON cue 时间戳官方保证截断到 0.01s 的整数倍,而 30fps 下 frameDuration ≈ 0.0333s 跟 0.01s 不整除。原 sampler 对每个 cue 单独跑 t += frameDuration 循环切帧,cue 长度不是 frameDuration 整数倍时向上取整一帧。33s 音频 Rhubarb 通常输出 100150 个 cue,每个累积 01 帧偏差 → 总共多生成 ~115 帧 → 序列被拉长 1105/990 = 1.1167,跟实测 111.66% 完全吻合。
修法:改成按 timeline 均匀采样:
const audioDuration = cues[cues.length - 1].end // Rhubarb 保证最后 cue 的 end = 总时长
const totalFrames = Math.round(audioDuration * fps)
for (let i = 0; i < totalFrames; i++) {
const t = i / fps
// 单调扫 cueIdx 找包含 t 的 cue
...
}每帧严格占 1/fps,无累积偏差。
修复 2:G/H 嘴型被丢失
Rhubarb 默认 --extendedShapes "GHX",会输出 G/H 形状。但标准素材库通常只到 F+X,导致 G/H 帧落到 idle fallback 丢嘴型变化。
修:显式传 --extendedShapes "X",让 Rhubarb 只输出 ABCDEFX,跟素材库精确对齐。
下载
Lip Sync Studio 0.1.3.exe (~69 MB · portable,免安装直接双击)
系统要求
- Windows 10 / 11 (x64)
- Premiere Pro(导入 FCP XML 用)
Lip Sync Studio v0.1.2
Lip Sync Studio v0.1.2
修复(两个)
1. 静音帧空白 → idle mouth fallback
Rhubarb 给静音段输出 value="X" cue,但很多素材库只有 A-F.png 没 X.png——v0.1.1 在找不到 X.png 时直接跳过这一帧,导致静音段在 Premiere 时间轴上是空白。
现在加了 fallback 链:X → A → 第一个可用 mouth。素材里只要有 A.png(标准闭嘴 idle),静音段就会自动用 A 填上。
2. 时间线放大 100 倍(33s 音频 → 1h 序列)
v0.1.1 里 commit c7d05f2 的 i * 100 误把 FCP XML 单位当成 "100 subframe per frame"——其实 FCP XML 的 <duration> / <start> / <end> 单位本来就是 timebase frames,没有 subframe 这一层。
修后:30fps 下 990 frames 的序列 = 33 秒,跟原音频对上。
下载
Lip Sync Studio 0.1.2.exe (~69 MB · portable,免安装直接双击)
系统要求
- Windows 10 / 11 (x64)
- Premiere Pro(导入 FCP XML 用)
Lip Sync Studio v0.1.1
Lip Sync Studio v0.1.1
修复
- FCP XML clip positioning (c7d05f2)
v0.1.0 导出的 FCP XML 里每个<clipitem>的<start>/<end>被硬编码成0/100,
导致所有口型 clip 都堆在第 0 帧——Premiere 里看到的就是一堆 clip 全叠在一起。
现在改成i * 100/(i+1) * 100,每帧一个 clip 顺序排开,导入 Premiere 直接对得上时间轴。
下载
Lip Sync Studio 0.1.1.exe (~69 MB · portable,免安装直接双击)
系统要求
- Windows 10 / 11 (x64)
- Premiere Pro(导入 FCP XML 用)
Lip Sync Studio v0.1.0
Lip Sync Studio v0.1.0 — Rhubarb 嘴型同步 GUI wrapper · 一键生成 Premiere 兼容的口型同步序列
功能
- 加载音频 + 嘴型 PNG 集 → 调用 Rhubarb 引擎做口型识别
- 输出 Premiere Pro 可直接 import 的 FCP XML 序列
- Electron 桌面应用,开箱即用
安装
下载 Lip Sync Studio 0.1.0.exe,双击运行(Windows portable,免安装)。
已知限制
- v0.1.0 初版,目前只支持 Windows
- 仅输出 FCP XML(Premiere),其他剪辑软件格式后续考虑
来源
代码:commit `3e78b3d` · 爱芮设计 + 实现 · 千夏代发 release