> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modellix.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MiniMax Speech 2.8 HD

> [Core Function] MiniMax Speech 2.8 HD is a high-quality text-to-speech model that converts text into natural spoken audio, including expressive paralinguistic cues such as (laughs) and (sighs). [Strengths] Strong narration quality, stable prosody controls (speed, volume, pitch, emotion), optional timbre mixing, pronunciation overrides, subtitles, and flexible audio formats. [Best For] Highly recommended for: brand voiceovers, audiobook or long-form narration, marketing clips, multilingual delivery with language_boost, and expressive character speech. [Limitations] Do NOT use this for streaming or real-time partial audio. Do NOT request hex output or emotion whisper. Do NOT send both voice_id and timbre_weights. Audio URLs expire in about 24 hours. [Routing] Choose speech-2.8-hd when quality or expressive delivery matters most. Choose speech-2.8-turbo when the user prioritizes lower latency or cost.



## OpenAPI

````yaml /model-api/minimax/minimax-t2s.json post /minimax/speech-2.8-hd
openapi: 3.1.0
info:
  title: MiniMax Text-to-Speech API
  description: >-
    MiniMax Speech 2.8 text-to-speech (speech-2.8-hd and speech-2.8-turbo).
    Submit an async task, then poll GET /api/v1/tasks/{task_id} for the audio
    URL (approximately 24-hour validity). Streaming and hex audio output are not
    supported.
  version: 1.0.0
  contact:
    name: Modellix Support
    email: support@modellix.ai
servers:
  - url: https://api.modellix.ai/api/v1
    description: Modellix API
security:
  - bearerAuth: []
