实现一个乞丐版的 NotebookLM

查看 10|回复 0
作者:lgc653   
NotebookLM
背景介绍
NotebookLM 原本在 AI 笔记方面比较平淡,在今年 10 月推出 AI 播客功能后大火,用它可以对论文、书籍、故事等转化成 AI 短音频。
AI 大佬 Andrej Karpathy 曾称赞 NotebookLM“点亮了 LLM 的新交互范式”。在很多网友看来,“NotebookLM 是一款非常适合学习的 AI 应用。”

说白了不就是文档理解+语音合成吗?这有何难。这里实现一个低配版的。

技术分析
笔记理解
这里首先是笔记的理解,这个比较简单了,首先是文本类型的笔记,是各家大模型的长处,至于各种文档的解析,这里大家可以使用@langchain/community,他封装了各种常见文档的解析,如果你不愿意安装它,也可以自行安装各个子解析器,@langchain/community其实也就是这些子解析器的封装。
  • docx:mammoth
  • epub:epub2
  • pdf:pdf-parse
  • pptx:officeparser
  • srt:srt-parser-2
  • markdown:markdown-it

    至于图片笔记,推荐使用多模态模型进行理解,而不是传统的 OCR 技术,因为多模态模型可以理解语义(文档的重点)、表格、公式。
    而音频、视频笔记,推荐使用 ASR ( Automatic Speech Recognition )技术进行语音识别,如果不了解可以看我写的 AI 做视频理解的文章
    内容重写
    这个没有任何技术难度了,写好题词,交给大模型去处理,不过题词要注意,语音合成,除了多音字等老大难问题(这个也很难解决),还有一个难点是数字的读法,这个可以在重写时交给大模型解决,这里提供一个题词,大家可以在此基础上优化,也欢迎大家给出自己的优化方案
    请根据用户要求重新优化内容。
    如果目标文字是中文,请遵循以下原则:
    把文中的数字按中文习惯替换成中文,包括但不限于日期、时间、数字单位等。例如“2024 年”替换为“二零二四年”,“15.7 万人”替换为“十五点七万人”;
    尽可能把文中不适合 TTS 识别的符号跟据语义替换为中文,例如“-”替换为“减”,但是不要强行替换;
    直接返回优化后的内容,不要任何解释,不要使用 Markdown 格式。
    语音合成
    这里有 3 个方案
  • 一个是ChatGPT,这个最简单,自己调用 ChatGPT 的 generate_voice 接口即可,但是费用不是很便宜,1 千字费用在 1 毛钱左右,这个没有什么难点和要点
  • 另一个方案是GPT-SoVITS:可以去 bilibili 听听效果。由于 GPT-SoVITS 提供了整合包,所以配置过程也很方便。对机器配置要求非常低(我的 3050 流畅运行),支持自动分句和 stream 调用,是我个人最推荐的。如果你喜欢折腾,他也支持克隆语音等让你折腾的功能。唯一麻烦的是要提供一个初始的语音样本。
  • 最后一个方案是ChatTTS :可以去 chattts.com 听听效果。个人觉得不错,爱折腾的人的选择,其实如果你是技术控的话应该很简单。对机器配置要求高一些,不支持自动分句和 stream ,这些都需要你自己的处理。优势是语音自然,更有播客的效果。

    当然现在语音合成方案百花齐放,比如原来一直可以白嫖的 edge 的 TTS 服务(现在被微软针对了),阿里等巨头也在这块陆续发力,大家可以持续关注。
    多人配音
    这个其实也不难,只不过把之前的 3 样技术组合起来做的更细致一些,这个我个人就没有尝试了,给大家推荐一款做的不错的工具:视频翻译软件 pyVideoTrans-开源免费的视频翻译配音软件,也是我学语音技术的启蒙,在此感谢一下作者大佬。
    代码实现
    代码实现其实没有什么难点
    对于使用 ChatGPT 来说,就是自己调用 API ,也没有什么参数可以调整
    对于使用 GPT-SoVITS 来说,也是调用 API ,不过其 API 很丝滑,可以方便的提供类似听书一样的功能
    对于使用 ChatTTS 来说,分句这些都要你自己来说,相对难度大一些,但是分句这些也不是很难,无外乎遇到标点就断句
    效果展示
    把语音识别翻译后的文本内容转为播客

    太长不想看,长图片一键转换成播客。

    现在微信读书不能听本地书了,这里自己实现的 epub 的听书功能。
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部