-
Notifications
You must be signed in to change notification settings - Fork 63
Description
用的是:运行(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)并未成功启用。
详细原因分析
- 翻译函数定义:
在infer.py文件的顶部(第 45 行附近),程序导入了国际化翻译函数并将其赋值给下划线_(这在国际化开发中是标准做法):
_ = i18n._- 导致 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()修改后(将 _ 替换为其他不会冲突的名字,例如 _cls 或 WhisperModelCls):
_cls, BatchedInferencePipelineCls = _require_faster_whisper()保存文件后重新运行 运行(GPU,高显存加速模式).bat,就可以正常开启 Batch Inference 加速了,日志中也不会再报这个错误。