Skip to content
Radient LogoRadient Documentation

Speech (Text-to-Speech) API Usage Guide

Generate lifelike speech audio from text using Radient's Speech API. Ideal for assistants, IVR systems, accessibility features, and any application that needs high-quality audio output on demand.

This guide shows how to call the endpoint, control the voice, format, and speed, and save the audio result.

#Core Concepts

The Speech API uses the /v1/speech endpoint and returns an audio file stream.

Key features:

  • Multiple voices and quality levels (models tts-1, tts-1-hd, gpt-4o-mini-tts).
  • Choose audio format (mp3, opus, aac, flac, wav, pcm) and playback speed.
  • Provider-aware (currently OpenAI-compatible).

#Text-to-Speech

Convert text to speech and save the resulting audio file locally.

Endpoint: POST /v1/speech

  • Consumes: application/json
  • Produces: audio/mpeg (when response_format is mp3; content type may vary by format)

Example Request (Python using requests):

python
import requests

RADIENT_API_KEY = "YOUR_RADIENT_API_KEY"
RADIENT_BASE_URL = "https://api.radient.com/v1"  # Or your specific Radient API endpoint

headers = {
    "Authorization": f"Bearer {RADIENT_API_KEY}",
    "Content-Type": "application/json",
    # "Accept": "audio/mpeg"  # Optional; server will stream audio back
}

payload = {
    "input": "Hello! This is a test of Radient's text-to-speech service.",
    "model": "tts-1",               # or "tts-1-hd", "gpt-4o-mini-tts"
    "voice": "alloy",               # "alloy", "ash", "ballad", "coral", "echo", "fable", "onyx", "nova", "sage", "shimmer", "verse"
    "response_format": "mp3",       # "mp3", "opus", "aac", "flac", "wav", "pcm"
    "speed": 1.0,                   # between 0.25 and 4.0
    "provider": "openai"            # optional, currently "openai"
}

response = requests.post(f"{RADIENT_BASE_URL}/speech", headers=headers, json=payload, stream=True)

if response.status_code == 200:
    # Save the streamed audio to a file
    output_filename = "speech_output.mp3"  # match response_format
    with open(output_filename, "wb") as f:
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:
                f.write(chunk)
    print(f"Saved audio to {output_filename}")
else:
    # If not 200, the endpoint returns JSON error details
    try:
        print("Error:", response.status_code, response.json())
    except Exception:
        print("Error:", response.status_code, response.text)

#Request Body (JSON)

FieldTypeDescriptionRequiredAllowed / Range
inputstringThe text to synthesize into speech.Yes1–4096 chars
modelstringTTS model to use.Yestts-1, tts-1-hd, gpt-4o-mini-tts
voicestringVoice preset.Yesalloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse
response_formatstringOutput audio format.Nomp3, opus, aac, flac, wav, pcm
speednumberPlayback speed multiplier.No0.25–4.0
providerstringUnderlying provider.Noopenai

#Responses

  • 200 OK: Audio stream (file). Content type corresponds to the chosen response_format (e.g., audio/mpeg for mp3).
  • 400 Bad Request: Invalid fields or missing parameters (JSON body with error details).
  • 500 Internal Server Error: Unexpected server issue.

#Tips and Best Practices

  • Use tts-1-hd for higher fidelity when latency is less critical; tts-1 for lower-latency needs.
  • Select mp3 for broad compatibility; consider opus for very low bitrate/high quality in supported clients.
  • Keep input under ~4k characters per request; chunk longer text and combine outputs client-side.
  • Cache or reuse generated clips if the same text is requested frequently to reduce latency and cost.

For a full list of API endpoints and schemas, see the main API Reference.