Skip to main content

Overview

NanoGPT supports voice cloning so you can create reusable custom voices from short reference audio clips and then use them in text-to-speech (TTS). There are two voice-clone providers exposed via NanoGPT:
  • MiniMax voice clone: creates a reusable customVoiceId you can pass as voice when using compatible MiniMax Speech TTS models.
  • Qwen voice clone (1.7B): generates a speaker embedding file URL that you can pass to Qwen 3 TTS as speaker_voice_embedding_file_url.
Both flows are asynchronous:
  1. Submit a clone job, receive a runId (HTTP 202).
  2. Poll the status endpoint until status: "completed".

Authentication

All voice clone endpoints support:
  • API key auth: x-api-key: <your NanoGPT API key> (or Authorization: Bearer <key>)
  • Session auth (web app): browser cookies

Endpoints

MiniMax Voice Clone

Submit a Clone Job

Supports:
  • multipart/form-data (upload an audio file)
  • application/json (provide audioUrl)
JSON request
Form fields Response (202)

Poll Job Status

Request body
Response (in progress)
Response (completed)

Qwen Voice Clone (1.7B)

Submit a Clone Job

Supports:
  • multipart/form-data (upload an audio file)
  • application/json (provide audioUrl)
JSON request
Form fields Response (202)

Poll Job Status

Request body
Response headers While the job is still processing, the response may include an X-Poll-After header indicating how many seconds to wait before polling again. Response (completed)

Using Cloned Voices with TTS

MiniMax cloned voice (customVoiceId)

Use your customVoiceId as the normal voice on POST /api/tts with a compatible MiniMax Speech TTS model:

Qwen cloned voice (speakerEmbeddingUrl)

Use speakerEmbeddingUrl as speaker_voice_embedding_file_url on POST /api/tts with Qwen-3-TTS-1.7B:

Saving MiniMax Voice IDs (Web App)

If you use the NanoGPT web app, you can save and list your MiniMax customVoiceId values. These endpoints are session-authenticated only (they do not support API key auth).

List Saved Voice IDs

Response

Save a Voice ID

Request body
Response

Voice Clone Storage and Retention

Last verified: February 21, 2026. Retention depends on the provider behind each voice clone model:
  • minimax-voice-clone (WaveSpeed + MiniMax): New cloned voice IDs are temporary. If a cloned voice is not used in a real TTS synthesis call within 7 days (168 hours), it is deleted. If it is used at least once in TTS within that window, it is kept long-term. Preview generated during clone creation does not activate or persist the voice.
  • qwen-voice-clone (fal.ai): The returned speaker embedding file URL is hosted by fal. fal guarantees hosted generated files for at least 7 days, then they may be removed at any time. Download and store the embedding yourself immediately for long-term reuse.
  • inworld-voice-clone (Inworld Voice API, if enabled in your workspace): Inworld does not publish a fixed auto-delete window for cloned voices in public docs. Treat cloned voices as persistent until explicitly deleted from your workspace. Note: Inworld’s Zero Data Retention mode explicitly does not apply to voice-cloning audio samples.

How to Keep and Reuse Voice Clones

MiniMax / WaveSpeed (customVoiceId)

  1. Save the returned voice ID (customVoiceId; provider docs may also call this voice_id).
  2. Run at least one real TTS synthesis with that voice ID within 7 days.
  3. Reuse the same voice ID in later TTS requests.

Qwen (speakerEmbeddingUrl)

  1. Save the returned speakerEmbeddingUrl (speaker_embedding_url in some provider docs).
  2. Download the embedding file right away.
  3. Store it in your own durable storage (S3, R2, etc.).
  4. Use your stored URL later as speaker_voice_embedding_file_url.
Example:

Inworld (voice_id, if enabled)

  1. Save the returned voice_id.
  2. Reuse it directly for Inworld TTS.
  3. If deleted from Inworld, it must be re-cloned.

Can I Download the Clone if It Gets Deleted?

  • MiniMax / WaveSpeed: no portable voice embedding download is documented; keep the voice ID active by using it in time.
  • Qwen: yes, download the speaker embedding file from speakerEmbeddingUrl / speaker_embedding_url.
  • Inworld: no documented voice-embedding export endpoint; keep the voice_id and avoid accidental deletion.
Warning: Provider retention policies may change. This page reflects provider docs as of February 21, 2026.

Pricing

Clone runs are charged as a flat per-run fee:
  • MiniMax voice clone: $1.00 per run
  • Qwen voice clone (1.7B): $0.25 per run
The submit response includes cost and paymentSource for the run.

Limitations

  • MiniMax and Qwen clone endpoints are asynchronous; clients must poll status until completion.
  • MiniMax customVoiceId must match ^[A-Za-z][A-Za-z0-9]{7,}$.