用 fabric 集成工作流从音视频直出文章,效果如何?

(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费

d248d31d1deb20e31d8fa95372a16790.jpeg

激动

上次的文章,我给你介绍了 fabric 这款命令行式 AI 工作流框架

有的小伙伴,已经初步感受到了它的魅力。甚至,激动到连拼写方式都顾不上了。

dc38e3775687dc5d34bae5b538ef92be.jpeg

而我这里,给你提供另外一个样例。看看你会不会更加兴奋。那就是 —— 端到端的音视频转文章。

痛点

视频,特别是长视频要转换成文章,从来就不是一件容易的事情。

我在上面踩过的坑,说出来全是泪。

最大的问题,就是幻觉 —— 一旦文本过长,大语言模型往往很难对原始文字做认真转换。有时会遗漏内容,有时会自己试图接龙填充,更有甚者,干脆给你「总结归纳」。

于是,你眼睁睁看着自己超过一个小时的发言,被「浓缩」成了 500 字。大语言模型还得意洋洋地看着自己的作品,在末尾加上一句「如果有其他需要,尽管提」。

看得你恨不得砸屏幕。

步骤

其实,把这个问题分解开,你会发现其中的关键之处。

第一步,显然是把语音变成文稿初稿。在有了 Whisper 之后,这根本就不是问题。我一般使用 Setapp 里面带的 SuperWhisper 来做这个事儿。你也可以选用立青的 Bibigpt.co 或者 Aiko, Memo AI 等,效果都不错。

第二步,是把语音转写稿拆开。因为如果你不拆,特别长的内容就会给大语言模型带来压力。它每次对话支持的长度有限,可能就会在改写中间截断;

第三步,是合适的段落划分。如果你的语音转写初稿本身已经做了良好的分段处理,那么这一步可以省略。但是很多 Whisper 生成的语音稿,其实只是用空格进行了分割,并没有很好地根据内容划分段落;

第四步,是风格化的改写。这里包含了去除掉啰唆,自动修改错别字,以及按照你平日写作风格来改写文章内容。

第五步,是对改写后的内容进行标点专门处理,从而避免某些大语言模型的缺陷,导致中文标点全半角错误等问题。

这五步列出来,是不是非常清晰完整?

别上当。这就如同「把大象装进冰箱,需要几步」一样。因为第四步简直太难了

即便你用上目前最贵的大语言模型,加上特别严苛的提示词,也无法阻挡 AI 帮你「总结归纳」内容的打算。你就看吧,出来的内容干干瘪瘪,水分全都被挤干。

过去这几天,我简直就跟这个问题「干上了」。后来我发现,只能用个「笨办法」—— 强制要求大语言模型输出原文。

看着原文改写风格,就如同开卷考试一样 —— 学生更喜欢。于是,幻觉少了,内容全了,分数高了。

但是这样一来,你就不得不在原先的第四、五步之间,再加上一步 —— 要求大语言模型提取生成结果中「修改后内容」,忽略掉那些只起到提醒功能的「原文」。于是步骤变成了 6 步。

我们真的只执行了 6 个步骤吗?

才不是。

从第 3 步到第 6 步,得看你第 2 步到底做了多少个「分片」。有几个「分片」,你这里就得执行几次这 4 个步骤。

完了吗?

才没有。你还得记得最后把若干个「第 6 步」产生的处理结果,重新拼装起来。

好了,步骤终于说完了,你来执行吧。

我知道你的感受,脑海中一群羊驼在飞奔而过……

在从前,这就是你不得不在 ChatGPT 或者 Claude 界面中一次次执行的内容。你得在每一个步骤去拷贝合适的本阶段提示词(不能弄错),然后一遍遍生成结果,并且自己拷贝粘贴把全部最终结果进行拼装。

什么叫枯燥乏味?什么叫重复劳动 —— 这就是。

好在,我们现在有了 fabric 。

我把上述的步骤,全都统合到一个工作流里面了。原本在 Python 脚本里面调用大语言模型,仅仅是填写系统提示词,把上一个步骤的结果对下一个步骤正确传递,就要让你费上不少周章。但现在,这些对 fabric 来说,小菜一碟。

56d533e80899fc9f99f1168157262879.jpeg

请你注意,我对于不同的步骤,使用了不同的模型。例如分段这种事儿,让 Gemini Flash 1.5 干,足可以。它既便宜又快速。可是风格改写嘛,我直接上大锤,用上了 Anthropic 最新杀器 ——Claude 3.5 Sonnet 。这东西不论是生成文本还是编程,那效果都是杠杠的。

相关推荐

  1. 视频实战---视频文件中提取h264裸

    2024-07-13 14:12:04       38 阅读
  2. 视频工具

    2024-07-13 14:12:04       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 14:12:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 14:12:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 14:12:04       57 阅读
  4. Python语言-面向对象

    2024-07-13 14:12:04       68 阅读

热门阅读

  1. DevOps工具链整合:打造高效的自动化工作流

    2024-07-13 14:12:04       28 阅读
  2. qt 开发一个可以拖动的矩形

    2024-07-13 14:12:04       20 阅读
  3. springboot项目,指定某些接口不被拦截方法

    2024-07-13 14:12:04       14 阅读
  4. 无人机的工作原理

    2024-07-13 14:12:04       14 阅读
  5. js实现一键任意html元素生成截图功能

    2024-07-13 14:12:04       19 阅读
  6. 一、字符串/数组

    2024-07-13 14:12:04       20 阅读
  7. 2024年城市客运安全员考试题库及答案

    2024-07-13 14:12:04       17 阅读