#4475 能跳过 合成并输出阶段 吗

2409:8a55* Posted at: 13 hours ago 👁46

能跳过 合成并输出阶段 吗

11 Replies

视频翻译任务中,无法直接跳过“合成并输出”阶段,该步骤会随配音完成后自动触发,最终输出包含配音和字幕的视频文件。如果你只需要翻译后的字幕,而不需要生成新视频,可以使用以下独立功能:

  1. 使用“批量语音转字幕”(左侧面板)仅完成语音识别,得到 SRT 字幕。
  2. 再使用“批量字幕翻译”功能将生成的字幕翻译为目标语言。
  3. 若仍需配音,可进入“批量为字幕配音”单独生成音频,但不合成视频。

这样即可分步得到所需产物,避免最终合成视频。

此外,在视频翻译主界面,即使不勾选任何字幕嵌入选项,软件仍会合成只含音频替换的 MP4 文件,无法完全跳过输出视频。

请查阅相关文档:

我发现.ass的时间码的毫妙是2位,并执行了四舍五入,比如.srt之前的时间是 00:01:41,717,到了.ass就会变成 00:01:41,72,更头疼的是,四舍五入有时候也不标准,会变成00:01:41,71,我要怎么修改,能让.ass的时间戳也使用3位毫秒

ASS 字幕标准的时间码格式只支持两位厘秒(即百分之一秒,HH:MM:SS.cc),软件在将 SRT(三位毫秒)转换为 ASS 时,会自动将毫秒转换为厘秒并进行四舍五入。偶尔出现“有时 71、有时 72”的偏差,通常是由于浮点数转换中的精度误差所致。

软件的界面及“高级选项”中 没有提供修改 ASS 时间戳精度的设置项,因此无法直接通过选项改为三位毫秒。

替代解决方案

  1. 如果你需要保留三位毫秒精度,可以在“视频翻译”界面中将字幕嵌入方式选为 “嵌入软字幕”,并选择输出为 SRT 格式,这样时间码会保留三位毫秒。
  2. 若必须使用硬字幕且要求时间码严格一致,需手动调整生成的 ASS 文件(如使用 Aegisub 等工具修正)或通过修改源码实现。

如果舍入差异严重影响字幕同步,请提供 logs/ 目录下的最新日志文件及问题截图,以便进一步判断是否存在其他异常。

那.srt文件能否支持两位毫秒?

SRT 字幕格式的标准时间戳定义为 HH:MM:SS,000,必须使用三位毫秒(逗号后三位数字)。pyVideoTrans 内部生成或输出的 SRT 文件强制遵循此规范,软件界面及“高级选项”中均未提供修改 SRT 精度的设置项,因此无法直接输出两位毫秒的 SRT 文件。

若必须获得两位毫秒的时间码,可在生成后手动用文本编辑器对 SRT 文件进行查找替换,将 ,(\d{3}) 统一截断为 ,\1 的前两位。但这样做会引入最大 10 毫秒的误差,可能影响字幕同步。若你需要二位毫秒级别的 ASS 字幕,也可使用 Aegisub 等工具将 SRT 导入后再导出为 ASS,其自动完成转换。

如果问题源于字幕与画面不同步,请检查日志或提供更多细节以排查其他原因。

修改提示词的示范呢,比如仍保留3位毫秒,但对毫秒执行四舍五一,比如 00:01:41,717,直接把717四舍五入到720

ASS 或 SRT 字幕的时间码转换(包括毫秒截断或四舍五入)是软件内部的硬编码逻辑,并非通过“提示词”或任何配置选项控制的。提示词(prompt)仅用于语音识别或 AI 翻译的上下文,无法干预时间戳格式。因此,没有“修改提示词”来实现毫秒四舍五入的示范。

若你需要将 SRT 时间码的毫秒部分四舍五入(例如 717 进位为 720),只能通过以下方式手动完成:

  1. 使用支持批量替换的文本编辑器(如 Notepad++、VS Code),通过正则表达式将 ,(\d{3}) 匹配后,自行编写脚本或逐个计算替换。
  2. 使用专门的字幕编辑软件(如 Aegisub、Subtitle Edit),利用其内置的“时间码调整”功能,可以一次性对所有时间码进行舍入或精度转换。

