Amazon Bedrock: Nova Reel に動画を生成してもらいました

記事タイトルとURLをコピーする

re:Invent 会場からこんにちは、今日は同僚達と早起きをして基調講演に参加してきました。
初日の基調講演は特に人気があるみたいで、現地なのにサテライト会場が用意されるくらいで開場の1.5時間前に行ったのですが既に200人弱くらいの参加者が並んでいました。

発表のあった新サービスの一覧は以下をご確認ください。

blog.serverworks.co.jp

自分が興味をもったのは Nova Reel です。さっそく試してみたのでご報告。

Nova Reel モデルの有効化

マネジメントコンソール: Bedrock から Nova Reel モデルを有効化します。

スクリーンショット

動画の作成

公式 に Python のサンプルコードが公開されていたので、自分の実行環境に合わせて修正して実行します。

1. コードの修正

修正した箇所は2箇所

  • 9行目
    • S3バケット名
  • 11行目
    • 『ナス色のお姫様がヒキガエルの子供とくるくる回るのです』を英訳してもらったテキスト
  1 import random
  2 import time
  3
  4 import boto3
  5
  6 AWS_REGION = "us-east-1"
  7 MODEL_ID = "amazon.nova-reel-v1:0"
  8 SLEEP_TIME = 30
  9 S3_DESTINATION_BUCKET = "example-s3-bucket-name"
 10
 11 video_prompt = "The eggplant-colored princess spins around with the baby toad."
 12
 13 bedrock_runtime = boto3.client("bedrock-runtime", region_name=AWS_REGION)
 14 model_input = {
 15     "taskType": "TEXT_VIDEO",
 16     "textToVideoParams": {"text": video_prompt},
 17     "videoGenerationConfig": {
 18         "durationSeconds": 6,
 19         "fps": 24,
 20         "dimension": "1280x720",
 21         "seed": random.randint(0, 2147483648)
 22     }
 23 }
 24
 25 invocation = bedrock_runtime.start_async_invoke(
 26     modelId=MODEL_ID,
 27     modelInput=model_input,
 28     outputDataConfig={"s3OutputDataConfig": {"s3Uri": f"s3://{S3_DESTINATION_BUCKET}"}}                                                                                          29 )
 30
 31 invocation_arn = invocation["invocationArn"]
 32 s3_prefix = invocation_arn.split('/')[-1]
 33 s3_location = f"s3://{S3_DESTINATION_BUCKET}/{s3_prefix}"
 34 print(f"\nS3 URI: {s3_location}")
 35
 36 while True:
 37     response = bedrock_runtime.get_async_invoke(
 38         invocationArn=invocation_arn
 39     )
 40     status = response["status"]
 41     print(f"Status: {status}")
 42     if status != "InProgress":
 43         break
 44     time.sleep(SLEEP_TIME)
 45
 46 if status == "Completed":
 47     print(f"\nVideo is ready at {s3_location}/output.mp4")
 48 else:
 49     print(f"\nVideo generation status: {status}")

2. 実行

スクリプトを実行して数秒待つと S3 バケットに動画ファイルが生成されます。

$ python nova-reel.py

S3 URI: s3://example-s3-bucket-name/p6pyi4ys5pt2
Status: InProgress
Status: InProgress
Status: InProgress
Status: InProgress
Status: InProgress
Status: InProgress
Status: InProgress
Status: InProgress
Status: InProgress
Status: Completed

Video is ready at s3://example-s3-bucket-name/p6pyi4ys5pt2/output.mp4

確認

↓こんな感じです。


www.youtube.com

なんとも簡単で拍子抜けしちゃいました。
改めてクラウドっておもしろい!

以上、レポートでした。
あしたま!

千葉 哲也 (執筆記事の一覧)

アプリケーションサービス部

コーヒーゼリーが好きです。