Codex.Voice.Models.OpenAIProvider (Codex SDK v0.14.0)

Copy Markdown View Source

OpenAI voice model provider.

This module implements the Codex.Voice.Model.ModelProvider behaviour, providing factory methods for creating OpenAI STT and TTS models.

Configuration

The provider can be configured with:

  • API key (defaults to OPENAI_API_KEY env var)
  • Base URL (defaults to OpenAI's API)
  • Organization and project IDs (optional)

Example

# Default configuration
provider = OpenAIProvider.new()
stt = OpenAIProvider.get_stt_model(provider, nil)
tts = OpenAIProvider.get_tts_model(provider, nil)

# Custom API key
provider = OpenAIProvider.new(api_key: "sk-...")
stt = OpenAIProvider.get_stt_model(provider, "whisper-1")

Default Models

  • STT: gpt-4o-transcribe
  • TTS: gpt-4o-mini-tts

Summary

Functions

Get a speech-to-text model by name.

Get a text-to-speech model by name.

Create a new OpenAI voice model provider.

Types

t()

@type t() :: %Codex.Voice.Models.OpenAIProvider{
  api_key: String.t() | nil,
  base_url: String.t() | nil,
  organization: String.t() | nil,
  project: String.t() | nil
}

Functions

get_stt_model(provider, model_name)

@spec get_stt_model(t(), String.t() | nil) :: Codex.Voice.Models.OpenAISTT.t()

Get a speech-to-text model by name.

If model_name is nil, returns the default STT model (gpt-4o-transcribe).

Examples

iex> provider = Codex.Voice.Models.OpenAIProvider.new()
iex> model = Codex.Voice.Models.OpenAIProvider.get_stt_model(provider, nil)
iex> model.model
"gpt-4o-transcribe"

iex> provider = Codex.Voice.Models.OpenAIProvider.new()
iex> model = Codex.Voice.Models.OpenAIProvider.get_stt_model(provider, "whisper-1")
iex> model.model
"whisper-1"

get_tts_model(provider, model_name)

@spec get_tts_model(t(), String.t() | nil) :: Codex.Voice.Models.OpenAITTS.t()

Get a text-to-speech model by name.

If model_name is nil, returns the default TTS model (gpt-4o-mini-tts).

Examples

iex> provider = Codex.Voice.Models.OpenAIProvider.new()
iex> model = Codex.Voice.Models.OpenAIProvider.get_tts_model(provider, nil)
iex> model.model
"gpt-4o-mini-tts"

iex> provider = Codex.Voice.Models.OpenAIProvider.new()
iex> model = Codex.Voice.Models.OpenAIProvider.get_tts_model(provider, "tts-1")
iex> model.model
"tts-1"

new(opts \\ [])

@spec new(keyword()) :: t()

Create a new OpenAI voice model provider.

Options

  • :api_key - API key (defaults to OPENAI_API_KEY env var)
  • :base_url - Base URL for API requests
  • :organization - Organization ID
  • :project - Project ID

Examples

iex> provider = Codex.Voice.Models.OpenAIProvider.new()
iex> is_struct(provider, Codex.Voice.Models.OpenAIProvider)
true

iex> provider = Codex.Voice.Models.OpenAIProvider.new(api_key: "sk-test")
iex> provider.api_key
"sk-test"