# Configure AI Call Transcription with OpenAI Service

Cloud Voice can hand off call audio to OpenAI's Speech to Text service and turn a two-party conversation into readable text as it happens. This page walks through wiring that third-party service into your phone system, and optionally adding a large language model (LLM) so a written summary is produced once each call ends.

:::tip
Already set up AI voicemail transcription against OpenAI Speech to Text? Turn on **Call Transcription** and choose **Copy Settings from Voicemail Transcription** to pull in that configuration, then adjust anything you need to change.

![Copy Settings from Voicemail Transcription option in the AI Toolbox](/images/pbx/copy-ai-voicemail-settings.png)
:::

## Requirements

Your phone system needs to meet the following before you start.

| Item | Requirement |
|------|-------------|
| Firmware | Version **84.23.0.83** or later. |
| Subscription | An **Enterprise Plan** or **Ultimate Plan**, so the **AI Transcription** feature is available. |

## Before you begin

:::note
The GPT and Gemini LLM prerequisites below only apply if you want the phone system to automatically draft a call summary from the transcribed text after a call ends. Skip them if you only need transcription.
:::

**Network access**

Your phone system has to reach the service domains listed below. You can confirm each one is reachable from **Maintenance > Troubleshooting > IP Ping**.

| Service | Domain |
|---------|--------|
| OpenAI Speech to Text service | `api.openai.com` |
| GPT LLM | `api.openai.com` |
| Gemini LLM | `oauth2.googleapis.com` and `generativelanguage.googleapis.com` |

**Third-party accounts**

Have the right accounts and sign-in credentials ready before configuring anything.

- **OpenAI Speech to Text service**: An OpenAI account that has enough transcription-minute quota, along with its username and password.
- **GPT LLM** (optional summaries): an OpenAI account with enough token quota.
- **Gemini LLM** (optional summaries): a Google account with enough token quota, along with its username and password.

:::caution
These are paid services. OpenAI charges for transcription minutes and for GPT tokens, and Google charges for Gemini tokens. If an account runs out of quota, live transcription or summary generation stops working until you top it up.
:::

## Step 1. Create an API key for OpenAI Speech to Text

So the phone system can authenticate its requests to OpenAI Speech to Text, generate an API (application programming interface) key on the OpenAI Platform first.

:::note
OpenAI uses one API key for both Speech to Text and its GPT models. If you plan to use GPT to generate call summaries, keep the key you create here for later and skip [Step 2](#step-2-optional-create-an-api-key-for-gemini-llm).
:::

1. Sign in to [OpenAI Platform](https://platform.openai.com/) with your OpenAI username and password, then open **API Keys**.
2. Above the list of keys, on the right, choose **Create new secret key**.
3. Fill in the dialog that opens.

   
   ![Cloud Voice, creating a new secret key in the OpenAI Platform dialog](/images/pbx/openai-api-key.png)

   1. In **Name**, enter something that identifies the key.
   2. From the **Project** drop-down, pick the project you want.
   3. Leave the permission set to its default of **All**, then choose **Create secret key**. The generated key appears in a new dialog.

      ![Generated OpenAI secret key ready to be copied](/images/pbx/openai-api-key-detail.png)

   4. Choose **Copy** and store the key somewhere safe for later.

      :::caution
      Treat the secret key like a password: it grants billable access to your OpenAI account. Store it somewhere secure, do not share it, and if it is ever exposed, revoke it on the OpenAI Platform and create a new one.
      :::

## Step 2. (Optional) Create an API key for Gemini LLM

If you would rather use Google's Gemini models to write call summaries from the transcribed text, create a Google API key to authenticate those requests.

1. Sign in to [Google AI Studio](https://aistudio.google.com/) with your Google username and password, then open **Dashboard > API keys**.
2. Above the list of keys, on the right, choose **Create API key**.
3. Fill in the dialog that opens.

   
   ![Cloud Voice, creating a new API key in Google AI Studio](/images/pbx/google-gemini-api-key.png)

   1. In **Name your key**, enter something that identifies the key.
   2. From the **Choose an imported project** drop-down, select a project. You can pick an existing project, import one, or create a new one here.
   3. Choose **Create key**. The details of the new key appear in a dialog.

      
      ![Cloud Voice, generated Gemini API key ready to be copied](/images/pbx/google-gemini-api-key-detail.png)

   4. Choose **Copy key** and store the key somewhere safe for later.

## Step 3. Configure AI call transcription on the phone system

With your OpenAI Speech to Text credentials (and, optionally, an LLM key) in hand, connect the phone system to both services.

1. Sign in to the phone system web portal and open **AI > AI Toolbox**.
2. Turn on the **Call Transcription** switch.
3. Set up the transcription service.

   ![OpenAI transcription service settings in the AI Toolbox](/images/pbx/configure-global-ai-call-transcription-with-openai.png)

   1. From the **Service Type** drop-down, select **Custom Service**.
   2. From the **Transcription Service Provider** drop-down, select **OpenAI**.
   3. In the **API key** field, paste the key you created on the OpenAI Platform.
   4. From the **Transcription Model** drop-down, pick the OpenAI Speech to Text model you prefer. For how the models differ, see OpenAI's list of [Realtime & audio models](https://developers.openai.com/api/docs/models/all).
   5. Set up the LLM service using the **LLM Provider** drop-down.

      **No summaries**: Select **Disable** if you don't want the phone system to create call summaries.

      **GPT summaries**: Select **OpenAI**, then:

      ![GPT LLM provider fields for call summaries](/images/pbx/openai-llm-configuration.png)

   1. In the **API key** field, paste the key you created on the OpenAI Platform.
   2. In the **GPT Model** field, enter the model ID of the GPT model you want. Check the [list of GPT models](https://developers.openai.com/api/docs/models) for the ID, for example, to use GPT-5.4, enter `gpt-5.4`.

      **Gemini summaries**: Select **Google**, then:

      ![Gemini LLM provider fields for call summaries](/images/pbx/google-llm-configuration.png)

   1. In the **API key** field, paste the key you created in Google AI Studio.
   2. In the **Gemini Model** field, enter the model code of the Gemini model you want. Check the [list of Gemini models](https://ai.google.dev/gemini-api/docs/models) and open a model's page for its code, for example, to use Gemini 3.1 Pro Preview, enter `gemini-3.1-pro-preview`.

4. From the **Language** drop-down, choose the language that call audio should be detected and transcribed in.
5. Under **Extension Scope for This Feature**, decide who can use call transcription:
   - **All Extensions**: every extension can use it.
   - **Specific Extensions**: only the extensions, extension groups, or departments you select can use it.
6. Click **Save**.

## Result

- **Transcription Connection Status** shows **Enable**, confirming OpenAI Speech to Text is live. Call audio is now detected and transcribed into text in your chosen language in real time.

  ![Transcription Connection Status showing Enable](/images/pbx/transcription-connection-status-openai.png)

  :::note
  Each extension can set its own transcription language and mode (automatic or manual) from **Extension and Trunk > Extension > AI > Call Transcription**. See [Configure AI Call Transcription for an Extension](/pbx/ai-guide/configure-ai-call-transcription-for-an-extension/).
  :::

- **LLM Connection Status** shows **Enable**, confirming the phone system reached the LLM you configured. Once each call ends, a summary is drafted from the transcript automatically.

  ![LLM Connection Status showing Enable](/images/pbx/llm-connection-status.png)
