Skip to main content

Telnyx TTS

TelnyxTTS is a streaming text-to-speech provider that talks to Telnyx’s wss://api.telnyx.com/v2/text-to-speech/speech endpoint. It implements Patter’s pipeline-mode TTSProvider interface — drop it in anywhere ElevenLabsTTS or CartesiaTTS would go.

Why use it

If you’re already on Telnyx for telephony (see Carrier — Telnyx), keeping TTS on the same vendor avoids fanning out to a third-party voice cloud:
  • One bill, one credential. No extra ElevenLabs / Cartesia / Rime account to manage.
  • On-network audio path. Synthesised audio comes back through Telnyx’s edge instead of egressing from a third-party TTS region.
  • Telnyx NaturalHD voices. Five high-quality voices are bundled (astra, luna, atlas, hera, zeus).
Telnyx returns audio as base64-encoded MP3 frames. TelnyxTTS.synthesize() yields raw MP3 bytes, so downstream Patter code that expects PCM should pipe through an MP3 decoder (e.g. ffmpeg / pydub). For a fully PCM-native pipeline pair Telnyx with ElevenLabsTTS.for_telnyx() or CartesiaTTS instead.

Install

TelnyxTTS ships in the core getpatter package — no extras needed:

Quickstart

Constructor

ParameterDefaultDescription
api_key / apiKey— requiredTelnyx API v2 key (Bearer token).
voice"Telnyx.NaturalHD.astra"Telnyx voice ID. See supported voices.
base_url / baseUrlTelnyx prod URLOverride for testing.

Voices

Telnyx ships five NaturalHD voices, exposed as a StrEnum for autocomplete in Python:
Pass any other voice ID Telnyx publishes as a plain string — the type accepts both.

Sample rates

TelnyxTTSSampleRate enum is exposed for use with the lower-level Telnyx API calls (8000, 16000, 24000 Hz). The streaming TTS endpoint itself returns MP3 at the codec’s native rate.

Pricing

Telnyx TTS pricing is bundled with your Telnyx plan — see the Telnyx TTS pricing page. Patter does not charge a TTS line item for TelnyxTTS; the cost shows up on your Telnyx invoice alongside the carrier minutes. See Metrics for how to register a custom rate via Patter(pricing={...}) if you want it surfaced in the dashboard.

Low-level usage

See also