▶︎動画でも話してるので、文章読むのが面倒な方はこちらをみてもらえればと思います。
今回は猫ミームを一括生成する方法について解説します。
これを読めば誰でも簡単にクオリティーの高いAI美女が作れるようになっているので興味がある人は、下のバナーをクリックして購入してみてね🎶
目次
猫ミームを一括生成する方法について
なお、今回紹介する方法は猫ミームをまとめて生成する方法です。
猫の写真を撮ってダンスさせるという部分の解説ではございませんのでご注意ください。
ただし、少しだけこの部分を説明させていただきます。
猫の写真を元にダンス動画を生成するのは中国のアプリを利用すると簡単な操作で生成できるようです。
発音は正しいか分からないのですが、「トンギー」や日本語で読むと「ゼンミンマイオウ」というキーワードで検索すると引っかかると思います。
おそらくこのアプリを利用して猫のダンス動画を生成しているのだと思います。
TikTokにはこのアプリを使って猫がダンスしている動画を生成する具体的な方法の解説動画がアップされています。
ナレーションの音声は中国語ですが、中国語が分からない方向けに英語の字幕をつけてくれています。
また、漢字の内容から類推したり、動画の様子を見るだけでもやり方は大体分かると思います。
このTikTokの動画のURLは以下に貼っておきますので、そちらをご確認ください。
私の方でも早速このアプリを使った解説を作ろうと考えたのですが、このアプリを利用するためには中国の携帯番号でのSMS認証が必要になります。
このSMS認証を回避する方法はあるといえばあるのですが、YouTubeで堂々と説明するのは憚られます。
そのため、今回の解説は猫がダンスしている動画を生成してから後の解説になります。
猫がダンスしている動画を生成してから後の解説
まずはこのようなフォルダー構成でファイルを配置します。
Audio.MP3はbackgroundMusicの音声ファイルです。
イメージズフォルダーの中には背景になる画像ファイルを配置します。
画像ファイルの名前は先頭をフォトにして連番を割り当てます。
ビデオフォルダーの中には猫が踊っている動画ファイルを配置します。
動画ファイルの名前は先頭をビデオにして連番を割り当てます。
そして画像ファイルと動画ファイルは同じ番号で紐づくようにしておきます。
例えば、PH01.jpgとVideo01.MP4はこのようになります。
このように動画ファイルはグリーンバックの背景で生成したものを用意します。
そして、これらのファイルをZIPファイルにまとめます。
ZIPファイルの名前は半角英数字で設定するようにしてください。
この解説ではmater.ZIPという名前にしておきます。
このようなZIPファイルを用意したら、次にGoogleコラボで操作を行います。
Googleコラボで操作
そのため、もしもGoogleコラボというキーワードが分からない場合は、詳細を解説している動画のリンクを概要欄に貼っておきますのでそちらをご確認ください。
Google Colabのサイトにアクセス
ここからの流れは下記に詳細リンクを貼っておきますので、そちらからご参照ください。
これで、Google Colabでコードを実行するための準備が整いました。
これを読めば誰でも簡単にクオリティーの高いAI美女が作れるようになっているので興味がある人は、下のバナーをクリックして購入してみてね🎶
Google Colabでコードを実行
下記に貼ってあるテキストをコピーします。
# 必要なライブラリをインストールします
!pip install moviepy opencv-python-headless
# 必要なライブラリをインポートします
from moviepy.editor import VideoFileClip, ImageClip, AudioFileClip
import cv2
import numpy as np
import os
from google.colab import files
from zipfile import ZipFile
# グリーンスクリーンを置き換える関数
def replace_green_screen(frame, background_image):
# ビデオフレームをRGBに変換します(MoviePyはRGBイメージを扱います)
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# バックグラウンドをフレームサイズに合わせてリサイズします
background_resized = cv2.resize(background_image, (frame.shape, frame.shape[0]))
# HSVで緑色の範囲を定義します
hsv_frame = cv2.cvtColor(rgb_frame, cv2.COLOR_RGB2HSV)
lower_green = np.array([40, 40, 40])
upper_green = np.array([70, 255, 255])
# 緑色のマスクとその逆マスクを作成します
mask = cv2.inRange(hsv_frame, lower_green, upper_green)
mask_inv = cv2.bitwise_not(mask)
# フレームの緑色の領域を黒く塗ります
frame_no_green = cv2.bitwise_and(rgb_frame, rgb_frame, mask=mask_inv)
# 緑色の領域に対応するバックグラウンドの領域のみを取ります
background_for_frame = cv2.bitwise_and(background_resized, background_resized, mask=mask)
# 二つの画像を加算します
final_frame = cv2.add(frame_no_green, background_for_frame)
return final_frame
# ZIPファイルをアップロードして、その内容を抽出する関数
def upload_and_extract_zip():
uploaded = files.upload()
for filename in uploaded.keys():
with ZipFile(filename, 'r') as zip_ref:
zip_ref.extractall()
os.remove(filename) # 抽出後にZIPファイルを削除します
# 特定の拡張子を持つディレクトリ内のすべてのファイルパスを取得する関数
def get_file_paths(directory, extension):
return [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith(extension)]
# 素材が入ったZIPファイルをアップロードして抽出します
print("素材が入ったZIPファイルをアップロードしてください。")
upload_and_extract_zip()
# アップロードされたビデオと画像ファイルのパスを取得します
video_paths = get_file_paths('videos', '.mp4')
image_paths = get_file_paths('images', '.jpg')
audio_path = 'audio.mp3'
# オーディオクリップを読み込みます
audio_clip = AudioFileClip(audio_path)
# 各ビデオを対応する背景画像とオーディオで処理します
output_paths = []
for i, video_path in enumerate(sorted(video_paths)):
# 同じインデックスを持つ画像パスを想定してマッチングします
image_path = sorted(image_paths)[i]
background_image = cv2.imread(image_path)
background_image = cv2.cvtColor(background_image, cv2.COLOR_BGR2RGB)
video_clip = VideoFileClip(video_path)
video_clip = video_clip.set_audio(audio_clip)
new_clip = video_clip.fl_image(lambda frame: replace_green_screen(frame, background_image))
output_video_path = f'video_with_background_and_audio_{i+1}.mp4'
new_clip.write_videofile(output_video_path, codec='libx264', audio_codec='aac')
output_paths.append(output_video_path)
# 出力ビデオをZIPファイルに圧縮します
zip_path = 'output_videos_with_audio.zip'
with ZipFile(zip_path, 'w') as zip_file:
for file in output_paths:
zip_file.write(file)
os.remove(file) # オプション: zipに追加した後にファイルを削除します
# ZIPファイルを自動的にダウンロードします
files.download(zip_path)
テキストをコピーしたら、Google Colabの画面に戻り、テキストボックスに先ほどコピーしたテキストを貼り付け、再生ボタンを押します。
これで貼り付けたテキストの内容が実行されます。
処理が実行されたら、ファイルのアップロードボタンが表示されます。
このボタンをクリックします。
ダイアログボックスが表示されるので、用意したZIPファイルを選択します。
そうすると自動的に猫がダンスしている動画の背景を差し替える処理が実行されます。
ファイルの件数にもよりますが、この処理には5分以上かかると思います。
処理が完了したら、生成された動画ファイルがZIPにまとめてダウンロードされる仕組みになっています。
しばらく待っているとZIPファイルのダウンロードが完了します。
今回生成された動画がこちらです。
このように指定した背景と猫がダンスしている動画を組み合わせた動画を一括で生成することができます。
ぜひお試しください。