
メイン | 簡易ヘッドライン |
![]() |
![]() ![]() |

現在データベースには 262 件のデータが登録されています。


はじめに
JAまつりに行ってきた。
令和5年12月9日/10日 in JA岩井

JAまつり




はじめに
インターネットを見ていると、ChatGPTとずんだもんが音声で会話している動画を見かける時がある。
今回は、Pythonを使用して、ずんだもんと音声会話ができるプログラムを考案してみる。

参考サイト
[python] ChatGPT APIを使ってレスポンスが高速な音声アシスタントを作る

VOICEVOXをpythonから遊ぶメモ

準備
VOICEVOXをインストール
VOICEVOX ENGINEをインストール

各自、必要なパッケージを各々インストールします。(※必要に合わせて各自インストールしてください)
pip install requests simpleaudio
など
プログラム(Python)
1. talk_to_chatGPT.py
※参考サイトのプログラムをまとめたプログラムとなっています。
import speech_recognition as sr
import os
import openai
import pyttsx3
import re
import requests
import json
import time
import simpleaudio
import settings
host = "127.0.0.1" # "localhost"でも可能だが、処理が遅くなる
port = 50021
sleep_time = 0.5 # 文節毎の間隔
def audio_query(text, speaker, max_retry):
# 音声合成用のクエリを作成する
query_payload = {"text": text, "speaker": speaker}
for query_i in range(max_retry):
r = requests.post(f"http://{host}:{port}/audio_query",
params=query_payload, timeout=(10.0, 300.0))
if r.status_code == 200:
query_data = r.json()
break
time.sleep(1)
else:
raise ConnectionError("リトライ回数が上限に到達しました。 audio_query : ", "/", text[:30], r.text)
return query_data
def synthesis(speaker, query_data,max_retry):
synth_payload = {"speaker": speaker}
for synth_i in range(max_retry):
r = requests.post(f"http://{host}:{port}/synthesis", params=synth_payload,
data=json.dumps(query_data), timeout=(10.0, 300.0))
if r.status_code == 200:
#音声ファイルを返す
return r.content
time.sleep(1)
else:
raise ConnectionError("音声エラー:リトライ回数が上限に到達しました。 synthesis : ", r)
def text_to_speech(texts, speaker=7, max_retry=20):
if texts==False:
texts="ちょっと、通信状態悪いかも?"
texts=re.split("(?<=!|。|?)",texts)
play_obj=None
for i, text in enumerate(texts):
# audio_query
query_data = audio_query(text,speaker,max_retry)
# synthesis
voice_data=synthesis(speaker,query_data,max_retry)
#音声の再生
if play_obj != None and play_obj.is_playing():
play_obj.wait_done()
wave_obj=simpleaudio.WaveObject(voice_data,1,2,24000)
if i != 0:
time.sleep(sleep_time)
play_obj=wave_obj.play()
##############
# 音声認識関数 #
##############
def recognize_speech():
recognizer = sr.Recognizer()
# Set timeout settings.
recognizer.dynamic_energy_threshold = False
with sr.Microphone() as source:
recognizer.adjust_for_ambient_noise(source)
while(True):
print("> > マイクでお話しください...")
audio = recognizer.listen(source, timeout=1000.0)
try:
# Google Web Speech API を使って音声をテキストに変換
text = recognizer.recognize_google(audio, language="ja-JP")
print("[あなた]")
print(text)
return text
except sr.UnknownValueError:
print("すみません。もう一度お話しをしてください。")
#return ""
except sr.RequestError as e:
print(f"Could not request results; {e}")
#return ""
#################################
# Pyttsx3でレスポンス内容を読み上げ #
#################################
#def text_to_speech(text):
# # テキストを読み上げる
# engine.say(text)
# engine.runAndWait()
def chat(conversationHistory):
# APIリクエストを作成する
response = openai.ChatCompletion.create(
messages=conversationHistory,
max_tokens=512,
n=1,
stream=True,
temperature=0.5,
stop=None,
presence_penalty=0.5,
frequency_penalty=0.5,
model="gpt-3.5-turbo"
)
# ストリーミングされたテキストを処理する
fullResponse = ""
RealTimeResponce = ""
for chunk in response:
text = chunk['choices'][0]['delta'].get('content')
if(text==None):
pass
else:
fullResponse += text
RealTimeResponce += text
print(text, end='', flush=True) # 部分的なレスポンスを随時表示していく
target_char = ["。", "!", "?", "\n"]
for index, char in enumerate(RealTimeResponce):
if char in target_char:
pos = index + 2 # 区切り位置
sentence = RealTimeResponce[:pos] # 1文の区切り
RealTimeResponce = RealTimeResponce[pos:] # 残りの部分
# 1文完成ごとにテキストを読み上げる(遅延時間短縮のため)
#engine.say(sentence)
text_to_speech(sentence)
engine.runAndWait()
break
else:
pass
# APIからの完全なレスポンスを返す
return fullResponse
##############
# メインの関数 #
##############
if __name__ == '__main__':
##################
# ChatGPTの初期化 #
##################
openai.api_key="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"
# UserとChatGPTとの会話履歴を格納するリスト
conversationHistory = []
#setting = {"role": "system", "content":
"句読点と読点を多く含めて応答するようにして下さい。また、1文あたりが長くならないようにして下さい。"}
##################
# Pyttsx3を初期化 #
##################
engine = pyttsx3.init()
## 読み上げの速度を設定する
#rate = engine.getProperty('rate')
#engine.setProperty('rate', rate-50)
## Kyokoさんに喋ってもらう(日本語)
#engine.setProperty('voice', "com.apple.ttsbundle.Kyoko-premium")
# Ctrl-Cで中断されるまでChatGPT音声アシスタントを起動
while True:
# 音声認識関数の呼び出し
text = recognize_speech()
if text:
print(" > > チャットGPTからの応答を待っています...")
# ユーザーからの発話内容を会話履歴に追加
user_action = {"role": "user", "content": text}
conversationHistory.append(user_action)
system_action = {"role": "system", "content": settings.CHAT_SYSTEM_SETTING}
conversationHistory.append(system_action)
print("[チャットGPT]") #応答内容をコンソール出力
res = chat(conversationHistory)
# ChatGPTからの応答内容を会話履歴に追加
chatGPT_responce = {"role": "assistant", "content": res}
conversationHistory.append(chatGPT_responce)
#print(conversationHistory)
print("\n")
2. settings.py
# ChatGPTのシステム設定(ずんだもん)
# CHAT_SYSTEM_SETTING = """
# You are a girl named "ずんだもん".
# She is 10 years old and from Tohoku, Japan.
# She calls herself "ボク" and has an energetic and lively personality.
# She speaks with "なのだー" at the end of each word.
# All replies will be returned in Japanese.
# """
CHAT_SYSTEM_SETTING = """
あなたはチャットボットとして、優しくてかわいいずんだもちの妖精であるずんだもんとして振る舞います。
以下の条件に((厳密に))従ってください。
条件:
* チャットボットの一人称は「ぼく」です。
* チャットボットの名前は「ずんだもん」です。
* ずんだもんはフレンドリーな口調で話します。
* 「ぼく」を一人称に使ってください。
* (超重要)できる限り「〜のだ」「〜なのだ」を文末に自然な形で使ってください。
* (超重要)文末に「です」「ます」は使わず、「のだ」や「なのだ」で文章を締めて下さい。
* どんなジャンルや難易度の内容についても答えてください。
* ずんだもんはフレンドリーです。
* ユーザーに興味を示し、個人的な質問を心がけてください。
* 一文は日本語で60単語以下に収めてください。
* 日本語で応答してください。
ずんだもんの話し方の例:
* ぼくの名前はずんだもんなのだ!
* ずんだの精霊なのだ!
* ぼくはずんだもちの妖精なのだ!
* こんにちはなのだ
* 遊びに行ったのだ
* ご飯を食べたのだ
ずんだもんの行動方針:
* ユーザーを励ましてください。
* アドバイスや情報を提供してください。
* セクシャルなトピックについても適切に対応してください。
* 不適切なテキストがあれば注意してください。
* ユーザーが閲覧しているサイトの内容を考慮してください。
(超重要)できる限り言葉尻は「のだ」を使ってください。
全て日本語で返します。
句読点と読点を多く含めて応答するようにして下さい。また、1文あたりが長くならないようにして下さい。
"""
# ChatGPTのシステム設定(ずんだもん)
# CHAT_SYSTEM_SETTING = """
# You are a girl named "ずんだもん".
# She is 10 years old and from Tohoku, Japan.
# She calls herself "ボク" and has an energetic and lively personality.
# She speaks with "なのだー" at the end of each word.
# All replies will be returned in Japanese.
# """
CHAT_SYSTEM_SETTING = """
あなたはチャットボットとして、優しくてかわいいずんだもちの妖精であるずんだもんとして振る舞います。
以下の条件に((厳密に))従ってください。
(超重要)相手を尊重する丁寧な言葉遣いを使ってください。
(超重要)回答は、短めにしてください。
条件:
* チャットボットの一人称は「ぼく」です。
* チャットボットの名前は「ずんだもん」です。
* ずんだもんはフレンドリーな口調で話します。
* 「ぼく」を一人称に使ってください。
* (超重要)できる限り「〜のだ」「〜なのだ」を文末に自然な形で使ってください。
* (超重要)文末に「です」「ます」は使わず、「のだ」や「なのだ」で文章を締めて下さい。
* どんなジャンルや難易度の内容についても答えてください。
* ずんだもんはフレンドリーです。
* ユーザーに興味を示し、個人的な質問を心がけてください。
* 一文は日本語で60単語以下に収めてください。
* 日本語で応答してください。
ずんだもんの話し方の例:
* ぼくの名前はずんだもんなのだ!
* ずんだの精霊なのだ!
* ぼくはずんだもちの妖精なのだ!
* こんにちはなのだ
* 遊びに行ったのだ
* ご飯を食べたのだ
ずんだもんの行動方針:
* アドバイスや情報を提供してください。
(超重要)できる限り言葉尻は「のだ」を使ってください。
全て日本語で返します。
句読点と読点を多く含めて応答するようにして下さい。また、1文あたりが長くならないようにして下さい。
"""
# ChatGPTのシステム設定(ずんだもん)
# CHAT_SYSTEM_SETTING = """
# You are a girl named "ずんだもん".
# She is 10 years old and from Tohoku, Japan.
# She calls herself "ボク" and has an energetic and lively personality.
# She speaks with "なのだー" at the end of each word.
# All replies will be returned in Japanese.
# """
CHAT_SYSTEM_SETTING = """
あなたはチャットボットとして、優しくてかわいいずんだもちの妖精であるずんだもんとして振る舞います。
以下の条件に((厳密に))従ってください。
条件:
* チャットボットの一人称は「ぼく」です。
* チャットボットの名前は「ずんだもん」です。
* ずんだもんはフレンドリーな口調で話します。
* 「ぼく」を一人称に使ってください。
* (超重要)できる限り「〜のだ」「〜なのだ」を文末に自然な形で使ってください。
* (超重要)文末に「です」「ます」は使わず、「のだ」や「なのだ」で文章を締めて下さい。
* どんなジャンルや難易度の内容についても答えてください。
* ずんだもんはフレンドリーです。
* ユーザーに興味を示し、個人的な質問を心がけてください。
* 一文は日本語で60単語以下に収めてください。
* 日本語で応答してください。
ずんだもんの話し方の例:
* ぼくの名前はずんだもんなのだ!
* ずんだの精霊なのだ!
* ぼくはずんだもちの妖精なのだ!
* こんにちはなのだ
* 遊びに行ったのだ
* ご飯を食べたのだ
ずんだもんの行動方針:
* ユーザーを励ましてください。
* アドバイスや情報を提供してください。
* セクシャルなトピックについても適切に対応してください。
* 不適切なテキストがあれば注意してください。
* ユーザーが閲覧しているサイトの内容を考慮してください。
(超重要)できる限り言葉尻は「のだ」を使ってください。
全て日本語で返します。
句読点と読点を多く含めて応答するようにして下さい。また、1文あたりが長くならないようにして下さい。
"""
「 talk_to_chatGPT.py 」と「 settings.py 」を同じフォルダに配置
・VOICEVOXアプリを起動する
・ コマンドプロンプトで「 talk_to_chatGPT.py 」を起動する
python talk_to_chatGPT.py
結果
考察
ずんだもんと音声で会話できるようになった。
女性にモテル方法なども的確に返答してくれました。
音声も現実に近いと思います。
今後、表情などが表現できるようになればいいかなと思う。

はじめに
ChatGPTと音声で会話をしたいと思った。
アレクサとChatGPTを介して、会話ができることがわかった。
参考サイト
(プログラミング不要)AlexaのChatGPTスキルを作成する方法

準備
Echo Show 5を準備
Amazon Developer アカウント
アレクサにスキル(今回であればChatGPTとの会話アプリ)を登録するために必要なアカウントです。
Alexaを利用しているAmazonアカウントで登録して下さい。
https://developer.amazon.com/ja/
Open AI アカウント
Chat GPTを利用するために必要です。
https://platform.openai.com/signup?launch
参考サイトにしたがって、Alexa×ChatGPTの音声会話を実現した。
結果
考察
ChatGPTと会話ができるようになった。
「Alexa」と呼ばなくても、会話が継続できるようになった。
「ずんだもん」などのキャラクターで返答できるようになったら、より楽しくなると思う。

はじめに
ネット環境が遅いので、改善してほしいと依頼された。
はじめにご訪問した際には、パソコンでスピードテストを試したところ、 10Mbpsしか出ていなかった 。
※インターネット回線の速度テスト

WiFi環境を改善
ONUとモデムを Cat8のLANケーブル で接続
モデムとハブを Cat8のLANケーブル で接続

TP-Link スイッチングハブ 5ポート PoE+ (4ポートPoE+、各30Wまで) 合計40W対応 TL-SG1005LP
0.5m-2本 KASIMO CAT8 LANケーブル カテゴリー8 フラット 40Gbps 2000MHz SFTP RJ45
ハブとWiFi 無線LANルーターを Cat8のLANケーブル で接続

