MiniMax Speech 2.8 Pricing: Cost per Character and per Hour of Audio
speech-2.8-hd costs $100.00 per 1M characters and speech-2.8-turbo $60.00 per 1M characters, the same rates MiniMax publishes. This page converts them into cost per minute and per hour of audio, compares the two tiers, and shows how to call the OpenAI-compatible endpoint.
Speech 2.8 prices per character
MiniMax Speech 2.8 is billed on the number of characters in the input field of each request. There are two models on the same /v1/audio/speech endpoint, and the price difference between them is the only pricing decision you need to make.
| Model ID | Per 1K characters | Per 1M characters |
|---|---|---|
speech-2.8-hd | $0.1000 | $100.00 |
speech-2.8-turbo | $0.0600 | $60.00 |
Prices are in USD and are deducted from prepaid credits on the account. Billing is per input character at the model's rate, with no subscription. The full list of models and rates is on the pricing page; the model overview, voices and parameter reference are on the Speech 2.8 model page.
Cost per minute and per hour of audio
Character prices are hard to reason about when you are budgeting an audiobook or a daily podcast feed. A usable planning figure is about 900 characters per minute of spoken audio, which works out to about 54,000 characters per hour. Actual density varies with language, punctuation, numerals and the pacing of the voice you choose, so treat the table below as an estimate and measure your own ratio after the first few jobs.
| Characters | Approx. audio | speech-2.8-hd | speech-2.8-turbo |
|---|---|---|---|
| 900 | 1 minute | $0.09 | $0.054 |
| 9,000 | 10 minutes | $0.90 | $0.54 |
| 27,000 | 30 minutes | $2.70 | $1.62 |
| 54,000 | 1 hour | $5.40 | $3.24 |
| 540,000 | 10 hours | $54.00 | $32.40 |
| 1,000,000 | about 18.5 hours | $100.00 | $60.00 |
| 5,400,000 | 100 hours | $540.00 | $324.00 |
The arithmetic is simple enough to inline in a budget spreadsheet: multiply the character count by the per-1M rate and divide by 1,000,000. One hour of speech-2.8-hd is 54,000 × 100.00 / 1,000,000 = $5.40; the same hour on speech-2.8-turbo is 54,000 × 60.00 / 1,000,000 = $3.24.
A worked example
Suppose you have a 12,000-character narration script. At 900 characters per minute that is roughly 13 minutes of audio. On speech-2.8-hd the job costs 12,000 × 100.00 / 1,000,000 = $1.20; on speech-2.8-turbo it costs $0.72. Generating a draft on turbo, reviewing it, and then rendering the final on hd costs $1.92 in total, which is still less than one dollar for a quarter hour of finished narration.
Choosing between hd and turbo
speech-2.8-hd costs about 1.67 times as much as speech-2.8-turbo per character, or, put the other way, turbo is about 40 percent cheaper. Both use the same request shape, the same voice IDs and the same output formats, so switching is a one-string change in the model field. A reasonable default:
- Pick
speech-2.8-hdwhen the audio is the product: audiobooks, published podcast segments, e-learning modules, voice-over for video, anything a listener will hear more than once. - Pick
speech-2.8-turbowhen volume dominates and the audio is consumed once: notifications and alerts, read-aloud for long articles, chat and assistant responses, accessibility features, internal tooling and previews. - Use turbo during development and iteration, then re-render the final approved script on hd. Because billing is per character, a draft on turbo followed by a final on hd costs only 1.60 times a single hd render.
- When in doubt, run the same paragraph through both models with the voice you intend to ship and compare the output before committing a large batch. At these rates the comparison costs a fraction of a cent.
Calling the API
The endpoint is https://yiduochan.com/v1/audio/speech. Authenticate with Authorization: Bearer <API key>, where the key is created in the YiduoChan console after you register and top up. The request body follows the OpenAI text-to-speech schema: model, input, voice and an optional response_format. The response body is the raw audio bytes.
curl
curl https://yiduochan.com/v1/audio/speech \
-H "Authorization: Bearer $YIDUOCHAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "speech-2.8-turbo",
"input": "Your order has shipped and should arrive within three business days.",
"voice": "English_expressive_narrator",
"response_format": "mp3"
}' \
--output speech.mp3
That request is 68 characters of input, so it costs 68 × 60.00 / 1,000,000, about $0.004, on turbo.
Python with the openai SDK
Point the official openai package at the YiduoChan base URL and call client.audio.speech.create. Nothing else in the SDK usage changes.
from openai import OpenAI
client = OpenAI(
base_url="https://yiduochan.com/v1",
api_key="YOUR_YIDUOCHAN_API_KEY",
)
text = "Your order has shipped and should arrive within three business days."
with client.audio.speech.with_streaming_response.create(
model="speech-2.8-hd",
voice="English_expressive_narrator",
input=text,
response_format="mp3",
) as response:
response.stream_to_file("speech.mp3")
# Planning estimate before you send a large batch
PRICE_PER_M = {"speech-2.8-hd": 100.00, "speech-2.8-turbo": 60.00}
chars = len(text)
print(f"{chars} chars, ~{chars / 900:.1f} min, "
f"hd ${chars * PRICE_PER_M['speech-2.8-hd'] / 1_000_000:.4f}, "
f"turbo ${chars * PRICE_PER_M['speech-2.8-turbo'] / 1_000_000:.4f}")
Streaming the response to disk avoids holding a full hour of audio in memory when you render long scripts. The same code works for speech-2.8-turbo by changing the model string.
Voices and formats
- voice: a MiniMax voice ID. Examples include
male-qn-qingse,female-shaonvandEnglish_expressive_narrator. - response_format: one of
mp3,wav,flacorpcm. The default ismp3. Usepcmorwavwhen you need to post-process or concatenate segments without a decode step, andmp3for delivery. - model: exactly
speech-2.8-hdorspeech-2.8-turbo.
The list of available models, including the text models MiniMax-M2.7 and MiniMax-M3, is returned by GET https://yiduochan.com/v1/models with the same bearer token.
How billing per character works
Every successful call to /v1/audio/speech deducts the character count of the input string multiplied by the per-character rate of the requested model. The rules that matter when you are forecasting spend:
- Billing is per input character. The charge is based on the character count of the input string at the selected model's per-character rate.
- Failed requests are never charged. A request that is rejected for validation, authentication or upstream errors does not consume credits. You only pay for audio that was actually returned.
- Credits are prepaid and pay-as-you-go. You buy USD credits in advance and each request draws them down. There is no subscription, no seat fee and no commitment; the balance simply stops decreasing when you stop sending requests.
- Top-ups start at $5. Presets are $5, $10, $20, $50, $100, $200 and $500, or any custom amount. Credits are valid for 12 months. Card checkout is handled by a payment partner.
- No free credits. There is no trial balance; a $5 top-up covers roughly 0.9 hours of hd audio or 1.5 hours of turbo at the planning rate, which is enough to evaluate both models on real content.
Reducing text-to-speech cost
Because the bill is a linear function of characters sent, every technique for cutting cost reduces to sending fewer characters or sending them to the cheaper model. In rough order of impact:
- Cache generated audio. Key the cache on a hash of
model,voice,response_formatand the normalized input text, and check it before every call. Product names, menu prompts, greetings, legal disclaimers and system messages repeat constantly; each repeat that hits the cache costs nothing. - Assemble from reusable segments. For templated content such as "Your table for {n} is ready" or a weather report, synthesize the static phrases once and only synthesize the variable part per request. Concatenate at the
pcmorwavlevel to avoid a re-encode. - Strip non-spoken characters before sending. Markdown syntax, HTML tags, URLs, citation markers, repeated whitespace and control characters are billed but add nothing to the audio. A small cleanup pass regularly removes several percent of a document.
- Batch on your side, not in the request. Batching many short strings into a single request does not lower the character total, but it does reduce connection overhead and lets you stream one file per chapter instead of thousands of small files. Split long documents at paragraph or chapter boundaries so a single failure only re-sends one segment, and since failed requests are free, retries are cost-neutral.
- Draft on turbo, finalize on hd. Iterate on script wording and pacing with
speech-2.8-turbo, then render the approved text once onspeech-2.8-hd. - Measure your real characters-per-minute. After the first few jobs, divide characters sent by audio seconds produced. If your content runs denser or sparser than 900 characters per minute, update the estimate so budgets stay accurate.
import hashlib, json
def audio_cache_key(model, voice, response_format, text):
normalized = " ".join(text.split()) # collapse whitespace before hashing
payload = json.dumps([model, voice, response_format, normalized])
return hashlib.sha256(payload.encode("utf-8")).hexdigest()
Getting started
- Create an account and top up at least $5 in USD credits.
- Create an API key in the console and export it as
YIDUOCHAN_API_KEY. - Run the curl example above with
speech-2.8-turbo, then repeat withspeech-2.8-hd, and listen to both. - Estimate your monthly character volume, multiply by the per-1M rate, and compare against the current pricing page before you commit to a model.
If you also need a text model to generate or edit scripts before synthesis, the MiniMax overview covers MiniMax-M2.7 and MiniMax-M3 on the same account and the same base URL, so one key and one balance serve both the writing and the speech steps. Questions about pricing or invoices can be sent to [email protected].
FAQ
How much does MiniMax Speech 2.8 cost per hour of audio?
Using about 54,000 characters per hour of speech, one hour costs about $5.40 on speech-2.8-hd and about $3.24 on speech-2.8-turbo at YiduoChan. Actual character density varies by language and voice pacing, so measure your own ratio after a few jobs.
What is the price difference between speech-2.8-hd and speech-2.8-turbo?
speech-2.8-hd is $100.00 per 1M characters ($0.1000 per 1K) and speech-2.8-turbo is $60.00 per 1M characters ($0.0600 per 1K), so turbo is about 40 percent cheaper. Both use the same endpoint, voices and formats.
How does YiduoChan price Speech 2.8 compared with MiniMax?
YiduoChan charges MiniMax's published rates: $100.00 per 1M characters for speech-2.8-hd and $60.00 per 1M characters for speech-2.8-turbo. You pay the same per character, in prepaid USD, through the standard OpenAI-compatible /v1/audio/speech endpoint.
Are failed text-to-speech requests charged?
No. Only successful requests deduct credits, based on the character count of the input string; requests that fail validation, authentication or upstream processing cost nothing.
Is there a free tier or trial for MiniMax Speech 2.8 on YiduoChan?
No. Credits are prepaid in USD with a $5 minimum top-up, valid for 12 months, with no subscription. Register, add credits, and pay only for the characters you send.
Can I use the OpenAI Python SDK with MiniMax Speech 2.8?
Yes. Set base_url to https://yiduochan.com/v1 with your YiduoChan API key and call client.audio.speech.create with model speech-2.8-hd or speech-2.8-turbo; the request and response shapes match the OpenAI TTS API. Details are on the Speech 2.8 page.