# MiniMax Speech-02 HD: Text to Speech, Voices, Price and API

> Use MiniMax Speech-02 HD for text to speech. Learn language selection, voice settings, URL output and Raywake quote pricing.

Canonical: https://raywake.si/blog/minimax-speech-02-hd
Last updated: 2026-10-31

Published: 2026-10-31 · Raywake

**MiniMax Speech-02 HD converts text into speech with voice settings and a language-selection control. On Raywake, the listed price is up to $0.17 for a run labeled 1,000 characters. The request requires `text` and can return `url` or `hex` output, with `hex` as the default. You can select languages including English and Turkish. Raywake does not list a maximum text length; start with a short passage to check the voice.**

[MiniMax Speech-02 HD](https://raywake.si/explore/minimax/speech-02-hd) is an option when you want to control a spoken script through an API. Start by choosing the language and checking the default voice settings before changing delivery. Prices and settings are as of 31 October 2026.

## MiniMax Speech-02 HD at a glance

| Setting                       | Value or field                   |
| ----------------------------- | -------------------------------- |
| Required script               | `text`                           |
| Language control              | `language_boost`                 |
| Default voice ID              | `Wise_Woman`                     |
| Default voice speed           | 1                                |
| Default pitch                 | 0                                |
| Default volume                | 1                                |
| English normalization default | false                            |
| Output representation         | `url` or `hex`, default `hex`    |
| Listed price                  | Up to $0.17 for 1,000 characters |

## How much does MiniMax Speech-02 HD cost?

Raywake lists a maximum run price for 1,000 characters.

| Catalog pricing label |               Price |
| --------------------- | ------------------: |
| 1,000 characters      | Up to $0.17 per run |

Keep both the character label and “up to” when comparing this amount with another speech model. This is not a price per second of audio, and it is not a flat charge for scripts of arbitrary length.

Quote the actual script you intend to read. A longer passage, a revised script or a different operation should not inherit an earlier estimate without checking.

## Which languages can you select?

`language_boost` lists named language choices, including English, Chinese, Arabic, Spanish, French, Portuguese, German, Turkish, Japanese, Korean and Hindi. It also includes `auto`. Use an exact listed value rather than substituting a language code from another speech API.

For example, use `Turkish`, not `tr`, and `English`, not `en-US`. That is an API field difference, not a claim about accent coverage.

For a multilingual script, review names, numbers and transitions in the generated speech. The presence of a language option does not establish a pronunciation guarantee for every proper noun. Keep a written record of how important names should be spoken.

## How do voice settings work?

The `voice_setting` default object contains `voice_id` set to `Wise_Woman`, `speed` set to 1, `pitch` set to 0, `vol` set to 1 and `english_normalization` set to false. These give a concrete baseline for a request.

Begin with the default voice settings. Before building a voice picker or adjustable controls, check Raywake for valid voice IDs and supported ranges; do not guess them.

The optional `audio_setting` and `pronunciation_dict` objects let you send additional settings. Check their field structure before using them, including the entries within `tone_list`. For a basic request, omit these objects as in the example below.

## Should you request URL or hex output?

The `output_format` values here describe the output representation: `url` or `hex`. They are not codec names such as MP3 or WAV. The default is `hex`, so specify `url` when that is what your integration expects.

Keep that distinction visible in your code. A downstream component expecting a media address should not treat a hex string as a playable URL. The URL choice alone does not identify the audio codec; check the returned media before passing it to a player.

## How to call MiniMax Speech-02 HD through the API

This example quotes a short English script, uses the documented default voice settings and asks for URL output.

**Quote this request**

cURL:

```bash
curl --fail-with-body https://api.raywake.com/v1/quotes \
  -H "Authorization: Bearer $RAYWAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"minimax/speech-02-hd","input":{"text":"Welcome to the exhibition. The next room explores light and movement.","language_boost":"English","output_format":"url","voice_setting":{"english_normalization":false,"pitch":0,"speed":1,"voice_id":"Wise_Woman","vol":1}}}'
```

Python:

```python
import os
import requests

payload = {'model': 'minimax/speech-02-hd',
 'input': {'text': 'Welcome to the exhibition. The next room explores light and '
                   'movement.',
           'language_boost': 'English',
           'output_format': 'url',
           'voice_setting': {'english_normalization': False,
                             'pitch': 0,
                             'speed': 1,
                             'voice_id': 'Wise_Woman',
                             'vol': 1}}}
response = requests.post(
    'https://api.raywake.com/v1/quotes',
    headers={'Authorization': f'Bearer {os.environ["RAYWAKE_API_KEY"]}'},
    json=payload, timeout=30,
)
response.raise_for_status()
print(response.json())
```

JavaScript:

```javascript
const payload = {
  "model": "minimax/speech-02-hd",
  "input": {
    "text": "Welcome to the exhibition. The next room explores light and movement.",
    "language_boost": "English",
    "output_format": "url",
    "voice_setting": {
      "english_normalization": false,
      "pitch": 0,
      "speed": 1,
      "voice_id": "Wise_Woman",
      "vol": 1
    }
  }
};
const response = await fetch('https://api.raywake.com/v1/quotes', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.RAYWAKE_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify(payload),
  signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`Quote failed: ${response.status}`);
console.log(await response.json());
```

Use the model ID `minimax/speech-02-hd` and place the spoken content in `text`. Copying `prompt` from an image-generation request would not satisfy the required speech field.

The example stops at the quote. Read the [quotes reference](https://raywake.si/docs/reference/quotes) for the response and subsequent API flow. Keep the script and selected voice settings alongside your quote so a later revision is easy to distinguish.

## How should you prepare a narration script?

Write for listening. Split long sentences where a listener would naturally pause, and spell out ambiguous abbreviations if their intended reading is unclear. Product names and numerical expressions deserve a separate listening pass.

Review the first generated passage before producing a larger body of narration. Listen for missing words, awkward pauses and changes in emphasis. If a sentence sounds unnatural, revising its wording can be more useful than changing several voice controls at once.

## Common questions

### Does MiniMax Speech-02 HD include Turkish?

Yes. `Turkish` is one of the listed `language_boost` values on Raywake.

### What voice does the default request use?

The default `voice_setting` names `Wise_Woman`.

### Can I request an MP3 by setting output_format?

Not with the literal value `mp3` for this operation. Its listed values are `url` and `hex`.

### Is 1,000 characters the maximum input length?

The number appears in the pricing label. Raywake does not list a maximum length for `text`; the price label is not an input limit.

[Create speech with MiniMax Speech-02 HD](https://raywake.si/dashboard)

## Related

- [Raywake Blog](https://raywake.si/blog)
