【副業実験記#3】雑学動画自動生成ツール自作のため、技術やツールを選定した話

子育てSEパパのIT×AI×副業ラボ_副業実験記_3 副業実験記

つづき。


はじめに

前回は、雑学動画を自動生成する手段として「Vrew」を試してみました。

「Vrew」で雑学動画を簡単に自動生成できることが分かりましたが、その一方で、用意されているプランでは、想定している数(最低でも1日1件)の動画が作れないということも分かりました。

そこで、雑学動画を自動生成する仕組み(以降、雑学動画自動生成ツール)を自作できないか検討することにしました。

検討方針を考えてみた

検討するにも、そもそも分からないことが多いため、今回はパイロット開発的な感じで、試験的にツールを作りながら検討していこうと考えました。

ただ、いきなり作り始めても、手戻りが多いと効率が悪くなることが予想できたので、ある程度は考えを整理しながら開発を進めようと思いました。

システム開発の要求定義や要件定義の観点でツールを考えてみた

まずは、頭の中でぼんやりと浮かんでいる考えを、システム開発でいうところの「要求定義」や「要件定義」の観点で、ざっくりメモに書き出してみました。

要求定義メモ

  1. YouTubeやTikTokへ投稿する雑学動画を自動生成するツールが欲しい
    • 可能であれば、YouTubeやTikTokに生成した動画を自動投稿したい
  2. 可能な限りお金をかけずに作りたい
  3. 可能な限り少ない労力で、自動生成できるようにしたい
  4. 自動生成の結果(成功や失敗など)は、生成時に分かるようにしたい
  5. 自動生成の結果(成功や失敗など)は、記録に残しておきたい
  6. 自動生成に失敗しても、途中からやり直せるようにしたい
  7. 可能であれば、レンタルサーバーやVPSで運用したい
  8. (当然ですが)法令を遵守すること

要件定義メモ

  1. 雑学動画自動生成機能(1件 or 複数件)
    • 台本(.txt)をもとに、音声(.wav)・背景画像(.png)・字幕(.png?)を自動生成後、まとめて動画(.mp4)として出力する
  2. 雑学動画自動生成機能の自動実行機能
    • ジョブ管理ツールなどにより、定期的に雑学動画を自動生成する
  3. YouTube自動投稿機能
    • 自動生成した動画をYouTubeへ自動投稿する
  4. TikTok自動投稿機能
    • 自動生成した動画をTikTokへ自動投稿する

使用する技術やツールを検討してみた

使用する技術やツールですが、以下の観点でざっくり検討しました。

  • 手元のパソコン(Windows系OS)で使えるもの
  • レンタルサーバーやVPS(Linux系OS)で使えるもの
  • 学習コストなし or 低いもの
  • 費用なし or 安いもの
  • AIや自然言語処理と相性の良いもの
  • 外部システムのAPI(YouTube Data APIなど)と連携しやすいもの
  • テキストから音声を生成できるもの
  • テキストから背景画像を生成できるもの
  • テキストから字幕を生成できるもの
  • 音声や画像から動画を生成できるもの
  • 処理速度は、最低でも1日1件の動画が生成できれば良い程度

そもそも、テキストから音声や画像を生成できないとお話にならないと思ったので、その辺りから調べ、そこから派生して使用する技術やツールを調べてみることにしました。

テキストから音声を生成できるものを調べてみた

テキストから音声を生成できるツールやサービスは色々とあるようですが、その中でも、「VOICEVOX ENGINE」というツールが使えそうだということが分かりました。

VOICEVOX」という“テキスト読み上げ・歌声合成ソフトウェア”があるのですが、その内部で使われている“音声合成エンジン”が配布されており、それが「VOICEVOX ENGINE」でした。

実体はHTTPサーバーということで、「API」経由でコマンドやプログラミング言語から操作できるところが、今回の要件に合っていました。

オープンソース(LGPL v3)で提供されているため、無料で使えます

Dockerイメージでも提供されているため、Dockerを使えば、コマンド一つで手元のパソコンに簡単にインストールできそうでした。

テキストから背景画像を生成できるものを調べてみた

テキストから画像を生成できるツールやサービスは色々とあるようですが、その中でも、「Stable Diffusion web UI」というツールが使えそうだということが分かりました。

「Stable Diffusion」という“テキストに基づいて画像を生成してくれるオープンソースのAIツール”があるのですが、そのツールをWebブラウザ上で操作できるように派生したものが「Stable Diffusion web UI」です。

何といっても、手元のパソコンに無料でインストールして使えるところや、API」機能が提供されており、コマンドやプログラミング言語から操作できるところが、今回の要件に合っていました。

※手元のパソコンで動かすには、パソコンにある程度の性能が必要です。

インストール時にPythonとGitのインストールを求められたり、サンプルスクリプトがPythonだったりと、プログラミング言語的にもPythonと相性が良さそうに見えました。

仮に、このツールが使えそうになくなった場合は、「いらすとや」さんの画像を使わせてもらおうとも考えました。

テキストから字幕を生成できるものを調べてみた

字幕と言っても、テキスト画像を生成して画像に組み込むのか、SRTファイル(字幕ファイル)を生成して動画に組み込むのか、色々な方法があるようでした。

テキスト画像については、以前、Pythonで「Pillow」という画像処理ライブラリを使ったことがあり、そこでテキスト画像を生成したことがあるので、技術的に可能なことは分かってました。

SRTファイルについては、初めて扱うため、試行錯誤が必要だろうと思いました。

自然言語処理(NLP)ツールについて調べてみた

字幕を作成する際、自動でテキストを折り返したいと思いました。

もしかしたら、標準機能で折り返し機能があるかもしれませんが、機能が用意されていなかったり、使えなかったりした場合に備えて、自然言語処理ツールについて、少し調べてみました。

調べてみると、「Python」に色々な言語処理ツール(ライブラリ)があるようで、中でも、「GiNZA」というオープンソースの日本語に特化した自然言語処理ライブラリがあることが分かりました。

内部で「spaCy」という自然言語処理ライブラリを使用しているようですが、「GiNZA」を使うことで日本語の処理の精度が上がりそうでした。

このライブラリを使い、日本語テキストを自然な形で折り返せるようにできれば良いな、と思いました。

他にも「KeyBERT」という文章から重要なキーワードを抽出してくれるライブラリがあり、日本語にも対応しているようなので、これも使えそうでした。

音声や画像から動画を生成できるものを調べてみた

テキストから音声や画像を生成する際、プログラミング言語としては「Python」を使うと良さそうだと思ったため、Pythonで音声や画像から動画を生成できるものがないか調べてみることにしました。

調べたところ、Python「MoviePy」という動画編集ライブラリがあることが分かりました。

この「MoviePy」を使えば、音声や画像を結合して動画を生成できるようでした。

「MoviePy」は、内部で「FFmpeg」という“オープンソースの動画や音声編集ソフトウェア”を使用しているようで、このソフトもインストールしなければならないようでしたが、WindowsやMac、Linuxなど、様々なOSで動作するということで、問題はなさそうでした。

プログラミング言語は何を使うか

仕事や趣味で使ったことがあるプログラミング言語は、色々とあるのですが、今回は使用する技術やツールと相性が良さそうな「Python」を使うのが良さそうに感じました。

フレームワークは使うか

ここは悩みどころで・・・。

レンタルサーバーやVPSで運用する際、「Webの画面があると便利そうだな」とは思いましたが、余力次第だろうと思いました。

候補としては「Django」です。

使ったことがあるし、最初から管理画面が提供されていて、しかもカスタマイズしやすいので、使いやすくできそうだと思ったからです。

統合開発環境(IDE)は使うか

開発効率を上げるために統合開発環境(IDE)は使おうと思いました。

「Python」を使うなら、使ったことがある「PyCharm」というPythonと相性の良い統合開発環境(IDE)にしようと思いました。

バージョン管理ツールは何を使うか

仕事で「SVN」や「Git」を使っていたので、慣れたツールを使おうと思いました。

今回は、いつ手元のパソコンが壊れても良いように、「GitHub」というWebサービスを使用し、ソースコードなどをアップロードして管理していこうと思いました。

仮想環境は使うか

手元のパソコンの環境を汚さないためや、手元のパソコンとレンタルサーバーやVPSの環境差異を減らすために、「Docker」という仮想環境ツールを使おうと思ってました。

今回は、Dockerを使いやすくしてくれる「Docker Desktop」を使いたいと思いました。

Pythonでも、複数バージョンのPythonを共存して使えるようにできる「py」コマンドや「venv」という仮想環境の仕組みがあるため、それも使おうと思いました。

外部サービスのAPIは使うか

YouTubeやTikTokに生成した動画を自動投稿したいと思っていたので、使うつもりでした。

ただ、調べてみると、YouTubeのAPIでは動画を自動投稿できそうな機能がありましたが、TikTokにはないようでした。

なので、TikTokの動画投稿は手動で行う必要がありそうでした。

他に、テキストから画像を生成するツール「Stable Diffusion web UI」を使う際、日本語よりも英語のプロンプトの方が求めている画像が生成できそうだったので、翻訳サービスのAPIを使おうと思いました。

候補は、Google翻訳のAPIかDeepL翻訳のAPIです。

その他

ユーティリティソフトとして、以下を使うことを考えてました。

  • WinMerge(テキスト・ファイル比較ソフト)
  • WinSCP(FTPクライアントソフト)
  • TeraTerm(ターミナルエミュレーターソフト)

また、調べもので使うために、以下のサービスを使うことを考えてました。

  • ChatGPT

※もともと、ChatGPTの有料プラン(Plusプラン)を使っています。

使用する技術やツールを検討してみた結果

検討した結果、以下の技術やツールを使うことにしました。

  • Python(バージョンは他技術やツールと整合性の合うものにする)
    • venv
    • Pillowライブラリ
    • GiNZAライブラリ
    • KeyBERTライブラリ
    • MoviePyライブラリ
    • Djangoフレームワーク
  • PyCharm(統合開発環境)
  • Docker
    • Docker Desktop
  • Git
  • GitHub
  • VOICEVOX CORE
  • Stable Diffusion web UI
  • FFmpeg(MoviePyライブラリが内部で使用しているため)
  • YouTube Data API
  • DeepL API
  • WinMerge
  • WinSCP
  • TeraTerm
  • ChatGPT

これらの技術やツールを使いながら、「雑学動画自動生成ツール」を自作していきます。

おわりに

色々と技術やツールを検討していく中で、自分が使ったことのある技術やツールだけでは、今回の雑学動画自動生成ツールは自作できそうにないことが分かりました。

初めて使う技術やツールが多々ありますが、ChatGPTを活用しつつ、効率よく試行錯誤していきたいと思います。


今回の記事も、同じように副業に悩んでいる人、手探りで取り組んでいる人にとって、何かの参考になれば嬉しいです。

これからも記録を続けていく予定なので、よければフォローしてもらえると嬉しいです。


つづき。

タイトルとURLをコピーしました