画面の中のスライドまで読んで、一つのタイムラインにする ほとんどの講義要約サービスは、音声を STT で書き起こしてから、そのテキストを要約します。ところが授業動画で本当に大事なものはプレゼンテーションの中に多くあり、講師がそれを読まずに進んでしまうことも少なくありません。スライドに出てきた数式や図表が、そのまま失われるという問題が起きます。
変化のない区間をまとめ、長く映っていた画面だけを読む そこでコスモのノートには、動画のフレームを分析するロジックを入れました。summarizer は ffmpeg を使ってフレームの変化を追跡します。フレームの変化率が5%未満であれば同じフレームとみなし、同じフレームが長く続いたものをランキングにします。そして、上位70%に当たるフレームを見つけて OCR を行います。
STT の結果と OCR の結果を、一つのタイムラインにマージします。最後にこのタイムラインを Worker に渡し、事前にチューニングしたプロンプトで要約ノートを生成します。
ユーザー1人のために高性能マシンを24時間動かしておかなければならない、というコストの問題を解決する コスモのノートは ffmpeg で動画のフレームを処理する必要があるため、その瞬間はかなり良いマシンを必要とします。高性能なインスタンスを常時動かしておくと、誰も使っていない時間にも費用がかかります。そこで動画処理の機能にはサーバーレス構成を採用し、費用を大きく削減しました。
Workers は最大100MB までしかアップロードを受け付けられません。100MB 未満の動画はほとんどないので、サーバーはバケットに直接アップロードできる Presigned URL を発行してクライアントに渡します。ファイルはクライアントから R2 に直接アップロードされます。
アップロードされたファイルは、estimator が検査します。壊れたファイルや不正なファイルでないかを確認し、問題がなければサンプリングして費用を見積もります。ユーザーが見積もられた金額を支払うと、ノートの生成が始まります。見積もりより分析すべき量が多いと損をすることもありますが、平均コストに倍率を掛けることで、この問題を最小限に抑えました。
この構成が、そのまま料金プランになりました。2時間の動画で、約130円かかります。他社のサービスが3時間分の動画を分析するのに月790円を求めることを考えると、試験期間にまとめて使う学生にとってはとても合理的な仕組みです。インフラも使った分だけ請求される構成なので、持続可能なシステムです。
フラッグシップモデルを高効率モデルに替えながら、ノートの品質は守り抜く 開発初期は、Claude のようなフラッグシップモデルを使っていました。プロンプトのチューニングやタイムラインの整理をあまりしなくても満足できる結果が出ましたが、ノートを1本生成するのにお金がかかりすぎました。2時間の動画を Claude で要約して130円で提供するのは、慈善事業でもなければ成り立ちません。
今は Gemini や DeepSeek のような、低コストで高効率のモデルを使っています。その代わり、一度にすべての作業を任せず、目次の生成、本文の生成、画像の配置、推敲などにパイプラインを分けました。小さなモデルは特にコンテキストが大きくなると品質が急激に落ちますが、先に目次を作って1項目ずつ書かせるように仕事を分ければ、品質はそれほど落ちません。また、キャッシングによって費用が一部削減されることもあります。
コンテキストのせいで品質が落ちる問題は解決しましたが、推論能力の差が問題でした。そこで Fable のようなフラッグシップモデルと今のパイプラインの結果を比較するハーネスを作り、定期的に実行しています。Fable ほどの性能は出せませんが、コストのわりに良い品質が出ています。