見出し画像

寝ている間に流行りの雑学動画を生成してくれるツールの作り方

こんにちは!皆様の副業を応援する自動化ツールや生成AIプロンプトを公開しているあずさです。

今回は流行りの雑学動画を生成できるツールを作っちゃいました。

実際の挙動

所定の形式で台本を作ります。見慣れない形式かと思いますが、ベタ打ちテキストから所定の形式に変換するエクセルと、ChatGPTが台本を生成してくれるプロンプトが付属するので、簡単に作れます。(この台本もChatGPTです。)

画像

あとはコマンドを1行実行するだけで、、、

画像

流行りのフォーマットの雑学動画ができちゃいます。ナレーション、テロップはもちろん、フリー画像まで取得されるので、そのまま投稿できる完全仕様です。音声とBGMは任意のものに使われます。(音声はVOICEVOXから選びます。)

フリー画像を自動取得するだけでなく、いらすとやなどの任意の画像を使用することもできます。

後から自分で編集できるよう、画像なしの白背景で出力することも、縦動画でなく横動画で出力することも自在です。(任意の解像度を指定できます。)

複数の台本を一括で読み込ませられるので、寝ている間に雑学動画を量産してくれます。(台本は1つのファイルに複数記述できるので、ファイルを大量に作ったりする必要もありません。)

【大幅アップデート】Ver2.0.0を公開しました

20241007: 主に以下の変更を加えて大幅にアップデートしました。(既存ユーザーの方は再度インストールして適用してください。)

初回リリースでは不要だったMicrosoft C++ Build Toolsのインストールが必要になります。「必要な環境」の項目より手順を確認してインストールしてください。引き続きMicrosoft C++ Build Toolsが不要な初回リリース版(Ver1.0.0)も記事最下部にて公開しています。

  • ナレーションに読み仮名を指定できるようになりました。 (これでVOICEVOXに難読漢字や英単語を正しく読ませられます)

  • テロップと画像の間に無駄な余白が空かないよう、画像の大きさに合わせて自動で詰めて表示されるようにしました。

  • Tiktokなどの動画情報と被りにくいように、テロップと画像の位置を調整できるようにしました。

  • 画像の大きさを指定できるようにしました。

  • 一部の全角記号が文字化けする問題を解決しました。

  • 動画に対してBGMの長さが足りない場合、自動でループされるようにしました。

本当の自動化をしてみませんか?

VrewやNolangなど近しいことができるサブスクサービスはたくさんあると思いますが、流行りの雑学動画のフォーマットに特化しているわけではないので手直しが必要ですし、結局はGUIアプリ(一般的なボタンをクリックして操作するアプリ)なので、

「テキストをセットして、、、仕様を選んで、、、生成ボタンを押して、、、生成されるのを待って、、、生成されたら書き出しボタンを押して、、、書き出されたら新しいプロジェクトを作って、、、」

という操作が必要な、パソコンの前にずっと座っていないといけない単純作業です。

私のツールはCLI(コマンドラインインターフェース)アプリと言って、コマンドプロンプトという黒い画面にコマンドを入力することで実行します。

GUIアプリのようなわかりやすい操作画面がない代わりに、書き出しまでの一連の操作が自動化されているので、台本を用意すればコマンド1つで寝ている間に大量の動画を生成することができます。ずっとパソコンの前に座ってなくていい、本当の自動化です。

画像

「プログラミングよくわからない」「黒い画面怖い」という気持ちはわかりますが、この記事を見てくださっている皆様は動画編集やAI画像生成にチャレンジしたことがある方々だと思います。
そのような経験のある皆様ならCLIアプリを使いこなせると思いますし、Stable Diffusionをインストールできたレベルの人には丁寧すぎてクドいかもしれないくらい詳細な手順を解説しています。

一緒に本当の自動化を始めませんか?

必要な環境

まず私のマシン環境は以下の通りです。ご自身のPCと比較してご判断ください。(Macは当然不可、MacでWindowsを動かした場合とWindowsでもARM系CPUの場合動くかわかりません。)

OS:Windows11 Home
CPU:AMD Ryzen 5 4600H
メモリ:16gb
GPU:GTX1650 mobile

また、以下の3つのツールがインストールされた状態である必要があります。

Python:私は3.10.6と3.12.5で動作を確認しました
Microsoft C++ Build Tools:14.0またはそれ以上
FFMPEG:私の場合は6.1-essentials_build-www.gyan.dev
VOICEVOX:私の場合は0.19.2

Pythonは以下の手順が参考になります。
https://www.python.jp/install/windows/install.html

Microsoft C++ Build Toolsは下記サイトの「具体的な対処手順」に従ってインストールしてください
https://tech.nkhn37.net/python-pip-install-error-microsoft-visual-c-14/
インストールサイズがかなり大きいのでご注意ください。

FFMPEGはこちらが参考になります。
https://jp.videoproc.com/edit-convert/how-to-download-and-install-ffmpeg.htm

私は試したことがないのですが、FFMPEGはこちらのようなより簡単なインストール方法もあるようです。
https://roboin.io/article/2024/02/25/install-ffmpeg-to-windows/

インストールが完了したら、コマンドプロンプト(windowsの検索窓で「cmd」と検索)でそれぞれ「Python」「ffmpeg」と入力してみて、バージョン情報が表示されれば完了です。(「Python」と入力するとPythonの対話モードが起動するので、バージョンが確認できたらコマンドプロンプトを閉じるか、「exit()」と入力して対話モードを抜けてください。)

VOICEVOXは以下が参考になります。

https://sosakubiyori.com/voicevox-introduction/

ここまでできていれば、ツール構築の50%は完了したと言ってもいいでしょう。

その他必要な準備

フリー画像の取得にpexelsというフリー画像サービスのAPIを使用するので、APIキーと言うものが必要になります。

APIというのは(一面的な説明ですが)アプリを作るときに、別のアプリの機能を使うために連携するための手法で、例えば美容室アプリに地図機能を付けたいときは、GoogleマップのAPIを使うことで、地図機能を作るのではなく、Googleマップの地図機能を流用することができるようになります。

今回は背景動画を生成するためにpexelsのAPIを使って画像を取得するという形でAPIを使用しています。

APIキーは以下の手順で取得できます。

まず、pexelsにアクセスし、右上の「参加」からアカウントを作成します。(Googleアカウントでログインもできます。)

https://www.pexels.com/ja-jp/

次にアカウントにログインした状態で、以下のURLにアクセスします。

https://www.pexels.com/ja-jp/api/

そうすると以下のような画面になるはずなので、「APIキー」というボタンを押してください。

画像

すると以下のような画面になります。「WebサイトのURL、アプリなど(該当する場合)」以外の部分をすべて入力して、「APIキーを生成」を押してください。

「Canvaの写真や~」のAPIの利用用途説明の部分は50文字以上の入力が必要です。

画像

私は以下のような感じにしました。

私個人が使用する、テキストから動画を作成するためのプログラムの中で、動画の背景に使う画像を、検索ワード用いて検索し、取得するためにAPIを使います。

そうすると、以下の黒帯部分に長い文字列が表示されます。それがAPIキーなので、メモしておいてください。(一度生成したAPIキーはPexelsからいつでも確認できます。)

画像

諸注意

この記事はあくまで作り方を指南する記事です。サンプルとしてそのまま実行できるスクリプトファイルを添付し、できるだけ再現性が高くなるよう丁寧に書いたら1.8万字、画像46枚となった実行手順と解説を記載していますが、動作の保証や返金保証、サポート等はできません。(ですが、Python導入からAPIキーの取得までの準備が完了していて、おそらく動画編集やAI画像生成の経験もお持ちの自己解決能力の高い皆さまなら、詰まることなくツールを構築できると思っています。また、コメント欄でのお問い合わせにはできる限りお答えします。)

ナレーションにVOICEVOX、背景画像の取得にPexelsを使用しています。ご利用の際はそれぞれの規約を遵守するようにお願いします。
VOICEVOX:https://voicevox.hiroshiba.jp/term/
Pexels:https://www.pexels.com/ja-JP/license/
PexelsAPI:https://www.pexels.com/ja-jp/api/documentation/#guidelines

以下私の解釈ですがVOICEVOXはクレジット表記必須、Pexelsは画像利用に関しては基本不要ですが、例えばAPIを使って背景をリアルタイムで変更しているWebサイトなどではクレジット表記が必要みたいです。当ツールでの使い方はそれに該当しないと思いますが、念のためVOICEVOXと同じようにクレジット表記するのが安パイかなと思います。

・上記の外部サービスおよびPython、FFMPEG等の本ツール作成に使われている技術の終了・仕様変更により本ツールの一部またはすべての機能が使用不可になる可能性があります。ご了承ください。

・台本生成のプロンプトはGPT4o、GPT4程度以上の生成AI向けです。(出力された台本のファクトチェックは各自で行ってください。)

・その他の仕様
BGM:お好きなBGMをセットできます。(MP3推奨)
生成時間:約1分、取得画像12枚の動画で、生成時間は私の環境で2分ほどです。環境によって異なるので、ご自身のPCスペックと比較して判断してください。画像を取得せず用意した画像を使用、または白背景で出力する場合は、同じ台本で35秒ほどでした。
制限:なし(Pexelsからの画像取得で動画を生成する場合は、PexelsAPIの利用制限に依存します。20241007時点では、1時間で200リクエストまでなので、つまり画像200枚まで。私の環境の場合、12枚の画像を取得する1分動画の生成に2分ほどなので、1時間で生成できる動画は30本、必要画像枚数360枚で上限に達してしまうため、一括生成で放置する場合は動画16本程度、これも理論値なので安全のために減らして10~12本程度に抑えるのが現実的な運用になるかと思います。また同じく20241007時点での月のリクエスト上限は20000リクエストまでです。このあたりはPexelsの仕様によるので適宜確認してください。画像なしや手持ちの画像を使って動画生成する場合は無制限です。)
出力形式:MP4
利用規約:ソースコードやその他添付物の転載、再配布・再販売、貸出・複数人での利用、譲渡、再利用(派生物の作成)等、作者が不利益を被る利用はお控え下さい。また、このツールに関連して生じたトラブル等の責任も負いません。動画はバンバン作って好きに使ってください!

・配布ファイルのダウンロードについて
当方Chromeブラウザで試したところ、危険なファイルと誤判定されてしまいダウンロードができないことがあるようです。
危険なファイルと誤判定された場合でも、以下の方法でダウンロードが可能です。(同じくnoteで添付ファイルが危険と判定されてしまった人がダウンロード方法を解説してくれています。)

当然危険なものは入れてませんし、note側でもファイルのウイルス判定は行われているのでご安心ください。
一応ファイルの中身も以下に開示します。念のためお知らせでした。ご了承くださいませ。

bgms: bgmファイルを格納するための空フォルダです。
fonts: フォントとそのドキュメントが格納されています。
my_modules: ツール実行のための自作モジュールが格納されています。
_variables.py: 設定ファイルです。
data.txt: 台本を書き込むテキストファイルです。
readme.html: ツールのドキュメントです。 
requirements.txt: ツールの実行に必要なライブラリをインストールするためのファイルです。
zatsugaku_generator.py: メインのスクリプトです。
雑学動画台本作成シート_2.0.0.xlsx: 台本を作るためのエクセルシートです。

Python導入からAPIキーの取得まで準備が完了し(完了している前提で話が進みます)、上記ご理解いただいた上で「挑戦したい!」と思ってくださる方は、ぜひ先へお進みください。一緒に頑張りましょう!

構築手順と基本的な実行手順を案内するので、実際に動かしてみるところから始めましょう。

ここから先は

19,717字 / 46画像 / 2ファイル

¥ 2,990

この記事が気に入ったらサポートをしてみませんか?

ピックアップされています

自動化ツールまとめ

  • 7本

コメント

いけてん
初めまして質問失礼します。
仮想環境にライブラリをインストールする段階でエラーが出てしまいます。
文字数の都合で冒頭だけ記載させていただきます。
--------

Running setup.py install for webrtcvad ... error
error: subprocess-exited-with-error

× Running setup.py install for webrtcvad did not run successfully.
│ exit code: 1
-------

以前の記事にあったピタ止め動画のツールの際は問題ありませんでした。
原因がよく分かっていないので対処方法など教えて頂けると幸いです。
あずさ@生成AI×プログラミングで自動化
いけてん さん

状況共有ありがとうございます。
確認なのですが、エラー文に以下の文言は含まれていましたか?

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

この文言を含むエラーが別PCで再現したので、それを解決する方向で現在調査中です。
状況異なる場合はお知らせください。(コメント連投して構いませんのでエラー全文をいただけると助かります。)

以上、よろしくお願いいたします。
あずさ@生成AI×プログラミングで自動化
いけてん さん

確認したところ、ライブラリのインストールにMicrosoft C++ Build Toolsというツールが必要なようでして、当該ツールのインストール手順を「トラブルシューティング>既知の事象」の項目に追記しました。

私の環境では既にインストールされていたためライブラリインストール時に必要であることに気づかず、事前に当該ツールが必要であることを記事の無料部分でお伝えできておらず申し訳ないです。
なので、念のためMicrosoft C++ Build Toolsが不要なVer1.0.0も記事最下部で再度公開しました。
(とはいえVer2.0.0の方が優れているので、差支えなければMicrosoft C++ Build Toolsをインストールして2.0.0をご利用いただけますと幸いです。)

そもそもエラー内容が先ほどお尋ねした内容と異なる場合はまたご連絡ください。
以上、どうぞよろしくお願いいたします。

いけてん
Microsoft C++ Build Toolsを入れたところ無事にライブラリインストールできました!
早急なご対応ありがとうございます!
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
生成AIが好きな趣味プログラマーです! 無料で使える画像編集&プロンプト生成Webツール→https://watermark-app-v2.onrender.com/
寝ている間に流行りの雑学動画を生成してくれるツールの作り方|あずさ@生成AI×プログラミングで自動化
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1