HipcallTts.Registry (hipcall_tts v0.5.0)
View SourceProvider registry for HipcallTts.
This module maintains a registry of available TTS providers and provides functions to retrieve provider modules and delegate introspection calls.
Providers
The following providers are registered:
:openai- OpenAI TTS API:elevenlabs- ElevenLabs TTS API:polly- AWS Polly TTS service:soniox- Soniox TTS API
Examples
# Get list of available providers
HipcallTts.Registry.providers()
# => [:openai, :elevenlabs, :polly, :soniox]
# Get provider module
{:ok, module} = HipcallTts.Registry.get_provider(:openai)
# => {:ok, HipcallTts.Providers.OpenAI}
# Get models for a provider
{:ok, models} = HipcallTts.Registry.models(:openai)
# => {:ok, [%{id: "tts-1", name: "TTS-1", ...}, ...]}
# Get voices for a provider
{:ok, voices} = HipcallTts.Registry.voices(:openai)
# => {:ok, [%{id: "alloy", name: "Alloy", ...}, ...]}
Summary
Functions
Returns the capabilities of the given provider.
Returns models compatible with a specific voice for the given provider.
Gets the module for a given provider name.
Returns a list of supported languages for the given provider.
Returns a list of available models for the given provider.
Returns a list of all registered provider names as atoms.
Returns a list of available voices for the given provider.
Functions
Returns the capabilities of the given provider.
Delegates to the provider module's capabilities/0 function.
Parameters
provider- The provider name as an atom
Returns
{:ok, capabilities}- Capabilities map on success{:error, message}- Error if the provider is invalid
Examples
{:ok, caps} = HipcallTts.Registry.capabilities(:openai)
# => {:ok, %{streaming: true, formats: ["mp3", "wav"], ...}}
{:error, message} = HipcallTts.Registry.capabilities(:invalid)
# => {:error, "Unknown provider: invalid"}
Returns models compatible with a specific voice for the given provider.
For providers like AWS Polly where some voices only support certain engines, this filters the model list accordingly. For other providers, returns all models.
Parameters
provider- The provider name as an atomvoice_id- The voice identifier string
Returns
{:ok, [model]}- List of compatible model maps on success{:error, message}- Error if the provider is invalid
Examples
{:ok, models} = HipcallTts.Registry.compatible_models(:polly, "Filiz")
# => {:ok, [%{id: "standard", ...}]}
{:ok, models} = HipcallTts.Registry.compatible_models(:polly, "Amy")
# => {:ok, [%{id: "standard", ...}, %{id: "neural", ...}]}
Gets the module for a given provider name.
Parameters
name- The provider name as an atom (e.g.,:openai,:elevenlabs,:polly,:soniox)
Returns
{:ok, module}- If the provider is found{:error, message}- If the provider is not found
Examples
{:ok, module} = HipcallTts.Registry.get_provider(:openai)
# => {:ok, HipcallTts.Providers.OpenAI}
{:error, message} = HipcallTts.Registry.get_provider(:invalid)
# => {:error, "Unknown provider: invalid"}
Returns a list of supported languages for the given provider.
Delegates to the provider module's languages/0 function.
Parameters
provider- The provider name as an atom
Returns
{:ok, [language]}- List of language maps on success{:error, message}- Error if the provider is invalid
Examples
{:ok, languages} = HipcallTts.Registry.languages(:openai)
# => {:ok, [%{code: "en", name: "English", ...}, ...]}
{:error, message} = HipcallTts.Registry.languages(:invalid)
# => {:error, "Unknown provider: invalid"}
Returns a list of available models for the given provider.
Delegates to the provider module's models/0 function.
Parameters
provider- The provider name as an atom
Returns
{:ok, [model]}- List of model maps on success{:error, message}- Error if the provider is invalid
Examples
{:ok, models} = HipcallTts.Registry.models(:openai)
# => {:ok, [%{id: "tts-1", name: "TTS-1", ...}, ...]}
{:error, message} = HipcallTts.Registry.models(:invalid)
# => {:error, "Unknown provider: invalid"}
@spec providers() :: [atom()]
Returns a list of all registered provider names as atoms.
Returns
A list of provider atoms.
Examples
HipcallTts.Registry.providers()
# => [:openai, :elevenlabs, :polly]
Returns a list of available voices for the given provider.
Delegates to the provider module's voices/0 function.
Parameters
provider- The provider name as an atom
Returns
{:ok, [voice]}- List of voice maps on success{:error, message}- Error if the provider is invalid
Examples
{:ok, voices} = HipcallTts.Registry.voices(:openai)
# => {:ok, [%{id: "alloy", name: "Alloy", gender: :neutral, ...}, ...]}
{:error, message} = HipcallTts.Registry.voices(:invalid)
# => {:error, "Unknown provider: invalid"}