#1697 en.srt-noautofix为什么我勾选了llm重新断句,这个文件没有拿来直接翻译,而是还用en.srt文件继续翻译

60.7* Posted at: 7 days ago 👁80

en.srt-noautofix
为什么我勾选了llm重新断句,这个文件没有拿来直接翻译,而是还用en.srt文件继续翻译

21 Replies

这是因为软件的工作流程是顺序执行的,并且“LLM重新断句”功能依赖于上一步“语音识别”生成的字幕文件。

原因分析:

  1. 您可能已经对视频进行过一次语音识别,生成了 en.srt 文件。
  2. 当您勾选“LLM重新断句”并再次执行翻译时,软件检测到已存在 en.srt 文件,会默认跳过语音识别步骤,直接使用现有的字幕文件进行翻译。
  3. “LLM重新断句”功能是在语音识别生成原始字幕后,对其进行优化处理的步骤。它不会作用于一个已经存在的、独立的 .srt 文件。

解决方案:
要强制软件使用LLM重新处理并生成新的字幕,您需要:

  1. 在主界面第1行,勾选“清理已生成”。这个选项会删除之前处理过程中生成的所有临时文件和字幕文件(包括 en.srt)。
  2. 确保“LLM重新断句”处于勾选状态。
  3. 重新点击“开始”按钮。

这样,软件会重新执行完整的流程:语音识别 -> LLM重新断句 -> 翻译 -> 配音,您将得到经过LLM优化断句后的翻译结果。

可并没有缓存文件啊

即使您没有看到明显的缓存文件,软件内部也可能记录了处理状态。当检测到目标目录下已存在同名的 .srt 字幕文件时,软件会默认跳过语音识别步骤以节省时间。

要强制软件重新进行语音识别并执行LLM断句,请按以下步骤操作:

  1. 勾选清理选项:在主界面第1行,务必勾选 “清理已生成”。这是最关键的一步,它会清除内部状态记录并删除任何已存在的中间文件。
  2. 确认LLM设置:确保第2行的 “LLM重新断句” 功能处于勾选状态。
  3. 重新开始:点击 “开始” 按钮。

执行此操作后,软件将执行完整的流程:语音识别 -> LLM重新断句(生成新的、优化后的字幕) -> 翻译。

如果问题依旧,请提供 videotrans/logs/ 目录下的最新日志文件,以便进行更深入的分析。

papers"}, {"start": 599.3, "end": 599.76, "word": " with"}]'}]
2025-12-01 05:09:39,031 - INFO - 第2批次 LLM断句,每批次 500 个字或单词
2025-12-01 05:10:34,587 - INFO - 第2批次 LLM断句 完成
2025-12-01 05:10:34,587 - INFO - Finished call to 'videotrans.translator._chatgpt.ChatGPT.llm_segment.._send' after 294.172(s), this was the 2nd time calling it.
2025-12-01 05:10:34,587 - WARNING - 重新断句失败[except],已恢复原样 RetryError[]
2025-12-01 05:10:34,587 - WARNING - 重新断句失败[except],已恢复原样 RetryError[]
2025-12-01 05:10:34,603 - ERROR - LLM断句失败,将使用默认断句:RetryError[]
Traceback (most recent call last):
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_chatgpt.py", line 88, in _send
File "json\__init__.py", line 346, in loads
File "json\decoder.py", line 337, in decode
File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\recognition\_overall.py", line 177, in _exec
File "videotrans\recognition\_base.py", line 110, in re_segment_sentences
File "videotrans\translator\_chatgpt.py", line 100, in llm_segment
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 421, in exc_check
tenacity.RetryError: RetryError[]
2025-12-01 05:10:34,603 - ERROR - LLM断句失败,将使用默认断句:RetryError[]
Traceback (most recent call last):
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_chatgpt.py", line 88, in _send
File "json\__init__.py", line 346, in loads
File "json\decoder.py", line 337, in decode
File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\recognition\_overall.py", line 177, in _exec
File "videotrans\recognition\_base.py", line 110, in re_segment_sentences
File "videotrans\translator\_chatgpt.py", line 100, in llm_segment
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 421, in exc_check
tenacity.RetryError: RetryError[]

