Skip to content

v3.0.4

Choose a tag to compare

@Huanshere Huanshere released this 15 Sep 06:37

Changelog - Version 3.0.4

This release brings together the changes since v3.0.1, including the work previously labeled 3.0.2 and 3.0.3 in the source tree without separate release tags. It adds installation and interface improvements, persistent transcription reuse, dependency and deployment updates, and targeted fixes for subtitle timing and dubbing audio processing.

🚀 New Features

  • Set up with uv using a project-local or shared environment. The staged installer can be rerun, and OneKeyStart checks the environment before launch, repairs missing/outdated dependencies, and records logs. --check-only checks without repairing or launching (#532, #537, #577, #599).
  • Detect the browser's interface language, with manual language selection and expanded translations across seven languages. Add audio-only input and subtitle generation, searchable API model selection, and background task pause/resume/stop controls. Controls take effect at processing checkpoints; an in-flight model or network call may need to finish first (#537, #576).
  • Reuse transcription from .cache/asr by source-file content and recognition settings. Successful segments survive later failures; complete cache hits skip recognition, including after output cleanup or reupload. Translation and TTS are not included in this cache (#608, incorporating the original work in #607; fixes #562).
  • Add optional youtube.proxy for yt-dlp downloads: omitted/null keeps native proxy discovery, an empty string forces a direct connection, and a URL selects an explicit proxy (#602).

🐛 Bug Fixes

  • Request MP4 for yt-dlp merges and fix Windows Unicode console failures; keep launcher logs consistently UTF-8 (#578, #579, #602).
  • Reconcile extracted audio with source presentation timestamps, addressing cumulative subtitle drift caused by timestamp gaps or overlaps in both video and audio-only inputs (#601).
  • Preserve ElevenLabs word-level timestamps for downstream processing, and keep manually selected or automatically detected recognition language consistent with NLP and translation prompts (#576, #606; fixes #549).
  • Fix SiliconFlow Fish custom-voice creation, validate returned voice identifiers, and preserve useful API errors (#604; fixes #572).
  • Accept legitimate input videos with names starting with output, while still excluding generated output files and rejecting ambiguous inputs (#605, based on #597; fixes #596).
  • Fix pandas 3 / NumPy-related dubbing duration and timestamp-table failures, support legacy numeric timestamp literals safely, and run Edge TTS with the active Python interpreter (#599, #602).
  • Improve GPT-SoVITS startup checks by verifying its API schema, detecting exited child processes, and avoiding application-wide working-directory changes (#602).
  • Restore final dubbed-video audio to AAC 192 kbps. Measure gated loudness with FFmpeg, then apply a single gain with a true-peak limit so silence padding does not drive excessive amplification. Surface video assembly failures correctly. This processing applies to final dubbed-video assembly, not standalone dub.mp3 (#610; related to #533).
  • Restore default raw audio preparation to 32 kHz / 128 kbps, add peak protection and silence handling to reference/vocal normalization, and restore SiliconFlow Fish merged reference audio to 44.1 kHz. Raw extraction settings are configurable through audio.raw_sample_rate and audio.raw_bitrate; old configs use the defaults when those keys are absent (#611; related to #533).

🔧 Improvements

  • Create new uv environments with Python 3.13; existing Python 3.10–3.13 environments remain supported. Retain the matched Torch/torchaudio 2.8.0 and torchvision 0.23.0 family, update WhisperX to the 3.8.6+ compatible range and TorchCodec to 0.7, and keep Transformers below 5. Use bounded dependency ranges and optional PyPI Demucs 4.1 instead of a Git installation workaround (#599).
  • Reuse complete local, project, or global Whisper model caches before downloading missing files. Remove per-segment mirror probes; this does not guarantee every alignment/model component is already available offline (#577, #602).
  • Change the default LLM configuration to OpenRouter with deepseek/deepseek-v4-flash. Other compatible endpoints and model names remain configurable. New default configurations disable Demucs vocal separation; enable it when needed (#592, #576).
  • Remove the retired 302.ai WhisperX cloud recognition backend. Local WhisperX and ElevenLabs recognition remain available, and separate 302.ai TTS integrations remain in the code (#609; fixes #583).
  • Align Docker, Colab, and local setup with the same installer. Docker builds the checked-out source with explicit cu128 wheels by default, with a cu126 image option; Colab runs the app in a separate Python 3.13 environment. Both automated setup calls use --yes. Add matching Torch build checks, Windows FFmpeg DLL discovery, a TorchCodec load probe, and corrected Linux Noto CJK font detection (#612).

⚠️ Upgrade Notes

  • CUDA wheel selection: on NVIDIA GPU systems, auto installation/reuse and health checks accept only matching cu126 or cu128 Torch/torchaudio/torchvision builds. cu129 is no longer accepted by this policy. Explicit choices are --torch-backend cpu, cu126, or cu128; they do not bypass the supported-build policy. For RTX 50 / Blackwell, use cu128 with a compatible driver, not cu126. Removing cu129 selection does not itself remove Blackwell support: PyTorch introduced Blackwell support in its CUDA 12.8 wheels (upstream announcement). A complete VideoLingo run on Blackwell was not validated for these changes.
  • FFmpeg: TorchCodec 0.7 requires FFmpeg 4–7 shared libraries. On Windows, follow the FFmpeg 7 shared-build setup. FFmpeg 8/9 alone is insufficient, and a clean pip check does not establish that TorchCodec can load.
  • Retired ASR configuration: change whisper.runtime: cloud to local or elevenlabs and configure the chosen backend. Old cloud configurations are reported explicitly; the app does not silently switch providers.
  • Existing audio and caches: extraction/timing fixes do not regenerate existing working files. Back up needed outputs and regenerate the affected audio and downstream results to apply them. For a fresh recognition result after the timing fix, also bypass the persistent cache with whisper.cache: false or clear the relevant cache. SiliconFlow Fish custom voices may need recreation. See the audio regeneration notes and transcription cache guide. Higher extraction quality increases disk and memory use. The audio fixes address measured processing behavior; they do not claim to resolve every voice-quality or sentence-continuity report in #533.
  • Validation scope: the deployment work includes Windows and default Docker component checks, but the full Docker build preceded the final checker changes. Actual Colab execution, the cu126 image variant, and a complete GPU Docker pipeline were not validated. See the deployment verification record.

更新日志 - 版本 3.0.4

本次发布汇总 v3.0.1 以来的改动,包含源码中曾标为 3.0.2、3.0.3、但未单独发布 tag 的工作。主要包括安装与界面改进、转写结果持久缓存、依赖与部署更新,以及针对字幕时间轴和配音音频处理的修复。

🚀 新功能

  • 支持通过 uv 创建项目独立或共享环境。分阶段安装器可重复运行;OneKeyStart 启动前检查环境、修复缺失或过期的依赖并记录日志。--check-only 仅检查,不修复或启动应用(#532、#537、#577、#599)。
  • 根据浏览器语言选择界面语言,支持手动切换并补全七种语言的翻译。新增纯音频输入与字幕生成、API 模型搜索选择,以及后台任务暂停/继续/停止控制。控制在处理检查点生效,正在进行的模型或网络调用可能需要先完成(#537、#576)。
  • 根据源文件内容和识别设置复用 .cache/asr 转写缓存。后续片段失败时保留已成功的片段;清理输出或重新上传相同文件后,完整命中可跳过识别。此缓存不包含翻译或 TTS 结果(由 #608 合入 #607 的原始工作;修复 #562)。
  • 新增 yt-dlp 下载专用的可选 youtube.proxy:省略或设为 null 时保留原生代理发现,空字符串强制直连,URL 指定代理(#602)。

🐛 问题修复

  • yt-dlp 合并时指定 MP4,修复 Windows Unicode 控制台报错,并统一启动器日志的 UTF-8 编码(#578、#579、#602)。
  • 提取音频时按源媒体呈现时间戳对齐,修复时间戳间隙或重叠导致的字幕累计漂移,覆盖视频与纯音频输入(#601)。
  • 保留 ElevenLabs 的词级时间戳供后续处理使用;使手动选择或自动检测的识别语言与 NLP、翻译提示词保持一致(#576、#606;修复 #549)。
  • 修复 SiliconFlow Fish 自定义音色创建,校验返回的音色标识,并保留有效的 API 错误信息(#604;修复 #572)。
  • 正确识别文件名以 output 开头的合法输入视频,同时继续排除生成产物并拒绝有歧义的多输入(#605,基于 #597;修复 #596)。
  • 修复 pandas 3/NumPy 相关的配音时长与时间戳表格问题,安全读取旧版数值时间戳表达式,并使用当前 Python 解释器运行 Edge TTS(#599、#602)。
  • 改进 GPT-SoVITS 启动检查:验证 API schema、识别已退出的子进程,并避免修改整个应用的工作目录(#602)。
  • 将配音成片音频恢复为 AAC 192 kbps。通过 FFmpeg 测量门限响度后施加统一增益,并限制真峰值,避免静音填充导致过度放大;视频合成失败时正确报错。此处理仅用于配音视频合成,不影响单独的 dub.mp3(#610;关联 #533)。
  • 将原始音频准备的默认参数恢复为 32 kHz/128 kbps,为参考音频/人声归一化增加峰值保护和静音处理,并将 SiliconFlow Fish 合并参考音频恢复为 44.1 kHz。可通过 audio.raw_sample_rate、audio.raw_bitrate 配置提取参数;旧配置缺键时使用默认值(#611;关联 #533)。

🔧 改进

  • 新建 uv 环境使用 Python 3.13,已有 Python 3.10–3.13 环境仍受支持。保留配套的 Torch/torchaudio 2.8.0 和 torchvision 0.23.0,将 WhisperX 更新至兼容的 3.8.6+ 范围、TorchCodec 更新至 0.7,并保持 Transformers 低于 5。采用有上下界的依赖范围,以可选的 PyPI Demucs 4.1 替代原来的 Git 安装变通方案(#599)。
  • 优先复用完整的本地、项目或全局 Whisper 模型缓存,再下载缺失文件;移除逐片段镜像探测。这不保证所有对齐模型等组件均已具备离线运行条件(#577、#602)。
  • 默认 LLM 配置改为 OpenRouter 的 deepseek/deepseek-v4-flash,仍可配置其他兼容端点和模型。新配置默认关闭 Demucs 人声分离,可按需开启(#592、#576)。
  • 移除已停用的 302.ai WhisperX 云识别后端;保留本地 WhisperX、ElevenLabs 识别,以及代码中独立的 302.ai TTS 集成(#609;修复 #583)。
  • Docker、Colab 与本地使用同一安装器。Docker 从当前检出的源码构建,默认显式安装 cu128,另提供 cu126 镜像选项;Colab 在独立 Python 3.13 环境运行应用。两个自动安装入口均传入 --yes。新增 Torch 构建一致性检查、Windows FFmpeg DLL 发现与 TorchCodec 加载探测,并修正 Linux Noto CJK 字体检测(#612)。

⚠️ 升级注意

  • CUDA 构建选择: NVIDIA GPU 环境下,auto 安装/复用及健康检查仅接受构建一致的 cu126 或 cu128 Torch/torchaudio/torchvision,cu129 不再属于此策略允许的构建。显式选项为 --torch-backend cpu、cu126 或 cu128,不能用来绕过支持范围。RTX 50/Blackwell 应使用 cu128 和兼容驱动,不应选择 cu126。取消 cu129 自动选择本身不代表取消 Blackwell 支持:PyTorch 已在 CUDA 12.8 构建中引入 Blackwell 支持(上游说明)。这些改动未经过完整 VideoLingo Blackwell 流程验证。
  • FFmpeg: TorchCodec 0.7 需要 FFmpeg 4–7 共享库。Windows 请按FFmpeg 7 共享构建指南配置。只有 FFmpeg 8/9 不够;pip check 通过也不能证明 TorchCodec 可以加载。
  • 旧云识别配置: 将 whisper.runtime: cloud 改为 local 或 elevenlabs,并配置所选后端。应用会明确提示旧云配置问题,不会静默切换服务商。
  • 已有音频与缓存: 提取和时间轴修复不会自动重建已有工作文件。请先备份需要保留的输出,再重新生成相关音频及后续结果。若要在时间轴修复后重新识别,还需通过 whisper.cache: false 绕过持久缓存,或清理相关缓存;SiliconFlow Fish 自定义音色可能需要重新创建。参见音频重建说明与转写缓存指南。提高提取质量会增加磁盘和内存占用。这些音频修复针对可测的处理行为,不宣称解决 #533 中全部音色或句间连贯性问题。
  • 验证范围: 部署改动包含 Windows 和默认 Docker 的组件检查,但完整 Docker 构建早于最后的检查器修改。实际 Colab 运行、cu126 镜像变体及完整 GPU Docker 流程尚未验证,详见部署验证记录。

Full Changelog / 完整改动:v3.0.1...v3.0.4