# Inworld Voice Design

> Run Inworld Voice Design by inworld online or via API. from $0.00000277/sec, no setup.

**URL:** https://inference.sh/apps/inworld/voice-design
**Last updated:** 2026-05-12

---

Design a custom voice from a text description using Inworld AI. Describe the voice you want and get up to 3 previews. Publish the one you like to use with any Inworld TTS model.

- app: `inworld/voice-design`
- maker: [inworld](https://inference.sh/apps/inworld.md)
- category: [audio](https://inference.sh/apps/category/audio.md)
- tasks: [voice design](https://inference.sh/apps/tag/voice-design.md)
- price: from $0.00000277/sec
- runs via: api, javascript and python sdk, belt cli, mcp

## voice-design API Guide

### About
design a custom voice from a text description using inworld ai. describe the voice you want and get up to 3 previews. publish the one you like to use with any inworld tts model.

### Get an API Key
Create one in [settings → api keys](https://app.inference.sh/settings/keys). The examples read it from `INFERENCE_API_KEY`.

```bash
export INFERENCE_API_KEY="inf_your_key"
```

### 1. Calling the API

#### Install the Client

```bash
pip install inferencesh
```

#### Run and Get Result
Submit a request and wait for the final result.

```python
import os
from inferencesh import inference

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## version @1n73x8hn pinned
result = client.run({
        "app": "inworld/voice-design@1n73x8hn",
        "input": {
            "design_prompt": "design_prompt",
            "preview_text": "preview_text"
        }
    })

print(result["output"])
```

#### Stream Live Updates
Get real-time progress updates as the task runs.

```python
import os
from inferencesh import inference

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## version @1n73x8hn pinned
## stream=True yields updates as they arrive
for update in client.run({
        "app": "inworld/voice-design@1n73x8hn",
        "input": {
            "design_prompt": "design_prompt",
            "preview_text": "preview_text"
        }
    }, stream=True):
    if update.get("progress"):
        print(f"progress: {update['progress']}%")
    if update.get("output"):
        print(f"output: {update['output']}")
```

#### Run in the Background
Start the task and get its id back right away, then check on it with `GET /tasks/{id}`. It is done when `status` is 10 (completed), 11 (failed) or 12 (cancelled).

```python
import os
from inferencesh import inference, TaskStatus

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## returns as soon as the task is created
task = client.run({
        "app": "inworld/voice-design@1n73x8hn",
        "input": {
            "design_prompt": "design_prompt",
            "preview_text": "preview_text"
        }
    }, wait=False)

## later: read its current state
state = client.tasks.get(task["id"]).data
if state["status"] == TaskStatus.COMPLETED:
    print(state["output"])
```

### 2. Files

#### Automatic Upload

```python
## local file paths are automatically uploaded
result = client.run({
    "app": "inworld/voice-design@1n73x8hn",
    "input": {
        "image": "/path/to/local/image.png",  # detected & uploaded
        "audio": "https://example.com/audio.mp3",  # url passed through
    }
})
```

#### Manual Upload

```python
## upload and get a hosted URL
file = client.files.upload("/path/to/file.png")
print(file.uri)  # https://cloud.inference.sh/...
```

### 3. Schema

#### Input
- **design_prompt** (string) *required*: Text description of the desired voice (30-250 characters, English). Include age, gender, accent, tone, pitch, and personality. Example: 'A warm, friendly mid-30s female voice with a slight British accent, conversational and upbeat tone.'
- **preview_text** (string) *required*: Text the generated voice will speak in the preview (should result in 1-15 seconds of audio).
- **language** (string): Language for the designed voice.
- **number_of_samples** (integer): Number of voice previews to generate (1-3). More samples = more options to choose from.

#### Output
- **hint** (string): Usage instructions
- **previews** (array): Generated voice previews — listen and pick the best one, then publish it
- **total** (integer): Number of previews generated

## other audio apps

- [Pika H3 Flex Audio Stems](https://inference.sh/apps/pika/pika-h3-flex-audio-stems.md): $0.001/stem-sec (3 stems: dialogue, music, effect)
- [Fish Audio Drama 3](https://inference.sh/apps/fish-audio/drama-3.md): $50.00/1M UTF-8 bytes
- [Eleven Flash v2.5](https://inference.sh/apps/elevenlabs/eleven-flash-v2-5.md): $0.04/1K characters
- [Eleven Multilingual v2](https://inference.sh/apps/elevenlabs/eleven-multilingual-v2.md): $0.08/1K characters
- [Eleven v3](https://inference.sh/apps/elevenlabs/eleven-v3.md): $0.08/1K characters

## faq

### how much does Inworld Voice Design cost?

from $0.00000277/sec. you pay per run from your inference shell credits. no subscription is required.

### how do I run Inworld Voice Design via api?

call inworld/voice-design with the javascript or python sdk, the rest api, or `belt app run inworld/voice-design` from a terminal. the api reference on this page lists every input.

### who makes Inworld Voice Design?

Inworld Voice Design is made by inworld and runs on inference shell. every inworld app is listed at https://inference.sh/apps/inworld.

### can my agent use Inworld Voice Design?

yes. agents call it as a tool through the inference shell mcp server (https://api.inference.sh/mcp), the belt cli or the sdk, and pay per run like you do.

### what are the alternatives to Inworld Voice Design?

other audio apps on inference shell include Pika H3 Flex Audio Stems, Fish Audio Drama 3, Eleven Flash v2.5, Eleven Multilingual v2. they run through the same api, so switching is a one-line change.
