Momory

技術的なこだわり

「ももりー」を支える設計思想と、具体的な技術的アプローチ。

Zero-Server Storage & ステートレス・プロキシ

ももりーは「ステートレス(状態を持たない)」な設計を徹底しています。翻訳リクエストはGemini APIと通信するために私たちのAPIルートを通過しますが、データがサーバーに永続化(保存)されることはありません。リクエストの実行時間中のみ存在する、透明なプロキシとして機能します。この設計により、ユーザーが爆発的に増えた際もサーバーインスタンスを横に並べるだけで柔軟にスケールでき、常に安定した低遅延サービスを提供可能です。

ももりー自身がユーザー情報のログ出力やデータベース保存を行うことは一切ありません。しかし、ももりーはGoogleの技術(Web Speech APIおよびGemini API)を利用しているため、データはGoogleのインフラへ送信されます。ももりー内にデータは留まりませんが、Google到達後のデータの扱いは、利用するAPIやプラン(無料枠か有料枠か)によって異なります。

Web Speech APIによる文字起こし

ももりーは、メディア音声の文字起こしにおいて、Chromeの最新Web Speech API仕様(Chrome 144+)を活用しています。

getDisplayMediaで取得したブラウザタブの音声(MediaStreamTrack)を、SpeechRecognition.start(audioTrack)の引数に直接渡します。これにより、ブラウザ内蔵の強力なエンジンが、マイクだけでなくあらゆるタブ音声を処理します。

ChromeのWeb Speech APIの実装は、音声データをGoogleのサーバーに送信して処理を行います(Googleアシスタントと同様)。これにより、PCへの負荷をかけずに高精度な認識が可能ですが、データはGoogleへ送信される点にご留意ください。

プライバシーとバックグラウンド更新を両立するサービスワーカー

シングルモニター配信(オーバーレイウィンドウが非アクティブになる)の課題を解決するため、ももりーは「サービスワーカー」を利用し、ブラウザ内にプライベートな「ミニサーバー」を構築します。

ダッシュボードが翻訳データをサービスワーカーに送信し、オーバーレイウィンドウはそれを定期的にfetchで取得します。このポーリング処理が、非アクティブなウィンドウの描画更新が止まるのを防ぎます。全プロセスはユーザーのブラウザ内で完結するため、会話データがPCの外に出ることはなく、「プライバシー第一」という私たちの約束が守られます。

LLM中心のコンテキスト・エンジニアリング

従来の翻訳とは異なり、ももりーはLLMの「インコンテキスト学習」能力を最大限に活用しています。最近の文字起こし結果をスライディングウィンドウ方式でプロンプトに含めることで、主語の省略や会話の流れといったライブ特有のニュアンスをAIが理解できるようにしています。

このアプローチにより、一文ごとの独立した翻訳では不可能だった、一貫性のある自然な字幕生成が可能になります。

前方一致キャッシュ(Implicit Caching)の徹底活用

Geminiの「前方一致キャッシュ」の恩恵を最大化する設計思想を導入。履歴を毎回1行ずつスライドさせるのではなく、一定量(約50行)に達するまで末尾に追加し続けます。

プロンプトの先頭部分を固定化することでキャッシュヒット率を向上させ、大幅な低遅延とコスト削減を両立。閾値に達した際は、履歴の古い半分を一括削除し、新たなベースプロンプトとして再安定させます。これにより、文脈を維持しつつ、常に高速なレスポンスを実現します。

プロンプトによるSTTエラー修復と文脈補完

リアルタイム音声認識(STT)は、本質的に不完全です。そこで、システムプロンプトに「翻訳前の修復レイヤー」としての役割を明確に指示しています。

「えーと」のようなフィラーワードや、言い直し、認識誤字を、これまでの会話履歴と照らし合わせてAIが自律的に修正。さらに、日本語に特有の主語の欠落を補い、翻訳後の言語で自然な文章になるよう補完させます。これにより、単なるSTTの出力結果を、洗練された「伝わる字幕」へと昇華させています。

適応型デバウンス:「爆速(Burst)」と「文脈(Flow)」の両立

単なる速さよりも、心地よい翻訳体験を目指し、ももりーは独自の「適応型デバウンス」アルゴリズムを採用しています。発話パターンとAPIティアに応じて、待機時間を動的に切り替える仕組みです。

しばらく黙った後に話し始めた際は「バースト・モード」が作動。有料枠では0.8秒、無料枠では1.2秒という短時間で翻訳を実行し、即座に反応します。喋り続けている最中(フロー・モード)も、有料枠では1.2秒まで短縮。あえてわずかに待つことで言葉の塊(コンテキスト)をまとめつつ、有料枠ならではの圧倒的なリアルタイム性を実現しています。

安定化レイヤーとレート制限戦略

プロダクトの安定性は、APIのレート制限への深い理解から生まれます。特に無料枠で最も重要な制約は、1分あたり15,000に設定されているTPM(分間トークン数)です。

この問題を解決するため、ももりーは「適応型トークン管理」戦略を採用しています。ユーザーが選択したAIモデルや発話の密度に応じて、AIに送信するデータ量を動的に調整し、制限を回避します。

  • セーフティ・フロア(レート制限保護)無料枠4.5秒、有料枠1.5秒の「最低インターバル」を厳格に適用。非常に活発なトークンや連続した発話の際でも、APIのRPM制限を遵守し、429エラーを防ぎます。
  • 動的トークン・トリミング会話履歴・成功例・辞書の件数を自動的に調整し、API制限の範囲内で翻訳を継続します。
  • ハイコンテキスト・パフォーマンス(有料枠)有料枠では制限が緩和。50行以上の豊富な履歴と複雑な指示を同時に活用し、極めて高い翻訳精度を実現します。
  • 18時間の連続稼働保証無料枠のRPD(14,400回/日)でも、ももりーのアルゴリズムなら1日約18時間の連続配信が可能です。ガチ配信者の長時間配信も支えます。

リアルタイム安定化レイヤー

Web Speech APIの結果は中間報告が多く、表示が「揺れる」ことがあります。ももりーは、認識の確信度や論理的な区切りを待ってから翻訳をトリガーする安定化レイヤーを設け、読みやすい字幕表示を実現しています。

これにより、テキストのちらつきを抑え、視聴者がコンテンツそのものに集中できるようにしています。

UI/UXへのこだわり

パフォーマンスは機能ですが、「バイブス(雰囲気)」は体験です。Tailwind CSSとFramer Motionを駆使し、生き生きとした流動的なUIを構築しています。

リアルタイム音量メーター、アクティブ状態を示す繊細な「光」のエフェクト、統一されたマイクロインタラクションなど、高級感を醸成する工夫を散りばめています。

LLMとの対話:静的指示と動的学習による進化

私たちはAIを、単なるツールではなく「対話を通じて成長するパートナー」として設計しました。その対話は2つの形式で行われます。一つは、プロンプトや用語辞書を通じた「静的な事前指示」。これにより配信者の個性や専門用語をAIに教え込めます。

そこで、ももりーを真に特別な存在にするのが、配信中の声による「動的なフィードバック学習」です。「今の翻訳、良いね!」という一言で、AIは成功事例を即座に学習します。ここでは人間とAIのラグを埋めるため、直近の数件をまとめて学習対象とする「バルク学習」戦略を導入。これにより文脈ごとスタイルを捉え、世界に一つの「専属通訳者」へと進化していくのです。