MODEL IDinworld:tts@1.5-max
live

Inworld TTS-1.5 Max

Inworld AI
by Inworld AI

Inworld TTS-1.5 Max is a high-fidelity text-to-speech model engineered for expressive voice synthesis with rich prosody, nuanced emotional range, and broadcast-ready audio quality. It supports a wide set of languages and delivers more natural pronunciation and expressive variation suitable for narration, content creation, and immersive character voices. The Max variant prioritizes audio quality and expressiveness while still supporting responsive generation.

Inworld TTS-1.5 Max
text-to-audio

Urban Forestry Podcast Cold Open

0:00

One city block, forty-seven honey locusts, and a maintenance bill nobody budgeted for. So, who decides what a street tree is worth before the next heat wave tests it? This is Canopy Ledger, the show where urban forestry meets public money. I’m Mara Chen. Today, we’re following a single sapling from nursery bid to sidewalk—and asking why the cheapest tree can become the most expensive one on the block. You’ll hear from a city arborist, a procurement officer, and the contractor watering 18,000 new trees through August. First, though: the tiny line item that changed an entire planting plan.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  model: 'inworld:tts@1.5-max',
  speech: {
    text: 'One city block, forty-seven honey locusts, and a maintenance bill nobody budgeted for. So, who decides what a street tree is worth before the next heat wave tests it? This is Canopy Ledger, the show where urban forestry meets public money. I’m Mara Chen. Today, we’re following a single sapling from nursery bid to sidewalk—and asking why the cheapest tree can become the most expensive one on the block. You’ll hear from a city arborist, a procurement officer, and the contractor watering 18,000 new trees through August. First, though: the tiny line item that changed an entire planting plan.',
    voice: 'Loretta',
    speed: 1
  },
  settings: {
    temperature: 1.1,
    textNormalization: true
  }
})
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({
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "model": "inworld:tts@1.5-max",
            "speech": {
                "text": "One city block, forty-seven honey locusts, and a maintenance bill nobody budgeted for. So, who decides what a street tree is worth before the next heat wave tests it? This is Canopy Ledger, the show where urban forestry meets public money. I’m Mara Chen. Today, we’re following a single sapling from nursery bid to sidewalk—and asking why the cheapest tree can become the most expensive one on the block. You’ll hear from a city arborist, a procurement officer, and the contractor watering 18,000 new trees through August. First, though: the tiny line item that changed an entire planting plan.",
                "voice": "Loretta",
                "speed": 1
            },
            "settings": {
                "temperature": 1.1,
                "textNormalization": True
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "e1406f38-f321-44d0-bcf5-a6e449d2e8c9",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "model": "inworld:tts@1.5-max",
      "speech": {
        "text": "One city block, forty-seven honey locusts, and a maintenance bill nobody budgeted for. So, who decides what a street tree is worth before the next heat wave tests it? This is Canopy Ledger, the show where urban forestry meets public money. I’m Mara Chen. Today, we’re following a single sapling from nursery bid to sidewalk—and asking why the cheapest tree can become the most expensive one on the block. You’ll hear from a city arborist, a procurement officer, and the contractor watering 18,000 new trees through August. First, though: the tiny line item that changed an entire planting plan.",
        "voice": "Loretta",
        "speed": 1
      },
      "settings": {
        "temperature": 1.1,
        "textNormalization": true
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="One city block, forty-seven honey locusts, and a maintenance bill nobody budgeted for. So, who decides what a street tree is worth before the next heat wave tests it? This is Canopy Ledger, the show where urban forestry meets public money. I’m Mara Chen. Today, we’re following a single sapling from nursery bid to sidewalk—and asking why the cheapest tree can become the most expensive one on the block. You’ll hear from a city arborist, a procurement officer, and the contractor watering 18,000 new trees through August. First, though: the tiny line item that changed an entire planting plan." \
  speech.voice=Loretta \
  speech.speed=1 \
  settings.temperature=1.1 \
  settings.textNormalization=true
{
  "taskType": "audioInference",
  "taskUUID": "e1406f38-f321-44d0-bcf5-a6e449d2e8c9",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "model": "inworld:tts@1.5-max",
  "speech": {
    "text": "One city block, forty-seven honey locusts, and a maintenance bill nobody budgeted for. So, who decides what a street tree is worth before the next heat wave tests it? This is Canopy Ledger, the show where urban forestry meets public money. I’m Mara Chen. Today, we’re following a single sapling from nursery bid to sidewalk—and asking why the cheapest tree can become the most expensive one on the block. You’ll hear from a city arborist, a procurement officer, and the contractor watering 18,000 new trees through August. First, though: the tiny line item that changed an entire planting plan.",
    "voice": "Loretta",
    "speed": 1
  },
  "settings": {
    "temperature": 1.1,
    "textNormalization": true
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "e1406f38-f321-44d0-bcf5-a6e449d2e8c9",
  "audioUUID": "263f96d9-5a8e-417c-8f66-1deb6c4a0f39",
  "audioURL": "https://am.runware.ai/audio/os/a07dlim3/ws/5/ai/263f96d9-5a8e-417c-8f66-1deb6c4a0f39.mp3",
  "cost": 0.0297
}
text-to-audio

Antarctic Field Lab PA Bed

0:00

Attention, Halley field team. The 18:40 surface check is complete. Exterior temperature is minus 31 degrees Celsius; wind is holding at 42 kilometers per hour. Visibility beyond Marker 6 is now poor. Secure loose instruments, close the west airlock manually, and log all departures with Operations. Dr. Imani, your ice-core transfer is cleared for Cold Store B. Power will shift to night load in ten minutes. Please finish nonessential equipment cycles now. The next weather update will follow at 19:00.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  model: 'inworld:tts@1.5-max',
  speech: {
    text: 'Attention, Halley field team. The 18:40 surface check is complete. Exterior temperature is minus 31 degrees Celsius; wind is holding at 42 kilometers per hour. Visibility beyond Marker 6 is now poor. Secure loose instruments, close the west airlock manually, and log all departures with Operations. Dr. Imani, your ice-core transfer is cleared for Cold Store B. Power will shift to night load in ten minutes. Please finish nonessential equipment cycles now. The next weather update will follow at 19:00.',
    voice: 'Loretta',
    speed: 1
  },
  settings: {
    temperature: 1.1,
    textNormalization: true
  }
})
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({
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "model": "inworld:tts@1.5-max",
            "speech": {
                "text": "Attention, Halley field team. The 18:40 surface check is complete. Exterior temperature is minus 31 degrees Celsius; wind is holding at 42 kilometers per hour. Visibility beyond Marker 6 is now poor. Secure loose instruments, close the west airlock manually, and log all departures with Operations. Dr. Imani, your ice-core transfer is cleared for Cold Store B. Power will shift to night load in ten minutes. Please finish nonessential equipment cycles now. The next weather update will follow at 19:00.",
                "voice": "Loretta",
                "speed": 1
            },
            "settings": {
                "temperature": 1.1,
                "textNormalization": True
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "1a4787b1-968c-4c50-be7f-cc18a6f1d815",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "model": "inworld:tts@1.5-max",
      "speech": {
        "text": "Attention, Halley field team. The 18:40 surface check is complete. Exterior temperature is minus 31 degrees Celsius; wind is holding at 42 kilometers per hour. Visibility beyond Marker 6 is now poor. Secure loose instruments, close the west airlock manually, and log all departures with Operations. Dr. Imani, your ice-core transfer is cleared for Cold Store B. Power will shift to night load in ten minutes. Please finish nonessential equipment cycles now. The next weather update will follow at 19:00.",
        "voice": "Loretta",
        "speed": 1
      },
      "settings": {
        "temperature": 1.1,
        "textNormalization": true
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="Attention, Halley field team. The 18:40 surface check is complete. Exterior temperature is minus 31 degrees Celsius; wind is holding at 42 kilometers per hour. Visibility beyond Marker 6 is now poor. Secure loose instruments, close the west airlock manually, and log all departures with Operations. Dr. Imani, your ice-core transfer is cleared for Cold Store B. Power will shift to night load in ten minutes. Please finish nonessential equipment cycles now. The next weather update will follow at 19:00." \
  speech.voice=Loretta \
  speech.speed=1 \
  settings.temperature=1.1 \
  settings.textNormalization=true
{
  "taskType": "audioInference",
  "taskUUID": "1a4787b1-968c-4c50-be7f-cc18a6f1d815",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "model": "inworld:tts@1.5-max",
  "speech": {
    "text": "Attention, Halley field team. The 18:40 surface check is complete. Exterior temperature is minus 31 degrees Celsius; wind is holding at 42 kilometers per hour. Visibility beyond Marker 6 is now poor. Secure loose instruments, close the west airlock manually, and log all departures with Operations. Dr. Imani, your ice-core transfer is cleared for Cold Store B. Power will shift to night load in ten minutes. Please finish nonessential equipment cycles now. The next weather update will follow at 19:00.",
    "voice": "Loretta",
    "speed": 1
  },
  "settings": {
    "temperature": 1.1,
    "textNormalization": true
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "1a4787b1-968c-4c50-be7f-cc18a6f1d815",
  "audioUUID": "9b672c48-0e38-4539-b0d3-e56c5ca3e351",
  "audioURL": "https://am.runware.ai/audio/os/a07dlim3/ws/5/ai/9b672c48-0e38-4539-b0d3-e56c5ca3e351.mp3",
  "cost": 0.02515
}
text-to-audio

Cold Storage Energy Explainer Voiceover

0:00

Your freezers work around the clock. But the price of powering them changes by the hour. A thermal battery turns that problem into an opportunity. When electricity is cleaner and less expensive, the system stores energy as cold. Then, during peak demand, it keeps your warehouse at the right temperature while compressors use less power. No change to daily operations. No compromise on food safety. Just steadier energy use, lower peak charges, and more flexibility when the grid is under pressure. Because in cold storage, timing matters — for every shipment, every degree, and every kilowatt.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  model: 'inworld:tts@1.5-max',
  speech: {
    text: 'Your freezers work around the clock. But the price of powering them changes by the hour. A thermal battery turns that problem into an opportunity. When electricity is cleaner and less expensive, the system stores energy as cold. Then, during peak demand, it keeps your warehouse at the right temperature while compressors use less power. No change to daily operations. No compromise on food safety. Just steadier energy use, lower peak charges, and more flexibility when the grid is under pressure. Because in cold storage, timing matters — for every shipment, every degree, and every kilowatt.',
    voice: 'Claire',
    speed: 1
  },
  settings: {
    temperature: 1.1,
    textNormalization: true
  }
})
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({
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "model": "inworld:tts@1.5-max",
            "speech": {
                "text": "Your freezers work around the clock. But the price of powering them changes by the hour. A thermal battery turns that problem into an opportunity. When electricity is cleaner and less expensive, the system stores energy as cold. Then, during peak demand, it keeps your warehouse at the right temperature while compressors use less power. No change to daily operations. No compromise on food safety. Just steadier energy use, lower peak charges, and more flexibility when the grid is under pressure. Because in cold storage, timing matters — for every shipment, every degree, and every kilowatt.",
                "voice": "Claire",
                "speed": 1
            },
            "settings": {
                "temperature": 1.1,
                "textNormalization": True
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "76e6ba1a-535f-40dc-a6f8-7d84569eab50",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "model": "inworld:tts@1.5-max",
      "speech": {
        "text": "Your freezers work around the clock. But the price of powering them changes by the hour. A thermal battery turns that problem into an opportunity. When electricity is cleaner and less expensive, the system stores energy as cold. Then, during peak demand, it keeps your warehouse at the right temperature while compressors use less power. No change to daily operations. No compromise on food safety. Just steadier energy use, lower peak charges, and more flexibility when the grid is under pressure. Because in cold storage, timing matters — for every shipment, every degree, and every kilowatt.",
        "voice": "Claire",
        "speed": 1
      },
      "settings": {
        "temperature": 1.1,
        "textNormalization": true
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="Your freezers work around the clock. But the price of powering them changes by the hour. A thermal battery turns that problem into an opportunity. When electricity is cleaner and less expensive, the system stores energy as cold. Then, during peak demand, it keeps your warehouse at the right temperature while compressors use less power. No change to daily operations. No compromise on food safety. Just steadier energy use, lower peak charges, and more flexibility when the grid is under pressure. Because in cold storage, timing matters — for every shipment, every degree, and every kilowatt." \
  speech.voice=Claire \
  speech.speed=1 \
  settings.temperature=1.1 \
  settings.textNormalization=true
{
  "taskType": "audioInference",
  "taskUUID": "76e6ba1a-535f-40dc-a6f8-7d84569eab50",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "model": "inworld:tts@1.5-max",
  "speech": {
    "text": "Your freezers work around the clock. But the price of powering them changes by the hour. A thermal battery turns that problem into an opportunity. When electricity is cleaner and less expensive, the system stores energy as cold. Then, during peak demand, it keeps your warehouse at the right temperature while compressors use less power. No change to daily operations. No compromise on food safety. Just steadier energy use, lower peak charges, and more flexibility when the grid is under pressure. Because in cold storage, timing matters — for every shipment, every degree, and every kilowatt.",
    "voice": "Claire",
    "speed": 1
  },
  "settings": {
    "temperature": 1.1,
    "textNormalization": true
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "76e6ba1a-535f-40dc-a6f8-7d84569eab50",
  "audioUUID": "4bb8fc83-ef66-404c-9249-bf2e97f23d2d",
  "audioURL": "https://am.runware.ai/audio/os/a03d21/ws/5/ai/4bb8fc83-ef66-404c-9249-bf2e97f23d2d.mp3",
  "cost": 0.0297
}
text-to-audio

Championship Pinball Broadcast Vocal Stinger

0:00

Tilt warning cleared—multiball is live! You're back at the 2026 World Pinball Championship.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  model: 'inworld:tts@1.5-max',
  speech: {
    text: 'Tilt warning cleared—multiball is live! You\'re back at the 2026 World Pinball Championship.',
    voice: 'Loretta',
    speed: 1
  },
  settings: {
    temperature: 1.1,
    textNormalization: true
  }
})
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({
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "model": "inworld:tts@1.5-max",
            "speech": {
                "text": "Tilt warning cleared—multiball is live! You're back at the 2026 World Pinball Championship.",
                "voice": "Loretta",
                "speed": 1
            },
            "settings": {
                "temperature": 1.1,
                "textNormalization": True
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "5f5adde3-9f1d-43ad-8e48-6ff022fb31bb",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "model": "inworld:tts@1.5-max",
      "speech": {
        "text": "Tilt warning cleared—multiball is live! You're back at the 2026 World Pinball Championship.",
        "voice": "Loretta",
        "speed": 1
      },
      "settings": {
        "temperature": 1.1,
        "textNormalization": true
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="Tilt warning cleared—multiball is live! You're back at the 2026 World Pinball Championship." \
  speech.voice=Loretta \
  speech.speed=1 \
  settings.temperature=1.1 \
  settings.textNormalization=true
{
  "taskType": "audioInference",
  "taskUUID": "5f5adde3-9f1d-43ad-8e48-6ff022fb31bb",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "model": "inworld:tts@1.5-max",
  "speech": {
    "text": "Tilt warning cleared—multiball is live! You're back at the 2026 World Pinball Championship.",
    "voice": "Loretta",
    "speed": 1
  },
  "settings": {
    "temperature": 1.1,
    "textNormalization": true
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "5f5adde3-9f1d-43ad-8e48-6ff022fb31bb",
  "audioUUID": "760feb91-0cdd-466b-beb7-e4cbb4006f67",
  "audioURL": "https://am.runware.ai/audio/os/a06dlim3/ws/5/ai/760feb91-0cdd-466b-beb7-e4cbb4006f67.mp3",
  "cost": 0.00455
}
Text to Audio

Immersive Story Narration

0:00

When the storm finally loosened its grip on the valley, Mira stepped out onto the rain-slick stones and listened. No thunder. No shouting wind. Only the soft dripping of water from the pine branches and, somewhere in the silver fog below, the lonely bell of the harbor lighthouse calling through the dawn. She drew a careful breath, tasted salt and cedar in the air, and unfolded the letter she had carried across three countries. The ink had run at the edges, but the final line was still clear: When the sea grows quiet, come find me.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  model: 'inworld:tts@1.5-max',
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  speech: {
    text: 'When the storm finally loosened its grip on the valley, Mira stepped out onto the rain-slick stones and listened. No thunder. No shouting wind. Only the soft dripping of water from the pine branches and, somewhere in the silver fog below, the lonely bell of the harbor lighthouse calling through the dawn. She drew a careful breath, tasted salt and cedar in the air, and unfolded the letter she had carried across three countries. The ink had run at the edges, but the final line was still clear: When the sea grows quiet, come find me.',
    voice: 'Serena',
    speed: 0.9
  },
  settings: {
    temperature: 1.05
  }
})
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": "inworld:tts@1.5-max",
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "speech": {
                "text": "When the storm finally loosened its grip on the valley, Mira stepped out onto the rain-slick stones and listened. No thunder. No shouting wind. Only the soft dripping of water from the pine branches and, somewhere in the silver fog below, the lonely bell of the harbor lighthouse calling through the dawn. She drew a careful breath, tasted salt and cedar in the air, and unfolded the letter she had carried across three countries. The ink had run at the edges, but the final line was still clear: When the sea grows quiet, come find me.",
                "voice": "Serena",
                "speed": 0.9
            },
            "settings": {
                "temperature": 1.05
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "0fa1ab9f-3ed8-4b8b-aa9c-540b9eb6f07a",
      "model": "inworld:tts@1.5-max",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "speech": {
        "text": "When the storm finally loosened its grip on the valley, Mira stepped out onto the rain-slick stones and listened. No thunder. No shouting wind. Only the soft dripping of water from the pine branches and, somewhere in the silver fog below, the lonely bell of the harbor lighthouse calling through the dawn. She drew a careful breath, tasted salt and cedar in the air, and unfolded the letter she had carried across three countries. The ink had run at the edges, but the final line was still clear: When the sea grows quiet, come find me.",
        "voice": "Serena",
        "speed": 0.9
      },
      "settings": {
        "temperature": 1.05
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="When the storm finally loosened its grip on the valley, Mira stepped out onto the rain-slick stones and listened. No thunder. No shouting wind. Only the soft dripping of water from the pine branches and, somewhere in the silver fog below, the lonely bell of the harbor lighthouse calling through the dawn. She drew a careful breath, tasted salt and cedar in the air, and unfolded the letter she had carried across three countries. The ink had run at the edges, but the final line was still clear: When the sea grows quiet, come find me." \
  speech.voice=Serena \
  speech.speed=0.9 \
  settings.temperature=1.05
{
  "taskType": "audioInference",
  "taskUUID": "0fa1ab9f-3ed8-4b8b-aa9c-540b9eb6f07a",
  "model": "inworld:tts@1.5-max",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "speech": {
    "text": "When the storm finally loosened its grip on the valley, Mira stepped out onto the rain-slick stones and listened. No thunder. No shouting wind. Only the soft dripping of water from the pine branches and, somewhere in the silver fog below, the lonely bell of the harbor lighthouse calling through the dawn. She drew a careful breath, tasted salt and cedar in the air, and unfolded the letter she had carried across three countries. The ink had run at the edges, but the final line was still clear: When the sea grows quiet, come find me.",
    "voice": "Serena",
    "speed": 0.9
  },
  "settings": {
    "temperature": 1.05
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "0fa1ab9f-3ed8-4b8b-aa9c-540b9eb6f07a",
  "audioUUID": "ceaf10cd-bb8b-40a5-94b3-cf2f87ae9a47",
  "audioURL": "https://am.runware.ai/audio/os/a03d21/ws/5/ai/ceaf10cd-bb8b-40a5-94b3-cf2f87ae9a47.mp3",
  "cost": 0.00536
}
Text to Audio

Mythic Trailer Narration

0:00

When the last ember faded, the kingdom did not fall in silence. It answered with steel, with thunder, and with the beating hearts of those who refused to kneel. Beyond the black cliffs, beneath a sky split by lightning, one rider carried the map, the oath, and the final spark of hope. By dawn, legends would awaken. By nightfall, the world would remember their names.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  model: 'inworld:tts@1.5-max',
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  speech: {
    text: 'When the last ember faded, the kingdom did not fall in silence. It answered with steel, with thunder, and with the beating hearts of those who refused to kneel. Beyond the black cliffs, beneath a sky split by lightning, one rider carried the map, the oath, and the final spark of hope. By dawn, legends would awaken. By nightfall, the world would remember their names.',
    voice: 'Sebastian',
    speed: 0.9
  },
  settings: {
    temperature: 1.12
  }
})
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": "inworld:tts@1.5-max",
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "speech": {
                "text": "When the last ember faded, the kingdom did not fall in silence. It answered with steel, with thunder, and with the beating hearts of those who refused to kneel. Beyond the black cliffs, beneath a sky split by lightning, one rider carried the map, the oath, and the final spark of hope. By dawn, legends would awaken. By nightfall, the world would remember their names.",
                "voice": "Sebastian",
                "speed": 0.9
            },
            "settings": {
                "temperature": 1.12
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "f3d5f422-48f8-407b-bcd1-5ca792df673d",
      "model": "inworld:tts@1.5-max",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "speech": {
        "text": "When the last ember faded, the kingdom did not fall in silence. It answered with steel, with thunder, and with the beating hearts of those who refused to kneel. Beyond the black cliffs, beneath a sky split by lightning, one rider carried the map, the oath, and the final spark of hope. By dawn, legends would awaken. By nightfall, the world would remember their names.",
        "voice": "Sebastian",
        "speed": 0.9
      },
      "settings": {
        "temperature": 1.12
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="When the last ember faded, the kingdom did not fall in silence. It answered with steel, with thunder, and with the beating hearts of those who refused to kneel. Beyond the black cliffs, beneath a sky split by lightning, one rider carried the map, the oath, and the final spark of hope. By dawn, legends would awaken. By nightfall, the world would remember their names." \
  speech.voice=Sebastian \
  speech.speed=0.9 \
  settings.temperature=1.12
{
  "taskType": "audioInference",
  "taskUUID": "f3d5f422-48f8-407b-bcd1-5ca792df673d",
  "model": "inworld:tts@1.5-max",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "speech": {
    "text": "When the last ember faded, the kingdom did not fall in silence. It answered with steel, with thunder, and with the beating hearts of those who refused to kneel. Beyond the black cliffs, beneath a sky split by lightning, one rider carried the map, the oath, and the final spark of hope. By dawn, legends would awaken. By nightfall, the world would remember their names.",
    "voice": "Sebastian",
    "speed": 0.9
  },
  "settings": {
    "temperature": 1.12
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "f3d5f422-48f8-407b-bcd1-5ca792df673d",
  "audioUUID": "17ac2403-f7b9-46db-9263-1ebcbdf3c21b",
  "audioURL": "https://am.runware.ai/audio/os/a17d13/ws/5/ai/17ac2403-f7b9-46db-9263-1ebcbdf3c21b.mp3",
  "cost": 0.00368
}
Text to Audio

Cinematic Story Narration

0:00

When the last train vanished into the fog, Mara stepped onto the silent platform and unfolded the letter one final time. The ink had faded, but the promise still burned between the lines: at midnight, under the station clock, the truth would finally arrive. Around her, the city held its breath. Then, from somewhere deep in the mist, came the slow echo of approaching footsteps.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  model: 'inworld:tts@1.5-max',
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  speech: {
    text: 'When the last train vanished into the fog, Mara stepped onto the silent platform and unfolded the letter one final time. The ink had faded, but the promise still burned between the lines: at midnight, under the station clock, the truth would finally arrive. Around her, the city held its breath. Then, from somewhere deep in the mist, came the slow echo of approaching footsteps.',
    voice: 'Celeste',
    speed: 0.9
  },
  settings: {
    temperature: 1.08
  }
})
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": "inworld:tts@1.5-max",
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "speech": {
                "text": "When the last train vanished into the fog, Mara stepped onto the silent platform and unfolded the letter one final time. The ink had faded, but the promise still burned between the lines: at midnight, under the station clock, the truth would finally arrive. Around her, the city held its breath. Then, from somewhere deep in the mist, came the slow echo of approaching footsteps.",
                "voice": "Celeste",
                "speed": 0.9
            },
            "settings": {
                "temperature": 1.08
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "1cf6413f-da48-42ba-9ded-515c239a8128",
      "model": "inworld:tts@1.5-max",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "speech": {
        "text": "When the last train vanished into the fog, Mara stepped onto the silent platform and unfolded the letter one final time. The ink had faded, but the promise still burned between the lines: at midnight, under the station clock, the truth would finally arrive. Around her, the city held its breath. Then, from somewhere deep in the mist, came the slow echo of approaching footsteps.",
        "voice": "Celeste",
        "speed": 0.9
      },
      "settings": {
        "temperature": 1.08
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="When the last train vanished into the fog, Mara stepped onto the silent platform and unfolded the letter one final time. The ink had faded, but the promise still burned between the lines: at midnight, under the station clock, the truth would finally arrive. Around her, the city held its breath. Then, from somewhere deep in the mist, came the slow echo of approaching footsteps." \
  speech.voice=Celeste \
  speech.speed=0.9 \
  settings.temperature=1.08
{
  "taskType": "audioInference",
  "taskUUID": "1cf6413f-da48-42ba-9ded-515c239a8128",
  "model": "inworld:tts@1.5-max",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "speech": {
    "text": "When the last train vanished into the fog, Mara stepped onto the silent platform and unfolded the letter one final time. The ink had faded, but the promise still burned between the lines: at midnight, under the station clock, the truth would finally arrive. Around her, the city held its breath. Then, from somewhere deep in the mist, came the slow echo of approaching footsteps.",
    "voice": "Celeste",
    "speed": 0.9
  },
  "settings": {
    "temperature": 1.08
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "1cf6413f-da48-42ba-9ded-515c239a8128",
  "audioUUID": "9a53c74c-51f6-4650-a3f0-619ed580074a",
  "audioURL": "https://am.runware.ai/audio/os/a07d11/ws/5/ai/9a53c74c-51f6-4650-a3f0-619ed580074a.mp3",
  "cost": 0.00379
}
Text to Audio

Emotive Story Narration

0:00

When the last train disappeared into the rain, Elena remained alone on the platform, clutching a letter softened by the storm. She had waited ten years for this moment, rehearsing a hundred different greetings, but now that the city lights trembled in the puddles and the night smelled of iron and sea salt, all her words felt small. Then she heard footsteps behind her—slow, familiar, impossible—and the world seemed to hold its breath.

import { createClient } from '@runware/sdk'

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

const [result] = await client.run({
  model: 'inworld:tts@1.5-max',
  audioSettings: {
    bitrate: 192,
    sampleRate: 48000,
    channels: 2
  },
  speech: {
    text: 'When the last train disappeared into the rain, Elena remained alone on the platform, clutching a letter softened by the storm. She had waited ten years for this moment, rehearsing a hundred different greetings, but now that the city lights trembled in the puddles and the night smelled of iron and sea salt, all her words felt small. Then she heard footsteps behind her—slow, familiar, impossible—and the world seemed to hold its breath.',
    voice: 'Serena',
    speed: 0.9
  },
  settings: {
    temperature: 1.12
  }
})
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": "inworld:tts@1.5-max",
            "audioSettings": {
                "bitrate": 192,
                "sampleRate": 48000,
                "channels": 2
            },
            "speech": {
                "text": "When the last train disappeared into the rain, Elena remained alone on the platform, clutching a letter softened by the storm. She had waited ten years for this moment, rehearsing a hundred different greetings, but now that the city lights trembled in the puddles and the night smelled of iron and sea salt, all her words felt small. Then she heard footsteps behind her—slow, familiar, impossible—and the world seemed to hold its breath.",
                "voice": "Serena",
                "speed": 0.9
            },
            "settings": {
                "temperature": 1.12
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "audioInference",
      "taskUUID": "3ccb5b6a-760e-41d8-a780-c0557bb1c2d5",
      "model": "inworld:tts@1.5-max",
      "audioSettings": {
        "bitrate": 192,
        "sampleRate": 48000,
        "channels": 2
      },
      "speech": {
        "text": "When the last train disappeared into the rain, Elena remained alone on the platform, clutching a letter softened by the storm. She had waited ten years for this moment, rehearsing a hundred different greetings, but now that the city lights trembled in the puddles and the night smelled of iron and sea salt, all her words felt small. Then she heard footsteps behind her—slow, familiar, impossible—and the world seemed to hold its breath.",
        "voice": "Serena",
        "speed": 0.9
      },
      "settings": {
        "temperature": 1.12
      }
    }
  ]'
runware run inworld:tts@1.5-max \
  audioSettings.bitrate=192 \
  audioSettings.sampleRate=48000 \
  audioSettings.channels=2 \
  speech.text="When the last train disappeared into the rain, Elena remained alone on the platform, clutching a letter softened by the storm. She had waited ten years for this moment, rehearsing a hundred different greetings, but now that the city lights trembled in the puddles and the night smelled of iron and sea salt, all her words felt small. Then she heard footsteps behind her—slow, familiar, impossible—and the world seemed to hold its breath." \
  speech.voice=Serena \
  speech.speed=0.9 \
  settings.temperature=1.12
{
  "taskType": "audioInference",
  "taskUUID": "3ccb5b6a-760e-41d8-a780-c0557bb1c2d5",
  "model": "inworld:tts@1.5-max",
  "audioSettings": {
    "bitrate": 192,
    "sampleRate": 48000,
    "channels": 2
  },
  "speech": {
    "text": "When the last train disappeared into the rain, Elena remained alone on the platform, clutching a letter softened by the storm. She had waited ten years for this moment, rehearsing a hundred different greetings, but now that the city lights trembled in the puddles and the night smelled of iron and sea salt, all her words felt small. Then she heard footsteps behind her—slow, familiar, impossible—and the world seemed to hold its breath.",
    "voice": "Serena",
    "speed": 0.9
  },
  "settings": {
    "temperature": 1.12
  }
}
Response
{
  "taskType": "audioInference",
  "taskUUID": "3ccb5b6a-760e-41d8-a780-c0557bb1c2d5",
  "audioUUID": "b858445e-416e-48c0-875f-362e45287354",
  "audioURL": "https://am.runware.ai/audio/os/a04d20/ws/5/ai/b858445e-416e-48c0-875f-362e45287354.mp3",
  "cost": 0.00437
}