POST
/
tts-stream
curl --request POST \
  --url https://client.camb.ai/apis/tts-stream \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '{
  "text": "<string>",
  "voice_id": 123,
  "language": 1,
  "gender": 0,
  "age": 2
}'
This response does not have an example.

Specifying Gender

Gender is specified in the payload as an integer. The following values are supported:

NOT_KNOWN = 0
MALE = 1
FEMALE = 2
NOT_APPLICABLE = 9

Choosing a Voice

The voice is specified in the payload as an integer. To create a new voice check the /create-custom-voice endpoint To get a list of available voices check the /list-voices endpoint

Specifying Language

Check the /source-languages endpoint or /target-languages endpoint for supported languages.

Response Format

The endpoint returns a streaming response with audio/flac content type containing the generated audio. The response includes an X-Credits-Required header indicating the number of credits required for this request.

Example Code

tts_payload = {
    "text": "Jupiter, the largest planet in our solar system, is a gas giant with swirling storms like the iconic Great Red Spot.",
    "voice_id": <123>,  # voice ID
    "language": 1,  # English
}

async def create_tts_task(session: aiohttp.ClientSession, payload: dict) -> None:
    """Create a TTS task and save the output to a file."""
    async with session.post("https://client.camb.ai/apis/tts-stream", json=payload, headers={"x-api-key": <api-key>}) as res:
        res.raise_for_status()
        with open("output.wav", "wb") as f:
            async for chunk in res.content.iter_chunked(512):
                f.write(chunk)

async def main():
    async with aiohttp.ClientSession() as session:
        await create_tts_task(session, tts_payload)
asyncio.run(main())

Authorizations

x-api-key
string
header
required

The x-api-key is a custom header required for authenticating requests to our API. Include this header in your request with the appropriate API key value to securely access our endpoints. You can find your API key(s) in the 'API' section of our studio website.

Body

application/json
text
string
required

The text to be converted to speech

voice_id
integer
required

The voice ID to be used to generate speech.

language
enum<integer>
required

The language in which the provided text is written in.

Available options:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148
gender
enum<integer>
default:
1

The gender of the speaker.

Available options:
0,
1,
2,
9
age
integer | null

The age of the speaker of in the speech to be generated.

Required range: x >= 1

Response

200
audio/flac
Audio stream in FLAC format

The response is of type file.