Smart Notes 是一款高效的学习辅助工具,能够将B站视频通过 ASR(自动语音识别)和 LLM(大语言模型)转换为结构化的 Obsidian 笔记,帮助你快速掌握视频内容,提升学习效率。 (本质上其实就是"音频转换文本 → 文本二次处理"的流程,按理说类似的需求功能差不多都可以换汤不换药,换一套提示词模板就可以了)
- 一键转换:仅需输入B站视频 URL 或 BV 号,即可自动完成整个转换流程
- 多步骤自动化:从音频下载、语音识别到笔记生成,全程自动化处理
- 高质量识别:采用讯飞语言识别模型,提供精准的语音转文字服务
- 智能笔记生成:利用 DeepSeek 大语言模型,将识别文本转化为结构化、易读的 Obsidian 笔记
- 灵活配置:支持自定义输出路径,方便集成到 Obsidian 笔记库
- 批量处理:支持一次输入多个视频链接,批量生成笔记
- 访问 讯飞开放平台
- 注册/登录账号
- 自行购买相关语言识别服务(我用的是最简单的
录音文件转写标准版) - 从控制台左上角的
Websocket 服务接口认证信息中复制APPID和SecretKey
- 访问 DeepSeek 官网
- 注册/登录账号
- 购买 API KEY
- 将
config.json.example重命名为config.json - 用文本编辑器打开
config.json - 填写以下信息:
[
{
"xunfei_asr": {
"appid": "你的讯飞 APPID",
"secret_key": "你的讯飞 SecretKey"
}
},
{
"llm": {
"api_key": "你的 DeepSeek API Key",
"base_url": "https://api.deepseek.com(当然了,用别的支持openAI标准接口的也可以)",
"model_name": "deepseek-chat"
}
},
{
"output_path": {
"obsidian_path": "你的 Obsidian 笔记库路径,或期望的笔记保存路径"
}
}
]本项目使用 UV 进行环境管理和启动
git clone https://github.com/erlingmijiang/smart_notes.git # (或使用modelscope方式下载:git clone http://oauth2:<your_token>@www.modelscope.cn/studios/erlingmijiang/smart_notes.git)
cd smart_notes
uv sync执行以下命令启动程序(或者直接双击 点我启动.bat)
uv run main.py根据提示输入B站视频 URL 或 BV 号,支持多个识别输入(空行回车开始处理)。
- 运行程序后,根据提示输入B站视频链接或 BV 号
- 支持批量输入,每个链接占一行,输入空行结束
- 程序将自动处理每个视频,生成对应的 Obsidian 笔记
- 生成的笔记将保存在配置的 Obsidian 路径中
- 本人一只刚刚自学学会编程的菜鸡,在 AI 的搀扶下,晃晃悠悠跌跌撞撞颤颤巍巍地完成了项目的开发(赞美 AI ,阿 I 门🙏)
- 确保网络连接稳定,以便正常下载视频和调用 API
- 视频链接必须是有效的B站视频链接或BV号,
- 避免下载需要登录的内容(实在不会做登录功能,尽力了)
- 当心注意视频标题中若包含特殊字符,会导致程序崩溃(今天太懒了,抽空改吧,不是啥难事)
- 大文件处理可能需要较长时间,请耐心等待
- 确保 API 密钥有足够的余额,避免因余额不足导致处理失败
- 超出 LLM 字数限制的内容可能无法正常处理(暂时还没思路怎么改,不过 deepseek 十万上下文一般的视频做整理应该也勉强够用了)
- 部分功能存在细小bug,但不影响使用……暂时懒得修(只要别在酒吧里点炒饭,应该没事🤔)
- 磅 15 便士~
- 第一次在 github 上发开源项目,有点小紧张(有人来鼓励鼓励我么,据说摸摸头就能发出软乎乎的喵喵叫声≧ω≦)
- 说来话长,我当时本来想做个B站音频批量下载器练练手来着,没想到不懂的东西太多了……与是我就去B站上找教学视频……然后我电子囤积症就犯了,囤了一大堆东西学不完——我一怒之下怒了一下,就想:我要是做个什么东西能替我划重点、记笔记,我坐享其成以逸待劳不劳而获就好了……于是这坨项目应运而生
- 一刻也没有为治好的视频电子囤积症哀悼,即将进入战场的是笔记电子囤积症(手动捂脸)
- 如果没必要,最好别乱动
xfasr.py这里面的代码——我是说,它已经能运行了——能别动它就尽量别动它了……鬼知道写那一坨解码过程掉了我多少头发 - 仔细一想感觉好像套路就是这么个套路,只要把提示词模板一改,就可以改做成会议纪要、语音日记、速查手册生成等功能。
- 未来也许会把 ASR 的功能扒掉,这样就能拿来把文档转换成笔记了(也许也可以支持上传本地文件音频或文本文件)
- 未来也许会抽空拿 AI 撸个前端界面出来,但目前还没有好的构思(其实我也不懂)
- 【已基本实现,但不稳定,可能存在bug】未来也许会把音频下载和语音识别拆成异步,但目前来说稍微复杂一点的异步我就会翻车hhh
- 【已实现】调整模块运行顺序,避免等待音频识别完后再进行提示词模板选择
- main.py 里的 for 循环加个进度条吧
- 下载失败:检查视频链接是否有效,网络连接是否正常,是否尝试下载需要登录才能下载的视频,多 P 视频无法下载会报错
- ASR 识别失败:检查讯飞 API 密钥是否正确,余额是否充足
- 笔记生成失败:检查 DeepSeek API 密钥是否正确,余额是否充足,输入文字段是否超过 LLM 字数限制
- 输出目录错误:检查
config.json中的输出路径是否正确,确保程序有写入权限
smart_notes/
├── asr_result/ # ASR 识别结果存储目录
├── blbl_download.py # B站视频下载模块(其实只下载音频)
├── config.json # 配置文件
├── config.json.example # 配置文件示例
├── llm_inference.py # LLM 笔记生成模块
├── main.py # 主程序入口
├── notebook_output/ # 默认笔记输出目录
├── prompt/ # 提示词模板目录
├── pyproject.toml # 项目依赖配置
├── README.md # 项目说明文档
├── wav_cache/ # 音频缓存目录
└── xfasr.py # 讯飞 ASR 调用模块
- 初始版本发布
- 支持B站视频转 Obsidian 笔记功能
- 集成讯飞 ASR 和 DeepSeek LLM
- 支持批量处理
giegie,我这么菜,我女朋友要是知道了,不会揍我吧~
免责声明:本工具仅用于学习和研究目的,请遵守相关平台的使用条款和版权规定。