Liste as vozes disponíveis, clone a sua a partir de uma amostra curta ou crie uma voz totalmente nova a partir de uma descrição em texto — e então use-a em qualquer chamada TTS. Abrange Minimax (clonagem / criação / vozes do sistema) e vozes personalizadas da ElevenLabs.
⚠️ Cobrança: a clonagem de voz é cobrada a $1.99 por clone (somente em caso de sucesso — falhas são reembolsadas automaticamente). A criação de voz atualmente não tem custo adicional. Usar as vozes predefinidas do sistema não gera nenhuma taxa extra.
Pegue um voice_id e use-o em uma chamada TTS. As vozes do sistema são gratuitas e prontas para uso; source=account retorna as vozes que você clonou / criou / gerou.
# Minimax system voices (optionally filter by language)
curl "https://apimodels.app/api/v1/minimax/voices?language=English" \
-H "Authorization: Bearer $API_KEY"
# ElevenLabs / preset voices
curl "https://apimodels.app/api/v1/audio/voices?pageNum=1&pageSize=30" \
-H "Authorization: Bearer $API_KEY"
# Voices on your own account (cloned / designed / custom)
curl "https://apimodels.app/api/v1/voices?source=account" \
-H "Authorization: Bearer $API_KEY"{
"voices": [
{ "voice_id": "English_Graceful_Lady", "name": "Graceful Lady", "language": "English" },
{ "voice_id": "male-qn-qingse", "name": "Qingse", "language": "Chinese" }
],
"total": 2
}Prepare uma amostra de voz limpa (10s-5min, sem ruído de fundo). Envie-a para obter um file_id → clone-a no voice_id de sua escolha → use-a no TTS.
# Step 1 — upload your voice sample (10s-5min clean audio)
curl -X POST https://apimodels.app/api/v1/minimax/files \
-H "Authorization: Bearer $API_KEY" \
-F "purpose=voice_clone" \
-F "file=@my-voice-sample.mp3"
# -> { "file": { "file_id": 123456789, ... } }# Step 2 — clone it into a new voice_id (must start with a letter, >= 8 chars)
curl -X POST https://apimodels.app/api/v1/minimax/voice/clone \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file_id": 123456789,
"voice_id": "myBrandVoice01"
}'| Field | Required | Type | Description |
|---|---|---|---|
| file_id | sim | number | O file ID retornado pelo envio do passo 1 |
| voice_id | sim | string | Seu novo voice ID — deve começar com uma letra, >= 8 caracteres |
# Step 3 — use the cloned voice in TTS
curl -X POST https://apimodels.app/api/v1/minimax/tts \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-speech-02-turbo",
"text": "This sentence is spoken in my own cloned voice.",
"voice_setting": { "voice_id": "myBrandVoice01", "speed": 1.0 }
}'cURL
# Step 2 — clone it into a new voice_id (must start with a letter, >= 8 chars)
curl -X POST https://apimodels.app/api/v1/minimax/voice/clone \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file_id": 123456789,
"voice_id": "myBrandVoice01"
}'Python
import os, requests
API = "https://apimodels.app/api/v1"
H = {"Authorization": f"Bearer {os.environ['API_KEY']}"}
# 1) Upload the sample
file_id = requests.post(
f"{API}/minimax/files",
headers=H,
data={"purpose": "voice_clone"},
files={"file": open("my-voice-sample.mp3", "rb")},
).json()["file"]["file_id"]
# 2) Clone -> your new voice_id
requests.post(
f"{API}/minimax/voice/clone",
headers={**H, "Content-Type": "application/json"},
json={"file_id": file_id, "voice_id": "myBrandVoice01"},
)
# 3) Speak with it
audio = requests.post(
f"{API}/minimax/tts",
headers={**H, "Content-Type": "application/json"},
json={
"model": "minimax-speech-02-turbo",
"text": "This sentence is spoken in my own cloned voice.",
"voice_setting": {"voice_id": "myBrandVoice01"},
},
)
print(audio.json())Node.js
const API = "https://apimodels.app/api/v1";
const H = { Authorization: `Bearer ${process.env.API_KEY}` };
import fs from "node:fs";
// 1) Upload the sample
const form = new FormData();
form.append("purpose", "voice_clone");
form.append("file", new Blob([fs.readFileSync("my-voice-sample.mp3")]), "sample.mp3");
const { file } = await fetch(`${API}/minimax/files`, { method: "POST", headers: H, body: form })
.then((r) => r.json());
// 2) Clone -> your new voice_id
await fetch(`${API}/minimax/voice/clone`, {
method: "POST",
headers: { ...H, "Content-Type": "application/json" },
body: JSON.stringify({ file_id: file.file_id, voice_id: "myBrandVoice01" }),
});
// 3) Speak with it
const audio = await fetch(`${API}/minimax/tts`, {
method: "POST",
headers: { ...H, "Content-Type": "application/json" },
body: JSON.stringify({
model: "minimax-speech-02-turbo",
text: "This sentence is spoken in my own cloned voice.",
voice_setting: { voice_id: "myBrandVoice01" },
}),
}).then((r) => r.json());
console.log(audio);Gere uma voz totalmente nova apenas a partir de uma descrição em texto — prático quando você não tem nenhuma gravação. Você recebe um voice_id para usar no TTS.
# Create a brand-new voice from a text description (no sample needed)
curl -X POST https://apimodels.app/api/v1/minimax/voice/design \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A warm, calm middle-aged male narrator with a slight British accent",
"preview_text": "Welcome to the evening news.",
"voice_id": "designedVoice01"
}'| Field | Required | Type | Description |
|---|---|---|---|
| prompt | sim | string | Descrição em texto da voz desejada (gênero, idade, sotaque, tom…) |
| preview_text | não | string | Texto usado para gerar uma prévia |
| voice_id | sim | string | Seu novo voice ID |
Crie uma voz personalizada da ElevenLabs a partir de uma URL de áudio pública (ou envie-a primeiro pela Files API). Forneça voice_url ou video_id.
# ElevenLabs-style custom voice from a hosted audio URL (or video_id)
curl -X POST https://apimodels.app/api/v1/audio/voices/custom \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_name": "My Narrator",
"voice_url": "https://r2.apimodels.app/uploads/.../sample.mp3"
}'| Field | Required | Type | Description |
|---|---|---|---|
| voice_name | sim | string | Nome de exibição da voz |
| voice_url | um de | string | URL pública do áudio de amostra |
| video_id | um de | string | ID da mídia enviada anteriormente (em vez de voice_url) |
| callback_url | não | string | Webhook chamado quando estiver pronto |