侧边栏壁纸
  • 累计撰写 45 篇文章
  • 累计收到 2 条评论

用Python本地搭建短剧AI自动字幕工具

2026-9-29 / 0 评论 / 6 阅读

用Python本地搭建短剧AI自动字幕工具

昨天帮做短剧剪辑的朋友导素材,他吐槽在线字幕工具要么要充值要么上传慢,干脆花了点时间搭了个本地能跑的小工具,没基础也能照着做。

先把依赖环境配好

  1. 先装Python,选3.9-3.11区间的版本就行,安装的时候务必勾选Add Python to PATH选项,不然后续终端识别不到Python命令。
  2. 打开系统终端(Windows是cmd或者PowerShell,Mac是终端),执行依赖安装命令:
    pip install openai-whisper ffmpeg-python
  3. 装完Python依赖后补装ffmpeg:Mac用户直接执行brew install ffmpeg;Windows用户去ffmpeg官网下载预编译的二进制包,把bin目录路径加到系统环境变量里就行。
别头铁装Python3.12及以上版本,目前部分AI依赖包还没做适配,装的时候卡半天装不上,我上周刚踩过这个坑。

核心代码不到二十行

新建一个后缀为.py的文件,把下面的代码粘进去就行,不需要改复杂逻辑:

import whisper
import os

# 模型选择,第一次跑先用base,模型小下载快
model = whisper.load_model("base")
# 把引号里的文件名换成你自己的短剧片段路径
result = model.transcribe("duanju.mp4")

# 输出标准srt格式字幕文件
with open("output.srt", "w", encoding="utf-8") as f:
    for idx, segment in enumerate(result["segments"], start=1):
        # 格式化时间戳适配srt规范
        start_ts = f"{int(segment['start']//3600):02d}:{int((segment['start']%3600)//60):02d}:{int(segment['start']%60):02d},{int((segment['start']%1)*1000):03d}"
        end_ts = f"{int(segment['end']//3600):02d}:{int((segment['end']%3600)//60):02d}:{int(segment['end']%60):02d},{int((segment['end']%1)*1000):03d}"
        f.write(f"{idx}\n{start_ts} --> {end_ts}\n{segment['text'].strip()}\n\n")
print("字幕生成完成,同目录下找output.srt就行")

第一次运行的时候会自动下载你选的对应模型,不用手动找资源下。如果你的设备是N卡、显存够8G左右,可以把load_model里的"base"换成"small"或者"medium",识别准确率会好不少,运行速度看设备配置,别着急关终端窗口。

几个容易踩的小问题

  • 如果终端提示找不到ffmpeg,先重启终端再试,还是报错就去检查环境变量的路径是不是写到了bin目录这一级,别写错上层目录。
  • 要是识别出来错字特别多,要么是短剧片段背景音太杂盖过人声,要么是选的模型太小,换大一级的模型大多能改善。
  • 待处理的视频文件名别用全角特殊符号,改成英文、数字或者普通中文命名最稳妥,能避免很多奇怪的读取报错。

反正生成的srt文件直接拖到剪映、PR里就能对齐时间轴用,省下来的上传、等平台处理的时间,多剪两条片段不香吗?

评论一下?

OωO
取消