TypeError: __init__() should return None

这个报错通常出现在 Python 3.14 环境下调用 Faster Whisper 进行转录时,堆栈指向 SpeechTimestampsMap 或 tqdm 监控线程,但核心是 TypeError: __init__() should return None, not 'NoneType' 。优

快速结论:这个报错通常出现在 Python 3.14 环境下调用 Faster Whisper 进行转录时,堆栈指向 SpeechTimestampsMap 或 tqdm 监控线程,但核心是 TypeError: __init__() should return None, not 'NoneType'。优先排查 Python 3.14 版本兼容性与运行环境,而不是直接修改 SpeechTimestampsMap。

适用环境:已确认信息:Faster Whisper 4.8.1、模型 large、ctranslate2 4.8.1、Python 3.14.6、CachyOS Linux、KDE Plasma 6.7.4、Kernel 7.1.8-1-cachyos、Wayland、Intel Xeon E5-2695 v4、32 GiB RAM、NVIDIA GeForce RTX 5060 Ti;相关依赖含 nvidia_cublas_cu12 12.9.2.10、nvidia_cudnn_cu12 9.24.0.43、nvidia_cuda_nvrtc_cu12 12.9.86、onnxruntime 1.28.0、tokenizers 0.23.1。

最快修复方案:暂无确认的一步修复方案。Issue 中维护者建议尝试 Python 3.14.8,并询问 PR #1484 是否影响该问题;这两点可作为优先尝试方向。

注意事项:维护者无法复现该问题,并明确表示错误位置可能不在 SpeechTimestampsMap,而可能与用户环境或 Python 本身有关,最终被转为 Discussions。因此不要把“替换 SpeechTimestampsMap”当作已验证修复;升级 Python 或测试 PR #1484 属于可优先尝试,但均未在 Issue 中得到最终确认。

问题场景

用户在 CachyOS Linux 上使用 Python 3.14.6 虚拟环境运行 Faster Whisper 4.8.1,加载 large 模型进行转录。运行过程中出现 TypeError,堆栈有时指向 Faster Whisper 内部的 SpeechTimestampsMap,有时又出现在 tqdm 的 tqdm_monitor 线程中,表现为多处 NoneType 相关异常。

报错原文

Exception in thread Exception in thread tqdm_monitortqdm_monitor:
:
Traceback (most recent call last):
Traceback (most recent call last):
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
        self._context.run(self.run)self._context.run(self.run)

  File "/usr/lib/python3.14/site-packages/tqdm/_monitor.py", line 78, in run
  File "/usr/lib/python3.14/site-packages/tqdm/_monitor.py", line 78, in run
        instances = self.get_instances()instances = self.get_instances()

  File "/usr/lib/python3.14/site-packages/tqdm/_monitor.py", line 58, in get_instances
  File "/usr/lib/python3.14/site-packages/tqdm/_monitor.py", line 58, in get_instances
    return [i for i in self.tqdm_cls._instances.copy()    
return [i for i in self.tqdm_cls._instances.copy()  File "/usr/lib/python3.14/_weakrefset.py", line 52, in copy

  File "/usr/lib/python3.14/_weakrefset.py", line 52, in copy
        return self.__class__(self)return self.__class__(self)

TypeErrorTypeError: : __init__() should return None, not 'NoneType'__init__() should return None, not 'NoneType'

原因分析

可能原因与 Python 3.14 环境有关。Issue 标题把问题指向 SpeechTimestampsMap,但维护者在讨论中明确表示该问题实际不在 SpeechTimestampsMap(),尽管 traceback 指向了它,并怀疑与用户环境或 Python 本身有关。

另一个可能方向是 Python 3.14 下 tqdm 的 _weakrefset.copy() 路径触发了相同的 __init__() should return None 异常,说明该 TypeError 并非 Faster Whisper 独有逻辑,而可能是解释器层面或依赖兼容性问题。

环境排查

  • 确认 Python 版本是否为 3.14.6;Issue 中维护者建议尝试 Python 3.14.8。
  • 确认 Faster Whisper 版本为 4.8.1、模型为 large。
  • 确认 ctranslate2 版本为 4.8.1。
  • 确认 CUDA 相关依赖:nvidia_cublas_cu12 12.9.2.10、nvidia_cudnn_cu12 9.24.0.43、nvidia_cuda_nvrtc_cu12 12.9.86。
  • 确认 onnxruntime 1.28.0、tokenizers 0.23.1。
  • 确认显卡为 NVIDIA GeForce RTX 5060 Ti,系统为 CachyOS Linux、Kernel 7.1.8-1-cachyos。
  • 确认错误是立即出现,还是运行一段时间后出现;Issue 中维护者专门询问过这一点。
  • 确认 PR #1484 是否影响该问题;Issue 中维护者专门询问过这一点。

解决步骤

  1. 先记录完整 traceback,确认报错是立即发生在 SpeechTimestampsMap,还是运行一段时间后才出现。
  2. 尝试把 Python 从 3.14.6 升级到 3.14.8,这是维护者在 Issue 中建议的优先尝试项。
  3. 检查并测试 PR #1484 是否会影响当前问题,这是维护者提出的另一个排查方向。
  4. 如果升级 Python 后仍可复现,准备一个最小复现示例,而不是只提供截图或完整项目日志;维护者曾要求提供可复现示例。
  5. 若最小示例仍无法稳定复现,优先把问题转到 Discussions 或继续跟踪,因为维护者已判断该问题可能不在 Faster Whisper 代码内。

验证方法

在相同模型、相同依赖和相同转录脚本下重新运行,确认是否还出现 TypeError: __init__() should return None, not 'NoneType';同时确认 tqdm 监控线程是否仍抛出同类异常。如果升级 Python 3.14.8 或测试 PR #1484 后不再复现,可认为该方向有效,但 Issue 中没有给出最终确认结论。

参考来源

SYSTRAN/faster-whisper #1474

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 28041

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注