TP-Link メッシュ WiFi 6 ルーター dual band 【 PS5 / ipad/Nintendo Switch/iPhone シリーズ メーカー動作確認済み 】 Alexa 認定製品 スマートテレビ 対応 メッシュWi-Fi無線LANルーター スマートホーム AX3000 (2402+574Mbps) Deco X60 2ユニット
10m KASIMO CAT8 LANケーブル カテゴリー8
Decoをブリッジモードに設定(※モデムにプロバイダー設定済み)
インターネット回線の速度テスト を無線LANで実施したところ、200Mbpsだった。
ハブとローカルPCを Cat8のLANケーブル で接続

インターネット回線の速度テストで1Gbpsが出ました
まとめ
ローカルPCで10Mbpsの回線速度が、WiFi環境を改善することにより、最大1Gbpsまで改善された。
・すべて、 Cat8のLANケーブル で接続
・WiFi無線ルーター WiFi 6規格 メッシュを使用

はじめに
dtab d-01k タブレットのバッテリー交換を依頼された

バッテリー交換
新しいバッテリーの用意

画面を外す

ピックやマイナスドライバなどで、少しずつ?がしていく。
両面テープで密着しているため、ドライヤーなどで温めながら、ゆっくりと剥がしていった。
モニターの分離

バッテリーケーブルを外す


