# Minimax | Speech | 2.8 HD MiniMax Speech 2.8 HD generates studio-quality AI voiceovers from text with multiple voice options for narration, podcasts, and accessibility content. ## API Information - **Model Slug:** minimax-speech-2-8-hd - **Branded URL:** https://www.eachlabs.ai/minimax/minimax-speech/minimax-speech-2-8-hd - **Provider:** MiniMax - **Category:** Text to Voice - **Output Type:** audio - **Status:** active - **Base Cost:** $0.0001 per character - **Estimated Processing Time:** 1 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/minimax-speech-2-8-hd ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.0001 per character - **Pricing Details:** default: $0.0001 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text to synthesize. Supports inline pause markers `<#x#>` where x is 0.01-99.99 seconds (e.g. `<#1.5#>` for a 1.5s pause). Supports interjection tags: `(laughs)`, `(sighs)`, `(coughs)`, `(clears throat)`, `(gasps)`, `(sniffs)`, `(groans)`, `(yawns)`. Max 10000 characters. | | voice_id | string | No | Wise_Woman | Wise_Woman, Friendly_Person, Inspirational_girl, Deep_Voice_Man, Calm_Woman, Casual_Guy, Lively_Girl, Lovely_Girl, Patient_Man, Young_Knight, Determined_Man, Decent_Boy, Imposing_Manner, Elegant_Man, Abbess, Sweet_Girl_2, Exuberant_Girl | Predefined voice for synthesis. Wise_Woman is a calm, mature female voice (default). Choose by gender, age, and tone — e.g. Friendly_Person for warm conversation, Deep_Voice_Man for narration, Lively_Girl for upbeat content. Cloned voice IDs are also accepted via API. | | emotion | string | No | neutral | neutral, happy, sad, angry, fearful, disgusted, surprised | Emotional tone of the speech. neutral (default) for general use; happy, sad, angry, fearful, disgusted, surprised for expressive narration. Influences pacing and intonation. | | speed | number | No | 1 | 0.5–2 | Speech speed multiplier. Range 0.5–2.0. Default 1 (natural pace). 0.5 = half speed, 2.0 = double speed. | | vol | number | No | 1 | 0.01–10 | Output volume multiplier. Range 0.01–10. Default 1 (provider's natural level). | | pitch | integer | No | 0 | -12–12 | Voice pitch shift in semitones. Range -12 to 12. Default 0 (no shift). Negative = lower pitch, positive = higher pitch. Use voice_modify.pitch (range -100..100) for finer-grained tonal adjustments. | | english_normalization | boolean | No | false | - | When true, normalizes English numbers and abbreviations for natural pronunciation (e.g. '2024' read as 'twenty twenty four'). Adds slight latency. Default false. | | language_boost | string | No | auto | auto, Chinese, Chinese,Yue, English, Arabic, Russian, Spanish, French, Portuguese, German, Turkish, Dutch, Ukrainian, Vietnamese, Indonesian, Japanese, Italian, Korean, Thai, Polish, Romanian, Greek, Czech, Finnish, Hindi, Bulgarian, Danish, Hebrew, Malay, Slovak, Swedish, Croatian, Hungarian, Norwegian, Slovenian, Catalan, Nynorsk, Afrikaans | Improves pronunciation for the specified language or dialect. 'auto' (default) lets the model detect from prompt. Pick a specific language to force that recognition path — useful for short prompts where auto-detection is unreliable. | | voice_modify | object | No | - | - | Fine-grained voice modification (-100 to 100 each). Layered on top of voice_id and pitch. Default 0 on all = no modification. | | audio_setting | object | No | - | - | Output audio format settings. Defaults: mp3 at 32 kHz / 128 kbps / mono. | | normalization_setting | object | No | - | - | EBU R128 / ITU-R BS.1770 loudness normalization (broadcast standard). Defaults: enabled=true, target_loudness=-18 LUFS, target_range=8 LU, target_peak=-0.5 dBTP. | | pronunciation_dict | object | No | - | - | Custom pronunciation overrides. tone_list entries use the format 'text/(pronunciation)'. For Chinese, tones are numeric 1-5 (e.g. '燕少飞/(yan4)(shao3)(fei1)'). | | output_format | string | No | url | url | How the audio is returned. We always return a hosted URL on our CDN; the upstream `hex` mode is intentionally not exposed because the callback path can only shape an audio object (returning hex would leave you with a raw hex string and no URL). | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "minimax-speech-2-8-hd", "input": { "prompt": "Hey everyone! MiniMax Speech 2.8 HD is now available on Eachlabs. Crystal clear voices, natural emotion, and next-level expressiveness. Try it now!" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated audio)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **Minimax | Speech | 2.8 HD Overview** Minimax | Speech | 2.8 HD is a text-to-voice AI model that transforms written text into studio-quality voiceovers with natural prosody and emotional expression. Developed by Minimax, this model addresses a critical gap in content production: the need for professional-grade voice synthesis without expensive voice actors or recording studios. Unlike basic text-to-speech systems, Minimax | Speech | 2.8 HD delivers HD-quality audio suitable for commercial narration, podcasts, educational content, and accessibility applications. The model supports multiple voice options and languages, enabling creators to produce localized content at scale while maintaining consistent quality and natural-sounding delivery. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.