Skip to content

terisuke/speech-assistant-openai-realtime-api-node

Repository files navigation

Twilio VoiceとOpenAI Realtime APIを使用した音声アシスタント(Node.js)

このアプリケーションは、Node.js、Twilio VoiceMedia StreamsOpenAIのRealtime APIを使用して、AIアシスタントとの電話会話を可能にする方法を示しています。

このアプリケーションは、OpenAI Realtime APIとTwilioとの間でウェブソケットを開き、音声オーディオを一方からもう一方に送信して、二方向の会話を可能にします。

ここで、コードのチュートリアル概要を参照してください。

このアプリケーションは、OpenAIのRealtime APIと共に以下のTwilio製品を使用しています:

  • Voice (およびTwiML, Media Streams)
  • 電話番号

必要条件

このアプリを使用するには、以下が必要です:

  • Node.js 18+ 開発には18.20.4を使用しました。ここからダウンロードできます。
  • Twilioアカウント。 無料トライアルにここから登録できます。
  • Voice機能を持つTwilio番号。 ここに、電話番号を購入するための手順が記載されています。
  • OpenAIアカウントとOpenAI APIキー。 ここから登録できます。
    • OpenAI Realtime APIへのアクセス。

ローカルセットアップ

ローカルで開発とテストを行うためのアプリを起動するには、以下の4つの必須ステップがあります:

  1. ngrokや他のトンネリングソリューションを使用して、ローカルサーバーをインターネットに公開し、テストを行います。ngrokはここからダウンロードできます。
  2. パッケージをインストール
  3. Twilioの設定
  4. .envファイルを更新

ngrokトンネルを開く

ローカルで開発とテストを行う際には、ローカル開発サーバーへのリクエストをフォワードするためのトンネルを開く必要があります。これらの手順ではngrokを使用します。

ターミナルを開いて、以下を実行します:

ngrok http 5050

トンネルが開いた後、Forwarding URLをコピーします。それはhttps://[your-ngrok-subdomain].ngrok.appのようになります。これは、Twilio番号の設定で必要になります。

注意:上記のngrokコマンドは、デフォルトでポート5050で動作する開発サーバーにフォワードします。このアプリケーションでは、index.jsでポートが設定されています。PORTをオーバーライドする場合は、ngrokコマンドも更新する必要があります。

各回ngrok httpコマンドを実行すると、新しいURLが作成され、以下で参照されるすべての場所で更新する必要があります。

必要なパッケージをインストール

ターミナルを開いて、以下を実行します:

npm install

Twilioの設定

ngrok URLを電話番号にポイント

Twilio Consoleで、Phone Numbers > Manage > Active Numbersに移動し、このアプリのために購入した電話番号をクリックします。

電話番号の設定で、最初のA call comes inドロップダウンをWebhookに変更し、ngrokのフォワードURL(上記で参照)を /incoming-callに続けて貼り付けます。例えば、https://[your-ngrok-subdomain].ngrok.app/incoming-call。その後、Save configurationをクリックします。

.envファイルを更新

.envファイルを作成するか、.env.exampleファイルを.envにコピーします:

cp .env.example .env

.envファイルで、OPENAI_API_KEY必要条件で指定されたOpenAI APIキーに更新します。

アプリを実行

ngrokが動作し、依存関係がインストールされ、Twilioが適切に設定され、.envが設定された後、以下のコマンドで開発サーバーを実行します:

node index.js

アプリをテスト

開発サーバーが動作している間に、必要条件で購入した電話番号に電話をかけてください。紹介後、AIアシスタントと話すことができます。楽しんでください!