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

Claude Codeの未文書化機能:フック、メモリ、YOLO分類器など
Claude Codeのソースコードから明らかになった隠し設定: YOLO分類機による自動許可、コマンドを書き換えるフック、永続的なエージェントメモリ、平易な英語の自動モードルール、そしてドリームループ。

AIエージェントのメールとGoogleドライブアクセスのトラブルシューティング
AWSサーバーで「Alfie」のようなAIコーディングエージェントを設定する際、メールやGoogleドライブへのアクセスに問題が発生することがよくあります。このケースでは、新しく作成したGmailで設定されたボットがGoogleドライブへのアクセスを試みた後、アクセス制限に直面しました。

ソースコード: Claude向けに大規模なJava/Springモノレポを圧縮するオープンソースのCLI
sourcecode CLIは、約4kファイルのJava/Springモノレポを、約300万トークンから1.7kトークン(コンパクトモード)に削減します。現在は、コンテキスト圧縮、gitホットスポット検出、シンボル検索に焦点を当てています。

リーンコンテキスト: Claudeコードプラグインが冗長なドキュメントをエージェント最適化ファイルに変換
Lean Contextという無料のオープンソースClaude Codeプラグインは、プロジェクトのドキュメントをスキャンし、AIエージェントがgrepで発見できる内容を削除し、重要な非自明なコマンド、落とし穴、環境特有の癖だけを残します。.NETのeコマースプロジェクトでのテストでは、8つのドキュメント合計1,263行をわずか23行に削減しました。