stormydayy/halo-overlay

Lightweight opensource AI overlay for live conversations. Hears, sees, suggests.

Halo は、画面にオーバーレイとして浮かぶ小さな AI アシスタントです。周囲の会話を聞き取り、ディスプレイの内容を監視し、次に言うべきことや行うべきことをリアルタイムで短く提案します。

機能

  • 聞き取り:2 つのオーディオ チャンネルを聞き取ります。相手側(システム オーディオ、「Them」と表示)とあなた(マイク、「You」と表示)です。「Both」モードでは、相手が話している間、マイクのラインが抑制されるため、あなたの名前が相手の言葉に結び付けられません。
  • 画面監視:画面を継続的に監視します。数ミリ秒ごとに小さなグレースケール スナップショットを撮り、前のものと比較し、画面が実際に変化して安定した場合のみフレームを保持します。これにより、重複やアニメーション中間フレームの保存を回避します。
  • 提案:相手の音声で質問を検出した場合、短い回答を提案します(自動回答はデフォルトでオフ。ヒューリスティックなため誤動作する可能性があります)。
  • Rewind(Ctrl+Shift+Enter):ぼんやりしていた場合、過去 30 秒から 5 分のトランスクリプトと数枚の画面キーフレームを取得し、3 つのことを返します:何が起こったか(2〜3 箇条書き)、相手が今あなたに何を求めているか、そしてすぐに使える一言。Rewind パネルでフレームをピン留めして、次の質問に含めることもできます。
  • セッション記録:すべてのセッションが保存されます(トランスクリプト + 提案)。Recap ボタンで AI がアクション項目付きの要約を書き、すべてを Markdown にエクスポートできます。
  • プロファイル:面接、会議、営業、交渉、プレゼンテーション、学習——それぞれに独自のプロンプト スタイルがあります。
  • カスタマイズ可能:ショートカット、ウィンドウの不透明度、フォント サイズ、クリックスルー モードを調整できます。
  • オプションの画面録画:.webm としてディスクに直接録画(デフォルトでオフ)。

構築方法

  • sohzm/cheating-daddy の背後にあるアイデアをゼロから書き直しましたが、バンドラーなし、ベンダー ライブラリなし、ビルド ステップなし——ソースがそのまま実行されます。
  • 1 つの OpenAI 互換クライアントが Gemini、Groq、OpenAI、OpenRouter、Ollama、LM Studio、または独自のサーバーで動作します。プロバイダーごとの別々のコード パスはありません。
  • 音声認識は VAD(音声活動検出)と、Whisper 互換の API(Groq、OpenAI、またはローカルの whisper.cpp / faster-whisper サーバー)を使用します。
  • 約 3,100 行のコード、0 個のランタイム依存関係、27 個のユニット テスト(npm test)。
  • セキュリティ:contextIsolation、sandbox、厳格な CSP、すべての IPC 呼び出しを検証、API キーは OS で暗号化(DPAPI / Keychain / libsecret)され、UI に送信されることはありません。

プライバシー

  • API キーは OS のセキュア ストレージで暗号化され、UI に表示されることはありません。
  • データは設定したプロバイダーにのみ送信されます:短いオーディオ クリップは音声認識サービスに、テキスト(有効な場合はスクリーンショットも)はモデルに送信されます。ホームに送信されるものはありません。
  • セッションと録音はアプリのプロファイル フォルダーにローカル保存されます。「すべてのセッションと録音を削除」または Ctrl+Shift+E で消去できます。
  • 画面録画はデフォルトでオフです。

セットアップ

Node.js 20+ と Python 3.11+ が必要です。

git clone https://github.com/stormydayy/halo-overlay
cd halo-overlay
npm install
npm start

次に設定で:モデル プロバイダーを選択してキーを貼り付け、接続をテストし、音声認識サービスを選択し、プロファイルを選択し、コンテキスト(履歴書、メモなど)を追加して、セッションを開始します。

完全ローカル オプション:LLM には Ollama とビジョン対応モデル(例:llama3.2-vision)を使用し、音声には /v1/audio/transcriptions を公開する任意のサーバー(whisper.cpp、faster-whisper-server)を使用します。ローカル アドレス(localhost、192.168.*、10.*)は API キーを必要としません。

プラットフォームの注意点

  • Windows:getDisplayMedia によるループバックでシステム オーディオを取得;マイクは動作します。
  • macOS:SystemAudioDump ヘルパーによるシステム オーディオ(Apple Silicon 専用にビルド——Intel Mac はソースから自分でビルドする必要があります);マイクは動作します。システム設定で画面収録とマイクのアクセスを許可してください。
  • Linux:環境がサポートしていればループバックでシステム オーディオを取得;それ以外はマイクのみ。

システム オーディオが利用できない場合、Halo はその旨を伝え、マイク + 画面で続行します。

既知の制限

  • 音声認識は一時停止で分割されたチャンクで動作します(通常 1〜3 秒の遅延)、連続ストリームではありません。
  • 質問検出器はヒューリスティックなため、誤検出が発生します——そのため自動回答はデフォルトでオフです。
  • SystemAudioDump は Apple Silicon 専用にビルドされています。

ライセンス

GPL-3.0。アイデアと macOS オーディオ ヘルパーは sohzm/cheating-daddy と Mohammed-Yasin-Mulla/Sound から来ています。

免責事項(README より)

Halo は、舞台のプロンプターのような会話支援ツールです。ルールはさまざまです:多くの面接、試験、雇用主、プラットフォームは外部の助けや録音を禁止しており、会話の録音に関する法律は国によって異なります。使用する場所のルールを確認し、法律や基本的な倫理が要求する場合は、関係する他の人に伝えてください。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト