LangGraph & Veo 2 連携で朝のニュース動画をフルAI化してみた

LangGraph 和 Veo 2 集成使早间新闻视频完全 AI

发表于

起先

背景和目的

在上一篇文章中,我们研究了使用 AI 代理 (LangGraph) 自动生成语音新闻。 为了进一步“视频化”结果,我尝试使用 Google 的 Veo 2 生成一个视频,并将其与 LangGraph 生成的音频相结合,使其成为视频内容。

实现

使用 LangGraph 和 GPT 制作的声音 (previous review)

如上一篇文章中详细描述的,我们在 LangGraph 上构建了一系列流程,从收集、总结和生成新闻文章的手稿到文本转语音。
新闻的主题可以每天选择,这次除了天气和日经平均指数等日期和时间信息外,它还基于政治和报纸等最新新闻。
此外,生成的新闻手稿是使用 OpenAI TTS(型号:tts-1)生成的,以生成音频(MP3 文件),并每天早上通过 Dropbox 和 iPhone 自动更新和播放。

主流程流,直到您获得 mp3 文件

使用 Veo2 生成视频

在本文中,您将使用 Google Generative AI (Gemini) SDK 从静止图像生成视频。
首先,我们准备了一个与新闻内容相关的本地图片文件,如果它很小,我们就放大它。 使用此图像作为输入,请求 Veo 2 生成视频。
SDK 的 genai. 您可以使用客户端生成短视频剪辑,方法是为模型名称“veo-2.0-generate-001”(Veo 2)提供提示和目标图像。
在内部,它是一个图像,可以生成一个与给定图像和文本的上下文相匹配的视频,类似于 Google 的大规模图像生成模型 Imagen 系列。 生成的视频剪辑可以获得为每个视频几十 MB 的 MP4 视频。

以下是实际代码的摘录。 我们使用的是 Google 提供的 Python SDK,并且我们提前使用环境变量中设置的 API 密钥初始化客户端(我们已经在有效的项目中获得了 Veo 使用权限)。
加载本地镜像并使用类型。 Image 对象,generate_videos方法向模型发送请求,视频生成将开始(等待几分钟完成)。

video_gen.py

Copied!

import io
import sys
import time
from PIL import Image
from pathlib import Path
from google import genai
from google.genai import types

IMG_PATH = Path("img.jpg")  # 任意のパスに変更

# ...(画像の読み込みと1280x720リサイズ処理)...

# ...(SDK 用 Image オブジェクトを作成)...

client = genai.Client()  # APIキーは自動で読み込まれる

image_obj = types.Image(
    image_bytes=img_bytes,
    mime_type="image/jpg",
)

operation = client.models.generate_videos(
    model="veo-2.0-generate-001",
    prompt="ニュースの風景として動画を作成してください",       # プロンプト例
    image=image_obj,             
    config=types.GenerateVideosConfig(
        aspect_ratio="16:9",
        number_of_videos=2,         # 動画の作成数
    ),
)

# ...(生成完了までポーリングで待機し、エラー処理)...

# ...(成功/失敗チェック)...

# 動画保存
stem = IMG_PATH.stem
for i, v in enumerate(videos):
    out_path = f"{stem}_{i}.mp4"
    client.files.download(file=v.video)
    v.video.save(out_path)
    print(f"✅ 保存完了 → {out_path}")

此外,根据图像的大小和提示符,它经常会失败,所以我认为有必要参考文档调整这个区域。

视频和音频集成

Veo 2 输出的视频剪辑目前很短,最多大约 8 秒,因此您需要根据新闻音频的长度(在本例中约为 1~2 分钟)调整视频。 在这里,我使用了 MoviePy 库来匹配视频和音频的长度。
具体来说,它会导入无声 MP4 视频剪辑,并对音频 MP3 的长度执行以下作:

  • 循环:如果视频短于音频,则视频将重复播放并拉伸到预定长度(循环)
  • 修剪:相反,如果视频比音频长,则只会剪掉第一部分(与音频长度相同)

调整后,MoviePy 会将音频合并成视频剪辑,并将其输出为带有音频的 MP4 文件。

loop_and_mix.py

Copied!

from moviepy import VideoFileClip, AudioFileClip, vfx

# クリップ読み込み
audio_clip = AudioFileClip("news.mp3")
video_clip = VideoFileClip("video.mp4").without_audio()  # 無音の動画クリップを読み込む
audio_duration = audio_clip.duration
video_duration  = video_clip.duration

# 音声の長さに映像を合わせる(ループまたはカット)
if video_duration 

总结

我很惊讶,生成看起来像新闻视频的内容比我想象的要容易。 虽然仍有改进的余地,但我从内容的质量以及它可以自主自动化的事实中学到了。
再次,我在上一篇文章中提到过 AI Agent 的设计很重要,但是在将其转录成视频时,我觉得人类的创造力和聪明才智(提示工程)仍然是必要的,因为视频的氛围受图像和提示的差异影响很大。
此外,虽然“全自动生成”大大降低了创意人员的门槛,但我敏锐地意识到,对产品版权和使用范围的了解比以往任何时候都更加重要。 因为它变得更加方便,我觉得需要适当处理 AI 生成内容的知识和责任感。 我自己也想再次研究这个领域。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