利用 GPT 的视觉能力和 TTS API 来处理视频并添加旁白 [译]

本文作者Twitter链接:dotey

原文:Processing and narrating a video with GPT's visual capabilities and the TTS API

这个笔记本演示了如何利用 GPT 的视觉能力来处理视频内容。GPT-4 无法直接接收视频作为输入,但我们可以通过视觉识别功能以及全新的 128K 上下文窗口,一次性描述视频中的所有静态画面。我们将通过两个实例来演示如何操作:

  1. 利用 GPT-4 来描述一个视频的内容
  2. 结合 GPT-4 和 TTS API 为视频创造旁白
python 复制代码
from IPython.display import display, Image, Audio

import cv2  # We're using OpenCV to read video
import base64
import time
import openai
import os
import requests

1. 利用 GPT 的视觉能力描述视频

我们首先利用 OpenCV 技术从一个展示野牛和狼的自然 视频 中提取画面:

python 复制代码
video = cv2.VideoCapture("data/bison.mp4")

base64Frames = []
while video.isOpened():
    success, frame = video.read()
    if not success:
        break
    _, buffer = cv2.imencode(".jpg", frame)
    base64Frames.append(base64.b64encode(buffer).decode("utf-8"))

video.release()
print(len(base64Frames), "frames read.")
arduino 复制代码
618 frames read.

确保我们正确捕获了画面,我们将它们展示出来:

python 复制代码
display_handle = display(None, display_id=True)
for img in base64Frames:
    display_handle.update(Image(data=base64.b64decode(img.encode("utf-8"))))
    time.sleep(0.025)

获得视频画面后,我们构建了一个提示并发送请求给 GPT(注意,我们不需要发送每一帧画面给 GPT,它能理解整个视频的情况):

python 复制代码
PROMPT_MESSAGES = [
    {
        "role": "user",
        "content": [
            "These are frames from a video that I want to upload. Generate a compelling description that I can upload along with the video.",
            *map(lambda x: {"image": x, "resize": 768}, base64Frames[0::10]),
        ],
    },
]
params = {
    "model": "gpt-4-vision-preview",
    "messages": PROMPT_MESSAGES,
    "api_key": os.environ["OPENAI_API_KEY"],
    "headers": {"Openai-Version": "2020-11-07"},
    "max_tokens": 200,
}

result = openai.ChatCompletion.create(**params)
print(result.choices[0].message.content)

标题:生存本能:野牛与狼在冰原上的史诗般对峙

描述: 在被雪覆盖的平原上,一场原始且扣人心弦的生存戏剧正在上演,这里,强壮的野牛与一群决心捕食的狼群展开对决。视频在冬日的银装素裹中捕捉到了这场惊心动魄的捕食者与猎物之间的互动。在生死存亡的边缘,每一个移动都是大自然舞台上的生与死的较量。观众将看到这些庄严的生物进行永恒的斗争,它们展示出野生世界中的力量、坚韧和不屈的精神。和我们一起,进入自然恢复力的心脏地带,见证动物王国中生命循环的最真实写照。#Wildlife #Nature #Survival #BisonVsWolves

2. 用 GPT-4 和 TTS API 制作视频旁白

我们将尝试用大卫·艾登堡的风格,为一段视频制作旁白。就用视频中同样的画面,引导 GPT 来帮我们撰写一段简短的文本:

python 复制代码
PROMPT_MESSAGES = [
    {
        "role": "user",
        "content": [
            "These are frames of a video. Create a short voiceover script in the style of David Attenborough. Only include the narration.",
            *map(lambda x: {"image": x, "resize": 768}, base64Frames[0::10]),
        ],
    },
]
params = {
    "model": "gpt-4-vision-preview",
    "messages": PROMPT_MESSAGES,
    "api_key": os.environ["OPENAI_API_KEY"],
    "headers": {"Openai-Version": "2020-11-07"},
    "max_tokens": 500,
}

result = openai.ChatCompletion.create(**params)
print(result.choices[0].message.content)

在无边无际的冬日白雪中,自然界的生生不息上演着永恒而赤裸的生存戏码。在这片考验生物存亡的严苛舞台上,一群灰狼已经将目光锁定在了牛群中的一头野牛------一场关乎生命和食物的搏斗即将拉开序幕。

这场狼群的围猎行动策划严密,每一只狼都了然于心它的任务。在严寒的空气中,它们的肌肉绷紧,呼吸可见,悄无声息地靠近猎物,伺机找到破绽。而野牛,这个庞然大物,依靠千百万年锻造的本能站稳脚跟,其巨大的身影在刺眼的白雪中投下了一道孤影。

这是一场生与死的交响乐,每一个动作,每一次虚晃,都关乎着生命的重量。狼群交替发起攻势,一边保持体力,一边逐渐削弱猎物。曾经是野牛坚实后盾的牛群,如今已经逃之夭夭,远远散开,这生动地告诉我们,在这野性的领地里,生存的法则永远高于血缘的羁绊。

随着一阵紧张的活动------狼群开始收网。尽管野牛力大无穷,但它已经力不从心,喘息急促,行动迟缓。狼群嗅到了胜利的气息。它们不懈地追击,这正是自然法则残酷而又壮丽的见证。

当这场斗争走向它不可避免的结局时,我们再次认识到这片野生天地的精妙平衡。生与死,斗争与生存------这循环永续,每个故事都在雪地上一笔一划地被书写,只要狼还在这片冰原上巡行,野牛还在这片土地上漫步。

现在我们可以把这段文本交给 TTS API,让它帮我们把这段旁白变成 mp3 音频。

python 复制代码
response = requests.post(
    "https://api.openai.com/v1/audio/speech",
    headers={
        "Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}",
    },
    json={
        "model": "tts-1",
        "input": result.choices[0].message.content,
        "voice": "onyx",
    },
)

audio = b""
for chunk in response.iter_content(chunk_size=1024 * 1024):
    audio += chunk
Audio(audio)
相关推荐
qzhqbb1 小时前
基于统计方法的语言模型
人工智能·语言模型·easyui
冷眼看人间恩怨2 小时前
【话题讨论】AI大模型重塑软件开发:定义、应用、优势与挑战
人工智能·ai编程·软件开发
2401_883041082 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
AI极客菌3 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭3 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^3 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
Power20246664 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
数据猎手小k4 小时前
AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。
人工智能·分类·数据挖掘
好奇龙猫4 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
沉下心来学鲁班4 小时前
复现LLM:带你从零认识语言模型
人工智能·语言模型