构建你的AI人生旁白:技术实现详解

4 阅读7分钟

如何为你的人生创建一个AI旁白

几周前,大卫·爱登堡爵士(或者说,他的克隆体)看着我喝了一杯水。我一时兴起,在一个背景嘈杂的图书馆里录制了这段视频,结果它迅速走红。它登上了Hacker News的榜首,被多家知名科技媒体报道,近400万人观看了一个AI版的大卫·爱登堡将我的蓝衬衫描述为我“求偶展示”的一部分。

你可能会惊讶(我就一直如此)于如今可以构建的各种东西。我曾尝试构建一个姿势检测器和生产力教练,它会截取我的笔记本电脑屏幕并进行(建设性的)批评。

在这篇文章中,我将解释制作你自己的AI旁白背后的概念。在最后,我会链接一些你可以用来制作自己旁白的代码。

过去我曾将AI模型描述为“魔法盒子”,它们接受输入、进行转换,然后给我们输出。我们可以在无需深入理解其工作原理的情况下使用这些魔法盒子。

我们的代码将需要三个魔法盒子:

  1. 一个能够通过电脑摄像头“看到”并描述所见内容的视觉模型。
  2. 一个撰写旁白脚本的语言模型(在我的案例中,模仿大卫·爱登堡的风格)。
  3. 一个将文字作为输入并输出语音文件的文本转语音模型。

能“看见”的模型

我们的第一步是找到一个能“看见”的视觉模型。我们熟悉的许多模型,比如ChatGPT或Stable Diffusion,都是以文本作为输入。我们向模型发送文本,然后得到文本、图像或视频作为返回。但对于我们的人生旁白,我们需要一个能以图像为输入,然后回答有关这些图像问题的模型。

我们的视觉模型有两个输入:一张图片和一个文本提示。然后模型返回一个文本响应。

这里我们有几种选择,不过要提醒的是,我可能带有偏向性。

Llava 13B Llava 13B 是一个开源的视觉模型。它价格便宜,并且速度足以满足我们的需求。这是我推荐的选择。Llava在A40 GPU上运行,每秒钟的运行成本为$0.000725。

以下是一个Llava 13B的预测示例: 提示: 这个人在做什么?

Llava给出了这个响应:

图像中的人正将一个红色杯子举到嘴边,嘴巴张得很大,假装要咬一口或从杯中喝水。

一次Llava预测需要1.5-3秒返回响应,因此每次请求的成本约为$0.0017。

GPT-4-Vision 这是我在演示视频中使用的模型。它比Llava更聪明,但运行速度稍慢,成本也更高。

如果我们用与上面相同的图像和问题提示它(“这个人在做什么?”),我们得到以下结果(耗时2.5-4秒):

图像中的人将一个红色杯子举到张开的嘴边,仿佛他们正准备从中吃喝。他们直视着镜头,脸上的表情可能被理解为俏皮或幽默。他们并没有真的在“吃”杯子,但这个姿势暗示了一个模仿动作,也许是为了一个轻松的照片或玩笑。

GPT-4-Vision的定价有点复杂。它是按图像分辨率加上每标记(token)收费。一张250px乘140px的图像成本为0.00255,加上每1K输出标记0.00255,加上每1K输出标记0.03。此外,你需要通过他们的候补名单才能尝试使用。

为模型提供输入 我们还需要一种方法向这些视觉模型提供输入图像。我建议使用你的电脑网络摄像头。以下是我写的一个脚本(在GPT-4的主要帮助下),它每5秒从你的网络摄像头拍摄一张照片并保存到本地文件。它还会缩小图像尺寸——这很重要,因为这样可以使我们的图像模型读取更快(也更便宜)。

我们为模型提供了可以“看见”的东西。接下来,让我们连接一个能够实时描述所见图像内容的函数。

撰写脚本的模型

接下来,我们需要一个模型来撰写将被旁白的脚本。这个魔法盒子的输出就是我的视频中大卫·爱登堡所说的台词。

这里有一个如何使用Mistral 7B进行操作的示例。我们的提示是:

请根据以下图像描述,假设你是 {旁白者},并像在自然纪录片中一样进行叙述。请保持简洁。
如果我做了任何稍微有趣的事情,请大加渲染!

描述:
图像中的人正将一个红色杯子举到嘴边,嘴巴张得很大,假装要咬一口或从杯中喝水。

此处的描述是上一步中视觉模型的输出。我们的响应可能如下所示:

在这个引人入胜的观察中,我们看到了人类行为的一次非凡展示。图像中的人手持一个红色杯子,摆出要吃喝的姿势。当他们张大嘴巴时,我们可以看到牙齿和下巴错综复杂的运作,这是人类身体惊人适应性的明证。这是一幅值得一看的景象,提醒着我们造就我们自身的复杂性。

预测ID 我建议将返回的最大标记数限制在128左右。我们追求尽可能快的响应时间。上面的输出耗时2.7秒,所以目前我们的总响应时间大约是5-6秒。

注意,我们也可以使用GPT-4-Vision来返回我们的响应。实际上,我们甚至可以跳过一个步骤——我们不需要先获取图像描述,然后再将其翻译成大 卫·爱登堡风格的脚本。我们可以通过一次预测同时完成这两件事。GPT-4-Vision足够聪明,可以同时处理两者。

以下是我使用的系统提示:

你是 {旁白者}。请像自然纪录片一样叙述这张人类的照片。使其变得尖酸幽默。不要重复自己。保持简洁。如果我做了任何稍微有趣的事情,请大加渲染!

GPT-4-Vision API通常能在3.5-8秒内返回响应(但通常更接近3秒)。

能够说话的模型

最后,我们希望我们的模型能够说话。并且要说得有风格!我们不想要机器人般的声音。我们需要一些热情。

这里有很多选择。你能获得的最高质量输出是通过某机构的语音克隆功能。一个更便宜的开源语音克隆替代方案是XTTS-v2。两者都允许你上传要让说话者说的文本,以及让说话者声音听起来像的音频样本。然后你会得到一个听起来像你指定说话者的输出。

如果你使用某服务,请使用他们的Turbo v2模型——它具有400毫秒的延迟。你可以参考我在这里的play_audio()函数。

世界现在变得很奇妙

我们现在完整的工作流程如下所示:

  1. 网络摄像头定期捕获并处理图像。
  2. 视觉模型(如Llava或GPT-4-V)分析图像并生成描述。
  3. 语言模型(如Mistral或GPT-4)根据描述生成旁白风格的脚本。
  4. 语音合成模型(如某机构或XTTS-v2)将脚本转换为特定风格的语音。

就是这样!你现在知道如何制作自己的交互式语音克隆了。现在有很多很酷的事情成为可能。正如我提到的,我尝试过构建一个姿势检测器和生产力教练。几天前,另一家人工智能机构发布了一个“自主操作计算机框架”,它通过截取你的屏幕来控制你的电脑。

世界现在变得很奇妙。以一种好的方式。祝你玩得开心!

保持联系

  • 在某社交平台关注我们
  • 加入我们的社区,向我们展示你的作品!FINISHED