Zonos2
Playground
Try it on WavespeedAI!Zonos2 is a fast multilingual voice-cloning text-to-speech model that generates natural speech from text using a short reference audio sample. Ready-to-use REST inference API for voice cloning, multilingual TTS, narration, dubbing, character dialogue, virtual assistants, creator content, and professional speech generation workflows with simple integration, no coldstarts, and affordable pricing.
Features
Zonos2 Voice Cloning Text-to-Speech
Zonos2 Voice Cloning Text-to-Speech is an open-source, real-time text-to-speech model from Zyphra. It clones a voice from a short reference audio sample and synthesizes the supplied text in the cloned voice.
Why Choose This?
-
Voice cloning from reference audio
Clone a speaker’s voice from a short audio sample and generate speech from text. -
Real-time text-to-speech model
Built on Zonos2, an open-source real-time TTS model from Zyphra. -
Background cleanup option
Useclean_speaker_backgroundwhen the reference audio has a clean background. -
Standard audio output
The generated audio is returned as a URL in the standard WaveSpeed prediction response.
Parameters
| Parameter | Required | Description |
|---|---|---|
| audio | Yes | Reference audio URL used to clone the voice. A short, clear sample works best. |
| text | Yes | Text to synthesize in the cloned voice. |
| clean_speaker_background | No | Enable when the reference audio has a clean background. |
How to Use
- Upload reference audio — Provide a short, clear audio sample of the speaker voice you want to clone.
- Enter text — Provide the text that should be spoken in the cloned voice.
- Set background option (optional) — Enable
clean_speaker_backgroundwhen the reference audio has a clean background. - Submit — Generate the cloned-voice speech output.
Output
Returns generated audio URL(s) in the standard WaveSpeed prediction response.
The generated audio is returned as WAV, 44.1kHz mono.
Pricing
Pricing is $0.01 per minute.
| Reference Audio Duration | Billed Minutes | Price |
|---|---|---|
| 0-60s | 1 | $0.01 |
| 61-120s | 2 | $0.02 |
| 121-180s | 3 | $0.03 |
Billing Rules
- Billing is based on the reference
audioduration. - Reference audio duration is rounded up to the next full minute.
- Minimum billing duration is 1 minute.
- Each billed minute costs $0.01.
Best Use Cases
- Voice cloning TTS — Generate speech in a cloned voice from a reference audio sample.
- Narration generation — Create spoken narration from text using a target speaker voice.
- Dialogue prototyping — Test voice lines, character speech, or script variations.
- Localized speech generation — Use supported language normalization codes for multilingual text handling.
- Audio content creation — Generate voice audio for videos, demos, apps, or creative workflows.
Pro Tips
- Use clean reference audio with minimal background noise for better cloning quality.
- Use a short and clear speaker sample for more stable voice cloning.
- Make sure the reference audio contains the target speaker clearly.
- Enable
clean_speaker_backgroundonly when the reference audio has a clean background. - Ensure the audio URL is publicly accessible.
Notes
audioandtextare required fields.- Provider sampling settings use the default mapping values.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/zonos2" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"clean_speaker_background": false
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| audio | string | Yes | - | - | Reference audio URL used to clone the voice. |
| text | string | Yes | - | - | Text to synthesize in the cloned voice. |
| clean_speaker_background | boolean | No | false | - | Enable when the reference audio has a clean background. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |