Skip to content

VideoLingo v3.2.0 🎨

Latest

Choose a tag to compare

@Huanshere Huanshere released this 13 Nov 08:57
· 1 commit to main since this release
96d3fd2

VideoLingo v3.2.0 🎨

Subtitles that look right in every language, an optional PyTorch-free engine for local Qwen3-ASR, and an installer that leaves your global pip settings alone.

🚀 What's new

  • Built-in multilingual subtitle typesetting. Burned-in subtitles no longer use one system font for everything. Each of 33 languages has its own font, size and spacing, whether it is the translated row or the source row. Lines are broken by their rendered width, measured with HarfBuzz, preferably at punctuation and between words; Chinese, Japanese and Thai are split into words with BudouX. Arabic, Devanagari, Thai and other complex scripts are shaped correctly whatever fonts your system has.
  • The fonts come with VideoLingo. 4.4 MB of OFL fonts ship in fonts/. The Chinese and Japanese faces are too large for the repository: they are downloaded once, on first use, and checked by SHA-256, with jsDelivr mirrors as a fallback. Docker images fetch them at build time.
  • Subtitle length is now a width. subtitle.max_length is measured as the line is drawn: a Latin letter counts about 1, and 80 is one full landscape row (about 35 Chinese characters on the source row). The new defaults are max_length: 80 and target_multiplier: 1.0.
  • The classic filter still works, and no longer runs off the screen. Set a font_name to use your own font with FFmpeg's subtitles filter, as before. The same filter is the fallback when the typesetter can't be used, and it now gets long Chinese, Japanese and Thai lines pre-broken so they stay inside the frame.
  • Optional audio.cpp engine for local Qwen3-ASR. With whisper.qwen_engine: audiocpp, recognition and forced alignment go to an audio.cpp server you run yourself (GGUF weights, no PyTorch); its address is whisper.audiocpp_url. It is opt-in: auto never picks it.
  • The installer keeps your pip configuration. --auto-mirror used to run pip config set global.index-url, which changed the package index for every Python project on the machine. The chosen mirror is now used for this install only.
  • See where your models are. installer.py --check and a finished install list the Hugging Face cache in use with the models already in it, the local model folder, and where FFmpeg comes from. The start guide explains how to reuse models you already have, including those of a standalone WhisperX.
  • Fixed "Translation not found" warnings for TTS provider names in the sidebar.

⚠️ Before upgrading

  • Install the new dependencies uharfbuzz, budoux and fonttools: run the installer again, or pip install -r requirements.txt. Until then, subtitles are burned the old way and a warning asks you to re-run the installer.
  • The first Chinese or Japanese burn needs a network connection to download that font (10–20 MB, once). Offline, put the variable font from google/fonts or fonts.google.com in fonts/, for example NotoSansSC[wght].ttf or NotoSansJP-VariableFont_wght.ttf.
  • If your config.yaml still has max_length: 75 and target_multiplier: 1.2, click Restore defaults (20/80) under Subtitle length tuning to use the new values.
  • font_size now scales the typesetter's own sizes (15 and 17 are its defaults), and the typesetter does not use margin_v. Setting a font_name turns the typesetter off for every language.
  • If an earlier --auto-mirror install changed your global pip index, pip config list shows it and pip config unset global.index-url removes it.

✅ Release validation

  • Automated suite: 832 passed, 20 skipped (macOS arm64, Python 3.12, the FFmpeg installed by the installer).
  • Subtitles were burned with FFmpeg and libass and compared before and after for Chinese, Japanese, Korean, Russian, Arabic, Hindi and Thai, for the typesetter and for the fallback filter.

VideoLingo v3.2.0 🎨

每种语言的字幕都排得好看;本地 Qwen3-ASR 新增可选的免 PyTorch 推理引擎;安装器不再改动全局 pip 设置。

🚀 这次更新

  • 内置多语言字幕排版。 烧录字幕不再所有语言共用一种系统字体。33 种语言无论作译文行还是原文行,都有各自的字体、字号和字距。切行按实际渲染宽度计算(HarfBuzz 测宽),优先在标点和词间断开,中文、日文、泰文用 BudouX 分词。阿拉伯文、天城文、泰文等复杂文字,不管系统装了什么字体都能正确显示。
  • 字体随 VideoLingo 提供。 fonts/ 里自带 4.4 MB 的 OFL 授权字体。中文和日文字体太大,不放进仓库,第一次用到时下载一次,用 SHA-256 校验,GitHub 下载失败时改走 jsDelivr 镜像。Docker 镜像在构建时就会下载好。
  • 字幕长度改为按宽度计算。 subtitle.max_length 按实际画出来的宽度算:一个拉丁字母约为 1,80 是横屏的一整行(原文行约 35 个汉字)。新的默认值是 max_length: 80、target_multiplier: 1.0。
  • 原来的滤镜照样能用,长行也不再溢出。 填写 font_name 就和以前一样,用 FFmpeg 的 subtitles 滤镜和你指定的字体。排版器用不了时也会退回这个滤镜;中文、日文、泰文的长行现在会先折好,不会再超出画面。
  • 本地 Qwen3-ASR 新增可选的 audio.cpp 引擎。 设置 whisper.qwen_engine: audiocpp 后,识别和强制对齐都交给你自己运行的 audio.cpp 服务(GGUF 权重,不需要 PyTorch),地址在 whisper.audiocpp_url 里设置。需要手动开启,auto 不会选它。
  • 安装器不再改你的 pip 配置。 --auto-mirror 以前会执行 pip config set global.index-url,改掉整台电脑上所有 Python 项目的下载源。现在选出的镜像只在这次安装中使用。
  • 能看到模型存在哪里。 installer.py --check 和安装完成时,会列出正在使用的 Hugging Face 缓存及其中已有的模型、本地模型目录和 FFmpeg 的来源。新手指南说明了怎样复用已有的模型,包括单独安装的 WhisperX 的模型。
  • 修复侧边栏对 TTS 服务商名称报 "Translation not found" 的问题。

⚠️ 升级前留意

  • 需要安装新依赖 uharfbuzz、budoux 和 fonttools:重新运行安装器,或执行 pip install -r requirements.txt。装好之前,字幕按原来的方式烧录,并提示重新运行安装器。
  • 第一次烧录中文或日文字幕时需要联网,下载对应字体(10–20 MB,只下载一次)。离线时,可以从 google/fonts 或 fonts.google.com 下载可变字体放进 fonts/,例如 NotoSansSC[wght].ttf 或 NotoSansJP-VariableFont_wght.ttf。
  • 如果你的 config.yaml 里还是 max_length: 75 和 target_multiplier: 1.2,请在「字幕长度微调」里点 恢复默认值(20/80),改用新的默认值。
  • font_size 现在是排版器原始字号的缩放比例(15 和 17 就是原始字号),排版器不使用 margin_v。填写 font_name 后,所有语言都不再使用排版器。
  • 如果以前用 --auto-mirror 安装时改了全局 pip 下载源,可以用 pip config list 查看,用 pip config unset global.index-url 删除。

✅ 发布验证

  • 自动化测试:832 passed,20 skipped(macOS arm64、Python 3.12、安装器装的 FFmpeg)。
  • 用 FFmpeg 和 libass 实际烧录,前后对比了中文、日文、韩文、俄文、阿拉伯文、印地文和泰文,包括排版器和退回的原滤镜两种情况。

Full Changelog / 完整改动:v3.1.1...v3.2.0