Create a new agent in your browser using this model
Overview
Inworld text-to-speech is available in LiveKit Agents through LiveKit Inference and the Inworld plugin. With LiveKit Inference, your agent runs on LiveKit's infrastructure to minimize latency. No separate provider API key is required, and usage and rate limits are managed through LiveKit Cloud. Use the plugin instead if you want to manage your own billing and rate limits. Pricing for LiveKit Inference is available on the pricing page.
LiveKit Inference
Use LiveKit Inference to access Inworld TTS without a separate Inworld API key.
| Model name | Model ID | Languages |
|---|---|---|
Inworld TTS 1 | inworld/inworld-tts-1 | enesfrkonlzhdeitjaplptruhihear |
Inworld TTS 1 Max | inworld/inworld-tts-1-max | enesfrkonlzhdeitjaplptruhihear |
Inworld TTS 1.5 Max | inworld/inworld-tts-1.5-max | enzhjakoruitesptfrdeplnlhihear |
Inworld TTS 1.5 Mini | inworld/inworld-tts-1.5-mini | enzhjakoruitesptfrdeplnlhihear |
Usage
To use Inworld, use the TTS class from the inference module:
from livekit.agents import AgentSession, inferencesession = AgentSession(tts=inference.TTS(model="inworld/inworld-tts-1.5-max",voice="Ashley",language="en"),# ... llm, stt, vad, turn_handling, etc.)
import { AgentSession, inference } from '@livekit/agents';session = new AgentSession({tts: new inference.TTS({model: "inworld/inworld-tts-1.5-max",voice: "Ashley",language: "en"}),// ... llm, stt, vad, turnHandling, etc.});
Parameters
modelstringThe model ID from the models list.
voicestringSee voices for guidance on selecting a voice.
languageLanguageCodeLanguage code for the input text. If not set, the model default applies.
extra_kwargsdictAdditional parameters to pass to the Inworld TTS API. See model parameters for supported fields.
In Node.js this parameter is called modelOptions.
Model parameters
Pass the following parameters inside extra_kwargs (Python) or modelOptions (Node.js):
| Parameter | Type | Default | Notes |
|---|---|---|---|
speaking_rate | float | Speaking rate multiplier. 1.0 is normal speed. Valid range: 0.5–1.5. | |
temperature | float | Controls randomness in the generated voice. Higher values produce more variation. Valid range: 0–2. | |
timestamp_type | "TIMESTAMP_TYPE_UNSPECIFIED" | "WORD" | "CHARACTER" | Granularity of timestamps returned with the audio. | |
apply_text_normalization | "APPLY_TEXT_NORMALIZATION_UNSPECIFIED" | "ON" | "OFF" | Whether to normalize text before synthesis (expand numbers, abbreviations, etc.). |
Voices
LiveKit Inference supports all of the default voices available in the Inworld API. You can explore the available voices in the Inworld TTS Playground (free account required), and use the voice by copying its name into your LiveKit agent session.
Cloned voices are not yet supported in LiveKit Inference. To use these voices, create your own Inworld account and use the Inworld plugin for LiveKit Agents instead.
The following is a small sample of the Inworld voices available in LiveKit Inference.
String descriptors
As a shortcut, you can also pass a descriptor with the model ID and voice directly to the tts argument in your AgentSession:
from livekit.agents import AgentSessionsession = AgentSession(tts="inworld/inworld-tts-1.5-max:Ashley",# ... llm, stt, vad, turn_handling, etc.)
import { AgentSession } from '@livekit/agents';session = new AgentSession({tts: "inworld/inworld-tts-1.5-max:Ashley",// ... llm, stt, vad, turnHandling, etc.});
Plugin
LiveKit's plugin support for Inworld lets you connect directly to Inworld's TTS API with your own API key.
Installation
Install the plugin from PyPI:
uv add "livekit-agents[inworld]~=1.4"
pnpm add @livekit/agents-plugin-inworld@1.x
Authentication
The Inworld plugin requires a Base64-encoded Inworld API key.
Set INWORLD_API_KEY in your .env file.
Usage
Use Inworld TTS within an AgentSession or as a standalone speech generator. For example, you can use this TTS in the Voice AI quickstart.
from livekit.plugins import inworldsession = AgentSession(tts=inworld.TTS(model="inworld-tts-1.5-max", voice="Ashley")# ... llm, stt, etc.)
import * as inworld from '@livekit/agents-plugin-inworld';const session = new voice.AgentSession({tts: inworld.TTS(model: "inworld-tts-1.5-max",voice: "Ashley",),// ... llm, stt, etc.});
Parameters
This section describes some of the available parameters. See the plugin reference for a complete list of all available parameters.
modelstringDefault: "inworld-tts-1.5-max"ID of the model to use for generation. See supported models.
voicestringDefault: "Ashley"ID of the voice to use for generation. Use the List voices API endpoint for possible values.
temperaturefloatDefault: 1.1Controls randomness in the output. Recommended to set between 0.6 and 1.1. See docs.
speaking_ratefloatDefault: 1.0Controls how fast the voice speaks. 1.0 is the normal native speed, while 0.5 is half the normal speed and 1.5 is 1.5x faster than the normal speed. See docs.
text_normalizationstringDefault: ONControls text normalization. When "ON", numbers, dates, and abbreviations are expanded (e.g., "Dr." -> "Doctor"). When "OFF", text is read exactly as written. See docs.
Customizing pronunciation
Inworld TTS supports customizing pronunciation. To learn more, see Custom Pronunciation guide.
Additional resources
The following resources provide more information about using Inworld with LiveKit Agents.