MODEL IDminimax:speech@2.8
live

MiniMax Speech 2.8

MiniMax
by MiniMax

MiniMax Speech 2.8 is an advanced text-to-speech model that turns text into natural, expressive audio in multiple languages. It delivers broadcast-ready speech with rich prosody, emotional control, and a diverse voice library. The model supports up to large input lengths and can be used for voiceovers, narration, accessibility tools, and interactive voice applications.

MiniMax Speech 2.8
text-to-audio

Lunar Greenhouse PA Ambience

0:00

Horticulture cycle seven is now entering artificial dusk. Irrigation will continue in the eastern beds for six minutes. Please keep the pollinator aisle clear, lower your work lights, and allow the night-blooming crops to open undisturbed.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'English_CalmWoman',
    text: 'Horticulture cycle seven is now entering artificial dusk. Irrigation will continue in the eastern beds for six minutes. Please keep the pollinator aisle clear, lower your work lights, and allow the night-blooming crops to open undisturbed.'
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "English_CalmWoman",
                "text": "Horticulture cycle seven is now entering artificial dusk. Irrigation will continue in the eastern beds for six minutes. Please keep the pollinator aisle clear, lower your work lights, and allow the night-blooming crops to open undisturbed."
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "a2ae4a6a-261e-4ffc-85ba-91ec05221991",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "English_CalmWoman",
        "text": "Horticulture cycle seven is now entering artificial dusk. Irrigation will continue in the eastern beds for six minutes. Please keep the pollinator aisle clear, lower your work lights, and allow the night-blooming crops to open undisturbed."
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice=English_CalmWoman \
  speech.text="Horticulture cycle seven is now entering artificial dusk. Irrigation will continue in the eastern beds for six minutes. Please keep the pollinator aisle clear, lower your work lights, and allow the night-blooming crops to open undisturbed."
{
  "taskType": "audioInference",
  "taskUUID": "a2ae4a6a-261e-4ffc-85ba-91ec05221991",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "English_CalmWoman",
    "text": "Horticulture cycle seven is now entering artificial dusk. Irrigation will continue in the eastern beds for six minutes. Please keep the pollinator aisle clear, lower your work lights, and allow the night-blooming crops to open undisturbed."
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "a2ae4a6a-261e-4ffc-85ba-91ec05221991",
  "audioUUID": "63ed7fba-f891-45dd-bad5-81f8ae5fc28d",
  "audioURL": "https://am.runware.ai/audio/os/a10dlim3/ws/5/ai/63ed7fba-f891-45dd-bad5-81f8ae5fc28d.mp3",
  "cost": 0.0239
}
text-to-audio

Fermentation Podcast Vocal Stinger

0:00

