500ミリ秒未満の音声エージェント構築:アーキテクチャとパフォーマンスの知見

音声エージェントのアーキテクチャとパフォーマンス
Nick Tikhonovは、平均約400msのエンドツーエンド遅延(電話停止→最初の音節)を実現する音声エージェントをゼロから構築しました。これには、クリーンな割り込み応答と事前計算された応答なしでの完全なSTT→LLM→TTSループが含まれます。この実装は、同等のVapiセットアップよりも遅延において2倍優れたパフォーマンスを示しました。
中核的な技術的洞察
重要な認識は、音声が文字起こしの問題ではなく、話者交替の問題であるということでした。音声活動検出(VAD)だけでは不十分で、意味的な話者交替終了検出が必要です。システムは、話している状態と聞いている状態の2つの状態を持つ1つのループに簡略化されます。
重要な遷移は次のとおりです:
- 割り込み時に即座にキャンセル
- 話者交替終了時に即座に応答
技術的要件
STT→LLM→TTSはストリーミングする必要があります。逐次的なパイプラインは自然な会話には効果的ではありません。音声インターフェースでは、最初のトークンまでの時間(TTFT)がすべてを支配します。最初のトークンがクリティカルパスです。Groqの約80msのTTFTは、単一最大のパフォーマンス向上要因として特定されました。
インフラストラクチャの考慮事項
プロンプトよりも地理的な位置が重要です。すべてのコンポーネントは同一の場所に配置する必要があり、そうしないとシステムが処理を開始する前に遅延が許容範囲を超えてしまいます。構築には約1日と約100ドルのAPIクレジットがかかりました。
音声エージェントが難しい理由
音声エージェントは、テキストエージェントと比較して複雑さが大幅に増加します。オーケストレーションは継続的かつリアルタイムであり、複数のモデルを同時に慎重に管理する必要があります。システムは、ユーザーが話しているのか聞いているのかを常に判断しなければならず、これらの状態間の遷移が最も難しい側面です。
ユーザーが話し始めると、エージェントは即座に話すのを止めなければなりません。生成をキャンセルし、音声合成をキャンセルし、バッファリングされたオーディオをフラッシュします。ユーザーが話すのを止めると、システムはユーザーが完了したと確信を持って判断し、最小限の遅延で応答を開始する必要があります。
アーキテクチャのアプローチ
開発者はまず、エディタ外でChatGPTを使用してアーキテクチャを反復し、最初にメンタルモデルを構築しました。問題全体は、単一のループと小さな状態機械に簡略化されました。音声エージェントが答える必要がある核心的な質問は、ユーザーが話しているのか、それとも聞いているのかということです。
2つの状態は次のとおりです:
- ユーザーが話している
- ユーザーが聞いている
この話者交替検出ロジックは、すべての音声システムの中核を形成します。実装は、参照とさらなる開発のためにGitHubで利用可能です。
📖 完全なソースを読む: HN AI Agents
👀 See Also

Radicle 1.8.0 リリース:Git上に構築された分散型ピアツーピアコードフォージ
Radicle 1.8.0は、Git上で動作する自律的でピアツーピアのコードフォージであり、CLI、Web UI、デスクトップクライアントを備えています。リポジトリはNoiseXKとカスタムゴシッププロトコルを使用してピア間で複製され、中央サーバーは不要です。

バイヤー評価:AIエージェント会話を活用したB2Bベンダー評価におけるClaudeスキル
企業情報を調査し、ドメイン固有の質問を行い、Salespeak Frontdoor APIを通じてベンダーのAIエージェントに直接問い合わせることで、B2Bソフトウェアベンダーを評価するClaudeスキルです。主張を独立した情報源と照合し、透明性のある検証レベルを備えたエビデンスベースのスコアカードを作成します。
Agentalmanac: すぐに使えるJSON設定付き23のMCPサーバーカタログ
RedditユーザーがClaude Desktop、Cursor、Continue用のペースト可能な設定を備えた23のMCPサーバーをカタログ化。アーカイブされたサーバーをメンテナンス済みの代替品に振り向ける。ホストされたデモはCloudflare Workers上で動作。

Claude Codeのドキュメントには、トークン数を膨らませる過剰なReactコンポーネントが含まれています
Claude CodeのLLMドキュメントを分析した結果、MDXファイルには大量のReactコンポーネントがインライン化されており、context-window.mdは18,501トークンを使用しているものの、実際のドキュメント内容はわずか551トークンしか含まれていないことが明らかになりました。