見出し画像

ゴーストのジオポリティクスの字幕付き動画制作自動化プロジェクト進捗1

最近は記事が遅れがちでごぜーますが、ちまちまとプログラミングをやっているのでどうしても時間が足りておりません。

前から自宅にもちゃんとしたAI coding agentが欲しいかもなぁとは思ってたのですが、Claudeとか便利だけど個人PCにはインストールしたくないし、するならちゃんとVM作ったりして切り離してあげないといかんと、かなり面倒くさいので先延ばしにしてきましたが、とうとうまあまあ使える環境を作りました。smolvmにするかDockerで済ませるか、悩みましたが単にcode-serverのDockerでやりました。MS toolsのPythonエクステンションを如何に避けるか問題で悩みましたが口うるさいbasedpyrightを黙らせることで解決。pyproject.tomlにreportUnknownMemberType = "none"が効きました。

[tool.basedpyright]
venvPath = "."
venv = "venv"
typeCheckingMode = "standard"
reportUnknownMemberType = "none"

[tool.basedpyright.analysis.diagnostics]
# webvttに対して「型定義がなくても無視する」を設定
reportMissingTypeStubs = "none"

プログラミングというかこの環境作る作業で相当時間が取られちゃいました。まあ今後の開発のスピードと質がアップすることを考えると先行投資でございます。

まあClaude使っても思いますが良いプロンプトを作るところをサボるとAIは世界最高峰に賢いのに、簡単に明後日の方向にプロジェクトが行ってしまい、無駄にトークンを燃やしてしまう罠がありますので、本当に活かすも殺すも自分次第であると肝に銘じることが必要ですな。

で、自宅LLM+OpenCodeではClaudeレベルには到底いかないだろうし、意味あるんか?みたいに思ってはいましたが、いざ使ってみると、これはないよりは相当楽になりますな。qwen2.5 coderの小さいのをautocompletionにつかい、あとはagentにもケチってスピード重視でGemma4のE4Bで始めましたが、あれ??これで十分かもwwwと思えます。

そもそもあまりAIに頼らない方針。設計の部分はGrok師匠やGeminiと普通にチャットで相談して実装した関数をもってきたりすれば自宅LLMの弱点は補えるので、後はちょっとIDEが賢くなり、簡単な作業を肩代わりしてもらえれば言い訳ですわ。そしてトークン燃やしても電気代だけが素晴らしい。

READMEにpip installで環境作る部分付け足してーとか、あ、gitignore書くの忘れたから付け足してとか、変数リネームするかーとか、フォルダ構成を変更すっかとか、こういうのは別に高い金を払うのは馬鹿臭いですな。自宅LLMで十分以上にできます。

で、Ep 108と109について昔字幕付き動画を作ったはずですが、これの成果を学習データとして再利用し、TF-IDFをベースにした話し手の口癖特徴抽出を実装できたので、あとは数エピソードで学習させたデータを完成させて、次の新しいエピソードに適用してみてどのくらい話し手推定が楽になるか見てみる予定。

whisperxの話し手推定はかなり精度の良いのですが、スピーカーラベルはSPEAKER__00とかですので、それをゴーストとかアッシュとかに置き換えていますが、whisperxのラベルがたまに間違っているときもあります。学習データが溜まって精度が上がれば、たぶんwhisperxのラベルの間違いまで指摘できると思うんですな。それが学習データの向上にフィードバックしてさらに間違いが指摘できるようにと、精度がどんどん上がるはずです。ブートストラップ楽しい。

で、話し手推定が終わったらあとは目次(TOC)制作ですかなー。これはGeminiとかNotebookLMにやらせたほうが良いかもしれないし、自宅LLMでもできるかもですが、悩みどころ。Gemma4では話の内容どんどん忘れていくみたいでライブストリーミング全体でもモデルとして扱えるコンテキストの長さは十分ですが、実質要約ができません。Qwen3.6だったらできるのかなー。こういうのコンテキストの長さというよりはattentionの実装の違いみたいで、試さないと分からないという。

TOCを作って俯瞰したサマリーがあれば、次にやる逐次翻訳のプロンプトに混ぜてあげて翻訳精度上げれると思うのですなぁ。

注意すべき翻訳単語リストも似たように最初からあったほうが翻訳の一貫性が出て良いと思うし、まだまだやることはありますなぁ。

これが完成したら、Badlandsメディアも翻訳チャネルをテレグラムに作りに戻る予定なのですが、ここで作ったツールはかなり役立ちそうです。

各投稿は短いので自動翻訳にそのまま投げるとかなり機械翻訳には大変な翻訳となります。今のWTM日本語訳チャネルはテレグラム翻訳を使用していますが、ひどいものです。

自宅LLMならもう少しマシになりますが、どうせやるならもっと文脈を足してあげると精度が上がるはずです。じゃあどうやってその文脈を自動で作るか?という部分ですな。Badlandsの説明とか投稿者の説明とか、ある程度は一定だから主導でプロンプトに追加で対応可能ですが、ここ数日の関連の投稿とかを引っ張ってきて翻訳プロンプトに追加できたら翻訳が気の利いたものになるはずです。

なので、投稿のデータベース化の時点で今までのようなSQLiteでそのままブッコミじゃなくもっとセマンティックなSearchが得意なのに置き換えたほうが良いでしょうなぁ。そうなると候補が沢山あって何が正解かわかんねwwみたいに途方に暮れますが、まあGemini大先生がこういうの筋が良いアドバイスくれるので相談しながらやりますわ。それにしてもGrokはどんどん質が下がりますねぇ。登場時は感情表現とか勝ってたけどGeminiのカジュアルな日本語もだいぶこなれて良くなりました。