LLM重新断句失败的原因是API返回了非JSON格式的响应。从日志可以看到 JSONDecodeError: Expecting value: line 1 column 1 (char 0),说明API返回了空响应或HTML错误页面。

请按以下步骤排查:

  1. 检查API配置

    • 确认在"翻译设置"中正确配置了OpenAI或DeepSeek的API密钥和Base URL
    • 如果使用代理,确保代理设置正确且网络通畅
  2. 调整LLM断句参数

    • 在菜单栏选择 工具/选项 -> 高级选项
    • 将"LLM重新断句每批字词数"从默认的500调小到200-300
    • 减少批次字数可以降低API负载,避免超时或截断
  3. 检查API响应

    • 如果问题持续,请手动测试您的API密钥是否有效
    • 检查API用量是否超出限额
  4. 临时解决方案

    • 暂时取消勾选"LLM重新断句",使用默认断句完成当前任务
    • 待API问题解决后再重新尝试LLM断句

当前软件已自动回退到默认断句继续处理,不会影响翻译流程。

这是第二批的时候发生了错误,第一批并没有问题怎么回事

第二批LLM断句失败是因为API返回了非JSON格式的响应,这通常由以下原因导致:

API限流或超时:大多数AI API都有请求频率限制。第一批成功处理后,第二批可能触发了限流,导致服务器返回错误页面而非JSON。

批次字数过多:第一批处理的数据量可能在API承受范围内,但第二批可能因内容复杂或字数超出限制而失败。

解决方案

  1. 降低请求频率

    • 工具/选项 -> 高级选项 中,将 "LLM重新断句每批字词数" 从 500 调至 200-300
    • 增加 "翻译后暂停秒数" 为 3-5
  2. 检查API状态

    • 确认API密钥未超出用量限额
    • 如使用代理,确保网络连接稳定
  3. 分批处理

    • 如果视频较长,考虑分割成多个较短片段分别处理

软件已自动回退到默认断句,当前翻译任务会继续完成。如需LLM断句的优化效果,请调整参数后重新处理(记得勾选"清理已生成")。

2025-12-01 06:02:00,244 - INFO - 第14批次 LLM断句,每批次 300 个字或单词
2025-12-01 06:02:42,741 - INFO - 第14批次 LLM断句 完成
2025-12-01 06:02:42,742 - INFO - Finished call to 'videotrans.translator._chatgpt.ChatGPT.llm_segment.._send' after 84.500(s), this was the 2nd time calling it.
2025-12-01 06:02:42,742 - WARNING - 重新断句失败[except],已恢复原样 RetryError[]
2025-12-01 06:02:42,742 - WARNING - 重新断句失败[except],已恢复原样 RetryError[]
2025-12-01 06:02:42,756 - ERROR - LLM断句失败,将使用默认断句:RetryError[]
Traceback (most recent call last):
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_chatgpt.py", line 88, in _send
File "json\__init__.py", line 346, in loads
File "json\decoder.py", line 337, in decode
File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\recognition\_overall.py", line 177, in _exec
File "videotrans\recognition\_base.py", line 110, in re_segment_sentences
File "videotrans\translator\_chatgpt.py", line 100, in llm_segment
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 421, in exc_check
tenacity.RetryError: RetryError[]
2025-12-01 06:02:42,756 - ERROR - LLM断句失败,将使用默认断句:RetryError[]
Traceback (most recent call last):
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_chatgpt.py", line 88, in _send
File "json\__init__.py", line 346, in loads
File "json\decoder.py", line 337, in decode
File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\recognition\_overall.py", line 177, in _exec
File "videotrans\recognition\_base.py", line 110, in re_segment_sentences
File "videotrans\translator\_chatgpt.py", line 100, in llm_segment
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 421, in exc_check
tenacity.RetryError: RetryError[]

