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
Functions
@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"
@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"
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"