Skip to content

erlingmijiang/smart_notes

Repository files navigation

Smart Notes - B站视频智能笔记生成工具

项目简介

Smart Notes 是一款高效的学习辅助工具,能够将B站视频通过 ASR(自动语音识别)和 LLM(大语言模型)转换为结构化的 Obsidian 笔记,帮助你快速掌握视频内容,提升学习效率。 (本质上其实就是"音频转换文本 → 文本二次处理"的流程,按理说类似的需求功能差不多都可以换汤不换药,换一套提示词模板就可以了)

功能特点

  • 一键转换:仅需输入B站视频 URL 或 BV 号,即可自动完成整个转换流程
  • 多步骤自动化:从音频下载、语音识别到笔记生成,全程自动化处理
  • 高质量识别:采用讯飞语言识别模型,提供精准的语音转文字服务
  • 智能笔记生成:利用 DeepSeek 大语言模型,将识别文本转化为结构化、易读的 Obsidian 笔记
  • 灵活配置:支持自定义输出路径,方便集成到 Obsidian 笔记库
  • 批量处理:支持一次输入多个视频链接,批量生成笔记

快速开始

1. 获取 API 密钥

讯飞 ASR API

  1. 访问 讯飞开放平台
  2. 注册/登录账号
  3. 自行购买相关语言识别服务(我用的是最简单的 录音文件转写标准版
  4. 从控制台左上角的 Websocket 服务接口认证信息 中复制 APPIDSecretKey

DeepSeek API

  1. 访问 DeepSeek 官网
  2. 注册/登录账号
  3. 购买 API KEY

2. 配置项目

  1. config.json.example 重命名为 config.json
  2. 用文本编辑器打开 config.json
  3. 填写以下信息:
[
    {
        "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 笔记库路径,或期望的笔记保存路径"
        }
    }
]

3. 安装依赖

本项目使用 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

4. 运行项目

执行以下命令启动程序(或者直接双击 点我启动.bat

uv run main.py

根据提示输入B站视频 URL 或 BV 号,支持多个识别输入(空行回车开始处理)。

使用说明

基本使用

  1. 运行程序后,根据提示输入B站视频链接或 BV 号
  2. 支持批量输入,每个链接占一行,输入空行结束
  3. 程序将自动处理每个视频,生成对应的 Obsidian 笔记
  4. 生成的笔记将保存在配置的 Obsidian 路径中

注意事项(以及一些碎碎念)

  1. 本人一只刚刚自学学会编程的菜鸡,在 AI 的搀扶下,晃晃悠悠跌跌撞撞颤颤巍巍地完成了项目的开发(赞美 AI ,阿 I 门🙏)
  2. 确保网络连接稳定,以便正常下载视频和调用 API
  3. 视频链接必须是有效的B站视频链接或BV号,
  4. 避免下载需要登录的内容(实在不会做登录功能,尽力了)
  5. 当心注意视频标题中若包含特殊字符,会导致程序崩溃(今天太懒了,抽空改吧,不是啥难事)
  6. 大文件处理可能需要较长时间,请耐心等待
  7. 确保 API 密钥有足够的余额,避免因余额不足导致处理失败
  8. 超出 LLM 字数限制的内容可能无法正常处理(暂时还没思路怎么改,不过 deepseek 十万上下文一般的视频做整理应该也勉强够用了)
  9. 部分功能存在细小bug,但不影响使用……暂时懒得修(只要别在酒吧里点炒饭,应该没事🤔)
  10. 磅 15 便士~
  11. 第一次在 github 上发开源项目,有点小紧张(有人来鼓励鼓励我么,据说摸摸头就能发出软乎乎的喵喵叫声≧ω≦)
  12. 说来话长,我当时本来想做个B站音频批量下载器练练手来着,没想到不懂的东西太多了……与是我就去B站上找教学视频……然后我电子囤积症就犯了,囤了一大堆东西学不完——我一怒之下怒了一下,就想:我要是做个什么东西能替我划重点、记笔记,我坐享其成以逸待劳不劳而获就好了……于是这坨项目应运而生
  13. 一刻也没有为治好的视频电子囤积症哀悼,即将进入战场的是笔记电子囤积症(手动捂脸)
  14. 如果没必要,最好别乱动 xfasr.py 这里面的代码——我是说,它已经能运行了——能别动它就尽量别动它了……鬼知道写那一坨解码过程掉了我多少头发
  15. 仔细一想感觉好像套路就是这么个套路,只要把提示词模板一改,就可以改做成会议纪要、语音日记、速查手册生成等功能。

大饼(不是x)后续开发计划

  1. 未来也许会把 ASR 的功能扒掉,这样就能拿来把文档转换成笔记了(也许也可以支持上传本地文件音频或文本文件)
  2. 未来也许会抽空拿 AI 撸个前端界面出来,但目前还没有好的构思(其实我也不懂)
  3. 【已基本实现,但不稳定,可能存在bug】未来也许会把音频下载和语音识别拆成异步,但目前来说稍微复杂一点的异步我就会翻车hhh
  4. 【已实现】调整模块运行顺序,避免等待音频识别完后再进行提示词模板选择
  5. main.py 里的 for 循环加个进度条吧

故障排除

  1. 下载失败:检查视频链接是否有效,网络连接是否正常,是否尝试下载需要登录才能下载的视频,多 P 视频无法下载会报错
  2. ASR 识别失败:检查讯飞 API 密钥是否正确,余额是否充足
  3. 笔记生成失败:检查 DeepSeek API 密钥是否正确,余额是否充足,输入文字段是否超过 LLM 字数限制
  4. 输出目录错误:检查 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 调用模块

更新日志

v0.1.0

  • 初始版本发布
  • 支持B站视频转 Obsidian 笔记功能
  • 集成讯飞 ASR 和 DeepSeek LLM
  • 支持批量处理

giegie,我这么菜,我女朋友要是知道了,不会揍我吧~


免责声明:本工具仅用于学习和研究目的,请遵守相关平台的使用条款和版权规定。

About

Smart Notes 是一个高效的学习辅助工具,能够将B站视频通过 ASR(自动语音识别)和 LLM(大语言模型)转换为结构化的 Obsidian 笔记,帮助你快速掌握视频内容,提升学习效率。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors