Skip to main content
Version: 0.9.17-patch1 — archived documentation

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 URL → wss://<ip>:<port>/… with the path your mock expects
Lab TTS on HTTPAzure TTS → Endpoint URL → https://<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​