MiniMax Speech 2.8 HD
통합
모델 id
minimax/speech-2.8-hd
# 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/minimax/speech-2.8-hd?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
}'
# 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/minimax/speech-2.8-hd?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
}),
});
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 = {
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view.",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/minimax/speech-2.8-hd", 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/ko/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": "minimax/speech-2.8-hd",
"input": {
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
}
}
Doitong API를 통해 MiniMax Speech 2.8 HD 모델(minimax/speech-2.8-hd)을 호출합니다. 에이전트용 문서: https://doitong.com/ko/developers/models/minimax/speech-2.8-hd.md
POST https://api.doitong.com/v1/run/minimax/speech-2.8-hd?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
}
응답 상태가 "queued" 또는 "running"이면 "succeeded"가 될 때까지 GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20을 폴링하세요. 파일은 outputs[].url에 있습니다. POST https://api.doitong.com/v1/quote/minimax/speech-2.8-hd에 동일한 본문을 보내면 실행 전에 정확한 가격을 반환합니다.
이 요청: $0.019 19 API 크레딧 이 페이지에서 실행
새 API 키입니다. 지금만 표시되며 이미 아래 코드와 API 키 필드에 입력되어 있습니다. 안전하게 보관하세요. 브라우저에서 실행되는 코드에 절대 넣지 마세요.
예시
요청 만들기
컨트롤은 모델 스키마에서 생성됩니다. 값을 변경하면 코드와 가격이 업데이트됩니다.
POST
/run/minimax/speech-2.8-hd?wait=20
견적 → $0.019
# 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/minimax/speech-2.8-hd?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
}'
# 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/minimax/speech-2.8-hd?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
}),
});
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 = {
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view.",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/minimax/speech-2.8-hd", 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": "minimax/speech-2.8-hd",
"input": {
"prompt": "Welcome aboard. Tonight we cruise along the northern coast, where the lighthouse has guided sailors home for two hundred years. Find a warm seat on the upper deck and enjoy the view."
},
"wait_seconds": 20
}
}
}
MiniMax Speech 2.8 HD 정보
MiniMax Speech 2.8 HD는 30개 이상의 언어로 텍스트를 음성으로 변환하며 다음을 세밀하게 제어할 수 있습니다. 인라인 일시 정지 마커, 음성 속도, 피치 및 볼륨, 사용자 지정 발음 사전과 음성 효과를 지원합니다. 기본 제공 음성 중에서 선택하고 출력 샘플링 레이트와 형식을 지정할 수 있습니다.
매개변수
이름유형
기본값허용됨
설명
prompt필수
유형string
≤ 10,000자
음성 합성용 텍스트입니다. 일시정지는 x가 0.01~99.99초인 `<#x#>`로 지정합니다. 사용 가능한 삽입 태그는 `(laughs)`, `(sighs)`, `(coughs)`, `(clears throat)`, `(gasps)`, `(sniffs)`, `(groans)`, `(yawns)`입니다.
voice_setting선택 사항
유형object
기본값{"english_normalization":false,"pitch":0,"speed":1,"voice_id":"Wise_Woman","vol":1}
음성을 구성하기 위한 설정입니다.
voice_setting.voice_id선택 사항
유형string
기본값Wise_Woman
≥ 1 characters
음성 합성에 사용되는 사전 정의된 음성 식별자입니다.
voice_setting.speed선택 사항
유형number
기본값1
0.5 – 2
말하기 속도이며, 0.5에서 2.0까지입니다.
voice_setting.vol선택 사항
유형number
기본값1
0.01 – 10
출력 음량이며, 0에서 10까지입니다.
voice_setting.pitch선택 사항
유형integer
기본값0
-12 – 12
음성의 피치이며, -12에서 12까지입니다.
voice_setting.emotion선택 사항
유형enum
happysadangryfearfuldisgustedsurprisedneutral
합성 음성의 감정적 어조입니다.
voice_setting.english_normalization선택 사항
유형boolean
기본값false
숫자를 더 잘 읽기 위해 약간의 추가 지연 시간을 사용하는 영어 텍스트 정규화 옵션입니다.
audio_setting선택 사항
유형object
오디오 구성을 위한 설정입니다.
audio_setting.sample_rate선택 사항
유형enum
기본값32000
80001600022050240003200044100
생성된 오디오의 샘플링 레이트입니다.
audio_setting.bitrate선택 사항
유형enum
기본값128000
3200064000128000256000
생성된 오디오의 비트레이트입니다.
audio_setting.format선택 사항
유형enum
기본값mp3
mp3pcmflac
오디오 형식입니다.
audio_setting.channel선택 사항
유형enum
기본값1
12
오디오 채널 수입니다. 1은 모노, 2는 스테레오입니다.
language_boost선택 사항
유형enum
ChineseChinese,YueEnglishArabicRussianSpanishFrenchPortugueseGermanTurkishDutchUkrainianVietnameseIndonesianJapaneseItalian
+22개 더 보기
KoreanThaiPolishRomanianGreekCzechFinnishHindiBulgarianDanishHebrewMalaySlovakSwedishCroatianHungarianNorwegianSlovenianCatalanNynorskAfrikaansauto선택한 언어와 방언의 인식 성능을 향상합니다.
output_format선택 사항
유형enum
기본값hex
urlhex
출력 콘텐츠 형식이며 스트리밍하지 않는 응답에만 적용됩니다.
pronunciation_dict선택 사항
유형object
텍스트를 대체하는 데 사용하는 사용자 지정 발음 사전입니다.
pronunciation_dict.tone_list선택 사항
유형string[]
['text/(pronunciation)', ...] 구문을 사용하는 발음 대체 목록입니다. 예: ['燕少飞/(yan4)(shao3)(fei1)']. 중국어 성조 숫자는 1~5입니다.
normalization_setting선택 사항
유형object
오디오 음량 정규화를 제어하는 설정입니다.
normalization_setting.enabled선택 사항
유형boolean
기본값true
오디오 음량 정규화를 활성화합니다.
normalization_setting.target_loudness선택 사항
유형number
기본값-18
-70 – -10
LUFS로 측정한 목표 음량이며 기본값은 -18.0입니다.
normalization_setting.target_range선택 사항
유형number
기본값8
0 – 20
LU로 측정한 목표 음량 범위이며 기본값은 8.0입니다.
normalization_setting.target_peak선택 사항
유형number
기본값-0.5
-3 – 0
dBTP로 측정한 목표 피크 레벨이며 기본값은 -0.5입니다.
voice_modify선택 사항
유형object
음성의 피치, 강도, 음색을 수정하는 설정입니다.
voice_modify.pitch선택 사항
유형integer
기본값0
-100 – 100
반음 단위의 피치 제어입니다. 음수 값은 음성을 낮추고 양수 값은 높입니다. 허용 범위는 -100~100입니다.
voice_modify.intensity선택 사항
유형integer
기본값0
-100 – 100
음성 에너지 제어입니다. 설정값이 클수록 말소리가 더 역동적입니다. 허용 범위는 -100~100입니다.
voice_modify.timbre선택 사항
유형integer
기본값0
-100 – 100
-100~100 범위에서 음색의 조성을 제어하는 음색 조정값입니다.
필수
출력
GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "minimax/speech-2.8-hd",
"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": 19,
"usd": "0.019",
"charged": 19,
"refunded": 0
},
"input": {
"prompt": "Hello! Welcome to our new studio. <#0.5#> Let's make something wonderful today."
},
"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_ms": 1
},
"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"
}
}
파일 보관 방식 선택모든 outputs[].url은 스토리지에 저장된 복사본입니다. 계정 설정 또는 ?storage=에 따라 영구 보관(GB-월 단위 과금)하거나 7일 동안 무료로 보관합니다.
모든 모델에서 동일한 구조이미지, 동영상, 오디오 모두 type, url, content_type, width, height 및 duration을 사용합니다. output은 모델 자체의 결과 객체입니다.
출력 필드
- audio
- object {url, content_type, file_name, file_size}생성된 오디오 파일입니다.
- duration_ms
- integer밀리초로 측정한 오디오 길이입니다.
다른 MiniMax Speech 변형
더 많은 모델: 텍스트를 음성으로
AI 에이전트용: 이 페이지의 Markdown 버전: https://doitong.com/ko/developers/models/minimax/speech-2.8-hd.md. 모든 모델 및 가이드: https://doitong.com/developers/llms.txt