#5382 TaskCfgSTS(uuid='f830845582', name='D:/movie/ajvr-298/twojav.com@ajvr00298_1_8k.srt', dirname='D:/movie/ajvr-298', noext

112.224* Posted at: 1 day ago

翻译字幕阶段出错 [兼容AI/本地模型] 内容太长超出最大允许Token,请减小内容或增大max_token,或者降低每次发送字幕行数
Could not parse response content as the length limit was reached - CompletionUsage(completion_tokens=1401, prompt_tokens=2695, total_tokens=4096, completion_tokens_details=None, prompt_tokens_details=None)
Traceback (most recent call last):

File "videotrans\task\job.py", line 35, in run

File "videotrans\task\job.py", line 135, in process_task

File "videotrans\task\translate_srt.py", line 48, in trans

File "videotrans\translator\__init__.py", line 858, in run

File "videotrans\translator\_base.py", line 72, in run

File "videotrans\translator\_base.py", line 142, in _run_srt

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 400, in

File "concurrent\futures\_base.py", line 451, in result

File "concurrent\futures\_base.py", line 403, in __get_result

File "tenacity\__init__.py", line 480, in call

File "videotrans\translator\_openaicompat.py", line 84, in _item_task

openai.LengthFinishReasonError: Could not parse response content as the length limit was reached - CompletionUsage(completion_tokens=1401, prompt_tokens=2695, total_tokens=4096, completion_tokens_details=None, prompt_tokens_details=None)
TaskCfgSTS(uuid='f830845582', name='D:/movie/ajvr-298/twojav.com@ajvr00298_1_8k.srt', dirname='D:/movie/ajvr-298', noextname='twojav.com@ajvr00298_1_8k', basename='twojav.com@ajvr00298_1_8k.srt', ext='srt', target_dir='D:/movie/cn/translate', cache_folder=None, is_cuda=False, source_language=None, source_language_code='Japanese', source_sub='D:/movie/ajvr-298/twojav.com@ajvr00298_1_8k.srt', source_wav=None, source_wav_output=None, target_language=None, target_language_code='Simplified Chinese', target_sub='D:/movie/cn/translate/twojav.com@ajvr00298_1_8k.Simplified Chinese.srt', target_wav=None, target_wav_output=None, translate_type=8)


=
system:Windows-10-10.0.26200-SP0
version:v4.01
frozen:True
language:zh
root_dir:D:/download/12

3 Replies

翻译字幕阶段因为单次发送给AI的字幕内容过多,超出了模型设置的上下文长度限制(总共4096个token,其中输出就被截断在1401个token),导致翻译被截断报错。

解决步骤如下(任选其一或组合使用):

  1. 增大AI渠道的max_token

    • 前往 菜单 → 翻译设置 → 兼容AI/本地模型 设置面板,将 max_token(或“最大输出令牌”)值调大(例如调至8192或更高,取决于你的模型支持范围)。
    • 如果使用本地部署的模型,确保启动模型时也设置了足够的上下文窗口。
  2. 减少每次发送的字幕行数

    • 打开 菜单 → 工具/选项 → 高级选项 → 字幕翻译调整,将 AI翻译渠道每批字幕行数 减小(例如从默认值降到10或更少)。
    • 同时也可以取消勾选 发送完整字幕,让AI只处理纯文本,不附带时间轴信息,进一步减小prompt大小。
  3. 分批次手动处理

    • 如果翻译的SRT文件特别长,可以手动将其拆分为多个短文件分别翻译。

故障根因:你使用的模型上下文窗口较小(total_tokens=4096),而字幕批次中prompt_tokens已达2695,剩余给输出的空间不足,导致完成前就被截断。

请查阅相关文档:

本地模型为什么还有这个

即使是本地模型,它也受限于模型自身支持的上下文窗口长度(context window)。不同大小和架构的本地模型(如7B、13B、70B等)有其固定的最大token限制(如2048、4096、8192等)。如果你发送给它的字幕文本(prompt_tokens)加上期望它输出的内容(completion_tokens)超过了这个限制,就会报错。解决方法同样是:减小每次发送的字幕行数、增大模型的max_token参数(如果启动时支持设置)、或使用支持更长上下文的模型。

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: ko-fi.com/jianchang512

Related resource