前回の記事では、n8nからComfyUIやIrodori TTSを呼び出し、画像や音声を自動生成する環境を整えました。
次の目標は、
「生成した音声から、自動で字幕(SRT)を作ること」
です。
動画を作るなら字幕は欠かせません。
そこで今回は、OpenAIのWhisperをローカル環境に導入し、n8nから呼び出せるようにしました。
Whisperをローカルに導入
まずはPython仮想環境を作成し、Whisperをインストールしました。
CPU環境でも問題なく動作し、日本語音声の文字起こしにも対応しています。
最初はサンプルコマンドをそのまま実行してしまい、
No such file or directory
というエラーが発生。
原因は単純で、サンプルのファイルパスをそのまま使っていただけでした。
実際のIrodori TTSの出力先を確認し、正しい音声ファイルを指定すると無事動作。
Whisper単体での文字起こしに成功しました。
Irodori TTSとの連携成功
続いて、Irodori TTSで生成した音声をWhisperへ渡します。
すると、
音声ファイル(wav) ↓
字幕ファイル(srt)
が自動生成されました。
これで、
音声生成 → 字幕生成
という流れが完成しました。
n8nからWhisperを呼び出す
最初はExecute Commandノードを使う予定でした。
ところが、n8n 2.xではデフォルトで無効化されており、検索してもノードが表示されません。
Docker Composeの設定を見直してExecute Commandを有効化。
しかし今度は、
WhisperはホストOSにある 一方で Execute CommandはDockerコンテナ内で実行される
という構造上の問題が判明しました。
そこで方針転換です。
FastAPI化で解決
WhisperをFastAPIとして公開し、
n8n
↓
HTTP Request
↓
Whisper API
↓
字幕生成
という構成に変更しました。
これならComfyUIやIrodori TTSと同じHTTP通信で扱えます。
実際にHTTP POSTで音声ファイルを渡すと、
-
Whisperが実行
-
字幕(SRT)生成
-
n8nへ成功レスポンス
まで確認できました。
ローカルAI同士がHTTP APIで連携する形になり、ワークフロー全体が統一されました。
Dockerとの連携も整理
さらに、n8nコンテナからWhisperやIrodoriの出力フォルダが見えるようにDocker Composeへボリュームマウントを追加。
これにより、
-
Irodori音声
-
Whisper字幕
をn8nから直接扱えるようになりました。
ローカルAIを増やすだけでなく、それぞれが連携できる環境になってきたのを実感しています。
必要な時だけ起動する運用へ
以前、ComfyUIやIrodoriを起動したままにしてしまい、気付けばメモリ使用量が14GB近くまで増えていたことがありました。
その反省から今回は、
-
systemdサービス化
-
自動起動は無効化
-
必要な時だけ起動
-
使い終わったら停止
という運用に統一しました。
普段はメモリを消費せず、必要な時だけAIを動かせます。
ただ、ここで新たな課題も見えてきました。
今はComfyUI、Irodori TTS、Whisperなどを、それぞれ個別に起動しています。
そのため今後は、
「動画生成モード」なら必要なAIをまとめて起動し、作業が終わったらまとめて停止する。
そんなシェルスクリプトやsystemdを組み合わせた仕組みも作ってみたいと思っています。
AIを導入するだけでなく、使う時の手間まで自動化する。
そこまでできれば、ホームラボはさらに実用的な環境になりそうです。
次回はいよいよ動画生成へ
今回で、
-
n8n
-
Irodori TTS
-
Whisper
の連携が完成しました。
次は、動画生成に欠かせないFFmpegのAPI化に挑戦します。
ComfyUIやIrodori TTS、Whisperと同じようにHTTP APIとして呼び出せるようにし、n8nから統一した方法で扱える環境を目指します。
そして、
-
ComfyUI(画像生成)
-
Irodori TTS(音声生成)
-
Whisper(字幕生成)
-
FFmpeg(動画生成)
これらを実際にn8nで一つのワークフローとして接続し、
「記事を渡したら、画像・音声・字幕・動画まで自動生成するAI制作工場」
がどこまで実現できるのか試していきます。
一つ一つ見ると小さな進歩ですが、ローカルAI同士がHTTP APIでつながり始めたことで、当初思い描いていたホームラボの姿が少しずつ形になってきました。
完成まではもう少し。
この「AI制作工場」をどこまで進化させられるか、楽しみです。


コメント