问题依然存在,第14批次LLM断句失败,API返回了非JSON格式的响应。这表明API服务不稳定或存在限制。请按以下优先级排查:检查API用量和状态:确认您的OpenAI/DeepSeek API密钥未超出用量限额登录API提供商后台查看当前使用情况和剩余额度检查是否有服务中断公告进一步降低请求频率:在 高级选项 中,将 "LLM重新断句每批字词数" 从 300 继续降至 150-200将 "翻译后暂停秒数" 增加至 8-10 秒更换API服务:如果当前使用OpenAI,尝试切换到DeepSeek反之亦然,不同服务商的稳定性可能不同检查网络连接:如使用代理,测试代理连接是否稳定尝试关闭代理直接连接(如果网络环境允许)临时解决方案:对于长视频,LLM断句失败是常见现象。软件已自动回退到默认断句,虽然效果略差但能保证流程完成。建议先完成当前视频处理,后续短视频再尝试LLM断句。从日志看,前13批次都成功了,只有第14批次失败,这很可能是API服务端的临时问题或用量限制触发的。

为什么我没有勾选llm重新断句,也会有en.srt-noautofix文件生成?而且还只生成不用

即使您没有勾选“LLM重新断句”,软件仍会生成 en.srt-noautofix 文件,这是软件内部处理流程的正常现象。

原因解释:

  1. 自动断句优化: 软件在语音识别生成原始字幕后,会默认执行一次基础的自动断句优化流程(非LLM驱动)。-noautofix 后缀表示这是未经任何自动修正的原始字幕文件,作为备份和参考保留。
  2. 工作流程保障: 保留原始文件是程序设计上的保障措施,确保在后续任何处理步骤出现问题时,有最原始的数据可以回退。
  3. 文件用途: 软件实际使用的是经过自动断句优化后生成的 en.srt 文件进行翻译和后续步骤。en.srt-noautofix 文件不会被直接使用,除非您手动指定或进行特殊操作。

总结:
en.srt-noautofix 的生成与“LLM重新断句”功能无关,它是语音识别环节的标准输出之一。您可以忽略此文件,它不会影响您的翻译流程和最终结果。

勾选llm重新断句,是不是就不应该勾选自动修正选项

是的,您的理解完全正确。当使用“LLM重新断句”时,不应该同时勾选“自动修正选项”。

原因分析:

  • 功能重叠:“自动修正选项”是软件内置的基础断句算法,而“LLM重新断句”是使用大语言模型进行更智能的断句优化。
  • 处理顺序:软件会先执行“自动修正选项”,然后再执行“LLM重新断句”。如果两者都开启,LLM需要在自动修正的基础上再次处理,可能影响最终效果。
  • 资源浪费:先进行自动修正再让LLM重新断句,增加了不必要的处理步骤和时间。

推荐配置

  • 使用LLM重新断句:只勾选“LLM重新断句”,不勾选“自动修正选项”
  • 不使用LLM:只勾选“自动修正选项”

这样能确保LLM直接处理最原始的语音识别结果,发挥最佳的断句优化效果,同时避免重复处理带来的效率损失。

1
00:00:00,160 --> 00:00:45,040
You're not hated. You're being tested. A subtle jab. A remark slung at you in a crowd. Not heavy enough to spark anger, but sharp enough to make everyone turn, waiting for your reaction. You think you're keeping the peace, but in truth, you've just placed yourself below. In the game of power, the one who speaks first isn't polite. They're weak, and you don't even realize. Your need to be understood. Your reflex to explain. Your fear of being judged are eroding your aura every day. Machiavelli didn't need to speak. He made others adjust themselves. He didn't fight back. He let the attacker reveal their own instability.
为什么有时会出现这种超长的断句

