Whisper 本身不支持直接加载 .safetensors 格式的模型文件。.safetensors 是 Hugging Face 生态中用于安全存储模型权重的格式,通常与 transformers 库配合使用。
如果您想在 pyVideoTrans 中使用基于 Whisper 架构、经过微调(fine-tune)的模型,您需要将其转换为与 faster-whisper 或 openai-whisper 兼容的格式。
以下是两种主要的解决方案:
方案一:使用 transformers 库的 Whisper 实现(如果模型托管在 Hugging Face)
如果您的微调模型已上传至 Hugging Face Hub,且是标准的 Whisper 架构,您可以尝试通过“自定义语音识别API”功能来调用。
- 前提:模型必须能在本地通过
transformers 库的 pipeline 加载并运行。 在 pyVideoTrans 中配置:
- 进入 设置 -> 语音识别设置。
- 在“自定义语音识别API”区域,填写相关信息。您需要提供一个能接收音频文件并返回识别文本的本地 API 服务地址(例如使用
gradio 或 fastapi 搭建)。 - 这种方式需要您自行编写一小段服务端代码来加载您的
.safetensors 模型并进行推理。
方案二:将模型转换为 faster-whisper 格式(推荐,性能更好)
faster-whisper 使用 CTranslate2 格式的模型,速度更快,显存占用更低。您需要将 .safetensors 模型转换为 CTranslate2 格式。
转换步骤(需要一定的 Python 和命令行操作经验):
安装必要库:
pip install transformers ctranslate2
编写转换脚本(例如 convert_to_ct2.py):
from transformers import WhisperForConditionalGeneration
import ctranslate2
# 1. 从 Hugging Face 加载您的微调模型
model_name = "您的 Hugging Face 模型 ID 或本地路径" # 例如 "username/whisper-small-zh-finetuned"
hf_model = WhisperForConditionalGeneration.from_pretrained(model_name)
# 2. 转换为 CTranslate2 格式
# 指定输出目录
ct2_model_path = "./whisper-ct2-model"
# 使用 CTranslate2 的转换器
converter = ctranslate2.converters.TransformersConverter(model_name)
converter.convert(ct2_model_path, quantization="int8_float16") # 可选择量化方式,如 int8, int8_float16, float16 等
运行此脚本后,会在 ./whisper-ct2-model 目录下生成 CTranslate2 格式的模型文件。
在 pyVideoTrans 中使用:
- 启动软件,在语音识别渠道选择
faster-whisper(本地)。 - 在“模型”下拉菜单旁,点击
... 按钮。 - 在弹出的文件选择器中,导航到您上一步生成的
whisper-ct2-model 文件夹,选择它。 - 软件将加载您自定义的转换后模型进行识别。
重要注意事项
- 架构一致性:您的微调模型必须基于原始的 Whisper 架构,不能有大的结构性改动,否则转换或加载可能失败。
- 性能:方案二(
faster-whisper)通常能获得更好的推理速度和更低的显存占用。 - 语言支持:请确保在 pyVideoTrans 的“发音语言”设置中,选择与您微调模型匹配的语言(如果模型是针对特定语言微调的)。
如果您在转换或加载过程中遇到具体错误,请提供详细的错误信息,以便进一步分析。
请查看更多参考文档: