Skip to main content

Providers

VOCALS uses a modular provider system for each stage of the voice pipeline: Speech-to-Text (STT), Large Language Model (LLM), and Text-to-Speech (TTS). You can mix and match providers per agent to optimize for latency, accuracy, cost, or language support.

Adding a Provider

  1. Navigate to Configuration > Providers in the dashboard.
  2. Click Add Provider.
  3. Select the provider type (STT, LLM, or TTS) and the specific service.
  4. Enter your API key and configure provider-specific settings.
  5. Click Save.

Each provider is validated on save -- VOCALS will make a lightweight test request to confirm your API key and configuration are valid.

When Validation Fails

If the test request fails, the save is rejected and the message names both what kind of failure it was and the provider's own explanation, so you can act on it without guessing. A key with the wrong scope, a voice your project cannot reach, or a model your plan does not include all read differently.

Some failures are not yours to fix. If the provider's API is momentarily unavailable, VOCALS retries the test automatically after a short pause before giving up, so a brief outage at the vendor does not reject a configuration that is perfectly good. When the retries do not clear it, the message says the provider is temporarily unavailable and invites you to try again - your key and model are not the problem, and there is nothing to change.

The same applies to the test synthesis run when you save an agent, and to the Test button on a saved provider.

Choosing a Model

Every provider has a Model dropdown offering a short, curated set of models recommended for real-time voice. Vendor catalogues run to dozens of models built for other purposes -- image generation, music, research, document transcription, internal test entries -- and several of them cannot drive a phone call at all, so VOCALS only lists the ones that can.

Where a provider publishes a model list, the dropdown is narrowed further to the models your own API key can actually reach, so you are never offered something your plan does not include.

Three things worth knowing:

  • Your current selection is never dropped. If a provider is already set to a model outside the recommended set, that model stays in the dropdown and keeps working exactly as before. Nothing changes for you.
  • The recommended default is always offered. The model listed first for each provider is the one VOCALS falls back to when a provider has no model selected, so it stays in the dropdown even if the vendor's own listing does not return it for your key. What you can pick and what runs by default can never disagree.
  • You can still use any model the vendor accepts. If the list cannot be loaded -- for example before you have entered an API key -- the Model field becomes a free-text box and you can type any model id the provider supports.

The recommended sets track what vendors release, so the lists below may grow or shift between releases.

API Key Management

  • API keys are encrypted at rest and never displayed in full after initial entry.
  • To rotate a key, click the Edit button on any provider and enter the new key.
  • If a provider returns authentication errors during a call, the call will fall back gracefully and the error will appear in your call logs.
tip

Create separate API keys for VOCALS rather than reusing keys from other projects. This makes it easier to track usage and rotate credentials without breaking other integrations.

Deleting a Provider

A provider can only be deleted once no agent uses it. If any agent still has it selected as its STT, LLM, TTS or realtime provider, the delete is refused and the confirmation dialog lists the agents standing in the way.

To go ahead, open each listed agent, point it at a different provider (or delete the agent), then delete the provider again.

note

This is deliberate. Deleting a provider an agent depends on would leave that agent looking configured in the list while being unable to take a call, and nothing would tell you it had happened.

STT Providers

Speech-to-Text providers transcribe the caller's audio into text in real time.

Deepgram

SettingDescriptionDefault
Modelnova-2, nova-3, nova-2-phonecall, nova-2-conversationalainova-2
LanguagePicked from a list of the languages the selected model supportsen-US
API HostWhich Deepgram endpoint this provider callsDeployment default
Smart FormatEnables punctuation, casing, and number formattingEnabled
EndpointingSilence duration (ms) before finalizing a phrase300
Interim ResultsStream partial transcripts for faster responseEnabled

Deepgram is the recommended STT provider for most use cases due to its low latency and strong streaming support.

Both nova-3 and nova-2 are multilingual: Spanish, French, German, Portuguese, Hindi and the rest of Deepgram's language list are all selectable on them.

Callers who switch languages mid-call

On nova-3, the Language list offers Multilingual (code-switching). Pick it when a caller moves between languages in the same sentence or call - Deepgram then transcribes each language as it hears it instead of forcing everything through one.

English-only models

Deepgram's domain-tuned variants (nova-2-phonecall, nova-2-conversationalai, nova-2-medical, nova-3-medical and the other nova-2- domain models) only transcribe English. When you select one, the dashboard restricts the Language list to English variants, and a language already chosen is cleared if the new model cannot transcribe it. For a non-English agent, choose base nova-3 or nova-2. If a non-English language does reach an English-only model - for example set by hand in the extra config - Deepgram returns empty transcripts rather than an error, so the caller is heard as silence.

API Host

Deepgram serves the same models and the same API key from several endpoints, and the round trip to the nearest one is usually the fastest. The API Host dropdown chooses which endpoint this provider calls:

OptionCalls
Deployment defaultWhichever endpoint your VOCALS deployment is configured for. Leave it here unless you have a reason not to.
Globalapi.deepgram.com
EUapi.eu.deepgram.com
Australiaapi.au.deepgram.com
CustomA dedicated endpoint issued to your Deepgram account, typed in the box that appears

The setting belongs to the provider, not the agent, so you can point one agent at another region by giving it a second Deepgram provider - useful for comparing latency on real calls before moving everything. The same dropdown appears on a Deepgram TTS provider and works the same way. All three regional endpoints accept the same API key and need no extra setup at Deepgram.

note

Selecting a host is optional, and Deployment default is the right answer for almost every account. Change it only when you are testing latency from another region or Deepgram has issued you a dedicated endpoint.

ElevenLabs

SettingDescriptionDefault
Modelscribe_v2, scribe_v1scribe_v2
LanguageISO-639-1 code (e.g., en, es, fr)en

ElevenLabs Scribe operates in batch mode -- audio is buffered and transcribed once the caller stops speaking, rather than streamed continuously.

scribe_v2 is ElevenLabs' current generation and covers 90+ languages. scribe_v1 is deprecated by ElevenLabs and stays in the dropdown only so providers already set to it keep working; move them to scribe_v2 when convenient.

OpenAI Whisper

SettingDescriptionDefault
Modelwhisper-1, gpt-4o-mini-transcribe, gpt-4o-transcribewhisper-1
LanguageISO-639-1 code (e.g., en, es, fr)Auto-detect
TemperatureSampling temperature for decoding (0.0 - 1.0)0.0

OpenAI Whisper operates in batch mode -- audio is buffered and sent in chunks rather than streamed continuously. This adds some latency but can improve accuracy for noisy environments.

Alibaba Qwen

SettingDescriptionDefault
Modelqwen3-asr-flash-realtimeqwen3-asr-flash-realtime
LanguageLanguage code (e.g., en, zh, ja)en

Qwen provides strong multilingual support, particularly for Chinese and East Asian languages. Only Qwen's realtime transcription model is offered: VOCALS streams audio over Qwen's realtime connection, which the batch transcription models do not serve.

Fish Audio

SettingDescriptionDefault
Modeltranscribe-1transcribe-1
LanguageLanguage code (optional, auto-detect if empty)Auto-detect

Fish Audio's transcribe-1 model operates in batch mode with support for 30+ languages. Currently in beta.

LLM Providers

LLM providers generate the agent's conversational responses based on the transcript and system prompt.

OpenAI

SettingDescriptionDefault
Modelgpt-4o-mini, gpt-4o, gpt-4.1-mini, gpt-4.1-nano, gpt-4.1, gpt-5-mini, gpt-5-nano, gpt-5, o4-mini, o3-mini, o3gpt-4o-mini
TemperatureControls randomness (0.0 - 2.0)0.7
Max TokensMaximum tokens in the response256

OpenAI models offer a good balance of quality and speed. Use gpt-4o-mini for cost-efficient general conversations and gpt-4o when response quality is critical. The o-series reasoning models are listed last: they are selectable, but they think before answering, which adds noticeable delay on a live call.

Anthropic Claude

SettingDescriptionDefault
Modelclaude-haiku-4-5, claude-sonnet-5, claude-opus-4-8claude-haiku-4-5
TemperatureControls randomness (0.0 - 1.0)0.7
Max TokensMaximum tokens in the response256

Claude excels at following detailed system prompts and maintaining consistent personas. A strong choice for agents that need to adhere strictly to scripts or compliance requirements.

Google Gemini

SettingDescriptionDefault
Modelgemini-flash-latest, gemini-flash-lite-latest, gemini-pro-latest, gemini-3-flash-previewgemini-flash-latest
TemperatureControls randomness (0.0 - 2.0)0.7
Max TokensMaximum tokens in the response256

Gemini Flash offers very low latency at a competitive price point. A good option for high-volume deployments where speed matters. gemini-flash-lite-latest is the fastest and cheapest Gemini tier on offer, at the cost of some answer quality - worth trying for short, scripted calls where the agent mostly reads from its prompt.

gemini-flash-latest, gemini-flash-lite-latest and gemini-pro-latest follow Google's current generation, so they keep working as Google retires older model ids. Prefer them unless you have a reason to pin a specific version. Google stops serving an older model to API keys created after a cut-off date while still listing it, so a pinned id can look available and then fail on the first call - Test the provider after saving, and switch to a -latest alias if the test reports the model is not available for your key. A model you selected earlier stays in the dropdown even once it drops off the list above.

Gemini models can "think" before answering, which adds seconds before the agent speaks - on a call the caller hears that as silence. New Google Gemini providers you add are therefore created with extended thinking kept to a minimum. Providers you added earlier are left exactly as they were.

The Disable extended thinking switch on the provider form controls this. It is on by default when you add a Google Gemini LLM provider. Turn it off to let the model use its own default reasoning behaviour, at the cost of a slower first reply. Open an existing provider to change it at any time. On Google's current generation, which is what the -latest aliases point at, thinking cannot be switched off completely: the switch asks for the least the model allows, which is the fastest first reply available on those models.

Moonshot Kimi

SettingDescriptionDefault
Modelmoonshot-v1-32k, moonshot-v1-8k, moonshot-v1-128k, kimi-latest, kimi-k2-turbo-previewmoonshot-v1-32k
TemperatureControls randomness (0.0 - 1.0)0.7
Max TokensMaximum tokens in the response256

Kimi provides strong Chinese language support and competitive pricing for Asian-market deployments.

TTS Providers

Text-to-Speech providers convert the LLM's text response into audio that the caller hears.

Switching an agent's TTS provider. Each TTS provider has its own tuning settings (voice model, stability, speaking rate, and so on). When you change an agent's TTS provider, any tuning settings that do not apply to the new provider are cleared, and the new provider's own model and settings take effect. This means a setting left over from a previous provider - for example a voice model chosen for a different service - can never carry over and interfere with the new one. Review the new provider's settings after switching and save.

ElevenLabs

SettingDescriptionDefault
Voice IDThe ID of the voice to use (from your ElevenLabs account)--
Modeleleven_flash_v2_5, eleven_turbo_v2_5, eleven_flash_v2, eleven_turbo_v2, eleven_multilingual_v2, eleven_v3eleven_flash_v2_5
StabilityVoice consistency (0.0 - 1.0). Lower values sound more expressive.0.5
Similarity BoostHow closely to match the original voice (0.0 - 1.0)0.75
Optimize Streaming LatencyLatency optimization level (0 - 4, higher = faster but lower quality)3

ElevenLabs produces the most natural-sounding voices and supports voice cloning.

The model you select is the model your agents use. Nothing substitutes a different one behind the scenes. The eleven_flash_v2_5 and eleven_turbo_v2_5 tiers reply fastest and suit telephony where latency matters; eleven_v3 and eleven_multilingual_v2 sound better, and the difference is most pronounced in languages other than English. Which trade-off is right is your call, so make it here and listen to a test call.

If you created an agent on 23 July 2026 you may find it using eleven_flash_v2_5 regardless of what this provider says, from a default that briefly applied automatically and has since been removed. Recreate the agent to clear it.

Finding your Voice ID

In your ElevenLabs dashboard, go to Voices, select a voice, and copy the Voice ID from the voice details panel. You can also use the ElevenLabs API to list available voices.

OpenAI TTS

SettingDescriptionDefault
Modeltts-1, tts-1-hd, gpt-4o-mini-ttstts-1
Voicealloy, echo, fable, onyx, nova, shimmeralloy
SpeedPlayback speed (0.25 - 4.0)1.0

OpenAI TTS is simple to configure with six built-in voices. Use tts-1 for telephony (lower latency) and tts-1-hd only when audio quality is the top priority.

Resemble AI

SettingDescriptionDefault
Voice UUIDThe UUID of the voice from your Resemble project--
Project UUIDYour Resemble project identifier--
Sample RateOutput sample rate in Hz8000

Resemble AI specializes in custom voice cloning. If you need a branded voice that sounds like a specific person, Resemble is the best choice.

Fish Audio

SettingDescriptionDefault
Models2, s1, speech-1.6, speech-1.5s2
Reference IDVoice reference ID from your Fish Audio account--
TemperatureControls expressiveness (0.0 - 1.0)0.7
Top PNucleus sampling parameter (0.0 - 1.0)0.7
SpeedPlayback speed multiplier1.0
Latencylow, balanced, normalbalanced

Fish Audio produces natural-sounding speech with emotion control across 30+ languages. The s2 model is the latest and most capable, with improved latency and quality over s1. Use latency: "balanced" for the best tradeoff between speed and quality in telephony.

Google Cloud TTS

SettingDescriptionDefault
VoiceThe Google voice to use, chosen through a cascading Language > Tier > Voice picker. The classic tiers list your Google Cloud project's full live voice set for each language, not a fixed shortlist.en-US-Neural2-C
Speaking RatePlayback speed multiplier (0.25 - 4.0). Shown only for Neural2/WaveNet and Studio voices; hidden for Chirp3-HD, which does not support it.1.0

Google Cloud TTS offers voices across several quality tiers:

  • Neural2 / WaveNet - the established tier, with adjustable speaking rate.
  • Chirp3-HD - Google's natural-sounding tier. These voices do not support a speaking-rate adjustment, so that control is hidden when a Chirp3-HD voice is selected. This is an intentional tier difference, not a missing feature.
  • Studio - premium English-only voices. Studio is no longer offered when selecting a new voice, but any agent already configured on a Studio voice keeps working exactly as before.

The voice lists are fetched live from your own Google Cloud project (using the API key you saved), so the voices offered always reflect what that project can actually use, rather than a generic platform list. The picker covers the same seven languages - English (US), English (UK), Spanish, French, German, Portuguese and Italian. Voices load the first time you open the picker for a language and are reused for the rest of your session, so browsing stays responsive. If the live list cannot be fetched, the picker falls back to a smaller known-good set and shows a notice.

If you switch an agent from a Neural2/WaveNet voice to a Chirp3-HD voice after tuning a speaking rate, the setting is safely ignored rather than causing an error - your agent keeps working without any reconfiguration.

Gemini voices are a separate provider

Google Cloud TTS does not offer Gemini voices. Google publishes its Gemini text-to-speech models on the Gemini API, a different service with its own credential and its own billing, which a Google Cloud Text-to-Speech key cannot reach. Google Cloud TTS covers the Neural2/WaveNet, Chirp3-HD and Studio tiers listed above.

If you want Gemini voices, add Google Gemini TTS below - a separate provider with its own Gemini API key.

If your agent was previously configured on one of the short-lived Gemini tiers under Google Cloud TTS, it still opens and edits normally, but the voice picker will show no selection - choose one of the tiers above to save it again, or move the agent to Google Gemini TTS.

Save-time voice check. Whenever you save an agent that uses a Google Cloud TTS voice, on any tier, VOCALS runs a quick test synthesis of the exact voice you selected before the agent is stored. If that test fails - an invalid or insufficient key, a voice your project cannot reach, or any other synthesis error - the save is rejected with an explanation of what went wrong, so a broken voice selection can never surface for the first time on a live call. A successful test saves the agent with no extra steps.

Generating a Google Cloud API key
  1. Sign in to the Google Cloud Console and select (or create) a project.
  2. Enable the Cloud Text-to-Speech API for that project: open APIs & Services > Library, search for "Cloud Text-to-Speech API", and click Enable. If your project already has it enabled, skip this step.
  3. Go to APIs & Services > Credentials, click Create credentials > API key, and copy the generated key.
  4. Paste the key into the Google Cloud TTS provider's API key field in VOCALS and click Save. VOCALS validates the key immediately, so an invalid key or a project without the Cloud Text-to-Speech API enabled is caught at save time rather than on your first live call.

You are billed directly by Google for your own usage - VOCALS uses the key you supply.

Google Gemini TTS

SettingDescriptionDefault
Modelgemini-2.5-flash-preview-tts, gemini-2.5-pro-preview-tts, gemini-3.1-flash-tts-preview. Chosen when you add the provider.gemini-2.5-flash-preview-tts
VoiceOne of 30 Gemini voices, chosen from a single flat list on the agent.Zephyr
Style InstructionAn optional short instruction describing how the voice should deliver the text, e.g. "Speak warmly and slowly". Up to 500 characters.Empty

Google Gemini TTS is a separate provider from Google Cloud TTS, listed on its own in the Add Provider list. They are different Google services: different credentials, different billing, and different voices. Adding one does not give you the other, and a key for one does not work with the other.

The three models differ in what Google tunes them for:

  • gemini-2.5-flash-preview-tts - low latency and cost-efficient. The default, and the right choice for most phone calls.
  • gemini-2.5-pro-preview-tts - Google's higher-quality model, aimed at podcast and audiobook style output.
  • gemini-3.1-flash-tts-preview - tuned for expressive narration.

The model is chosen per provider, not per agent. If you want some agents on flash and others on pro, add Google Gemini TTS twice - once with each model - and point each agent at the one it should use. This is the same way you would run two OpenAI models today.

No language setting - and that is deliberate

Unlike Google Cloud TTS, Google Gemini TTS has no language selector. The spoken language follows your agent's own conversation text automatically, so a Spanish reply is spoken in Spanish with the same voice you chose. This is why the voice picker is one flat, alphabetical list of 30 names rather than a Language > Tier > Voice cascade - there is no language to narrow it by. Any Gemini voice can speak any of the supported languages.

Style instruction. The style instruction field appears only when your agent's TTS provider is Google Gemini TTS. Write it as a plain instruction - "Speak warmly and slowly", "Sound upbeat and energetic", "Use a calm, professional tone" - and it is applied to every response that agent speaks. Because the Gemini models take delivery direction as part of the text, keep the instruction short and phrased as a direction; a vague or oddly-worded one can occasionally be read aloud instead of followed. The field is capped at 500 characters and a counter shows how many you have left. It has no effect on any other TTS provider, including Google Cloud TTS.

Save-time voice check. As with Google Cloud TTS, saving an agent that uses Google Gemini TTS runs a quick test synthesis of the exact voice you selected before the agent is stored. If it fails, the save is rejected with an explanation and nothing is changed.

Generating a Gemini API key
  1. Create a key in Google AI Studio - this is the quickest route, and the key works here immediately.
  2. Or, in the Google Cloud Console: select a project, enable the Generative Language API under APIs & Services > Library, then create an API key under APIs & Services > Credentials. If you restrict the key under API restrictions, the Generative Language API must be one of the allowed APIs.
  3. Paste the key into the Google Gemini TTS provider's API key field in VOCALS and click Save. The key is validated immediately with a real test synthesis, so a wrong key is caught at save time rather than on your first live call.

A Google Cloud Text-to-Speech key will not work here, even though both are Google API keys. If you paste one, the save is rejected with a message telling you the key is not authorised for the Gemini API - enable the Generative Language API on that project and allow it under the key's API restrictions, or create a key in Google AI Studio instead.

Gemini API usage is billed by Google to your own account, and it is billed separately from Google Cloud Text-to-Speech. You are billed directly by Google - VOCALS uses the key you supply.

Provider Recommendations by Use Case

Use CaseSTTLLMTTS
General English (low latency)Deepgram nova-2OpenAI gpt-4o-miniElevenLabs flash v2.5
High-quality conversationsDeepgram nova-2Anthropic Claude SonnetElevenLabs multilingual v2
Budget-consciousDeepgram nova-2Google Gemini FlashOpenAI tts-1
Multilingual (30+ languages)Fish Audio transcribe-1Google Gemini FlashFish Audio s2
Chinese languageAlibaba QwenMoonshot KimiElevenLabs multilingual v2
Custom brand voiceDeepgram nova-2OpenAI gpt-4oResemble AI