Skip to main content
Version: 0.9.14

Custom STT/TTS endpoints

Delphi's modular STT and TTS providers, and several Realtime providers, accept custom service URLs. Use them when speech traffic must go to a private IP, a mock server, a non-standard Azure Speech port, or any host other than the vendor's public default.

Where to configure

Open Flow Designer → Flow Settings → Default provider (or a voice-agent Provider override), pick Pipeline or Realtime, then expand the provider's Advanced accordion:

Provider roleUI fieldTypical location
Azure STTEndpoint URLSTT → Advanced STT
Azure TTSEndpoint URLTTS → Advanced Azure TTS
Inworld STTEndpoint URLSTT → Advanced
Inworld TTSEndpoint URLTTS → Advanced
OpenAI RealtimeCustom URLRealtime → Advanced Settings
Grok RealtimeCustom URLRealtime → Advanced Settings
Gemini LiveRealtime URLRealtime (main form)
Pythia RealtimeURLRealtime (required)
Azure RealtimeURL modeAuto (resource name) or Custom (full WebSocket URL)
OpenAI ChatBase URLLLM → Advanced LLM

Fields not exposed in the inspector can still be set in the source view (for example baseUrl on OpenAI TTS).

IP addresses and DNS names

Endpoint fields accept any valid URL the runtime can parse — FQDNs, short hostnames, and literal IPv4/IPv6 addresses are all supported.

Examples:

wss://speech.mock.internal:8043/speech/recognition/conversation/cognitiveservices/v1
wss://10.0.2.15:8043/api/v1/speech:recognize
https://192.168.1.50/tts/cognitiveservices/websocket/v1
wss://my-azure-speech.contoso.com/stt/speech/recognition/conversation/cognitiveservices/v1
Azure Speech path defaults

When Endpoint URL is set on Azure STT or Azure TTS and the path is empty or /, Delphi appends the standard Azure Speech path for the selected recognition mode (STT) or /tts/cognitiveservices/websocket/v1 (TTS WebSocket). You can also supply a full path if your mock or private gateway expects a non-standard route.

For Azure TTS, a URL starting with https:// or http:// selects the HTTPS REST synthesis path instead of the default WebSocket transport.

Why custom endpoints exist

Delphi talks to Azure Speech over a direct WebSocket implementation (not the legacy Microsoft Speech SDK). That lets TelPhi:

  • Connect using the hostname you configure — important for Squid ACLs and NO_PROXY rules on private networks.
  • Route outbound traffic through HTTP_PROXY / HTTPS_PROXY on Voice hosts with the correct CONNECT host header.

If you point STT/TTS at a mock server on a private IP, ensure the Voice instance can reach that IP (routing, security groups, and proxy ACLs).

Private-network and proxy checklist

Voice hosts on the private network typically egress through Squid:

  1. Set HTTP_PROXY / HTTPS_PROXY on the Voice service (see Voice operations).
  2. Add Squid ACLs for the speech host — by domain or destination IP/port — if the default allow rules are too narrow.
  3. For on-VPC or RFC1918 targets that must not use the proxy, add them to NO_PROXY on Voice (comma-separated hosts or CIDRs as your deployment supports).
  4. Place test calls and confirm in SigNoz that TelPhi connects without Invalid … endpoint URL or proxy 403/timeout errors.

Mock servers that use self-signed TLS may require operator-side trust material on the Voice host; Delphi does not expose a per-provider “skip TLS verify” toggle in TelWeb.

Mock and lab speech servers

Common patterns:

GoalApproach
Lab STT on a fixed IPAzure STT → Advanced → Endpoint URLwss://<ip>:<port>/… with the path your mock expects
Lab TTS on HTTPAzure TTS → Endpoint URLhttps://<ip>:<port>/…
Full-stack realtime stubPythia Realtime or OpenAI Realtime custom URL pointing at your WebSocket server
Carrier-style Azure region overrideLeave region set for query defaults but override host via Endpoint URL

After changing endpoint URLs, publish the flow (or run a draft test call) so Voice picks up the new inline provider config.

Troubleshooting

SymptomLikely causeWhat to check
Invalid Azure STT endpoint URL in Voice logsMalformed URL or unsupported schemeMust be a parseable wss:// or ws:// URL; include port if not 443
Connection timeout to public AzureProxy missing or Squid blocks destinationVoice HTTPS_PROXY; Squid access log
Connection timeout to private IPRouting or proxy intercepting RFC1918NO_PROXY; security groups between Voice and speech host
TLS / certificate errorsMock server cert not trustedInstall CA on Voice host or terminate TLS on a trusted gateway
Works with DNS but not IPSquid ACL allows domain onlyAdd destination IP to Squid ACL or bypass via NO_PROXY

For operator-side container and proxy debugging, see Instance debugging and Squid troubleshooting.

See also