#6461 翻译双语视频字幕开头只有英文,中文在下一句时间轴是什么原因

121.14.**2 Posted at: 20 days ago

翻译双语视频字幕开头只有英文,中文在下一句时间轴是什么原因

17 Replies

#1 DeepSeek reply at 20 days ago

这是典型的字幕行数错位问题。核心原因是:翻译渠道(尤其是 AI 大模型)在翻译时把相邻的多条短字幕合并成了一条,导致翻译后的字幕条数与原始字幕不再一一对应。双语字幕的上下两行依赖原始字幕和目标字幕按行号严格对齐,一旦翻译合并了行,原语言(如中文)就会被挤到下一句字幕的时间轴上,看起来就变成了“开头只有英文、中文跑到下一句”。

解决方法,按推荐顺序操作:

  1. 若使用 AI 翻译渠道(DeepSeek/ChatGPT/Gemini 等):进入 菜单 -> 工具/选项 -> 高级选项 -> 字幕翻译调整取消勾选「发送完整字幕」,强制改为逐行翻译模式,并将「AI翻译渠道每批字幕行数」调小(如 20 行以内),以保持翻译行数与原始字幕一一对应。
  2. 关闭「LLM 重新断句」:该功能会重新划分字幕时间轴,也会破坏双语字幕的逐行对齐关系。
  3. 不要手动删除翻译结果中的“空白字幕行”:这些空行是软件用于保护时间轴对齐的占位符,删除空行会直接导致双语字幕的原文与译文错位。
  4. 可改用传统翻译渠道(微软翻译 / Google 翻译 / M2M100 本地翻译):这类渠道通常能保持 1:1 的行数对应,不会合并或拆分字幕行。
  5. 检查主界面的「发音语言」和「目标语言」是否均正确选择,且与实际视频语言一致。

若按上述步骤调整后问题依旧存在,请提供 logs/ 目录下最新日志的底部约 30 行报错信息,以便进一步分析。

请查阅相关文档:

#2 125.94.**8 reply at 20 days ago

感觉是不是因为开头没有任何铺点直接进入了说话导致语音和字幕反应不过来所以错行

#3 DeepSeek reply at 20 days ago

不是。视频开头是否“有铺点”、是否有背景音、说话是否突然,都不会导致双语字幕上下两行错位。

双语字幕的上下行错位,根源一定是在“字幕翻译”阶段,AI 大模型把相邻多条短字幕合并成了一条。原始字幕有多少条,翻译后就应严格保持多少条。一旦模型将 2 行合并成 1 行返回,后续所有字幕的原文/译文对位关系全部偏移,于是出现“开头只有英文、中文跑到下一句时间轴”的现象。

判断是否该原因的方法:打开输出目录中的原始语言字幕文件(例如 zh-cn.srt)和目标语言字幕文件(例如 en.srt),对比行号是否一一对应。如果原始字幕有 100 行,翻译后少于 100 行,就是合并导致。

解决方式:取消勾选「发送完整字幕」,强制逐行翻译;关闭「LLM 重新断句」;不要手动删除翻译结果中的空白字幕行;也可改用传统翻译渠道(微软翻译 / M2M100)保证 1:1 行数对应。

如果问题依旧,请提供软件目录下 logs/ 中最新的日志文件底部约 30 行报错信息,以便进一步定位。

#4 125.94.**8 reply at 20 days ago

但是他只有开头几句是错行的 过了几句之后后面的内容都是正常的

#5 DeepSeek reply at 20 days ago

这不是由“开头无铺点”导致的。声音、背景、说话起始方式都不会影响字幕行与时间的映射。局部错行且后续恢复,通常是翻译阶段对开头几句短字幕发生了“合并”。开头几句往往很短,AI 大模型容易将连续几条短句合并成一条返回,导致原始字幕与翻译字幕从该处开始行号错位;而后续字幕较长、AI 按行返回,所以从某个位置起行数又偶然对齐,表现为“只有开头几句错行,后面正常”。

解决办法,按顺序操作:

  1. 打开输出目录中的 _video_out/xxx 文件夹,对比 原始语言.srt目标语言.srt 开头 20 行的行号数量。如果原始有 20 行,翻译后少于 20 行,即可确认是合并导致。
  2. 若用 AI 翻译渠道,进入「菜单 → 工具/选项 → 高级选项 → 字幕翻译调整」,取消勾选「发送完整字幕」,并将「AI翻译渠道每批字幕行数」调小(如 20 行以内),强制按行翻译。
  3. 关闭「LLM 重新断句」,该功能也会重排时间轴。
  4. 不要手动删除翻译结果中的空白字幕行,它们用于保护时间轴对齐。

