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
ブラウザでクライアントアプリケーションを開き、会話を開始 をクリックします。求められたらマイクへのアクセスを許可してから話しかけてください。スピーカーからエージェントの応答が聞こえます。
サーバーでdebug: trueを有効にしている場合は、受信した文字起こしと送信する応答がコンソールに記録されます。
セッションイベント
エージェントの最初のメッセージを設定
デフォルトでは、エージェントはユーザーが先に話すのを待ちます。会話開始時にエージェントからユーザーにあいさつさせるには、セッション開始時にクライアントのoverridesオプションで最初のメッセージを設定します。
接続が確立されるとすぐに、エージェントが最初のメッセージを発話します。このメッセージはサーバーのonTranscriptコールバックをトリガーしません。すべてElevenLabs側で処理されます。
会話の最大時間を設定
デフォルトでは、会話は600秒(10分)後に終了します。Speech Engineは最大2,400秒(40分)の会話に対応しています。より長い会話を可能にするには、max_duration_secondsをより大きい値にしてSpeech Engineリソースを更新します。
ダッシュボードでも設定できます。Speech Engineを開き、詳細 タブに移動して、会話の動作 の 会話の最大時間 を設定します。
40分を超える会話はサポートされておらず、
max_duration_secondsにより大きい値が設定されている場合でも切断されることがあります。より長い会話が必要な場合は、チームにお問い合わせください。