Speech Engineクイックスタート
ElevenLabs SDKを使用してチャットエージェントに音声を追加します。
このガイドでは、Speech Engineを使用して音声対応エージェントを構築します。LLMをElevenLabsに接続するサーバーをセットアップし、ブラウザクライアントを接続することで、ユーザーがエージェントと音声で会話できるようにします。
ElevenLabs Speech Engineスキルを使用して、チャットエージェントに音声を追加します。
Speech Engineの仕組み
Speech EngineはLLMをElevenLabsに接続し、ユーザーがエージェントに話しかけ、その応答を聞けるようにします。ElevenLabsがスピーチtoテキストとテキスト読み上げを処理し、サーバー側でLLMロジックを提供します。
各WebSocket接続は1つの会話を表します。ユーザーが話すと、ElevenLabsがオーディオを文字起こししてサーバーへ送信します。サーバーはそれをLLMに渡し、応答をストリーミングで返します。ElevenLabsがテキストを音声に変換し、ブラウザで再生します。SDKが接続管理、ターンテイキング、割り込み検出を処理します。
前提条件
このチュートリアルでは、LLMにOpenAIのAPIを使用します。OPENAI_API_KEY環境変数に設定されたOpenAI APIキーが必要です。
サーバーのセットアップ
APIキーを作成
APIに安全にアクセスするために使用するAPIキーは、ダッシュボードで作成できます。
キーは管理されたシークレットとして保存し、好みに応じて .env ファイルを通じた環境変数として、またはアプリの設定で直接SDKに渡してください。
サーバーを公開
Speech Engineにはパブリックにアクセス可能なURLが必要です。ngrokを使用してローカルサーバーを公開します。サーバーはまだ作成しませんが、次のステップで使用するURLを取得するため、先にngrokを実行しておく必要があります。
転送URL(例:https://abc123.ngrok.io)をコピーします。
Speech Engineインスタンスを作成
SDKを使用してSpeech Engineインスタンスを作成します。WebSocket URLには、ngrok URLに/wsパスを追加して渡します。
このスクリプトを実行し、次のステップで使用するSpeech Engine ID(例:seng_8k3m9xr4hjnfg983brhmhkd98n6)をコピーします。
サーバーを作成
以下の内容でserver.pyまたはserver.mtsというファイルを作成します。サーバーをセットアップし、/wsパスにSpeech Engineを接続して、OpenAIで応答を生成します。
onTranscript / on_transcriptコールバックは、会話履歴全体と現在のセッションを受け取ります。TypeScript SDKは、ユーザーが応答の途中で割り込んだ場合に発火するAbortSignalも提供します。OpenAI呼び出しにsignalを渡すと、割り込み時にLLMリクエストが自動的にキャンセルされます。
sendResponse() / send_response()は、文字列、非同期イテラブル、またはOpenAI、Anthropic、Google Geminiからのストリームを受け取ります。SDKがテキストコンテンツを自動的に抽出します。
上記の例では、ユーザーからの完全な文字起こしがLLMに渡されます。本番環境では、プロンプトインジェクションや操作の試みを防ぐためのガードレールを追加してください。
クライアントのセットアップ
試してみる
次の3つのプロセスが実行されていることを確認してください。
- ngrok - ポート3001へ転送
- Speech Engineサーバー -
python server.pyまたはnpx tsx server.mts - トークンサーバー -
npx tsx token-server.mtsまたはpython token_server.py
ブラウザでクライアントアプリケーションを開き、Start conversationをクリックします。求められたらマイクへのアクセスを許可してから、話しかけてください。スピーカーからエージェントの応答が聞こえます。
サーバーでdebug: trueを有効にしている場合は、受信した文字起こしと送信した応答がコンソールに記録されます。
セッションイベント
最初のエージェントメッセージを設定
デフォルトでは、エージェントはユーザーが最初に話すのを待ちます。会話の開始時にエージェントがユーザーに挨拶するようにするには、セッション開始時にクライアントのoverridesオプションで最初のメッセージを設定します。
最初のメッセージは、接続が確立されるとすぐにエージェントによって発話されます。サーバーのonTranscriptコールバックはトリガーされず、すべてElevenLabs側で処理されます。
最大会話時間を設定
デフォルトでは、会話は600秒(10分)で終了します。Speech Engineは最大7,200秒(2時間)の会話をサポートしています。より長い会話を許可するには、より大きいmax_duration_secondsでSpeech Engineリソースを更新します。
ダッシュボードでも設定できます。Speech Engineを開き、Advancedタブに移動して、Conversational behaviorのMax conversation durationを設定します。