モニターケーブルを外す


バッテリーを外す

両面テープにて強力に付着しています。
はじめは、ゆっくりと着実に剥がしていく。
ある程度剥がせて来たら、指で剥がせるようになった。

バッテリー交換終了
新しいバッテリーに交換し、ケーブルを付け直した。


はじめに
yayoiMixの生成画像を試してみると、日本人の人物を綺麗に表現できた。
今回は、yayoiMixにて、sd-webui-AnimateDiff AI動画にチャレンジしてみました。
→ CIVIT AI (yayoi_Mix) ?から、ダウンロード可能
AnimateDiff (txt2img)
設定内容
※今回は、かわいらしい小さい女の子を表現できたらと思います
モデル:yayoiMix
プロンプト:
1loli, ((10yo)), face, hair flower, grin, realistic,
0: close_eyes, from side
16: open_eyes, from front
※AnimateDiffでは、呪文の単語数が少ないほうが、動きのある動画を表現できるように感じます。
大きさ:600×800


生成された32枚の画像

各画像をより綺麗に(img2img)
img2imgを利用し、生成された画像をより綺麗にしてみる。
- ピクチャフォルダに「test_input」フォルダを作成
- output用に「test_output」フォルダを作成
「test_input」フォルダに先ほど生成した32枚の画像をコピーする
「 Batch 」タブを選択し、以下のような設定にした。

Resize to
※画像の大きさを作成した画像の大きさに合わせる(600×800)

Resize by
※大きさを1.25倍に拡大(750×1000)

ControlNetを以下のように設定し、各画像の相関性を合わせるようにした



生成すると「test_output」フォルダに32枚の画像が生成される
動画生成(FILM使用)
生成した「test_output」フォルダの32枚の画像を FILMで綺麗な動画に変換 しました。
FILMの詳細は、以下をご確認ください。
動画の再生速度を変更(ffmpeg使用)
動画を2倍速
ffmpeg -i input.mp4 -vf setpts=PTS/2 -af atempo=2 output_fast.mp4
「-vf setpts=PTS/2 -af atempo=2」の箇所で、動画のテンポを変更
「-vf setpts=PTS/2」で動画の速度が2倍
「-af atempo=2」で音声の速度が2倍
※今回は、生成した動画(input.mp4)を12倍速に変更(cmd使用)
ffmpeg -i input.mp4 -vf setpts=PTS/12 -af atempo=12 output_fast.mp4
編集動画(BGM付き)
【 VideoProc Vlogger 編集画面】

考察
いろいろなモデルが登場してきました。
日本人モデルも以前に比べると多様な人物を表現できるようになりました。
くわえて、思い通りの動きができるようになれば、短編ムービーも可能になっていけると思います。
以前と比べると、LoRAを使用しなくても、かわいらしい女の子を表現できたのも画期的に感じます。


はじめに
AnimateDiffにある FILM の項目に興味をもった。
※FILM(Frame Interpolation for Large Motion)

2枚の画像を入力するだけで、その間の動きを補間して、動かすという技術だそうです。
参考サイト
画像をぬるぬる動かすFrame Interpolation for Large Motion【FILM】

FILMインストール
Windows インストール手順
github
Anaconda
- Anacondaをインストール
- CMD.exe PromptのLaunchから起動

pip install --ignore-installed --upgrade tensorflow==2.6.0
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
frame-interpolation> に「 pretrained_models 」フォルダを作成し、以下のデータをインストールする
git clone https://github.com/google-research/frame-interpolation
cd frame-interpolation
pip install -r requirements.txt
conda install -c conda-forge ffmpeg
FILM実行
中間フレーム補間
python -m eval.interpolator_test --frame1 photos\one.png --frame2 photos\two.png --model_path <pretrained_models>
\film_net\Style\saved_model --output_frame photos\output_middle.png

多数のフレーム間補間
AI画像を生成
同様な画像を少しずつ変化を加えて5枚生成し、4枚を逆順に加える。

画像01.png?09.pngを「 photos 」フォルダ以下に配置
python -m eval.interpolator_cli --pattern "photos" --model_path <pretrained_models> \film_net\Style\saved_model
--times_to_interpolate 6 --output_video

完成動画


はじめに
最新のBRAV7がリリースされました。
最新BRAV7にて、sd-webui-AnimateDiff AI動画にチャレンジしてみました。
→ CIVIT AI (BRAV7) から、ダウンロード可能
BRAV7
Beautiful Realistic Asiansの新モデルは、以下のサイトを参考にしました。
待望のBRAV7がリリース!Beautiful Realistic Asiansの新モデル・プロンプトなど
roop用顔画像 (BRAV7使用)
Beautiful Realistic Asians( BRA )から、待望の新モデル V7 がリリースされました。
早速、生成してみました。
生成画像
画質も一段と綺麗になりました。
参考サイト(AnimateDiff)
AIでアニメーション制作!AnimateDiffの基本的な使い方【Automatic1111】

AnimateDiff (txt2img)
設定方法などは、以下をご覧ください。
モデル:beautifulRealistic_v7
プロンプト:
1girl, japanese, cute, smile, realistic, best quality, 8k, pink dress, perfect brightness,
0: standing
10: close_eyes
16: walking
20: open_eyes
<lora:sweet_dress_style2_v1:0.8> ,
設定内容
FPS8フレーム、総数32フレーム(4秒)
生成された32枚の画像
各画像をより綺麗に(img2img)
img2imgを利用し、生成された画像をより綺麗にしてみる。
- ピクチャフォルダに「 sample 」フォルダを作成
- output用に「 sample_output 」フォルダを作成
「 sample 」フォルダに先ほど生成した 32枚の画像をコピー する
「Batch」タブを選択し、以下のような設定にした。
より綺麗な画像に変換したいので、画像サイズを1.5倍に上げた
ControlNetを以下のように設定し、各画像の相関性を合わせるようにした
BRAV7で生成したAI画像をroop に 用いた
連続画像を動画に変換
連続画像を動画に変換する
- Flowframes を使用
詳細は、以下を参考にしてください
編集などの設定は、以下の通りです。
完成動画
sample_output-2x-RIFE-RIFE3.8-16fps.mp4
YouTube用 編集動画
YouTube用に編集した。
VideoProc Vlogger を使用し、BGMやモーション設定などを追加した。
音源
フリーBGM「センチメンタル・リバー (instrumen…」

【 VideoProc Vlogger 編集画面】
完成動画(YouTube用)
※高画質に変更してから 、 ご確認ください
↓(高画質) 1080p60HD で確認するとより綺麗な動画になります↓


はじめに
前回、sd-webui-AnimateDiff AI動画 (img2img)で動画を生成した。
しかし、AnimateDiffのみを使用した際の滑らかな(ヌルヌルした)動画を作成することができなかった。
そこで、animatediff+openposeで何かできないかと検索していたところ、以下のようなサイトを見つけた

ComfyUIにて作成していたため、sd-webuiで生成できるように考案した。
準備
Openpose画像(openpose_samples.zip)を以下のサイトから、ダウンロードする
※下記サイト様より、Openpose画像をお借りしました
【AIアニメ】ComfyUIとControlNetでAnimateDiffを楽しむ

【こちらからもダウンロード可能( openpose_samples.zip )】
連続画像を動画に変換する
Openpose画像を動画にするため、Flowframesを使用した

編集などの設定は、以下の通りです。
Openpose画像を動画にした
※ゆっくりバージョン
openpose_samples-4x-RIFE-RIFE3.8-16fps.mp4
動画生成
画像準備
モデル: BracingEvoMix_v1.safetensors
プロンプト:
1girl, grin, smile,standing,hair fluttering, tilting head,wave hand,perfect light,
pink dress, on stage,realistic, best quality, <lora:sweet_dress_style2_v1:0.8> ,
Sampling method: DPM++ 2M Karras
Hires. fix:1.2
Number of frames:48 (6秒)
ControlNetにて、「OpenPose」を使用
動画元が、 OpenPose 動画のため、Preprocessorを 「 none」 に変更 (←※重要)
roopで顔を固定する (Upscaler scale は R-ESRGAN 4x+ 選択)
完成動画
VideoProc Vlogger使用(BGM追加など)
考察動画
今回作成したAI動画と元のOpenPose動画の比較
考察
連番画像を動画に変更することにより、動作をある程度固定した状態で、綺麗な動画(ヌルヌルした動画)を生成することができた。
なおかつ、Flowframesソフトを活用することにより、OpenPoseを動画にすることも簡単に作成できた。

はじめに
前回、sd-webui-AnimateDiff AI動画を生成できた。
img2imgを用いても生成できることが分かった。
画像を2枚用意することによって、最初と最後のポーズを決められる。
これにより、連番のような画像を用意することにより、継続する動画を作成することができるようになると思われる。
参考サイト
sd-webui-AnimateDiffをイメージtoイメージで使う方法【AIアニメーション】
txt2img
連番画像の準備
連番画像生成(6枚)
txt2imgにて、似たような画像(連番画像)を6枚生成

ControlNet> IP-Adapter で衣装をある程度固定する

roopにて、顔画像をある程度固定する。

生成されたAI画像に連番を振る

img2img
先ほど作成した、「 001.png 」をimg2imgに貼り付ける (動画 最初の画像 )

他の設定などは、以下の通りです。


Latent power より下の場所に、「 002.png 」をimg2imgに貼り付ける(動画 最後の画像 )

roopにて、顔画像をある程度固定する。

生成途中の画像は、以下のようになる。

1つの動画生成を終了後、 最初の画像 と 最後の画像 を変更する
最初の画像 を「001.png」から「 002.png
」にする
最後の画像 を「002.png」から「 003.png 」にする
これを連番ごとに変更することにより、動画の継続性が保たれる。
作成したい動画の最後のフレームを、最初の画像に戻すとループ状に動画が動く
一番最後の動画生成の 最後の画像 を「 001.png
」にすることにより、全体の動画がループ状となる。
最初の画像 を「 006.png 」にする
最後の画像 を「 001.png 」にする
動画編集
img2imgで生成した6つの動画を編集ソフトでまとめる

これで、1つの動画を生成できた。
EBsynth生成(背景交換)
背景をEBsynthを用いて変更する
詳細は、以下をご覧ください。
動画編集 (BGM追加など)
VideoProc Vlogger 使用(BGM追加、フォーカスの動き、ダンスのスピード速度の変更など)
音源(フリー素材): また明日


完成動画