Speech Engineクイックスタート
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も提供されます。signalをOpenAI呼び出しに渡すと、割り込み時に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側で処理されます。