paths:
  /minimax/speech-2.8-hd:
    post:
      summary: MiniMax Speech 2.8 HD
      description: >-
        [Core Function] MiniMax Speech 2.8 HD is a high-quality text-to-speech
        model that converts text into natural spoken audio, including expressive
        paralinguistic cues such as (laughs) and (sighs). [Strengths] Strong
        narration quality, stable prosody controls (speed, volume, pitch,
        emotion), optional timbre mixing, pronunciation overrides, subtitles,
        and flexible audio formats. [Best For] Highly recommended for: brand
        voiceovers, audiobook or long-form narration, marketing clips,
        multilingual delivery with language_boost, and expressive character
        speech. [Limitations] Do NOT use this for streaming or real-time partial
        audio. Do NOT request hex output or emotion whisper. Do NOT send both
        voice_id and timbre_weights. Audio URLs expire in about 24 hours.
        [Routing] Choose speech-2.8-hd when quality or expressive delivery
        matters most. Choose speech-2.8-turbo when the user prioritizes lower
        latency or cost.
      operationId: minimaxSpeech28Hd
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MiniMaxSpeechT2SRequest'
            examples:
              basic:
                summary: Minimal single-voice synthesis
                value:
                  text: Hello, this is MiniMax speech synthesis.
                  voice_id: English_expressive_narrator
              with_controls:
                summary: Prosody, format, and language boost
                value:
                  text: There is a large garden behind my house.
                  voice_id: English_expressive_narrator
                  format: mp3
                  sample_rate: 32000
                  speed: 1
                  vol: 1
                  pitch: 0
                  emotion: calm
                  language_boost: English
              timbre_mix:
                summary: Mixed timbres (no top-level voice_id)
                value:
                  text: Mixed timbre demo.
                  timbre_weights:
                    - voice_id: Chinese (Mandarin)_Lyrical_Voice
                      weight: 30
                    - voice_id: Chinese (Mandarin)_News_Anchor
                      weight: 70
      responses:
        '200':
          description: >-
            Task submitted successfully. Poll GET /api/v1/tasks/{task_id} until
            the task completes; synthesized audio is returned on the task
            result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTaskResponse'
              example:
                code: 0
                message: success
                data:
                  status: pending
                  task_id: task-speech-28-hd-001
                  model_id: minimax/speech-2.8-hd
                  get_result:
                    method: GET
                    url: https://api.modellix.ai/api/v1/tasks/task-speech-28-hd-001
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    MiniMaxSpeechT2SRequest:
      type: object
      required:
        - text
      description: >-
        text is always required. Exactly one of voice_id or timbre_weights is
        required (mutually exclusive). stream, stream_options, and output_format
        are not accepted.
      oneOf:
        - required:
            - voice_id
          title: single_voice
          description: >-
            Single-voice synthesis: provide voice_id; do not provide
            timbre_weights.
        - required:
            - timbre_weights
          title: timbre_mix
          description: >-
            Mixed-voice synthesis: provide timbre_weights; do not provide
            voice_id.
      properties:
        text:
          type: string
          minLength: 1
          maxLength: 9999
          description: >-
            Text to synthesize (fewer than 10000 characters). Supports pause
            markers such as <#0.5#>, inline pronunciation in parentheses, and
            paralinguistic tags such as (laughs) or (sighs).
          example: Hello, this is MiniMax speech synthesis.
        voice_id:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Required when not using timbre_weights (exactly one of voice_id or
            timbre_weights). Accepts a system, cloned, or AI-generated voice ID.
            Mutually exclusive with timbre_weights. Full official system voice
            catalog: https://platform.minimax.io/docs/faq/system-voice-id .
            Sample system voices (not exhaustive): English_expressive_narrator,
            English_radiant_girl, English_magnetic_voiced_man, Chinese
            (Mandarin)_News_Anchor, Chinese (Mandarin)_Lyrical_Voice, Chinese
            (Mandarin)_Reliable_Executive.
          example: English_expressive_narrator
          x-systemVoiceIds:
            - English_expressive_narrator
            - English_radiant_girl
            - English_magnetic_voiced_man
            - Chinese (Mandarin)_News_Anchor
            - Chinese (Mandarin)_Lyrical_Voice
            - Chinese (Mandarin)_Reliable_Executive
        timbre_weights:
          type: array
          minItems: 1
          maxItems: 4
          description: >-
            Required when not using voice_id (exactly one of voice_id or
            timbre_weights). Mix up to 4 voices by weight. Mutually exclusive
            with top-level voice_id.
          items:
            $ref: '#/components/schemas/MiniMaxTimbreWeight'
        speed:
          type: number
          minimum: 0.5
          maximum: 2
          default: 1
          description: Speech rate multiplier. Higher is faster.
          example: 1
        vol:
          type: number
          exclusiveMinimum: 0
          maximum: 10
          default: 1
          description: Speech volume. Range (0, 10].
          example: 1
        pitch:
          type: integer
          minimum: -12
          maximum: 12
          default: 0
          description: >-
            Pitch adjustment in semitones. Distinct from modify_pitch (voice
            effect slider).
          example: 0
        emotion:
          type: string
          enum:
            - happy
            - sad
            - angry
            - fearful
            - disgusted
            - surprised
            - calm
            - fluent
          description: >-
            Optional emotion control. Leave unset to let the model choose
            naturally. whisper is not supported on speech-2.8-hd or
            speech-2.8-turbo.
          example: calm
        text_normalization:
          type: boolean
          default: false
          description: >-
            Enable Chinese/English text normalization for better number reading;
            may add slight latency.
          example: false
        latex_read:
          type: boolean
          default: false
          description: >-
            Enable LaTeX formula reading (Chinese). When enabled, language_boost
            may be forced to Chinese. Wrap formulas with $$.
          example: false
        sample_rate:
          type: integer
          enum:
            - 8000
            - 16000
            - 22050
            - 24000
            - 32000
            - 44100
          default: 32000
          description: Output sample rate in Hz.
          example: 32000
        bitrate:
          type: integer
          enum:
            - 32000
            - 64000
            - 128000
            - 256000
          default: 128000
          description: Audio bitrate. Applies to mp3 only.
          example: 128000
        format:
          type: string
          enum:
            - mp3
            - pcm
            - flac
            - wav
            - pcmu_raw
            - pcmu_wav
            - opus
          default: mp3
          description: Output audio format. pcmu_raw and pcmu_wav are G.711 mu-law (8 kHz).
          example: mp3
        channel:
          type: integer
          enum:
            - 1
            - 2
          default: 1
          description: Number of channels. 1 is mono, 2 is stereo.
          example: 1
        force_cbr:
          type: boolean
          default: false
          description: >-
            Force constant bitrate encoding. Optional; typically unused for
            standard async synthesis.
          example: false
        pronunciation_tone:
          type: array
          items:
            type: string
          description: >-
            Custom pronunciation rules in original/replacement form, for example
            omg/oh my god or Chinese pinyin with tone numbers.
          example:
            - omg/oh my god
        language_boost:
          type: string
          enum:
            - 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
            - Persian
            - Slovak
            - Swedish
            - Croatian
            - Filipino
            - Hungarian
            - Norwegian
            - Slovenian
            - Catalan
            - Nynorsk
            - Tamil
            - Afrikaans
            - auto
          description: >-
            Boost recognition for a language or dialect. Use auto when the
            language is unknown.
          example: English
        modify_pitch:
          type: integer
          minimum: -100
          maximum: 100
          description: >-
            Voice effect: deepen (negative) to brighten (positive). Distinct
            from pitch (semitone).
          example: 0
        modify_intensity:
          type: integer
          minimum: -100
          maximum: 100
          description: 'Voice effect: stronger (negative) to softer (positive).'
          example: 0
        modify_timbre:
          type: integer
          minimum: -100
          maximum: 100
          description: 'Voice effect: fuller (negative) to crisper (positive).'
          example: 0
        sound_effects:
          type: string
          enum:
            - spacious_echo
            - auditorium_echo
            - lofi_telephone
            - robotic
          description: Optional single sound effect applied to the output.
          example: spacious_echo
        subtitle_enable:
          type: boolean
          default: false
          description: Whether to generate a subtitle file download link.
          example: false
        subtitle_type:
          type: string
          enum:
            - sentence
            - word
          default: sentence
          description: Subtitle granularity. word_streaming is not supported.
          example: sentence
    AsyncTaskResponse:
      description: Response object for asynchronous task submission.
      type: object
      required:
        - code
        - message
        - data
      properties:
        code:
          type: integer
          description: Response code, 0 indicates success
          example: 0
        message:
          type: string
          description: Response message
          example: success
        data:
          type: object
          required:
            - status
            - task_id
            - model_id
          description: >-
            Task submission details. Poll GET /api/v1/tasks/{task_id} until
            status is success; audio appears in result.resources.
          properties:
            status:
              type: string
              enum:
                - pending
                - processing
              description: Initial task status
              example: pending
            task_id:
              type: string
              description: Unique task identifier for polling
              example: task-speech-28-hd-001
            model_id:
              type: string
              description: Model ID in provider/model format
              example: minimax/speech-2.8-hd
            get_result:
              type: object
              description: >-
                Endpoint to query the task result. See Common API: Query Task
                Result.
              properties:
                method:
                  type: string
                  example: GET
                url:
                  type: string
                  example: https://api.modellix.ai/api/v1/tasks/task-speech-28-hd-001
    MiniMaxTimbreWeight:
      type: object
      required:
        - voice_id
        - weight
      properties:
        voice_id:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Voice ID for one entry in a timbre mix. Distinct from the top-level
            single-voice voice_id field. May be a system voice from the official
            catalog (https://platform.minimax.io/docs/faq/system-voice-id) or a
            cloned/AI voice ID.
          example: female-chengshu
        weight:
          type: integer
          minimum: 1
          maximum: 100
          description: >-
            Relative mix weight for this voice. Higher values increase
            similarity to this voice. At most 4 voices.
          example: 30
    ErrorResponse:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          example: 400
        message:
          type: string
          example: 'Invalid parameters: voice_id or timbre_weights is required'
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key

````