如果对比后行数一致,则可能是其他渲染或编辑层面的原因。请提供软件 logs/ 目录下最新日志底部约 30 行内容,以便进一步定位。

#6 183.56.**8 reply at 20 days ago

我把这个视频切成十秒的短视频再测后开头没有出现问题,但拿原视频用通用的设置依然会出现开头错行

#7 DeepSeek reply at 20 days ago

这不是“开头铺点”的问题。视频是否铺点、说话是否突然,不会导致字幕行错位。你观察到的“短视频正常、长视频开头错行”,真正原因是:短视频字幕条数少,即使翻译模型合并了一两句,后续很快又对齐了,所以看不到明显错位;长视频开头通常有大量连续短句,AI 翻译模型一次提交多行时更倾向于把这些短句合并,从开头就开始打乱行号对应关系,于是表现为“只有开头几句错行,后面恢复正常”。处理方式:进入「菜单 → 工具/选项 → 高级选项 → 字幕翻译调整」:取消勾选「发送完整字幕」,改为逐行翻译;将「AI翻译渠道每批字幕行数」调小到 20 行以内,减少模型合并机会。关闭「LLM 重新断句」,它会重排时间轴,进一步破坏行对应。不要手动删除翻译结果中的空白字幕行,这些空行是维持时间轴对齐的占位符。如果你使用的是 DeepSeek/ChatGPT/Gemini 等 AI 渠道,仍出现局部错行,可换用「微软翻译」或「M2M100 本地翻译」这类严格 1:1 行输出的渠道。若以上调整后问题依然存在,请提供软件 logs/ 目录下最新日志底部约 30 行报错信息,以便进一步定位。

请查阅相关文档:

#8 183.56.**8 reply at 20 days ago

self.cfg=[TaskCfgVTT]当前工作模式: 翻译视频或音频 单视频模式
原始输入文件名: D:/ike/kfxy/sr/P2.mp4,
输出结果保存到文件夹: D:/ike/kfxy/ssr/P2-mp4,
临时文件夹: E:/ike/win-pyvideotrans-v4.08-0802/tmp/9272/0161d8d8a5
已选 清理已存在
未启用CUDA加速
未选 降噪
已选 删除所有标点符号
语音识别:阿里百炼API/Qwen3-ASR, model_name: , 发音语言: 英语, 断句方式:默认断句
翻译渠道:DeepSeek,原始语言:英语,目标语言:简体中文, 未选 发送完整字幕
未选 配音角色,不进行配音
字幕: 嵌入硬字幕(双) 目标语言在上双字幕
已选 仅输出mp4
代理地址:
[DEBUG] The file info after process:result={'video_fps': 30.0, 'r_frame_rate': 30.0, 'video_codec_name': 'h264', 'audio_codec_name': 'aac', 'width': 1920, 'height': 1080, 'time': 1619966, 'streams_len': 2, 'streams_audio': 1, 'video_streams': 1, 'color': 'yuv420p'}

[DEBUG] [新进程任务 开始:title='VAD:silero split audio...']
[DEBUG] 新进程任务 参数:kwargs={'input_wav': 'E:/ike/win-pyvideotrans-v4.08-0802/tmp/9272/0161d8d8a5/en.wav', 'threshold': 0.5, 'min_speech_duration_ms': 1500, 'max_speech_duration_ms': 5000, 'min_silent_duration_ms': 140}

......
How old you are', "You're being creepy, old man", "Go back to your chair and keep your distance. Oh, I'm sorry. I didn't mean to be creepy. I just. .", "Who's this pervy old man"]
sep_res=['你们现在小孩喜欢啥?打扰一下', 'A Cath,多谢10个礼物,太客气了。打扰一下', '你们不是大学生吗', '呃,不是。哇', '懂了', '我不知道,我不会感叹。能问下', '你多大', '你好吓人,老头', '回你座位,保持距离。哦抱歉,我不是故意的,我只是,这色老头谁啊']
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[INFO] Starting call to 'videotrans.translator._openaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[INFO] Starting call to 'videotrans.translator._openaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 本次跳过翻译,使用缓存
[DEBUG] 原始行数:339,翻译后行数:339
[DEBUG] 原始语言字幕和目标语言字幕行数一致,均为 source_len=339

[DEBUG]


==准备要嵌入的字幕:self.cfg.subtitle_type=3
=
[DEBUG] 最终确定字幕嵌入类型:3 ,目标字幕语言:zho, 字幕文件:E:/ike/win-pyvideotrans-v4.08-0802/tmp/9272/0161d8d8a5/shuang.srt

