Skip to content

Releases: MXAntian/lip-sync-studio

Lip Sync Studio v0.1.7

08 May 12:24

Choose a tag to compare

中文 / English

中文

修了 v0.1.6 持久化失效(小天实测),顺手做了三件相关的 UX:

修复 1:持久化失效(关键)

根因:v0.1.6 用的 electron-builder portable target 启动时把 exe 解压到 %TEMP%/elevate-XXX/ 跑,process.execPath 是临时路径,settings.json 写在临时目录里——下次启动新临时目录就丢了。

修法:打包 target portable → dirone-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 增量换来配置持久化能跑 + 启动更快。

使用方法

  1. 下载 LipSyncStudio-v0.1.7-win-x64.zip,解压到永久目录(别留 Downloads)
  2. 把 Rhubarb 文件夹丢到解压后的目录里(GUI 自动识别)
  3. 双击 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 portabledir (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

  1. Download LipSyncStudio-v0.1.7-win-x64.zip, extract to a permanent location
  2. Drop your Rhubarb folder into the extracted directory
  3. Double-click Lip Sync Studio.exe

Requirements


Built on top of Rhubarb Lip Sync by Daniel S. Wolf.

Lip Sync Studio v0.1.6

08 May 12:10

Choose a tag to compare

中文 / 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


Built on top of Rhubarb Lip Sync by Daniel S. Wolf.

Lip Sync Studio v0.1.5

08 May 12:01

Choose a tag to compare

中文 / 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> (onClick toggles useState)
  • <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


Built on top of Rhubarb Lip Sync by Daniel S. Wolf.

Lip Sync Studio v0.1.4

08 May 11:29

Choose a tag to compare

中文 / 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 透传新参数到 rhubarb CLI

不加进 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 rhubarb CLI

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


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

08 May 11:21

Choose a tag to compare

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

08 May 10:54

Choose a tag to compare

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 c7d05f2i * 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

08 May 10:40

Choose a tag to compare

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

08 May 07:49

Choose a tag to compare

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