这种超长断句的出现通常由以下原因导致:VAD语音活动检测失效:软件依赖VAD来检测语音的开始和结束。如果整段话中语音能量波动较小、缺乏明显停顿,VAD可能无法正确分割,导致将多个句子合并为一个长段落。语音识别模型限制:某些语音识别模型在处理连续、流畅的语音时,倾向于生成更长的文本片段,特别是在说话人语速较快或缺乏明显停顿的情况下。音频特性影响:背景噪音、混响或录音质量可能干扰VAD的准确性,使其难以检测到微小的语音间隙。解决方案:调整VAD参数:在 工具/选项 -> 高级选项 -> Faster/OpenAI/Whisper 语音识别微调中:降低"语音阈值"(如从0.45降至0.3)增加"静音分割持续毫秒"(如从140增至200-300)使用LLM重新断句:这正是"LLM重新断句"功能的设计目的 - 将过长的语音识别结果智能地分割成自然的句子段落。手动编辑:在语音识别完成后弹出的字幕编辑窗口中,手动分割过长的句子。当前这个超长段落恰好展示了LLM重新断句的价值,它能将这种连续文本智能地分割成更自然的句子结构。

降低"语音阈值"(如从0.45降至0.3)增加"静音分割持续毫秒"(如从140增至200-300)
这两个调整具体有什么效果

这两个VAD参数调整对语音分割有直接影响:降低"语音阈值"(从0.45降至0.3):效果:使VAD检测更加敏感,更容易将微弱的语音信号识别为有效语音。风险:可能将背景噪音或呼吸声误判为语音,导致产生更多短小的、无意义的片段。增加"静音分割持续毫秒"(从140增至200-300):效果:要求更长的静音间隔才进行分割,减少因短暂停顿造成的过度分割。风险:如果静音间隔设置过长,可能导致本应分割的句子被合并,产生您遇到的超长段落问题。针对您遇到的超长断句问题,建议的调整方向恰恰相反:降低"语音阈值"至0.3-0.35:增强对微弱语音间隙的检测增加"静音分割持续毫秒"至80-100:缩短分割所需的静音时长,让VAD在更短的停顿处就进行分割这样组合调整能让VAD在更细微的语音变化处进行分割,有效防止超长段落的产生。最佳参数需要根据具体音频特性进行微调,建议先小幅度调整测试效果。

同时启用gpt的断句和gpt的翻译会不会因为过长的文本导致输出异常文本无法保存

同时启用GPT断句和GPT翻译不会因为文本过长导致输出异常或无法保存,但确实存在一些需要注意的问题:处理机制保障:GPT断句和GPT翻译是两个独立的处理环节,软件会对发送给API的文本进行长度检查和分割,确保不会超出模型的上下文限制。潜在风险:API调用失败:如果单个批次文本确实过长,可能触发API的token限制,导致请求失败。处理时间延长:长文本需要更多的处理时间,可能增加超时风险。费用增加:GPT API按token计费,长文本处理成本更高。优化建议:调整批次大小:在 高级选项 中:将"LLM重新断句每批字词数"设置为200-300将"翻译时每批字幕行数"设置为3-5增加间隔时间:设置"翻译后暂停秒数"为3-5秒,避免API频率限制监控API用量:定期检查API使用情况,确保未超出限额软件已内置重试机制,如果因文本过长导致API调用失败,会自动回退到默认处理方式,不会导致整个流程中断或文件无法保存。建议先使用较小的批次参数进行测试,确认稳定后再逐步调整。

noautofix 是LLM断句前的备份,en.srt 是重新断句后的。查看里的"文件说明.txt"

2025-12-03 08:51:03,265 - WARNING - 重新断句失败[except],已恢复原样 RetryError[]

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.

Donate: https://ko-fi.com/jianchang512

Trending Questions