Skip to content

出现了一个警告,完后让Gemini帮我分析了下 #32

@nwfnyfgvfir

Description

@nwfnyfgvfir

用的是:运行(GPU,高显存加速模式).bat

日志:

2026-03-04 10:06:13,012 - faster_whisper_transwithai_chickenrice.infer - INFO - 日志文件:D:\soft\faster_whisper_transwithai_windows_cu128-chickenrice\latest.log
2026-03-04 10:06:13,012 - faster_whisper_transwithai_chickenrice.infer - INFO - 程序版本:v1.7
2026-03-04 10:06:13,013 - faster_whisper_transwithai_chickenrice.infer - INFO - Python版本:3.10.19 | packaged by conda-forge | (main, Jan 26 2026, 23:39:36) [MSC v.1944 64 bit (AMD64)]
2026-03-04 10:06:13,019 - faster_whisper_transwithai_chickenrice.infer - INFO - 运行平台:Windows-10-10.0.26200-SP0
2026-03-04 10:06:13,019 - faster_whisper_transwithai_chickenrice.infer - INFO - 运行参数:{'model_name_or_path': 'models', 'device': 'cuda', 'compute_type': 'auto', 'overwrite': False, 'audio_suffixes': 'mp3,wav,flac,m4a,aac,ogg,wma,mp4,mkv,avi,mov,webm,flv,wmv', 'sub_formats': 'srt,vtt,lrc', 'output_dir': None, 'generation_config': 'generation_config.json5', 'log_level': 'DEBUG', 'merge_segments': None, 'merge_max_gap_ms': None, 'merge_max_duration_ms': None, 'vad_threshold': None, 'vad_min_speech_duration_ms': None, 'vad_min_silence_duration_ms': None, 'vad_speech_pad_ms': None, 'console': False, 'enable_batching': True, 'batch_size': None, 'max_batch_size': 8, 'base_dirs': ['D:\\V\\新建文件夹 (2)\\xxx.mp4']}
2026-03-04 10:06:14,591 - faster_whisper_transwithai_chickenrice.infer - INFO - 自动选择计算类型 'bfloat16',设备:'cuda'
2026-03-04 10:06:14,592 - faster_whisper_transwithai_chickenrice.infer - INFO - 正在初始化增强VAD模型...
2026-03-04 10:06:14,592 - faster_whisper_transwithai_chickenrice.infer - INFO - 已从 models/whisper_vad_metadata.json 加载VAD配置
2026-03-04 10:06:14,593 - faster_whisper_transwithai_chickenrice.infer - INFO - ✓ 增强VAD已激活(阈值=0.5)
2026-03-04 10:06:14,593 - faster_whisper_transwithai_chickenrice.infer - INFO - 生成配置:{'language': 'ja', 'task': 'translate', 'vad_filter': True, 'max_initial_timestamp': 30, 'repetition_penalty': 1.1, 'vad_parameters': {'threshold': 0.5, 'min_speech_duration_ms': 300, 'min_silence_duration_ms': 100, 'speech_pad_ms': 200}}
2026-03-04 10:06:14,593 - faster_whisper_transwithai_chickenrice.infer - INFO - Segment merge: enabled=True, max_gap_ms=2000, max_duration_ms=20000
2026-03-04 10:06:14,593 - faster_whisper_transwithai_chickenrice.infer - DEBUG - 正在扫描:D:\V\新建文件夹 (2)\xxx.mp4
2026-03-04 10:06:14,593 - faster_whisper_transwithai_chickenrice.infer - DEBUG - 正在处理:D:\V\新建文件夹 (2)\xxx.mp4
2026-03-04 10:06:14,593 - faster_whisper_transwithai_chickenrice.infer - DEBUG - 文件后缀:mp4
2026-03-04 10:06:14,594 - faster_whisper_transwithai_chickenrice.infer - DEBUG - 有效后缀:{'mp3': True, 'wav': True, 'flac': True, 'm4a': True, 'aac': True, 'ogg': True, 'wma': True, 'mp4': True, 'mkv': True, 'avi': True, 'mov': True, 'webm': True, 'flv': True, 'wmv': True}
2026-03-04 10:06:14,594 - faster_whisper_transwithai_chickenrice.infer - DEBUG - 为格式添加任务:['srt', 'vtt', 'lrc']
2026-03-04 10:06:14,594 - faster_whisper_transwithai_chickenrice.infer - INFO - 找到 1 个文件待处理
2026-03-04 10:06:14,594 - faster_whisper_transwithai_chickenrice.infer - INFO - 翻译任务:1
2026-03-04 10:06:14,594 - faster_whisper_transwithai_chickenrice.infer - INFO - 正在加载Whisper模型...
2026-03-04 10:06:17,767 - faster_whisper_transwithai_chickenrice.infer - INFO - 模型运行精度:bfloat16,设备:cuda
2026-03-04 10:06:17,768 - faster_whisper_transwithai_chickenrice.infer - WARNING - Failed to setup batched inference: Invalid model size 'batch.finding_optimal', expected one of: tiny.en, tiny, base.en, base, small.en, small, medium.en, medium, large-v1, large-v2, large-v3, large, distil-large-v2, distil-medium.en, distil-small.en, distil-large-v3, distil-large-v3.5, large-v3-turbo, turbo. Falling back to non-batched mode.
2026-03-04 10:06:17,769 - faster_whisper_transwithai_chickenrice.infer - INFO - 正在翻译(1/1):D:\V\新建文件夹 (2)\xxx.mp4
2026-03-04 10:07:03,175 - faster_whisper_transwithai_chickenrice.infer - INFO - 时长:2小时24分5秒 → 40分16.3秒(检测到 28.0% 语音)

