という動画シリーズを最近投稿している。

Daily AlpacaHackという、毎日初心者向けの問題を1問出題してくれる常設型のCTFイベントがあって、その問題を大体毎日解いて、動画にして投稿している。 解いている様子を画面録画して、画面右下にゆっくりつくよみちゃんが登場し、そのとき考えていたことや喋っていたことを喋ってくれて、字幕がついている。なんとなくBGMもついている、みたいな単純な動画をアップロードしてる。
初心者の人にとっては他人が解いている風景が動画という形式でもれなく示されて、考えていることが常に喋られているというのは嬉しいのではないかと思っていて、自分の取り組みがDaily AlpacaHackの盛り上がりに寄与できていたら嬉しい。
これをやってるのはなんとなくできそうだったからだけど、実際仕組みを組んでみたら結構簡単にできて感動したので、仕組みを紹介。
ざっくりこういう感じ。
graph TD
A[OBS Studio: 録画データ] --> B[OpenAI Whisper: 文字起こし]
B --> C[SRTファイル: 手動修正]
C --> D[SHAREVOX: 音声生成]
C --> E[SHAREVOX: 母音・発話時間取得]
F[PSDファイル: イラスト素材] --> G[表情合成処理]
E --> G
D --> H[ffmpeg: 合成処理]
A --> H
C --> H
G --> H
H --> I[完成動画]
style A fill:#f9f,stroke:#333
style I fill:#bbf,stroke:#333
style H fill:#ff9,stroke:#333
録画・文字起こし・音声合成……みたいな難しいところは全部既存のアプリケーションがなんとかしてくれて、自分はちょっと高級なffmpegのwrapperを書いたら完了。ffmpegの扱いもAIに聞いたらよく、良い時代。Whisperみたいな高級書き起こしツールが登場してくれたおかげで、自分は適当にマイクに向かって喋りながら問題を解いておいたらある程度意味の通る台本ができあがっているので、修正の手間はほとんどない。10年前にこれを作るのは簡単ではなかっただろうな。
ただ不満もあって、今改善したいのは文字起こしが画面というか実際の発話に比べてちょっと早すぎるのと文字起こしの精度がわるいこと。だけど、これは自分の努力では難しくて、Whisperの進歩に頼ることになりそう。
個人的にはSHAREVOX(VOICEVOXのフォーク? つくよみちゃんの音声が入ってるのはこっちだった)のAPIで発話の長さや母音が取れたのが面白かった。これを元にゆっくりつくよみちゃん素材のPSDから口の形を合成する、みたいなこともできて楽しい。しかしこういうのはよくみる動画とかでもやられている気がするので、自分で作らなくてもなんかツールがあったんっだろうと思っている。
作ってて一番苦労したのは動画の合成部分で、最初はmoviepyを使ってこのフレームはこの表情で音声はこれ、みたいなのを指示していたんだけど、フレームごとにループしてffmpegに入力する、というのをpythonでやると遅すぎて、30分の動画の合成に10時間くらいかかっていた。これはpythonのソースコードをclaude codeに読ませて「Goにして。並列化できるところは並列化して」と言ったら改善した。Goで書かれたffmpegのwrapperができあがり、30分の動画も1時間ちょっとで出力されるくらいになった。
一応作ったコードも公開しておきます。アセットはリポジトリに含めてないのにソースコードにベタ書きしてるから、適宜フォントやBGM、ゆっくりつくよみちゃん素材をいい感じの場所に配置してもらう必要がある。
https://github.com/theoremoon/yukkuri-tsukuyomi-chan-jikkyogithub.com
これでだれでもゆっくりつくよみちゃん実況がつくれます。でもそれよりDaily AlpacaHackを解いてほしい。解けなかったらつくよみちゃんが解いている動画をみてupsolveしてください。動画がわかりにくかったら教えてください。よろしくお願いします。