如果你需要更精细的控制(例如四舍六入五成双等复杂规则),则需编写自定义脚本处理 SRT 文件。

请注意,任何对时间码的改动都可能影响字幕与画面、声音的对齐,建议在修改后仔细检查同步效果。

如果问题根源是字幕不同步,而非单纯的时间码显示格式,请提供 logs/ 目录下的最新日志文件,以便进一步排查。

我手动修改了srt字幕时间轴和中文翻译字幕时间轴,但仍保持两个字幕时间是一致的,接下来执行配音,为什么没有双语生成

未生成双语字幕通常是因为在“视频翻译”界面没有正确选择双字幕嵌入类型。功能设定如下:主界面中“嵌入硬字幕”或“嵌入软字幕”旁边都有一个 (双) 选项,选中后才能输出原语与译语并列的字幕。若你只选了“嵌入单字幕”,则会仅嵌入其中一种语言。另一个可能:你手动修改的 SRT 文件并未被软件重新导入,软件依然使用之前缓存或识别的字幕。解决方法:确定你需要硬字幕(永久烧录)还是软字幕(播放器可开关),然后勾选对应的 (双) 选项。若已存在修改后的原始字幕与翻译字幕,可在主界面点击“导入字幕”按钮,分别指定原始语言和目标语言字幕文件,再开始任务。此外,软双字幕在某些播放器(如网页播放、部分硬件播放器)可能只显示第一条,此时建议优先使用硬双字幕。请查阅相关文档:双字幕怎么处理、软双字幕为什么只显示一个

确实是这样,但TTS配音文件不能复用,在这种情况下的弊端就十分明显了,又要重跑一次配音,300多条

十分理解您的困扰。pyVideoTrans 的视频翻译流程是“语音识别 → 翻译 → 配音 → 合成”,其中配音阶段依赖翻译字幕的时间轴与文本内容。当您手动修改了字幕时间轴(即使纯文本未变),软件会将其视为全新的输入任务,默认需要重新生成配音,因此会出现重跑300多条配音的情况。

不过,您可以利用软件内置的缓存机制来尝试复用上一次的配音文件,从而避免重新生成:

  1. 务必不要勾选主界面左上角的“清理已生成”复选框
    软件在处理同一视频时,若检测到字幕内容(指文本字符串)未发生变化,会直接使用缓存的配音片段,而不会重新请求 TTS。
    注意:这个判定依据是字幕的文本内容,而非时间轴。如果您只调整了时间但完全未改动任何文字,软件有较大概率直接复用旧配音。
  2. 确保“翻译渠道”与“配音渠道”的配置与上次完全一致(包括配音角色、语速等参数)。
    任何参数变动都会导致缓存失效,触发重新配音。
  3. 若您仅修改了时间轴但文字无变动,可在导入修改后的字幕文件后直接开始任务
    软件会读取新的时间轴进行合成,但配音音频片段将直接从缓存中调取,从而跳过漫长的配音过程。

如果上述方法未能生效,说明缓存已因其他因素失效,您只能重新生成配音。此时可以:

  • 在“高级选项”中适当降低 “并发配音线程数” 并增大 “配音后暂停秒”(对于 Edge-TTS 免费渠道,建议设为 1 线程、间隔 5 秒),避免因限流导致更多重试耗时。
  • 考虑使用本地克隆配音(如 OmniVoice-TTS、F5-TTS 等,需额外部署),其生成速度通常快于在线 API。

软件的设计确实未提供“惰性配音”——即直接复用旧音频片段并按新时间轴拼接的功能,这源于音频片段与字幕一一对应的强绑定关系。如果您经常需要微调时间轴,建议在单视频交互模式下操作,那样可以在配音后就地试听并手动精确校准,避免事后大改。

希望这些信息对您有帮助。如果仍然需要强制复用旧配音,唯一终极方案是手动编写脚本将缓存的 .wav 文件按新字幕重新编排,但这已超出软件自然能力。

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Related resource