# Bytedance Seed Speech Text to Speech API

> متن سے تقریر، متعدد پری سیٹ آوازوں، رفتار، پچ، والیوم اور بولنے کے انداز کی ہدایات کے ساتھ

`text` کے زیادہ سے زیادہ 5000 حروف کو آڈیو میں تبدیل کرتا ہے۔ `voice` منتخب کریں، اور اختیاری طور پر `language` مقرر کریں یا خودکار شناخت فعال رہنے دیں۔ `speed` اور `volume` 0.5 سے 2 تک، `pitch` -12 سے 12 سیمی ٹونز تک تبدیل ہوتا ہے، اور `voice_instruction` ادائیگی کے انداز کو کنٹرول کرتا ہے۔ آؤٹ پٹ 8000 سے 48000 Hz تک کی سیمپل ریٹس پر mp3 یا opus ہوتی ہے۔

- Model id: `bytedance/seed-speech/tts/v2`
- Made by: ByteDance
- Category: Text to Speech
- Output: audio
- Price: $0.03 / 1000 characters (cheapest run $0.03 (30 API credits))
- Run: `POST https://api.doitong.ru/v1/run/bytedance/seed-speech/tts/v2`
- Quote: `POST https://api.doitong.ru/v1/quote/bytedance/seed-speech/tts/v2`
- Docs page: https://doitong.com/ur/developers/models/bytedance/seed-speech/tts/v2

## Pricing

Price: **$0.03 / 1000 characters**. Billed per character of `text` (the price is per 1000 characters).

