以下基本都是AI生成的,我也在B站做了个视频讲这玩意怎么用(BV1VxR5BPEjt、BV1xJoNBPEtD)
一个本地运行的视频字幕识别、AI 总结与视频知识管理工具。
它可以接收 B 站、抖音或本地音视频,自动完成音频提取、人声分离、Whisper 语音识别和大模型总结,并在总结内容后附带时间戳。点击时间戳,可以跳转到本地播放器或原视频对应位置。
Important
当前版本主要面向 Windows + NVIDIA 显卡 用户,需要自行安装 Python、FFmpeg、CUDA/cuDNN,并准备本地 Whisper 模型和大模型服务。
本项目不是双击即用的软件,请按照本说明完成环境配置。
- B 站、抖音视频一键发送到本地 AI 助手
- 本地视频、音频文件导入与黑框拖拽提交
- Faster-Whisper 本地语音识别
- 可选 AI 人声分离与背景音剥离
- 油猴插件提交时自动开启人声分离
- 大模型自动生成结构化总结
- 总结、大纲、要点、Q&A、大白话、暗广分析等快捷指令
- 所有核心内容自动附带视频时间戳
- 点击时间戳跳转到本地播放器或原网页
- 视频、字幕、AI 对话和个人笔记统一保存
- 收藏夹分类与本地文件物理移动
- 后台任务队列、进度显示与失败降级
- 可选自动归档 1080P 原视频
项目目录/
├─ config.py # 统一配置文件,普通用户主要修改这里
├─ app.py # Streamlit 网页界面
├─ server.py # FastAPI 任务接收服务
├─ db.py # SQLite 任务数据库
├─ worker.py # 下载、任务调度、首次总结与视频归档
├─ whisper_worker.py # 音频处理、人声分离与 Whisper 转录
├─ launcher.py # 一键启动全部服务
├─ requirements.txt # Python 依赖清单
├─ 油猴V6.3.txt # B站、抖音网页端油猴脚本
├─ cookies.txt # 用户自行准备,不要上传到 GitHub
└─ README.md
首次运行后会自动创建:
srt_vault/ # 字幕、总结、笔记、聊天记录和归档视频
tasks.db # 任务数据库
local_uploads/ # 本地文件相关目录
video_downloads/ # 视频相关目录
已经熟悉 Python、CUDA 和 LM Studio 的用户,可以按下面顺序快速安装:
- 安装 Python 3.10 或 3.11。
- 安装 NVIDIA 驱动、CUDA 12、cuDNN 9。
- 安装 FFmpeg,并加入系统
PATH。 - 安装本项目 Python 依赖。
- 下载 Faster-Whisper
large-v3模型。 - 修改
config.py中的模型目录和临时目录。 - 在项目根目录放入有效的
cookies.txt。 - 启动 LM Studio 的本地 API 服务。
- 运行
python launcher.py。 - 安装并启用
油猴V6.3.txt。
下面是每一步的详细说明。
- Windows 10 / Windows 11 64 位
- Python 3.10 或 Python 3.11
- NVIDIA 显卡
- 建议显存 8GB 或以上
- 建议预留 20GB 以上磁盘空间
- CUDA 12
- cuDNN 9
- FFmpeg
- LM Studio,或其他兼容 OpenAI Chat Completions API 的大模型服务
config.py 默认使用:
WHISPER_DEVICE = "cuda"
WHISPER_COMPUTE_TYPE = "float16"当前版本没有自动切换 CPU。没有 NVIDIA 显卡时,需要自行把配置改成:
WHISPER_DEVICE = "cpu"
WHISPER_COMPUTE_TYPE = "int8"但 CPU 转录速度会明显降低,人声分离的 GPU 环境也可能需要另外调整。当前版本主要按照 NVIDIA 显卡环境测试。
建议安装 Python 3.10 或 Python 3.11。
安装时务必勾选:
Add Python to PATH
安装后打开 PowerShell 或 CMD,检查:
python --version
python -m pip --version建议先升级 pip:
python -m pip install --upgrade pip项目根目录已经提供 requirements.txt。打开 PowerShell 或 CMD,进入项目目录后执行:
python -m pip install --upgrade pip
python -m pip install --upgrade -r requirements.txtrequirements.txt 会安装:
- Streamlit 网页界面
- FastAPI、Uvicorn 和 Pydantic
- OpenAI 兼容接口客户端
- yt-dlp 与 curl-cffi 浏览器指纹模拟组件
- Faster-Whisper
- Hugging Face 模型下载工具
- GPU 版 Audio Separator 人声分离组件
Important
油猴 V6.3 提交任务时会强制发送 use_vocal_separation: true,因此准备使用油猴插件的用户必须安装 audio-separator[gpu]。它已经包含在本项目的 requirements.txt 中。
requirements.txt 只负责 Python 包。FFmpeg、NVIDIA 驱动、CUDA、cuDNN、Whisper 模型、Kim_Vocal_2.onnx、LM Studio 和 cookies.txt 仍需按照后续章节单独准备。
如果 B 站或抖音后来因网站接口更新而无法解析,可以单独把 yt-dlp 更新到预发布版本:
python -m pip install --upgrade --pre "yt-dlp[default,curl-cffi]"安装完成后可检查:
python -c "import fastapi, streamlit, requests, openai, yt_dlp, faster_whisper; print('核心依赖正常')"检查人声分离:
python -c "from audio_separator.separator import Separator; print('人声分离依赖正常')"也可以运行:
audio-separator --env_info本项目会直接调用系统中的 ffmpeg.exe,用于:
- 从视频中抽取音轨
- 将音频转换成 Whisper 需要的格式
- 人声分离前后的音频转换
- 合并网页视频的音频轨和视频轨
请安装完整的 FFmpeg,并将 FFmpeg 的 bin 目录加入 Windows 环境变量 PATH。
检查是否安装成功:
ffmpeg -version能显示版本信息即表示配置成功。
Warning
不要只执行 pip install ffmpeg。本项目需要的是 FFmpeg 可执行程序,而不是同名 Python 包。
先确认 NVIDIA 驱动正常:
nvidia-smi当前新版 Faster-Whisper / CTranslate2 的 GPU 环境通常需要:
- CUDA 12
- cuDNN 9
如果运行时出现下列错误,一般是 CUDA、cuDNN 或环境变量问题:
Could not locate cublas64_12.dll
Could not load cudnn_ops64_9.dll
Library cublas is not found
Library cudnn is not found
Requested float16 compute type, but the target device does not support it
请检查:
- NVIDIA 驱动是否正常。
- CUDA 12 是否正确安装。
- cuDNN 9 是否正确安装。
- CUDA 和 cuDNN 的 DLL 所在目录是否已加入系统
PATH。 - 修改环境变量后是否重新打开了 PowerShell,必要时重启电脑。
Faster-Whisper 官方说明:
例如统一放在:
G:\WhisperModels\
├─ models--Systran--faster-whisper-large-v3\
│ └─ snapshots\...
└─ audio-separator-models\
└─ Kim_Vocal_2.onnx
实际盘符可以自行修改。
当前代码默认:
WHISPER_MODEL_NAME = "large-v3"
WHISPER_LOCAL_FILES_ONLY = True这表示程序只读取本地模型,不会在转录时自动联网下载 Whisper 模型。
可以执行:
$env:HF_ENDPOINT="https://hf-mirror.com"
hf download Systran/faster-whisper-large-v3 --cache-dir G:\WhisperModels如果没有 hf 命令,先确认已经安装:
python -m pip install --upgrade huggingface-hub然后重新打开 PowerShell再试。
下载完成后,确保 config.py 中:
WHISPER_MODEL_DIR = Path(r"G:\WhisperModels")和实际下载目录完全一致。
默认配置:
VOCAL_MODEL_DIR = WHISPER_MODEL_DIR / "audio-separator-models"
VOCAL_SEPARATOR_MODEL_NAME = "Kim_Vocal_2.onnx"最终模型路径应类似:
G:\WhisperModels\audio-separator-models\Kim_Vocal_2.onnx
如果文件不存在,audio-separator 在第一次真正启用人声分离时通常会自动下载模型。
也可以把已有的模型手动复制到上述目录。
人声分离完成后产生的临时 WAV 会被程序自动清理,
Kim_Vocal_2.onnx模型文件不会被删除。
普通用户主要只需要修改 config.py,不需要分别修改 app.py、worker.py 和 whisper_worker.py。
默认使用 LM Studio:
LLM_BASE_URL = "http://127.0.0.1:1234/v1"
LLM_API_KEY = "lm-studio"
MODEL_NAME = "local_model"
LLM_TEMPERATURE = 0.3说明:
LLM_BASE_URL:兼容 OpenAI API 的服务地址。LLM_API_KEY:LM Studio 未启用认证时可以保留当前值。MODEL_NAME:建议改成大模型服务实际使用的模型 ID。LLM_TEMPERATURE:数值越低,输出通常越稳定。
如果使用其他 OpenAI 兼容服务,改成对应的地址、密钥和模型名称即可。
MAX_CHARS_LIMIT = 26000
MAX_HISTORY_TOKENS = 28000MAX_CHARS_LIMIT:首次自动总结和后续打开视频时,最多读取多少字幕字符。MAX_HISTORY_TOKENS:网页连续对话保留的历史上限,是代码中的近似估算,并非模型的精确 Token 数。
如果大模型上下文较小,应适当降低这两个值。
参考设置:
模型上下文约 16K:MAX_CHARS_LIMIT 可先尝试 10000~12000
模型上下文约 32K:MAX_CHARS_LIMIT 可先尝试 20000~26000
模型上下文约 64K:可保持默认值或适当增加
必须为系统提示词、历史对话和模型输出预留空间,不要把字幕上限直接设置成模型上下文的最大值。
AUTO_DOWNLOAD_VIDEO = True
DOWNLOAD_MAX_HEIGHT = 1080True:任务完成后尝试自动归档原视频。False:只保存字幕和总结,需要时再手动下载。DOWNLOAD_MAX_HEIGHT:下载视频的最高分辨率。
COOKIES_FILE = BASE_DIR / "cookies.txt"默认要求把 cookies.txt 放在项目根目录。
YTDLP_IMPERSONATE = "chrome"
YTDLP_COOKIES_FROM_BROWSER = None默认使用项目根目录的 cookies.txt。
如果希望直接读取浏览器登录状态,可以改为:
YTDLP_COOKIES_FROM_BROWSER = "edge"或:
YTDLP_COOKIES_FROM_BROWSER = "chrome"启用浏览器 Cookie 后,会优先使用浏览器登录状态。
如果读取 Chromium Cookie 失败,请完全关闭对应浏览器及其后台进程后重试。
WHISPER_MODEL_DIR = Path(r"G:\WhisperModels")
VOCAL_MODEL_DIR = WHISPER_MODEL_DIR / "audio-separator-models"
AUDIO_WORKSPACE_DIR = Path(r"D:\AI_Workspace")请改成自己电脑真实存在的路径。
AUDIO_WORKSPACE_DIR 用于存放:
- 音频抽取产生的临时 WAV
- 人声分离的中间文件
- 送入 Whisper 前的标准化音频
长视频会短时间占用较多磁盘空间,建议选择空间充足的非系统盘。
DEFAULT_USE_VOCAL_SEPARATION = False不同任务入口的行为如下:
| 提交方式 | 人声分离行为 |
|---|---|
| 油猴 V6.3 | 强制开启 |
| 网页导入本地文件 | 按网页复选框决定 |
| 黑框拖入本地文件 | 使用 DEFAULT_USE_VOCAL_SEPARATION |
| 其他未传入选项的任务 | 使用 DEFAULT_USE_VOCAL_SEPARATION |
因此即使这里是 False,通过油猴提交的 B 站和抖音视频仍然会自动做人声分离。
B 站下载通常需要有效的登录 Cookie。缺少或失效时,可能出现:
HTTP Error 412: Precondition Failed
Unable to download JSON metadata
- 在浏览器中登录 B 站。
- 确认目标视频可以正常播放。
- 使用浏览器扩展导出 Netscape 格式 的 Cookie。
- 将文件命名为:
cookies.txt
- 放在项目根目录,与
config.py、worker.py同级。
目录应类似:
项目目录/
├─ config.py
├─ worker.py
├─ launcher.py
└─ cookies.txt
Caution
cookies.txt 相当于登录凭据,可能包含账号会话信息。
不要发送给别人,不要截图公开,不要上传到 GitHub。
Cookie 失效后需要重新导出。
本项目默认连接:
http://127.0.0.1:1234/v1
操作步骤:
- 安装并打开 LM Studio。
- 下载并加载一个支持较长上下文的对话模型。
- 根据显存设置合理的 Context Length。
- 进入
Developer页面。 - 启动本地 API Server。
- 默认端口保持为
1234。
LM Studio 官方说明:
建议至少使用支持 32K 上下文的模型。显存不足时,降低上下文长度,同时降低 config.py 中的 MAX_CHARS_LIMIT。
如果 LM Studio 没有启动,程序仍会保存已经识别完成的字幕和原视频信息,但首次 AI 总结会进入降级模式。
在 Chrome、Edge 或其他 Chromium 浏览器中安装 Tampermonkey。
- 打开 Tampermonkey 管理面板。
- 新建脚本。
- 删除默认内容。
- 将
油猴V6.3.txt中的完整代码复制进去。 - 保存并启用脚本。
启动本地项目后,打开 B 站或抖音网页。
油猴会在:
- 视频列表卡片
- 视频详情页
注入“发送给 AI 总结”按钮。
点击后,任务会发送到:
http://127.0.0.1:8000/api/tasks
油猴 V6.3 会自动传入:
options: {
use_vocal_separation: true
}因此油猴任务默认自动启用 AI 人声分离。
Note
油猴脚本无法读取 Python 的 config.py。
如果修改了 API_PORT,还需要手动修改油猴脚本中的:
const API_URL = "http://127.0.0.1:8000/api/tasks";网页结构改变后,油猴按钮可能暂时失效,需要更新选择器或脚本版本。
启动项目前,建议确认:
- LM Studio 已加载模型并启动 API Server
cookies.txt已放入项目根目录config.py中的模型和临时目录已经修改- FFmpeg、CUDA、cuDNN 和 Python 依赖已经安装
在项目根目录打开 PowerShell 或 CMD:
python launcher.pylauncher.py 会同时启动:
- FastAPI 调度中心
- Worker 后台任务进程
- Streamlit 网页界面
浏览器通常会自动打开 Streamlit 页面。默认地址一般为:
http://localhost:8501
请保持启动窗口开启。
退出时可以:
输入 q 后回车
或按:
Ctrl + C
排查问题时,可以打开三个终端窗口,分别执行:
python server.pypython worker.pypython -m streamlit run app.py这样更容易判断具体是哪一个服务报错。
- 先运行
python launcher.py。 - 打开 B 站或抖音网页。
- 点击视频卡片或详情页上的 AI 按钮。
- 等待任务进入队列。
- 在网页左侧查看下载、转录和总结进度。
油猴任务会自动开启人声分离。
在 Streamlit 左侧打开:
导入本地音视频
填写本地文件完整路径,例如:
D:\Videos\test.mp4
可以自行选择是否开启:
AI 深度降噪 / 人声分离
把本地视频或音频文件直接拖进 launcher.py 的黑色窗口,按回车即可加入任务队列。
这种方式没有单独的复选框,人声分离是否启用由:
DEFAULT_USE_VOCAL_SEPARATION决定。
默认保存在:
srt_vault/
每个 .srt 文件除了字幕,还会在尾部保存:
- 原视频地址
- 收藏夹信息
- ��人笔记
- AI 对话历史
如果开启原片归档,同名 MP4 通常会保存在字幕文件旁边。
tasks.db
用于记录任务状态、进度和选项。
由下面的配置决定:
AUDIO_WORKSPACE_DIR = Path(r"D:\AI_Workspace")程序正常完成后会删除大部分临时音频。程序异常中断时,可能残留 WAV 或媒体文件,可以在确认没有任务运行后手动清理。
错误示例:
Unable to download JSON metadata: HTTP Error 412: Precondition Failed
优先检查:
- 项目根目录是否存在
cookies.txt。 - Cookie 是否为登录 B 站后新导出的 Netscape 格式。
- Cookie 是否已经过期。
- 是否安装了带
curl-cffi的新版yt-dlp。
重新安装或更新:
python -m pip install --upgrade --pre "yt-dlp[default,curl-cffi]"仍然失败时,可以在 config.py 中尝试:
YTDLP_COOKIES_FROM_BROWSER = "edge"或:
YTDLP_COOKIES_FROM_BROWSER = "chrome"说明缺少 curl-cffi:
python -m pip install --upgrade --pre "yt-dlp[default,curl-cffi]"未找到 ffmpeg
执行:
ffmpeg -version如果命令不存在,说明 FFmpeg 没有安装或没有加入 PATH。
检查:
WHISPER_MODEL_DIR
WHISPER_MODEL_NAME
WHISPER_LOCAL_FILES_ONLY确认模型已经下载,并且缓存目录和 config.py 完全一致。
默认模型应为:
Systran/faster-whisper-large-v3
检查:
nvidia-smi并重新核对 CUDA 12、cuDNN 9 和系统环境变量。
这是正常的容错行为。
当 audio-separator、CUDA、ONNX Runtime 或模型加载失败时,程序会输出类似:
人声分离过程遭遇异常
降级退回基础 FFmpeg 音轨提取模式
之后会直接使用普通音轨继续 Whisper 转录。
确认:
G:\WhisperModels\audio-separator-models\Kim_Vocal_2.onnx
或者确认 config.py 中 VOCAL_MODEL_DIR 指向实际目录。
首次启用人声分离时,需要能够联网下载模型;也可以手动复制模型到指定目录。
错误通常类似:
Connection refused
大模型服务异常
检查:
- LM Studio 是否已经启动。
- 是否已经加载模型。
- Developer 页面中的 API Server 是否已启动。
- 端口是否为
1234。 LLM_BASE_URL是否为http://127.0.0.1:1234/v1。
大模型失败不会删除已经生成的字幕。
检查本地 API:
http://127.0.0.1:8000
确认:
launcher.py正在运行server.py没有报错- 防火墙没有拦截本地 Python
- 油猴中的
API_URL与config.py的端口一致
检查启动窗口中是否出现:
🚀 [Worker] 智能调度进程已启动,等待派单...
如果没有,单独运行:
python worker.py查看具体报错。
说明 Whisper 已经成功,但大模型服务没有正常工作。
启动 LM Studio API 后,可以在网页中打开对应字幕,再使用快捷指令或手动提问。
代码会根据:
MAX_CHARS_LIMIT截断过长字幕,以避免大模型上下文溢出。
可以提高该值,但必须同时保证大模型支持足够长的上下文,并预留输出空间。
视频网站接口经常变化。遇到网页视频突然无法下载时,建议先更新:
python -m pip install --upgrade --pre "yt-dlp[default,curl-cffi]"查看版本:
python -c "import yt_dlp; print(yt_dlp.version.__version__)"yt-dlp 官方项目:
- 本项目默认在本地处理音频、字幕和视频文件。
- 如果使用在线大模型 API,字幕内容会发送给对应的 API 服务商。
- 请勿处理、下载或传播无权使用的内容。
- 网页视频下载能力仅用于个人学习、研究、备份和内容整理。
- 请遵守视频平台服务条款、著作权法律和当地法规。
- Cookie 属于敏感登录凭据,请妥善保管。
- Python 3.10 或 3.11 可以正常运行
-
python -m pip可以正常使用 - 已执行
python -m pip install --upgrade -r requirements.txt -
yt-dlp[default,curl-cffi]已安装 - FFmpeg 已加入
PATH -
nvidia-smi正常 - CUDA 12 和 cuDNN 9 已安装
- Faster-Whisper
large-v3已下载 -
WHISPER_MODEL_DIR已改为真实路径 -
AUDIO_WORKSPACE_DIR已改为真实路径 - 使用油猴时已安装
audio-separator[gpu] -
Kim_Vocal_2.onnx已存在或首次运行时可以联网下载 - B 站用户已在项目根目录放入有效的
cookies.txt - LM Studio 已加载模型
- LM Studio API Server 已在 1234 端口启动
- 油猴脚本已经安装并启用
- 已运行
python launcher.py
- Faster-Whisper:https://github.com/SYSTRAN/faster-whisper
- Audio Separator:https://github.com/nomadkaraoke/python-audio-separator
- yt-dlp:https://github.com/yt-dlp/yt-dlp
- LM Studio 文档:https://lmstudio.ai/docs/developer
- Streamlit:https://streamlit.io/
- FastAPI:https://fastapi.tiangolo.com/
如果程序运行异常,请优先复制启动黑框中的完整错误信息,而不是只截图网页提示。后台日志通常会明确显示问题发生在下载、音频处理、Whisper 转录还是大模型总结阶段。可以将错误日志及程序源码发给AI进行故障排查。
后续升级计划:
- 更好的whisper模型
- 支持导出更多格式
- 支持文件夹
- 支持更多平台
- 本地模型思考模式切换
- 支持网页链接导入
- 整合包