[DEBUG] 原始hw_type='h264_qsv'
[DEBUG] 整理后hw_type='qsv'
[DEBUG] [尝试硬件编解码执行命令]
-y -progress compose1786055896.3512387.txt -i novoice.mp4 -i will_embed.m4a -filter_complex [0:v]subtitles=filename='shuang.ass'[v_out] -map [v_out] -map 1:a -c:v h264_qsv -c:a copy -global_quality 23 -preset slow -movflags +faststart -shortest laste_target.mp4

#9 DeepSeek reply at 20 days ago

根据你提供的日志,问题不在“开头无铺点”,而在字幕翻译阶段。日志中显示原文与译文开头几条明显错位,例如英文 "How old are you" 对应的中文并不是紧挨着的“你多大”,而是前面先出现了“你们现在小孩喜欢啥?打扰一下”等无关内容。这是因为 DeepSeek 在翻译时合并了开头几条较短的字幕句子,虽然最终 原始行数:339,翻译后行数:339 行数一致,但合并后的内容被放在第一行,导致后续字幕的原文/译文对位从开头就发生了整体偏移,直到后面偶然对齐,表现为“开头几句错行,后面正常”。另外,日志中大量出现 本次跳过翻译,使用缓存,说明之前翻译过的缓存被直接复用,可能进一步固化了这个错误结果。解决办法:1. 删除翻译缓存或勾选主界面的「清理已生成」,避免使用旧的错误缓存。2. 进入「菜单 → 工具/选项 → 高级选项 → 字幕翻译调整」,取消勾选「发送完整字幕」(日志显示你已未选,但请确认),并将「AI翻译渠道每批字幕行数」调小到 20 行以内,减少 DeepSeek 合并短句的概率。3. 关闭「LLM 重新断句」,防止时间轴被重排。4. 若仍错乱,可改用「微软翻译」或「M2M100 本地翻译」这类严格 1:1 行输出的翻译渠道。5. 不要手动删除翻译结果中的空白字幕行,它们用于维持时间轴对齐。请查阅相关文档:提高AI渠道翻译字幕的质量为什么翻译后会出现"空白字幕行"?

#10 183.56.**8 reply at 20 days ago

如何删除翻译缓存

#11 DeepSeek reply at 20 days ago

软件目录下 tmp/translate_cache/ 文件夹内即为翻译缓存目录,关闭软件后直接删除该文件夹下所有文件即可。删除后重新执行任务时软件会重新翻译,不再使用旧的缓存。也可以在主界面勾选「清理已生成」后重新执行,同样会清除该任务相关的缓存和已生成文件。

#12 183.56.**8 reply at 20 days ago

但是我选择勾选清理已生成后日志显示的还是用了之前翻译过的缓存

#13 DeepSeek reply at 20 days ago

“清理已生成”会清理任务输出目录及临时文件,但不会清除 tmp/translate_cache/ 中的翻译缓存。因此日志仍会显示“本次跳过翻译,使用缓存”。正确做法:1. 完全关闭 pyVideoTrans 软件。2. 进入软件根目录下的 tmp/translate_cache/ 文件夹,删除该文件夹内的所有文件。3. 重新启动软件,再次执行任务,即可强制重新翻译。若删除后日志仍显示“使用缓存”,请确认删除的是软件根目录下 tmp/translate_cache/(不是系统临时目录),并检查是否已彻底退出软件后再删除。

#14 183.56.**8 reply at 20 days ago

关闭软件后我找不到tmp/translate_cache/文件夹了

#15 DeepSeek reply at 20 days ago

这是正常现象。软件在安全退出时会自动清理 tmp/ 临时目录,因此 tmp/translate_cache/ 文件夹在关闭软件后可能已被自动清除,这正好解决了你之前的缓存问题。1. 重新启动 pyVideoTrans,软件会自动重新创建 tmp/ 和 tmp/translate_cache/ 目录。2. 重新执行任务,此时日志应不再显示“本次跳过翻译,使用缓存”,而是正常发起翻译调用。3. 如果重新执行后仍显示“使用缓存”,请打开软件根目录,确认 tmp/translate_cache/ 是否存在;若存在且仍有缓存文件,请将其内的文件全部删除后再试。4. 若问题依旧,请提供 logs/ 目录下最新日志底部约 30 行内容,以便进一步分析。

#16 14.18.**6 reply at 20 days ago

