2025年3月、DeepSRT のユーザーが一万人を超えたことを報告した投稿に、こう書いた。
whisper を組み合わせて好みの字幕を作る方法も紹介し、CC 字幕を提供していない動画も完全にカバーしていきます。
この一文は一年半近く眠っていた。1.3.0 がそれを果たす——ただし whisper ではなく。
計画では whisper だった。なぜ違う答えになったか
音声認識が難しかったことは一度もない。難しいのは音声を手に入れることだ。動画は YouTube の公式プレイヤーの中で再生されていて、その音声を取り出す API は存在しない。残りの道はすべて塞がっていた。
システム音声をキャプチャする?画面収録の権限が要る——ユーザーが頼んでもいない機能のために、macOS で最も物々しい許可ダイアログを出すことになる。音声ストリームをダウンロードする?DeepSRT はダウンローダーではないと公言してきた。ダウンロードも変換も保存もしない。一つの機能のためにアーキテクチャの一線を越える価値はない。
つまり whisper の問題は認識力ではなく、音声に手が届かない、そして汚い方法で取るつもりがないことだった。
答えは拍子抜けするほど単純
Gemini は公開されている YouTube の URL を、そのまま動画入力として受け取れる。
それだけだ。アプリが URL を渡すと、モデルが動画を観て、タイムスタンプ付きの文字起こしが返ってくる。ダウンロードも変換も保存もなし——「サーバーがない」という設計とも完全に一致していて、動くのはあなた自身のキーの上だ。
計測が設計を書き換えた。二度も
一度目の計測。同じ動画に対して、要約だけを頼むと input は 19,393 トークン、完全な文字起こしを頼むと 19,431 トークン——ほぼ同一。動画の取り込みが固定費であり、何を尋ねるかは関係ない。結論は明快で、要約と文字起こしで動画呼び出しを二回に分けてはいけない。同じ動画に二度払うことになる。
そこで長い動画を10分の窓に切った。安定のため、段階表示のため。すると二度目の計測が来た。どの窓も、動画全体を取り込み直している。28分の動画の最後の8分だけを頼んでも、請求は全編分の 156,762 トークン。三つに切れば三倍払う。
自分たちのコミットログに書いた設計理由が、自分たちの計測に覆された。最終版は逆転の発想で、まず楽観的に全編を一度で頼み、出力が本当に途切れた範囲だけを窓で補う。コストは三分の一に落ちた。
モデルはサボる。しかも具体的なやり方で
ログから二つの話を。
長い動画の最後のセクションを頼むと、モデルは時々 SRT ではない何かを返してくる——謝罪、動画の描写、とにかく字幕以外の何か。修正はリトライ一回、フォーマット要求をより強い言葉で言い直すだけ。「説明するな、謝るな、1 の行から出力を始めろ」。それで足りた。
全編を一度で頼むと、28分に対して60個のキューが返ってきた——平均29秒。言葉は正しく、要約には影響なし。だがライブ字幕としては使い物にならない。画面に文字の壁が30秒も居座る。「各キューは最大8秒まで」と一行足したら 207 個、平均8.3秒になった。追加コストは約1セント。
正直な値札
字幕がまったくない30分の動画を、自分の Gemini キーで一度文字起こしして、およそ 0.05 ドル(Google の YouTube URL 入力は現在プレビュー段階のため、実際には無料)。
この機能は既定でオフだ。あなた自身の AI クレジットを消費するから、自分で入れるスイッチにしてある——設定 > 字幕がない動画——そして実行中は、進捗表示が何をしているかを明言する。コストを立て替えないし、隠さない。初日からそういう約束だ。
あの一万人の投稿は「二万人になったらまた会いましょう」で締めていた。果たした。「CC 字幕のない動画のカバー」も、いま果たした。
DeepSRT は買い切り、サブスクリプションなし。Mac App Store で。