#7974 list index out of range

2409**4a42 Posted at: 1 hour ago

list index out of range


=
system:Windows-10-10.0.26200-SP0
version:v4.15
frozen:True
language:zh_CN
root_dir:E:/win-pyvideotrans-v4.15

8 Replies

#1 DeepSeek reply at 1 hour ago

暂无法确定具体原因。"list index out of range"(列表索引越界)属于程序内部逻辑异常,知识库中没有对应该报错的已知原因与解决方案,需结合具体日志定位。

请补充以下信息以便分析:

  1. 软件安装目录 E:/win-pyvideotrans-v4.15 下 logs/ 文件夹内最新的日志文件(按日期命名,如 20250622.log),复制其底部约30行报错信息。
  2. 报错是哪个功能触发的、执行到哪一步(如:翻译视频 / 语音转录 / 文字配音 / 翻译字幕 / 媒体合并等)。
  3. 报错时所选用的渠道:语音识别渠道、翻译渠道、配音渠道(含模型名称、配音角色)。
  4. 是单个视频还是批量处理,以及是否勾选过 分离人声背景声、二次识别、音频加速/视频慢速 等选项。

若需快速自救,可先尝试:

  1. 进入软件根目录 tmp/ 文件夹,清空其中所有临时文件后重试。
  2. 勾选主界面 清理已生成,对同一文件重新执行一次(避免复用上一次残留的中间文件)。
  3. 进入 videotrans/ 文件夹,备份后删除 codec.json、ass.json 后重启软件(这两项损坏可能引发合成阶段的异常)。

请查阅相关文档:

#2 2409**4a42 reply at 1 hour ago

[DEBUG] app_cfg.proxy=''
[DEBUG] 可用 Nvidia 显卡数: 0
[DEBUG] 找到 0 个 Nvidia GPUs, 耗时: 3s
[DEBUG] cpu_count=12,app_cfg.MAX_GPU_PROCESS=1, app_cfg.MAX_CPU_PROCESS=3, task_nums=3
[DEBUG] start 25 jobs
[DEBUG] 无法连接 huggingface.co, 使用镜像替换: hf-mirror.com
[DEBUG] 平台: Windows。正在按优先级检测最佳的 'h264' 编码器: ['nvenc', 'qsv', 'amf']
[DEBUG] CUDA 不可用,跳过 nvenc 测试。
[DEBUG] 正在测试编码器是否可用: h264_qsv...
[WARNING] 硬件编码器 'h264_qsv' 不可用
[DEBUG] 正在测试编码器是否可用: h264_amf...
[DEBUG] 硬件编码器 'h264_amf' 可用。
[DEBUG] 已选择硬件编码器: h264_amf
[DEBUG] 最终确定使用的编码器: h264_amf
[DEBUG] 平台: Windows。正在按优先级检测最佳的 'hevc' 编码器: ['nvenc', 'qsv', 'amf']
[DEBUG] CUDA 不可用,跳过 nvenc 测试。
[DEBUG] 正在测试编码器是否可用: hevc_qsv...
[WARNING] 硬件编码器 'hevc_qsv' 不可用
[DEBUG] 正在测试编码器是否可用: hevc_amf...
[DEBUG] 硬件编码器 'hevc_amf' 可用。
[DEBUG] 已选择硬件编码器: hevc_amf
[DEBUG] 最终确定使用的编码器: hevc_amf

#3 DeepSeek reply at 1 hour ago

你粘贴的这段是软件启动阶段的初始化日志,其中没有任何错误信息:

  • 找到 0 个 Nvidia GPUs:本机无 N 卡,CUDA 加速不可用(属正常提示,非报错)
  • 已选择硬件编码器: h264_amf / hevc_amf:检测到并选用 AMD 硬件编码器(属正常提示)
  • 其余均为编码器探测、CPU/GPU 进程数、镜像站切换等常规调试信息

因此仍无法确定 list index out of range 的具体原因(该报错属程序内部逻辑异常,知识库中无对应已知案例),需要报错发生时刻的日志。

请补充以下内容:

  1. 打开 E:/win-pyvideotrans-v4.15/logs/ 文件夹,找到日期最新的 .log 文件,定位到报错发生那一刻的堆栈信息(文件末尾约 30~50 行,含 Traceback (most recent call last) 及其后的 File/行号部分),完整复制。
  2. 报错是在哪个功能、哪一阶段触发?(语音识别 / 翻译字幕 / 配音 / 音画对齐 / 最终合成 / 媒体合并)
  3. 当时选用的渠道:语音识别渠道+模型、翻译渠道、配音渠道+配音角色。
  4. 是单个视频还是批量?是否勾选 二次识别、音频加速、视频慢速、分离人声背景声。

在等待日志期间,可先做以下排查(都不涉及改代码):

  1. 勾选主界面 清理已生成,对同一文件重新跑一次,排除上一次残留中间文件导致的异常。
  2. 进入软件根目录 tmp/ 文件夹,清空其中的所有临时文件后重试。
  3. 备份后删除 videotrans/codec.json 和 videotrans/ass.json,重启软件(这两个缓存文件损坏可能引发合成/字幕阶段的异常)。
  4. 若报错发生在最后的视频合成阶段,可进入 菜单 → 工具/选项 → 高级选项 → 视频输出控制,勾选 强制软编码视频? 后再试一次,用于排除 AMD 硬件编码器(h264_amf)兼容性问题。
  5. 若报错发生在语音识别阶段,注意本机无 N 卡(可用 Nvidia 显卡数: 0),本地模型只能走 CPU,速度会很慢且可能因资源不足异常,可考虑改用在线识别渠道。

请查阅相关文档:

#4 2409**4a42 reply at 1 hour ago

Traceback (most recent call last):
File "videotrans\mainwin\_actions_config.py", line 92, in set_voice_role
File "videotrans\translator\_lang_utils.py", line 70, in is_allow_translate
IndexError: list index out of range

#5 DeepSeek reply at 1 hour ago

这是语言代码映射表 videotrans/languages.json 中的数据缺失或格式错误导致的。

切换配音角色时,软件会调用 is_allow_translate() 去按「目标语言」查询各翻译/配音渠道对应的语言代码;该映射表是按固定顺序索引取值的,若所选语言的条目不存在、或条目数量不足(少于约定的 10 项),取第 N 项时就会抛出 IndexError: list index out of range。

排查与解决

  1. 是否自己新增过语言?(新增语言的规范见文末文档)
    打开 E:/win-pyvideotrans-v4.15/videotrans/languages.json,检查出错时所用的那个目标语言条目,必须严格包含 10 项,顺序依次为:
    ① Google代码 ② 字幕嵌入3位ISO代码 ③ 百度 ④ DeepL ⑤ 腾讯 ⑥ Libre ⑦ 微软 ⑧ AI渠道用英文语言名 ⑨ 阿里机器翻译 ⑩ 阿里百炼Qwen-MT
    不使用的渠道填 No(区分大小写),不能省略该项。
    同时确认:所有标点为英文半角,各项之间有英文逗号,最后一项后不加逗号。
  2. 若未手动改过此文件:可能是文件被写坏或与旧版本混用。备份 videotrans/languages.json 和 videotrans/language/zh.json 后,用 v4.15 完整包中的同名文件覆盖回来(不要直接删除),重启软件再试。
  3. 临时规避验证:在主界面把 目标语言 改为软件默认内置的常用语言(如 简体中文 / 英语),再点配音角色下拉框。若不再报错,即可确认问题是那个自定义/冷门语言条目引起的。
  4. 若按上述覆盖后仍报错,请提供 videotrans/languages.json 的内容(或告知出错时的目标语言、翻译渠道、配音渠道),以便进一步定位。

请查阅相关文档:

#6 2409**4a42 reply at 1 hour ago

languages.json里没有内容

#7 DeepSeek reply at 1 hour ago

问题根源已确认:videotrans/languages.json 是软件内置的「语言代码映射表」,启动和切换配音角色时都会读取它。文件为空时,软件取不到任何语言条目,访问第一条即抛出 IndexError: list index out of range。该文件属于程序自带的静态数据文件,不会像 cfg.json 那样自动重建,必须手动补回。

解决办法(任选其一):

方法一(推荐):从完整包中提取覆盖

  1. 找到你当初下载的 win-pyvideotrans-v4.15 完整包(约 2.7GB 的那个 .7z,不是 360MB 补丁包),用解压软件打开。
  2. 在压缩包内定位到 videotrans/languages.json,解压并覆盖到 E:/win-pyvideotrans-v4.15/videotrans/languages.json。
  3. 完整包中不含 cfg.json / params.json 等用户配置文件,此覆盖不会丢失你的 API 密钥和设置。
  4. 重启软件。

方法二:从 GitHub 源码中取该文件
在源码仓库中下载 videotrans/languages.json:https://github.com/jianchang512/pyvideotrans ,解压后把该文件复制到 E:/win-pyvideotrans-v4.15/videotrans/ 覆盖即可。

注意事项

  • 覆盖后请勿用记事本“另存为”该文件,避免 BOM 或编码改变导致 JSON 解析失败。
  • 已确认是空文件后,无需再保留原空文件备份,直接覆盖。
  • 覆盖完成后,若切换配音角色仍报同样的错,说明还有其它语言相关文件(如 videotrans/language/zh.json)也受损,可一并从完整包覆盖。
  • 若此文件反复变空,请检查杀毒软件(360/火绒/腾讯管家等)是否在拦截或“清理”该目录,建议将 E:/win-pyvideotrans-v4.15 整个目录加入信任白名单。

请查阅相关文档:

#8 Admin reply at 53 minutes ago

使用的哪个 翻译渠道、原始语言和发音语言分别是什么?看起来似乎是读取某个渠道对应的语言代码时出错了

Thinking...
Post Your Reply
If you have more than 50 messages, you will no longer receive an automatic reply. Please ask a new question!
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