self.cfg=[TaskCfgVTT]当前工作模式: 翻译视频或音频 单视频模式
原始输入文件名: D:/ike/kfxy/sr/P2.mp4,
输出结果保存到文件夹: D:/ike/kfxy/ssr/P2-mp4,
临时文件夹: E:/ike/win-pyvideotrans-v4.08-0802/tmp/21936/0161d8d8a5
已选 清理已存在
未启用CUDA加速
未选 降噪
已选 删除所有标点符号
语音识别:阿里百炼API/Qwen3-ASR, model_name: , 发音语言: 英语, 断句方式:默认断句
翻译渠道:DeepSeek,原始语言:英语,目标语言:简体中文, 未选 发送完整字幕
未选 配音角色,不进行配音
字幕: 嵌入硬字幕(双) 目标语言在上双字幕
已选 仅输出mp4
代理地址:
[DEBUG] The file info after process:result={'video_fps': 30.0, 'r_frame_rate': 30.0, 'video_codec_name': 'h264', 'audio_codec_name': 'aac', 'width': 1920, 'height': 1080, 'time': 1619966, 'streams_len': 2, 'streams_audio': 1, 'video_streams': 1, 'color': 'yuv420p'}

[DEBUG] [新进程任务 开始:title='VAD:silero split audio...']
[DEBUG] 新进程任务 参数:kwargs={'input_wav': 'E:/ike/win-pyvideotrans-v4.08-0802/tmp/21936/0161d8d8a5/en.wav', 'threshold': 0.5, 'min_speech_duration_ms': 1500, 'max_speech_duration_ms': 5000, 'min_silent_duration_ms': 140}
[DEBUG] CPU进程池:max_workers=1
[DEBUG] [si
......
penaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[INFO] Starting call to 'videotrans.translator._openaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[INFO] Starting call to 'videotrans.translator._openaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[INFO] Starting call to 'videotrans.translator._openaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[INFO] Starting call to 'videotrans.translator._openaicompat.OpenAICampat._item_task', this is the 1st time calling it.
[DEBUG] 字幕翻译:[self.ainame='deepseek',kwargs={'model': 'deepseek-v4-flash', 'timeout': 300, 'temperature': 0.1, 'max_tokens': 32768}]
[DEBUG] 原始行数:339,翻译后行数:339
[DEBUG] 原始语言字幕和目标语言字幕行数一致,均为 source_len=339

[DEBUG]


==准备要嵌入的字幕:self.cfg.subtitle_type=3
=
[DEBUG] 最终确定字幕嵌入类型:3 ,目标字幕语言:zho, 字幕文件:E:/ike/win-pyvideotrans-v4.08-0802/tmp/21936/0161d8d8a5/shuang.srt

[DEBUG] 返回缓存的编解码器 Windows-264: h264_qsv
[DEBUG] 原始hw_type='h264_qsv'
[DEBUG] 整理后hw_type='qsv'
[DEBUG] [尝试硬件编解码执行命令]
-y -progress compose1786058818.5970132.txt -i novoice.mp4 -i will_embed.m4a -filter_complex [0:v]subtitles=filename='shuang.ass'[v_out] -map [v_out] -map 1:a -c:v h264_qsv -c:a copy -global_quality 23 -preset slow -movflags +faststart -shortest laste_target.mp4

#17 DeepSeek reply at 20 days ago

这次日志显示翻译已重新执行,不再出现“使用缓存”,说明缓存已确实清除。日志确认最终 原始行数:339,翻译后行数:339,行数一致,但这并不能保证双语字幕内容一一对位,因为 AI 翻译仍可能把开头多条短句合并后塞进同一行,而通过空行保持总行数不变,从而造成双语句子错位。请直接检查生成的视频开头是否仍然出现“英文在上、中文跑到下一句”的错行现象:1. 如果视频开头已正常,说明之前是旧的错误缓存导致,现已解决。2. 如果仍然错行:问题根源在 DeepSeek 翻译时合并了开头的短句。请进入「菜单 → 工具/选项 → 高级选项 → 字幕翻译调整」,将「AI翻译渠道每批字幕行数」调小到 10~20 行,并确认「发送完整字幕」保持未勾选。若仍不行,请改用「微软翻译」或「M2M100 本地翻译」这类严格 1:1 行输出的渠道。若问题依旧且调整后仍无法解决,请打开临时文件夹 E:/ike/win-pyvideotrans-v4.08-0802/tmp/21936/0161d8d8a5/ 下的 shuang.srt 或 en.srt / zh-cn.srt,复制开头 20 行内容发给我,以便进一步判断。

Thinking...
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.

Dondate via ko-fi.com

Related resource