VibeVoice 1.5B
Tích hợp
vibevoice
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/vibevoice?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/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/vibevoice?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
}),
});
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 + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]",
},
{
"preset": "Carter [EN]",
},
],
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/vibevoice", 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"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/vi/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "vibevoice",
"input": {
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
}
}
Gọi mô hình VibeVoice 1.5B (vibevoice) qua Doitong API. Tài liệu cho tác nhân: https://doitong.com/vi/developers/models/vibevoice.md
POST https://api.doitong.com/v1/run/vibevoice?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
}
Nếu trạng thái phản hồi là "queued" hoặc "running", hãy thăm dò GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 cho đến khi trạng thái là "succeeded"; tệp nằm trong outputs[].url. POST https://api.doitong.com/v1/quote/vibevoice với cùng nội dung sẽ trả về giá chính xác trước khi chạy.
Yêu cầu này: ≈0,02 $ 20 tín dụng API Chạy trên trang này
Khóa API mới của bạn. Khóa này chỉ hiển thị lúc này và đã được chèn vào mã cũng như trường khóa API bên dưới. Hãy giữ bí mật: không bao giờ đưa khóa này vào mã chạy trong trình duyệt.
Kết quả đầu tiên của bạn sẽ xuất hiện ở đây
Tạo một yêu cầu bên dưới và chạy bằng khóa API của bạn. Đầu ra được sao chép vào bộ lưu trữ của chúng tôi, giữ vĩnh viễn hoặc 7 ngày miễn phí.
Tạo một yêu cầu
Các điều khiển được tạo từ lược đồ mô hình. Mã và giá sẽ cập nhật khi bạn thay đổi chúng.
/run/vibevoice?wait=20
báo giá → 0,02 $
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/vibevoice?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/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/vibevoice?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
}),
});
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 + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]",
},
{
"preset": "Carter [EN]",
},
],
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/vibevoice", 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"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "vibevoice",
"input": {
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
},
"wait_seconds": 20
}
}
}
Chạy yêu cầu này
Key của bạn vẫn nằm trong trình duyệt này: key chỉ được gửi đến Doitong API và chỉ được lưu trong localStorage nếu bạn chọn Ghi nhớ. Nhận khóa API
Giới thiệu về VibeVoice 1.5B
Chuyển `script` tối đa 90000 ký tự thành giọng nói. Hội thoại có thể dùng tiền tố 'Speaker X:', còn danh sách `speakers` bắt buộc xác định các giọng. `cfg_scale` nằm trong khoảng 1 đến 2 và điều khiển mức bám sát văn bản, còn `seed` giúp tái lập kết quả. Trả về âm thanh cùng thời lượng và sample rate.
Tham số
scriptbắt buộc
speakersbắt buộc
speakers[].presettùy chọn
speakers[].audio_urltùy chọn
seedtùy chọn
cfg_scaletùy chọn
enable_safety_checkertùy chọn
Đầu ra
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "vibevoice",
"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": 20,
"usd": "0.02",
"charged": 20,
"refunded": 0
},
"input": {
"script": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"speakers": [
{
"preset": "Frank [EN]"
},
{
"preset": "Carter [EN]"
}
]
},
"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
},
"duration": 5,
"sample_rate": 24000,
"generation_time": 5.6,
"rtf": 0.53
},
"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.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Các trường đầu ra
- audio
- object {url, content_type, file_name, file_size}Tệp âm thanh chứa giọng nói đã tổng hợp.
- duration
- numberĐộ dài đầu ra âm thanh, tính bằng giây.
- sample_rate
- integerTốc độ lấy mẫu của đầu ra âm thanh.
- generation_time
- numberThời gian tạo âm thanh, tính bằng giây.
- rtf
- numberHệ số thời gian thực được tính bằng generation_time chia cho audio_duration; giá trị nhỏ hơn cho thấy hiệu năng tốt hơn.
Các biến thể Vibevoice khác
Thêm mô hình: Văn bản sang giọng nói
Dành cho tác nhân AI: trang này ở dạng Markdown tại https://doitong.com/vi/developers/models/vibevoice.md. Tất cả mô hình và hướng dẫn: https://doitong.com/developers/llms.txt