警告部分:

2026-03-04 10:06:17,768 - faster_whisper_transwithai_chickenrice.infer - WARNING - Failed to setup batched inference: Invalid model size 'batch.finding_optimal', expected one of: tiny.en, tiny, base.en, base, small.en, small, medium.en, medium, large-v1, large-v2, large-v3, large, distil-large-v2, distil-medium.en, distil-small.en, distil-large-v3, distil-large-v3.5, large-v3-turbo, turbo. Falling back to non-batched mode.

Gemini分析:

通过分析你提供的日志和代码,日志中出现的警告信息:

WARNING - Failed to setup batched inference: Invalid model size 'batch.finding_optimal', expected one of: ... Falling back to non-batched mode.

这是一个由Python变量名覆盖(Shadowing)引起的典型代码Bug。虽然程序退回了非批处理(non-batched)模式并成功完成了翻译,但高显存加速(Batched Inference)并未成功启用。

详细原因分析

  1. 翻译函数定义:
    infer.py 文件的顶部(第 45 行附近),程序导入了国际化翻译函数并将其赋值给下划线 _(这在国际化开发中是标准做法):
_ = i18n._
  1. 导致 Bug 的代码行:
    在寻找最佳批处理大小的方法 _find_executable_batch_size 中(大约第 557 行),有这样一行代码:
_, BatchedInferencePipelineCls = _require_faster_whisper()

在 Python 中,_ 常常被用作“无用变量/占位符”。函数 _require_faster_whisper() 返回一个元组 (WhisperModel, BatchedInferencePipeline)
这一步将 WhisperModel 类赋值给了局部变量 _,**从而覆盖了全局的翻译函数 _**
3. 异常触发:
紧接着在下一行代码中:

logger.info(_("batch.finding_optimal", min_size=min_batch_size, max_size=max_batch_size))

原本这里的意图是调用翻译函数 _"batch.finding_optimal" 翻译成对应的本地化文本。
但由于 _ 已经被替换成了 WhisperModel 类,这行代码实际上变成了:

logger.info(WhisperModel("batch.finding_optimal", min_size=min_batch_size, max_size=max_batch_size))

由于 WhisperModel 初始化的第一个参数是模型名称或路径(model size_or_path),它接收到了字符串 "batch.finding_optimal"。模型库检查后发现这不是一个合法的模型尺寸(如 tiny, base, large-v3 等),因此抛出了你在日志中看到的错误:Invalid model size 'batch.finding_optimal'
4. 异常捕获与降级:
这个异常被 generates 方法中的 try-except 块捕获,程序打出日志并自动降级回了普通的单句推理模式(non-batched mode),因此后续翻译依然能够完成,只是没有享受批处理带来的速度提升。

修复方案

要修复这个问题并正常使用高显存加速模式,你需要修改 infer.py 源码中的变量名,避免覆盖 _

打开 src/faster_whisper_transwithai_chickenrice/infer.py 文件,找到 _find_executable_batch_size 方法(约第 557 行):

修改前:

_, BatchedInferencePipelineCls = _require_faster_whisper()

修改后(将 _ 替换为其他不会冲突的名字,例如 _clsWhisperModelCls):

_cls, BatchedInferencePipelineCls = _require_faster_whisper()

保存文件后重新运行 运行(GPU,高显存加速模式).bat,就可以正常开启 Batch Inference 加速了,日志中也不会再报这个错误。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions