项目介绍 #
该项目的灵感来源于听播客,播客中有很多优质的内容,例如半拿铁中的故事,但是听完之后,很容易忘记,故希望通过AI技术,将播客内容进行提取,并生成文字,方便用户查看。
技术栈 #
参考硬地骇客的博客
本项目的技术栈选择如下(暂定):
- Web前端: Nuxt.js, TypeScript, UnoCSS, PrimeVue
- Web后端: Nuxt.js, TypeScript
- 纯后端服务: Asp.Net Core
核心功能 #
- 工作流1: 下载音频文件 -> 探测语言 -> 预采样音频内容 -> whisper 转录音频 -> 生成分段 -> 优化 transcript -> 写入 db。
- 工作流2: load transcript -> 分段(split)-> 总结章节,抽取 highlights和关键词 -> 基于章节生成全文总结 -> 解释关键词 -> 基于章节生成 mindmap -> 写入 db。
- 开放api接口,手机可以通过快捷指令的方式将播客发送待处理列表。
LLM模型选择 #
由于最近qwen-long的价格大幅度下降,可以以qwen-long为首选,但是为了保证后续模型的可替换性,以OpenAI接口格式为标准。可用的模型可包括:kimi, deepseek, gpt3.5。
开发日志 #
获取小宇宙podcast和episode #
- 需要需要先获取access token,通过抓包获取第一个refresh token 和 access token,然后post
https://api.xiaoyuzhoufm.com/app_auth_tokens.refresh
这个url即可获取新的access token。 - 获取episode,通过
https://api.xiaoyuzhoufm.com/v1/episode/get?eid=${episode.eid}
获取单集的信息 - 获取podcast,通过
https://api.xiaoyuzhoufm.com/v1/podcast/get?pid=${podcast.pid}
获取单个podcast的信息 - 获取episode列表,使用post请求
https://api.xiaoyuzhoufm.com/v1/episode/list
,参数为{"pid":"pid", "loadMoreKey":"loadMoreKey"}
数据库设计 #
使用数据库存放导入的播客的信息
- podcast表
id | pid | title | author | description | picUrl |
---|
- episods表
id | pid | eid | title | datePublished | duration | description | mediaUrl | picUrl |
---|
2024-06-05小结 #
- 目前实现的功能有:
- 导入podcast链接,获取所有的episods
- 将podcast和episods信息存入pgsql数据库
- 展示episods列表
- 可进行episods的排序
- 下一步计划:
- 实现导入episode链接,输出至/episode页面
- ✅ 在制作episode页面详情页之前进行重构设计,完善代码逻辑
- mindmap组件
2024-06-09小结 #
- 目前完成了音频的转录和页面的优化工作
- 下一步计划:
- 学习分段算法,实现分段
- 编写prompt,完成总结(章节总结->全文总结->关键词解释->mindmap)
2024-06-15 重构计划 #
- 目前AI API的设计略显混乱,考虑到不同的API使用不用的sdk,有的使用的是http请求的方式获取,但响应的数据结构都是以openai的格式为标准,故考虑将API的设计进行重构,将API的设计进行统一,以openai的格式为标准。
- 当前接口的设计不够合理
- prompt的管理不够合理
- prompt需要进一步调试
2024-06-28 10:00:20 #
由于supabase的限制,免费版一段时间不用会消除数据库中的数据,故改为自部署数据库,并且对网页UI、逻辑进行重构。