The full example input below costs $0.002 = 2 API credits (50 characters × 30 API credits / 1000 characters).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.ru/v1/quote/bytedance/seed-speech/tts/v2` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `text` |  | string | yes |  | ≤ 5000 characters | ترکیب شدہ تقریر میں تبدیل کیا جانے والا متن۔ |
| `voice` |  | enum (string) | no | `stokie_en` | `vivi_mixed_en_zh_ja_es_id`, `mindy_en_es_id_pt_zh`, `stokie_en`, `dacey_en`, `tim_en`, `kian_en_zh`, `cedric_en_zh`, `sophie_en_zh`, `jean_en_zh`, `magnus_en_zh`, `mabel_en_zh`, `nadia_en_zh`, `opal_en_zh`, `pearl_en_zh`, `quentin_en_zh`, `vienna_mixed_en_zh`, `alina_mixed_en_zh`, `corinne_mixed_en_zh`, `esther_mixed_en_zh`, `freya_mixed_en_zh`, `gigi_mixed_en_zh`, `holly_mixed_en_zh`, `lyla_mixed_en_zh`, `daisy_mixed_en_zh`, `tracy_es_zh`, `jess_ja_es_id_pt_en_zh`, `pinky_es_ko_mixed_en_zh`, `sweety_ja_es`, `sandy_es_mixed_en_zh`, `sven_de`, `minimi_ja`, `usseau_fr`, `felipe_es`, `han_id`, `martins_pt`, `enzo_it`, `shane_ko`, `bonnie_zh`, `felix_zh`, `celeste_zh`, `monkey_king_zh` | تخلیق کی آواز کا preset، جس کے نام میں معاون زبانوں کے codes بھی شامل ہوتے ہیں۔ زبان کی معاونت الگ ہو سکتی ہے، جیسے 'en_zh'، یا English–Chinese کے ہموار امتزاج کی اجازت دے سکتی ہے، جسے 'mixed_en_zh' ظاہر کرتا ہے۔ |
| `output_format` |  | enum (string) | no | `mp3` | `mp3`, `opus` | آڈیو آؤٹ پٹ encoding: 'mp3'، MP3 بناتا ہے جبکہ 'opus'، Ogg container میں پیک کیا ہوا Opus بناتا ہے۔ |
| `sample_rate` |  | enum (integer) | no | `24000` | `8000`, `16000`, `22050`, `24000`, `32000`, `44100`, `48000` | آؤٹ پٹ آڈیو کی Hz میں sampling frequency۔ |
| `speed` |  | number | no | `1` | 0.5 – 2 | گفتگو کی رفتار کا ملٹی پلائر: 1.0 معمول کی رفتار، 0.5 نصف رفتار اور 2.0 دوگنی رفتار دیتا ہے۔ |
| `volume` |  | number | no | `1` | 0.5 – 2 | حجم کا ملٹی پلائر: 1.0 معمول کا حجم، 0.5 نصف حجم اور 2.0 دوگنا حجم دیتا ہے۔ |
| `pitch` |  | integer | no | `0` | -12 – 12 | آواز کی pitch میں semitones کے لحاظ سے تبدیلی: 0 pitch برقرار رکھتا ہے، -12 اسے ایک octave نیچے اور 12 ایک octave اوپر کرتا ہے۔ |
| `language` |  | enum (string) \| null | no |  | `zh`, `en`, `ja`, `es-mx`, `id`, `pt-br`, `ko`, `it`, `de`, `fr` | مطالعے کی زبان کو override کرنا: نہ دینے پر detection خودکار ہوتی ہے اور bilingual voices چینی و English کو ہموار انداز میں ملا سکتی ہیں؛ دینے پر detection غیر فعال ہو جاتی ہے اور مطالعہ ایک زبان تک محدود رہتا ہے۔ چینی کے لیے zh، English کے لیے en، Japanese کے لیے ja، Mexican Spanish کے لیے es-mx، Indonesian کے لیے id، Brazilian Portuguese کے لیے pt-br، Korean کے لیے ko، Italian کے لیے it، German کے لیے de یا French کے لیے fr منتخب کریں۔ |
| `voice_instruction` |  | string \| null | no |  |  | اختیاری قدرتی زبان کی delivery instruction، جیسے 'Speak in a cheerful tone' یا 'Could you speak a bit slower?'. یہ tone، emotion، volume اور pace کی ہدایت دے سکتی ہے۔ |

## Example input

Required parameters only:

```json
{
  "text": "Hello from Doitong. This is a short test sentence."
}
```

A fuller example:

```json
{
  "text": "Hello from Doitong. This is a short test sentence."
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/bytedance/seed-speech/tts/v2?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello from Doitong. This is a short test sentence."
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/bytedance/seed-speech/tts/v2?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "text": "Hello from Doitong. This is a short test sentence."
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "text": "Hello from Doitong. This is a short test sentence.",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bytedance/seed-speech/tts/v2", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "bytedance/seed-speech/tts/v2",
      "input": {
        "text": "Hello from Doitong. This is a short test sentence."
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "bytedance/seed-speech/tts/v2",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 2,
    "usd": "0.002",
    "charged": 2,
    "refunded": 0
  },
  "input": {
    "text": "Hello from Doitong. This is a short test sentence."
  },
  "output": {
    "audio": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_name": "0-output.mp3",
      "file_size": 1843200
    }
  },
  "outputs": [
    {
      "type": "audio",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_size": 1843200,
      "duration": 12,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `audio` | object {url, content_type, file_name, file_size} | تخلیق سے تیار کردہ آڈیو فائل۔ |

## Related models

- [Eleven v4 Text to Speech](https://doitong.com/developers/models/elevenlabs/tts/eleven-v4.md) (`elevenlabs/tts/eleven-v4`): $0.08 / 1000 characters
- [MiniMax Speech 2.8 HD](https://doitong.com/developers/models/minimax/speech-2.8-hd.md) (`minimax/speech-2.8-hd`): $0.10 / 1000 characters
- [Async Text to Speech Pro V1.0](https://doitong.com/developers/models/async/tts-pro/v1.0.md) (`async/tts-pro/v1.0`): $0.01 / 1000 characters
- [Chatterbox · Speech to Speech](https://doitong.com/developers/models/chatterbox/speech-to-speech.md) (`chatterbox/speech-to-speech`): $0.015 / minute of input audio
- [Chatterbox · Text to Speech](https://doitong.com/developers/models/chatterbox/text-to-speech.md) (`chatterbox/text-to-speech`): $0.025 / 1000 characters
- [Chatterbox · Text to Speech · Multilingual](https://doitong.com/developers/models/chatterbox/text-to-speech/multilingual.md) (`chatterbox/text-to-speech/multilingual`): $0.025 / 1000 characters
- [Chatterboxhd · Speech to Speech](https://doitong.com/developers/models/resemble-ai/chatterboxhd/speech-to-speech.md) (`resemble-ai/chatterboxhd/speech-to-speech`): $0.02 / minute of input audio
- [Chatterboxhd · Text to Speech](https://doitong.com/developers/models/resemble-ai/chatterboxhd/text-to-speech.md) (`resemble-ai/chatterboxhd/text-to-speech`): $0.0108 / run

## Links

- HTML page: https://doitong.com/developers/models/bytedance/seed-speech/tts/v2
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=bytedance/seed-speech/tts/v2
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/bytedance/seed-speech/tts/v2
