メインコンテンツへスキップ
Twilio Programmable VoiceMedia Streams と組み合わせて使用することで、電話通話で Cartesia TTS によって生成された音声を WebSocket 経由で受信できます。このウォークスルーでは Node.js を使用し、Twilio のストリームを Cartesia にブリッジして TTS 音声を発信先の回線で再生する小さなサーバーを実装します。

前提条件

始める前に、以下のものが揃っていることを確認してください:
  1. Node.js がインストールされていること。
  2. Twilio アカウント。Account SID と Auth Token が必要です。
  3. Cartesia API キー
  4. 発信先の電話番号。
  5. 発信元となる Twilio の電話番号。
  6. ngrok authtoken (無料アカウントで構いません)。

はじめに

1

プロジェクトをセットアップする

  1. プロジェクト用に新しいディレクトリを作成し、ターミナルでそのディレクトリに移動します。
  2. 新しい Node.js プロジェクトを初期化します:
  3. 必要な依存関係をインストールします:
2

環境変数を設定する

プロジェクトのルートに .env ファイルを作成し、次の内容を追加します:
プレースホルダーの値を実際の認証情報に置き換えてください。
3

メインスクリプトを作成する

app.js (または任意の名前) というファイルを作成し、次のコードを追加します:
4

Cartesia TTS を設定する

スクリプト内には、Cartesia TTS の設定セクションがあります。必要に応じて以下の変数を設定してください:
5

Twilio の発信設定をする

Twilio のアウトバウンド/インバウンド番号を設定します:
6

メインロジックを実装する

main() 関数が全プロセスをオーケストレーションします:
  1. Cartesia TTS WebSocket に接続する
  2. TTS WebSocket をテストする
  3. Twilio WebSocket サーバーをセットアップする
  4. Twilio WebSocket 用の ngrok トンネルを作成する
  5. Twilio を使って通話を発信する
7

アプリケーションを実行する

アプリケーションを実行するには、次のコマンドを使用します:

仕組み

  1. スクリプトは Cartesia の TTS WebSocket への接続を確立します。
  2. Twilio と通信するためのローカル WebSocket サーバーをセットアップします。
  3. ローカルの WebSocket サーバーをインターネットに公開するための ngrok トンネルを作成します。
  4. Twilio を使って通話を発信し、ngrok トンネルに接続します。
  5. 通話が接続されると、スクリプトは事前に定義したメッセージを Cartesia の TTS に送信します。
  6. Cartesia はテキストを音声に変換し、音声チャンクを返します。
  7. スクリプトはこれらの音声チャンクを Twilio に転送し、Twilio が通話上で再生します。

カスタマイズ

  • 読み上げるメッセージを変更するには、partialResponse 変数を変更します。
  • TTS のボイス特性を変えるには、voice オブジェクトのボイスパラメーターを調整します。
  • 通話を終了するタイミングを制御するには、audioChunksReceived のしきい値を変更します。

トラブルシューティング

  • 問題が発生した場合は、コンソールログで詳細なエラーメッセージを確認してください。
  • 必要な環境変数がすべて正しく設定されていることを確認してください。
  • invalid tunnel configuration と表示される場合は、ngrok ではなく、よりサポートが充実した @ngrok/ngrok パッケージを使用していることを確認してください。