Wake the jar, feed the fizz—this is Culture Counter, where tiny microbes make very big flavor.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    text: 'Wake the jar, feed the fizz—this is Culture Counter, where tiny microbes make very big flavor.',
    voice: 'English_PlayfulGirl'
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "text": "Wake the jar, feed the fizz—this is Culture Counter, where tiny microbes make very big flavor.",
                "voice": "English_PlayfulGirl"
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "1b03a62f-1f56-4c64-b13a-45786400eed9",
      "model": "minimax:speech@2.8",
      "speech": {
        "text": "Wake the jar, feed the fizz—this is Culture Counter, where tiny microbes make very big flavor.",
        "voice": "English_PlayfulGirl"
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.text="Wake the jar, feed the fizz—this is Culture Counter, where tiny microbes make very big flavor." \
  speech.voice=English_PlayfulGirl
{
  "taskType": "audioInference",
  "taskUUID": "1b03a62f-1f56-4c64-b13a-45786400eed9",
  "model": "minimax:speech@2.8",
  "speech": {
    "text": "Wake the jar, feed the fizz—this is Culture Counter, where tiny microbes make very big flavor.",
    "voice": "English_PlayfulGirl"
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "1b03a62f-1f56-4c64-b13a-45786400eed9",
  "audioUUID": "d7e3f5b3-339d-444a-a767-e2789246d184",
  "audioURL": "https://am.runware.ai/audio/os/a05d22/ws/5/ai/d7e3f5b3-339d-444a-a767-e2789246d184.mp3",
  "cost": 0.0094
}
text-to-audio

Community Heat Mapping Explainer Voiceover

0:00

One street has leafy shade. The next feels ten degrees hotter. But if heat changes block by block, how do we protect the people most at risk? This summer, volunteers are carrying pocket-sized sensors along their everyday routes. Each reading helps reveal where trees, cool roofs, and shaded bus stops can make the greatest difference. Walk, ride, or roll with us—and turn a few minutes outdoors into a cooler, safer neighborhood for everyone.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'English_ConfidentWoman',
    text: 'One street has leafy shade. The next feels ten degrees hotter. But if heat changes block by block, how do we protect the people most at risk? This summer, volunteers are carrying pocket-sized sensors along their everyday routes. Each reading helps reveal where trees, cool roofs, and shaded bus stops can make the greatest difference. Walk, ride, or roll with us—and turn a few minutes outdoors into a cooler, safer neighborhood for everyone.'
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "English_ConfidentWoman",
                "text": "One street has leafy shade. The next feels ten degrees hotter. But if heat changes block by block, how do we protect the people most at risk? This summer, volunteers are carrying pocket-sized sensors along their everyday routes. Each reading helps reveal where trees, cool roofs, and shaded bus stops can make the greatest difference. Walk, ride, or roll with us—and turn a few minutes outdoors into a cooler, safer neighborhood for everyone."
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "fa26205a-8010-4d2b-b65d-5f86a2aa084e",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "English_ConfidentWoman",
        "text": "One street has leafy shade. The next feels ten degrees hotter. But if heat changes block by block, how do we protect the people most at risk? This summer, volunteers are carrying pocket-sized sensors along their everyday routes. Each reading helps reveal where trees, cool roofs, and shaded bus stops can make the greatest difference. Walk, ride, or roll with us—and turn a few minutes outdoors into a cooler, safer neighborhood for everyone."
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice=English_ConfidentWoman \
  speech.text="One street has leafy shade. The next feels ten degrees hotter. But if heat changes block by block, how do we protect the people most at risk? This summer, volunteers are carrying pocket-sized sensors along their everyday routes. Each reading helps reveal where trees, cool roofs, and shaded bus stops can make the greatest difference. Walk, ride, or roll with us—and turn a few minutes outdoors into a cooler, safer neighborhood for everyone."
{
  "taskType": "audioInference",
  "taskUUID": "fa26205a-8010-4d2b-b65d-5f86a2aa084e",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "English_ConfidentWoman",
    "text": "One street has leafy shade. The next feels ten degrees hotter. But if heat changes block by block, how do we protect the people most at risk? This summer, volunteers are carrying pocket-sized sensors along their everyday routes. Each reading helps reveal where trees, cool roofs, and shaded bus stops can make the greatest difference. Walk, ride, or roll with us—and turn a few minutes outdoors into a cooler, safer neighborhood for everyone."
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "fa26205a-8010-4d2b-b65d-5f86a2aa084e",
  "audioUUID": "23b7daa7-a97e-4298-9643-017e4de81fbd",
  "audioURL": "https://am.runware.ai/audio/os/a02d21/ws/5/ai/23b7daa7-a97e-4298-9643-017e4de81fbd.mp3",
  "cost": 0.0442
}
text-to-audio

Textile Forensics Podcast Cold Open

0:00

A carpet can lie. In 1924, a London collector paid a small fortune for what he believed was a seventeenth-century Persian masterpiece. The wool was hand-spun. The knots were convincing. Even the wear looked ancient. But hidden inside one faded crimson thread was a dye invented barely thirty years earlier. That single fiber unraveled the carpet’s story—and exposed a workshop built on beautiful deception. This is Under the Weft, a podcast about the science, history, and human judgment behind the world’s most contested textiles. Today: how conservators read color like evidence, and why the perfect forgery is often undone by its brightest detail.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'English_CaptivatingStoryteller',
    text: 'A carpet can lie. In 1924, a London collector paid a small fortune for what he believed was a seventeenth-century Persian masterpiece. The wool was hand-spun. The knots were convincing. Even the wear looked ancient. But hidden inside one faded crimson thread was a dye invented barely thirty years earlier. That single fiber unraveled the carpet’s story—and exposed a workshop built on beautiful deception. This is Under the Weft, a podcast about the science, history, and human judgment behind the world’s most contested textiles. Today: how conservators read color like evidence, and why the perfect forgery is often undone by its brightest detail.'
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "English_CaptivatingStoryteller",
                "text": "A carpet can lie. In 1924, a London collector paid a small fortune for what he believed was a seventeenth-century Persian masterpiece. The wool was hand-spun. The knots were convincing. Even the wear looked ancient. But hidden inside one faded crimson thread was a dye invented barely thirty years earlier. That single fiber unraveled the carpet’s story—and exposed a workshop built on beautiful deception. This is Under the Weft, a podcast about the science, history, and human judgment behind the world’s most contested textiles. Today: how conservators read color like evidence, and why the perfect forgery is often undone by its brightest detail."
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "1f6f9223-dd5b-4eaf-872b-75f356b7dc70",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "English_CaptivatingStoryteller",
        "text": "A carpet can lie. In 1924, a London collector paid a small fortune for what he believed was a seventeenth-century Persian masterpiece. The wool was hand-spun. The knots were convincing. Even the wear looked ancient. But hidden inside one faded crimson thread was a dye invented barely thirty years earlier. That single fiber unraveled the carpet’s story—and exposed a workshop built on beautiful deception. This is Under the Weft, a podcast about the science, history, and human judgment behind the world’s most contested textiles. Today: how conservators read color like evidence, and why the perfect forgery is often undone by its brightest detail."
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice=English_CaptivatingStoryteller \
  speech.text="A carpet can lie. In 1924, a London collector paid a small fortune for what he believed was a seventeenth-century Persian masterpiece. The wool was hand-spun. The knots were convincing. Even the wear looked ancient. But hidden inside one faded crimson thread was a dye invented barely thirty years earlier. That single fiber unraveled the carpet’s story—and exposed a workshop built on beautiful deception. This is Under the Weft, a podcast about the science, history, and human judgment behind the world’s most contested textiles. Today: how conservators read color like evidence, and why the perfect forgery is often undone by its brightest detail."
{
  "taskType": "audioInference",
  "taskUUID": "1f6f9223-dd5b-4eaf-872b-75f356b7dc70",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "English_CaptivatingStoryteller",
    "text": "A carpet can lie. In 1924, a London collector paid a small fortune for what he believed was a seventeenth-century Persian masterpiece. The wool was hand-spun. The knots were convincing. Even the wear looked ancient. But hidden inside one faded crimson thread was a dye invented barely thirty years earlier. That single fiber unraveled the carpet’s story—and exposed a workshop built on beautiful deception. This is Under the Weft, a podcast about the science, history, and human judgment behind the world’s most contested textiles. Today: how conservators read color like evidence, and why the perfect forgery is often undone by its brightest detail."
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "1f6f9223-dd5b-4eaf-872b-75f356b7dc70",
  "audioUUID": "23188528-2e2a-439e-b511-369343ee5ff1",
  "audioURL": "https://am.runware.ai/audio/os/a06dlim3/ws/5/ai/23188528-2e2a-439e-b511-369343ee5ff1.mp3",
  "cost": 0.065
}
Text to Audio

Midnight Museum Evacuation Announcement

0:00

Attention all remaining guests. This is the final announcement for Hall C. The building is closing early due to an unexpected power fluctuation in the east wing. Please remain calm and follow the blue floor lights to the nearest exit. Staff members in silver badges will guide you through the sculpture gallery and down the west staircase. If you are separated from your group, stop at the marble fountain in the central atrium and wait for assistance. Do not use the elevator. I repeat, do not use the elevator. The exhibits are secure, the situation is under control, and your safety is our highest priority. Thank you for your patience, and please proceed carefully.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'English_expressive_narrator',
    text: 'Attention all remaining guests. This is the final announcement for Hall C. The building is closing early due to an unexpected power fluctuation in the east wing. Please remain calm and follow the blue floor lights to the nearest exit. Staff members in silver badges will guide you through the sculpture gallery and down the west staircase. If you are separated from your group, stop at the marble fountain in the central atrium and wait for assistance. Do not use the elevator. I repeat, do not use the elevator. The exhibits are secure, the situation is under control, and your safety is our highest priority. Thank you for your patience, and please proceed carefully.'
  },
  settings: {
    languageBoost: 'en',
    turbo: false
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "English_expressive_narrator",
                "text": "Attention all remaining guests. This is the final announcement for Hall C. The building is closing early due to an unexpected power fluctuation in the east wing. Please remain calm and follow the blue floor lights to the nearest exit. Staff members in silver badges will guide you through the sculpture gallery and down the west staircase. If you are separated from your group, stop at the marble fountain in the central atrium and wait for assistance. Do not use the elevator. I repeat, do not use the elevator. The exhibits are secure, the situation is under control, and your safety is our highest priority. Thank you for your patience, and please proceed carefully."
            },
            "settings": {
                "languageBoost": "en",
                "turbo": False
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "4d624adb-6017-4e06-9dbc-c756f05f8cbc",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "English_expressive_narrator",
        "text": "Attention all remaining guests. This is the final announcement for Hall C. The building is closing early due to an unexpected power fluctuation in the east wing. Please remain calm and follow the blue floor lights to the nearest exit. Staff members in silver badges will guide you through the sculpture gallery and down the west staircase. If you are separated from your group, stop at the marble fountain in the central atrium and wait for assistance. Do not use the elevator. I repeat, do not use the elevator. The exhibits are secure, the situation is under control, and your safety is our highest priority. Thank you for your patience, and please proceed carefully."
      },
      "settings": {
        "languageBoost": "en",
        "turbo": false
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice=English_expressive_narrator \
  speech.text="Attention all remaining guests. This is the final announcement for Hall C. The building is closing early due to an unexpected power fluctuation in the east wing. Please remain calm and follow the blue floor lights to the nearest exit. Staff members in silver badges will guide you through the sculpture gallery and down the west staircase. If you are separated from your group, stop at the marble fountain in the central atrium and wait for assistance. Do not use the elevator. I repeat, do not use the elevator. The exhibits are secure, the situation is under control, and your safety is our highest priority. Thank you for your patience, and please proceed carefully." \
  settings.languageBoost=en \
  settings.turbo=false
{
  "taskType": "audioInference",
  "taskUUID": "4d624adb-6017-4e06-9dbc-c756f05f8cbc",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "English_expressive_narrator",
    "text": "Attention all remaining guests. This is the final announcement for Hall C. The building is closing early due to an unexpected power fluctuation in the east wing. Please remain calm and follow the blue floor lights to the nearest exit. Staff members in silver badges will guide you through the sculpture gallery and down the west staircase. If you are separated from your group, stop at the marble fountain in the central atrium and wait for assistance. Do not use the elevator. I repeat, do not use the elevator. The exhibits are secure, the situation is under control, and your safety is our highest priority. Thank you for your patience, and please proceed carefully."
  },
  "settings": {
    "languageBoost": "en",
    "turbo": false
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "4d624adb-6017-4e06-9dbc-c756f05f8cbc",
  "audioUUID": "7115ca25-5dee-4fc2-8029-4bce7aa931d4",
  "audioURL": "https://am.runware.ai/audio/os/a08d21/ws/5/ai/7115ca25-5dee-4fc2-8029-4bce7aa931d4.mp3",
  "cost": 0.0669
}
Text to Audio

Urgent Alpine Funicular Bulletin

0:00

Attention, ici le poste de régulation du funiculaire de Saint-Clair. En raison d’un glissement de terrain signalé au-dessus de la voie nord, le service est interrompu jusqu’à nouvel ordre. Les passagers déjà arrivés à la station supérieure sont priés de rester à l’abri dans le hall principal et de suivre les consignes du personnel. Une navette routière partira de l’esplanade est dans quinze minutes pour assurer la descente vers la vallée. Nous vous demandons de ne pas emprunter les sentiers balisés autour de la crête, car des chutes de pierres restent possibles. Les familles avec enfants, les personnes âgées et toute personne ayant besoin d’assistance seront prises en charge en priorité. Un nouveau point d’information sera diffusé à dix-sept heures quarante-cinq. Merci de votre calme et de votre coopération.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'French_Female_News Anchor',
    text: 'Attention, ici le poste de régulation du funiculaire de Saint-Clair. En raison d’un glissement de terrain signalé au-dessus de la voie nord, le service est interrompu jusqu’à nouvel ordre. Les passagers déjà arrivés à la station supérieure sont priés de rester à l’abri dans le hall principal et de suivre les consignes du personnel. Une navette routière partira de l’esplanade est dans quinze minutes pour assurer la descente vers la vallée. Nous vous demandons de ne pas emprunter les sentiers balisés autour de la crête, car des chutes de pierres restent possibles. Les familles avec enfants, les personnes âgées et toute personne ayant besoin d’assistance seront prises en charge en priorité. Un nouveau point d’information sera diffusé à dix-sept heures quarante-cinq. Merci de votre calme et de votre coopération.'
  },
  settings: {
    languageBoost: 'fr',
    turbo: false
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "French_Female_News Anchor",
                "text": "Attention, ici le poste de régulation du funiculaire de Saint-Clair. En raison d’un glissement de terrain signalé au-dessus de la voie nord, le service est interrompu jusqu’à nouvel ordre. Les passagers déjà arrivés à la station supérieure sont priés de rester à l’abri dans le hall principal et de suivre les consignes du personnel. Une navette routière partira de l’esplanade est dans quinze minutes pour assurer la descente vers la vallée. Nous vous demandons de ne pas emprunter les sentiers balisés autour de la crête, car des chutes de pierres restent possibles. Les familles avec enfants, les personnes âgées et toute personne ayant besoin d’assistance seront prises en charge en priorité. Un nouveau point d’information sera diffusé à dix-sept heures quarante-cinq. Merci de votre calme et de votre coopération."
            },
            "settings": {
                "languageBoost": "fr",
                "turbo": False
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "8ec44723-8939-44ff-986c-4f91d5d06159",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "French_Female_News Anchor",
        "text": "Attention, ici le poste de régulation du funiculaire de Saint-Clair. En raison d’un glissement de terrain signalé au-dessus de la voie nord, le service est interrompu jusqu’à nouvel ordre. Les passagers déjà arrivés à la station supérieure sont priés de rester à l’abri dans le hall principal et de suivre les consignes du personnel. Une navette routière partira de l’esplanade est dans quinze minutes pour assurer la descente vers la vallée. Nous vous demandons de ne pas emprunter les sentiers balisés autour de la crête, car des chutes de pierres restent possibles. Les familles avec enfants, les personnes âgées et toute personne ayant besoin d’assistance seront prises en charge en priorité. Un nouveau point d’information sera diffusé à dix-sept heures quarante-cinq. Merci de votre calme et de votre coopération."
      },
      "settings": {
        "languageBoost": "fr",
        "turbo": false
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice="French_Female_News Anchor" \
  speech.text="Attention, ici le poste de régulation du funiculaire de Saint-Clair. En raison d’un glissement de terrain signalé au-dessus de la voie nord, le service est interrompu jusqu’à nouvel ordre. Les passagers déjà arrivés à la station supérieure sont priés de rester à l’abri dans le hall principal et de suivre les consignes du personnel. Une navette routière partira de l’esplanade est dans quinze minutes pour assurer la descente vers la vallée. Nous vous demandons de ne pas emprunter les sentiers balisés autour de la crête, car des chutes de pierres restent possibles. Les familles avec enfants, les personnes âgées et toute personne ayant besoin d’assistance seront prises en charge en priorité. Un nouveau point d’information sera diffusé à dix-sept heures quarante-cinq. Merci de votre calme et de votre coopération." \
  settings.languageBoost=fr \
  settings.turbo=false
{
  "taskType": "audioInference",
  "taskUUID": "8ec44723-8939-44ff-986c-4f91d5d06159",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "French_Female_News Anchor",
    "text": "Attention, ici le poste de régulation du funiculaire de Saint-Clair. En raison d’un glissement de terrain signalé au-dessus de la voie nord, le service est interrompu jusqu’à nouvel ordre. Les passagers déjà arrivés à la station supérieure sont priés de rester à l’abri dans le hall principal et de suivre les consignes du personnel. Une navette routière partira de l’esplanade est dans quinze minutes pour assurer la descente vers la vallée. Nous vous demandons de ne pas emprunter les sentiers balisés autour de la crête, car des chutes de pierres restent possibles. Les familles avec enfants, les personnes âgées et toute personne ayant besoin d’assistance seront prises en charge en priorité. Un nouveau point d’information sera diffusé à dix-sept heures quarante-cinq. Merci de votre calme et de votre coopération."
  },
  "settings": {
    "languageBoost": "fr",
    "turbo": false
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "8ec44723-8939-44ff-986c-4f91d5d06159",
  "audioUUID": "ba903c2d-3679-4505-bb58-001c569d0d85",
  "audioURL": "https://am.runware.ai/audio/os/a04d20/ws/5/ai/ba903c2d-3679-4505-bb58-001c569d0d85.mp3",
  "cost": 0.0819
}
Text to Audio

Subglacial Rescue Radio Bulletin

0:00

Attention all survey teams, this is Base Relay Seven broadcasting on emergency channel two. At 04:13 station time, a pressure ridge opened beneath the eastern ice shelf and cut power to the remote drilling camp. If you are hearing this message, do not attempt the old supply tunnel. Repeat: do not enter the old supply tunnel. Thermal scans show shifting fractures, falling particulate ice, and rapidly dropping oxygen levels in the lower passage. Rescue crews are moving in from the west with portable heaters, medical packs, and guide beacons. Team Aurora, hold your current position near the blue anchor line and conserve battery power. Team Calder, mark every junction with reflective tape and answer each beacon ping with three clicks. If visibility fails, stay low, stay linked, and count your breathing. We have partial contact with two missing engineers. Their last transmission reported a humming sound behind the wall of the melt chamber, followed by warm air and running water where no water should be. Listen carefully: if you encounter fog, metallic dust, or a repeating whistle that does not match your equipment, stop immediately and report your coordinates. You are not alone down there. Keep your radios open. Rescue is fourteen minutes out.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'English_Trustworth_Man',
    text: 'Attention all survey teams, this is Base Relay Seven broadcasting on emergency channel two. At 04:13 station time, a pressure ridge opened beneath the eastern ice shelf and cut power to the remote drilling camp. If you are hearing this message, do not attempt the old supply tunnel. Repeat: do not enter the old supply tunnel. Thermal scans show shifting fractures, falling particulate ice, and rapidly dropping oxygen levels in the lower passage. Rescue crews are moving in from the west with portable heaters, medical packs, and guide beacons. Team Aurora, hold your current position near the blue anchor line and conserve battery power. Team Calder, mark every junction with reflective tape and answer each beacon ping with three clicks. If visibility fails, stay low, stay linked, and count your breathing. We have partial contact with two missing engineers. Their last transmission reported a humming sound behind the wall of the melt chamber, followed by warm air and running water where no water should be. Listen carefully: if you encounter fog, metallic dust, or a repeating whistle that does not match your equipment, stop immediately and report your coordinates. You are not alone down there. Keep your radios open. Rescue is fourteen minutes out.'
  },
  settings: {
    languageBoost: 'en',
    turbo: false
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "English_Trustworth_Man",
                "text": "Attention all survey teams, this is Base Relay Seven broadcasting on emergency channel two. At 04:13 station time, a pressure ridge opened beneath the eastern ice shelf and cut power to the remote drilling camp. If you are hearing this message, do not attempt the old supply tunnel. Repeat: do not enter the old supply tunnel. Thermal scans show shifting fractures, falling particulate ice, and rapidly dropping oxygen levels in the lower passage. Rescue crews are moving in from the west with portable heaters, medical packs, and guide beacons. Team Aurora, hold your current position near the blue anchor line and conserve battery power. Team Calder, mark every junction with reflective tape and answer each beacon ping with three clicks. If visibility fails, stay low, stay linked, and count your breathing. We have partial contact with two missing engineers. Their last transmission reported a humming sound behind the wall of the melt chamber, followed by warm air and running water where no water should be. Listen carefully: if you encounter fog, metallic dust, or a repeating whistle that does not match your equipment, stop immediately and report your coordinates. You are not alone down there. Keep your radios open. Rescue is fourteen minutes out."
            },
            "settings": {
                "languageBoost": "en",
                "turbo": False
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "cf5dd067-f19a-4b68-bb78-7c8f2c4c506f",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "English_Trustworth_Man",
        "text": "Attention all survey teams, this is Base Relay Seven broadcasting on emergency channel two. At 04:13 station time, a pressure ridge opened beneath the eastern ice shelf and cut power to the remote drilling camp. If you are hearing this message, do not attempt the old supply tunnel. Repeat: do not enter the old supply tunnel. Thermal scans show shifting fractures, falling particulate ice, and rapidly dropping oxygen levels in the lower passage. Rescue crews are moving in from the west with portable heaters, medical packs, and guide beacons. Team Aurora, hold your current position near the blue anchor line and conserve battery power. Team Calder, mark every junction with reflective tape and answer each beacon ping with three clicks. If visibility fails, stay low, stay linked, and count your breathing. We have partial contact with two missing engineers. Their last transmission reported a humming sound behind the wall of the melt chamber, followed by warm air and running water where no water should be. Listen carefully: if you encounter fog, metallic dust, or a repeating whistle that does not match your equipment, stop immediately and report your coordinates. You are not alone down there. Keep your radios open. Rescue is fourteen minutes out."
      },
      "settings": {
        "languageBoost": "en",
        "turbo": false
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice=English_Trustworth_Man \
  speech.text="Attention all survey teams, this is Base Relay Seven broadcasting on emergency channel two. At 04:13 station time, a pressure ridge opened beneath the eastern ice shelf and cut power to the remote drilling camp. If you are hearing this message, do not attempt the old supply tunnel. Repeat: do not enter the old supply tunnel. Thermal scans show shifting fractures, falling particulate ice, and rapidly dropping oxygen levels in the lower passage. Rescue crews are moving in from the west with portable heaters, medical packs, and guide beacons. Team Aurora, hold your current position near the blue anchor line and conserve battery power. Team Calder, mark every junction with reflective tape and answer each beacon ping with three clicks. If visibility fails, stay low, stay linked, and count your breathing. We have partial contact with two missing engineers. Their last transmission reported a humming sound behind the wall of the melt chamber, followed by warm air and running water where no water should be. Listen carefully: if you encounter fog, metallic dust, or a repeating whistle that does not match your equipment, stop immediately and report your coordinates. You are not alone down there. Keep your radios open. Rescue is fourteen minutes out." \
  settings.languageBoost=en \
  settings.turbo=false
{
  "taskType": "audioInference",
  "taskUUID": "cf5dd067-f19a-4b68-bb78-7c8f2c4c506f",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "English_Trustworth_Man",
    "text": "Attention all survey teams, this is Base Relay Seven broadcasting on emergency channel two. At 04:13 station time, a pressure ridge opened beneath the eastern ice shelf and cut power to the remote drilling camp. If you are hearing this message, do not attempt the old supply tunnel. Repeat: do not enter the old supply tunnel. Thermal scans show shifting fractures, falling particulate ice, and rapidly dropping oxygen levels in the lower passage. Rescue crews are moving in from the west with portable heaters, medical packs, and guide beacons. Team Aurora, hold your current position near the blue anchor line and conserve battery power. Team Calder, mark every junction with reflective tape and answer each beacon ping with three clicks. If visibility fails, stay low, stay linked, and count your breathing. We have partial contact with two missing engineers. Their last transmission reported a humming sound behind the wall of the melt chamber, followed by warm air and running water where no water should be. Listen carefully: if you encounter fog, metallic dust, or a repeating whistle that does not match your equipment, stop immediately and report your coordinates. You are not alone down there. Keep your radios open. Rescue is fourteen minutes out."
  },
  "settings": {
    "languageBoost": "en",
    "turbo": false
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "cf5dd067-f19a-4b68-bb78-7c8f2c4c506f",
  "audioUUID": "52117d8f-254f-48de-bea4-a77e12511ecf",
  "audioURL": "https://am.runware.ai/audio/os/a11d13/ws/5/ai/52117d8f-254f-48de-bea4-a77e12511ecf.mp3",
  "cost": 0.1258
}
Text to Audio

Nocturnal Museum Heist Monologue

0:00

A las dos y trece de la madrugada, el museo parecía dormido, pero yo sabía que estaba escuchando. Cada vitrina respiraba silencio; cada pasillo guardaba un eco distinto, como si el edificio recordara los pasos de todos los que alguna vez soñaron con tocar lo intocable. No vine por oro, ni por fama, ni siquiera por venganza. Vine por una caja pequeña, forrada en nogal oscuro, escondida detrás de un reloj solar del siglo diecisiete. Dentro, según decían, había una carta que no debía existir. La escribió una reina en su última noche de libertad. Y esa carta, si era auténtica, podía cambiar la historia de un país entero. Cuando la alarma láser rozó la punta de mi guante, contuve el aliento. Un movimiento más, y todo habría terminado. Entonces oí una voz en la penumbra: 'Si has llegado hasta aquí, más te vale saber leer secretos'. No era un guardia. No era una grabación. Era alguien que me había estado esperando.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:speech@2.8',
  speech: {
    voice: 'Spanish_CaptivatingStoryteller',
    text: 'A las dos y trece de la madrugada, el museo parecía dormido, pero yo sabía que estaba escuchando. Cada vitrina respiraba silencio; cada pasillo guardaba un eco distinto, como si el edificio recordara los pasos de todos los que alguna vez soñaron con tocar lo intocable. No vine por oro, ni por fama, ni siquiera por venganza. Vine por una caja pequeña, forrada en nogal oscuro, escondida detrás de un reloj solar del siglo diecisiete. Dentro, según decían, había una carta que no debía existir. La escribió una reina en su última noche de libertad. Y esa carta, si era auténtica, podía cambiar la historia de un país entero. Cuando la alarma láser rozó la punta de mi guante, contuve el aliento. Un movimiento más, y todo habría terminado. Entonces oí una voz en la penumbra: \'Si has llegado hasta aquí, más te vale saber leer secretos\'. No era un guardia. No era una grabación. Era alguien que me había estado esperando.'
  },
  settings: {
    languageBoost: 'es',
    turbo: false
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:speech@2.8",
            "speech": {
                "voice": "Spanish_CaptivatingStoryteller",
                "text": "A las dos y trece de la madrugada, el museo parecía dormido, pero yo sabía que estaba escuchando. Cada vitrina respiraba silencio; cada pasillo guardaba un eco distinto, como si el edificio recordara los pasos de todos los que alguna vez soñaron con tocar lo intocable. No vine por oro, ni por fama, ni siquiera por venganza. Vine por una caja pequeña, forrada en nogal oscuro, escondida detrás de un reloj solar del siglo diecisiete. Dentro, según decían, había una carta que no debía existir. La escribió una reina en su última noche de libertad. Y esa carta, si era auténtica, podía cambiar la historia de un país entero. Cuando la alarma láser rozó la punta de mi guante, contuve el aliento. Un movimiento más, y todo habría terminado. Entonces oí una voz en la penumbra: 'Si has llegado hasta aquí, más te vale saber leer secretos'. No era un guardia. No era una grabación. Era alguien que me había estado esperando."
            },
            "settings": {
                "languageBoost": "es",
                "turbo": False
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "40ca27df-a334-4593-acc4-8e8fea104837",
      "model": "minimax:speech@2.8",
      "speech": {
        "voice": "Spanish_CaptivatingStoryteller",
        "text": "A las dos y trece de la madrugada, el museo parecía dormido, pero yo sabía que estaba escuchando. Cada vitrina respiraba silencio; cada pasillo guardaba un eco distinto, como si el edificio recordara los pasos de todos los que alguna vez soñaron con tocar lo intocable. No vine por oro, ni por fama, ni siquiera por venganza. Vine por una caja pequeña, forrada en nogal oscuro, escondida detrás de un reloj solar del siglo diecisiete. Dentro, según decían, había una carta que no debía existir. La escribió una reina en su última noche de libertad. Y esa carta, si era auténtica, podía cambiar la historia de un país entero. Cuando la alarma láser rozó la punta de mi guante, contuve el aliento. Un movimiento más, y todo habría terminado. Entonces oí una voz en la penumbra: 'Si has llegado hasta aquí, más te vale saber leer secretos'. No era un guardia. No era una grabación. Era alguien que me había estado esperando."
      },
      "settings": {
        "languageBoost": "es",
        "turbo": false
      }
    }
  ]'
runware run minimax:speech@2.8 \
  speech.voice=Spanish_CaptivatingStoryteller \
  speech.text="A las dos y trece de la madrugada, el museo parecía dormido, pero yo sabía que estaba escuchando. Cada vitrina respiraba silencio; cada pasillo guardaba un eco distinto, como si el edificio recordara los pasos de todos los que alguna vez soñaron con tocar lo intocable. No vine por oro, ni por fama, ni siquiera por venganza. Vine por una caja pequeña, forrada en nogal oscuro, escondida detrás de un reloj solar del siglo diecisiete. Dentro, según decían, había una carta que no debía existir. La escribió una reina en su última noche de libertad. Y esa carta, si era auténtica, podía cambiar la historia de un país entero. Cuando la alarma láser rozó la punta de mi guante, contuve el aliento. Un movimiento más, y todo habría terminado. Entonces oí una voz en la penumbra: 'Si has llegado hasta aquí, más te vale saber leer secretos'. No era un guardia. No era una grabación. Era alguien que me había estado esperando." \
  settings.languageBoost=es \
  settings.turbo=false
{
  "taskType": "audioInference",
  "taskUUID": "40ca27df-a334-4593-acc4-8e8fea104837",
  "model": "minimax:speech@2.8",
  "speech": {
    "voice": "Spanish_CaptivatingStoryteller",
    "text": "A las dos y trece de la madrugada, el museo parecía dormido, pero yo sabía que estaba escuchando. Cada vitrina respiraba silencio; cada pasillo guardaba un eco distinto, como si el edificio recordara los pasos de todos los que alguna vez soñaron con tocar lo intocable. No vine por oro, ni por fama, ni siquiera por venganza. Vine por una caja pequeña, forrada en nogal oscuro, escondida detrás de un reloj solar del siglo diecisiete. Dentro, según decían, había una carta que no debía existir. La escribió una reina en su última noche de libertad. Y esa carta, si era auténtica, podía cambiar la historia de un país entero. Cuando la alarma láser rozó la punta de mi guante, contuve el aliento. Un movimiento más, y todo habría terminado. Entonces oí una voz en la penumbra: 'Si has llegado hasta aquí, más te vale saber leer secretos'. No era un guardia. No era una grabación. Era alguien que me había estado esperando."
  },
  "settings": {
    "languageBoost": "es",
    "turbo": false
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "40ca27df-a334-4593-acc4-8e8fea104837",
  "audioUUID": "7777ed63-000b-4c45-a815-3e50c6b74ad5",
  "audioURL": "https://am.runware.ai/audio/os/a11d13/ws/5/ai/7777ed63-000b-4c45-a815-3e50c6b74ad5.mp3",
  "cost": 0.0921
}