Skip to main content
A voice agent in Mantle is the same project as a chat agent, with a voice channel switched on. Your skills, memory, tools, responses, and control levers do not change. Mantle detects that a turn arrived on a voice channel and adapts how the agent speaks, listens, and waits. That means you build and test one agent, and it serves both channels. Voice just adds a few things worth tuning.

How a voice turn works

  1. Speech recognition turns the caller’s audio into text and decides when they have finished speaking.
  2. Mantle runs the turn exactly as it does for chat: it picks the skill, runs tools, enforces your constraints, and writes memory.
  3. Speech synthesis turns the agent’s reply into audio. Providers that support streaming text input can start speaking before the whole response is written. Custom engines must implement the streaming input interface to do this.
The speech recognition and synthesis providers are configured on the channel in integrations.yml. Recognition and synthesis are chosen separately, so you can mix providers, for example Deepgram for recognition and Rime for synthesis. Your skills do not change when you switch provider. See Speech providers.

What Mantle handles for you

None of this needs changes to your skills. The same skill keeps its text behavior on chat channels.

What you control

These are the decisions worth making for a voice agent. Each links to how.
  • Who speaks first. Replace the silent default_session_start with a greeting, and add any recording notice there. See Designing for voice.
  • How much the agent says at once. Lists and long explanations need breaking up for a listener. See Read lists in small pieces.
  • Exact wording for numbers. Order numbers and references belong in responses, not in model-generated text.
  • Confirmation before side effects. Use requires_confirmation so the caller agrees out loud before anything irreversible.
  • Keypad input. A collect step can accept digits from the phone keypad. See DTMF collect steps.
  • Ending the call. An ordered-block action: hangup ends the call after an authored goodbye. See Step kinds.
  • Voice and recognition. Choose the speech providers, models, and voice per language. See Speech providers.

Try it

The Inspector has a voice mode built in. With an ASR and TTS model enabled, run rasa inspect and select Start voice conversation. See Getting Started.

Learn from a complete community project

The Rasa Community voice tutorial builds a travel agent with references, tools, confirmations, and ordered steps. Use it when you want to see several skills working together after completing the card replacement tutorial. Check the tutorial’s tested Rasa version and compatibility notes before adapting its examples; the configuration reference in these docs describes this Mantle version.

Rasa Community voice tutorial

Follow the travel-agent walkthrough on rasa.community.

Runnable community agent

Open the companion project’s setup instructions, skills, and dependency pins.

Next steps

Build a voice agent

A step-by-step tutorial, from first draft to phone-ready.

Designing for voice

Patterns for skills and responses that work well out loud.

Connect a phone line

Put the agent behind a real phone number.

Test and monitor voice

Listen in the Inspector, then watch latency and interruptions in production.