TEN Framework
Build real-time voice agents on TEN Framework using Smallest AI TTS and STT.
This guide walks you through using Smallest AI as the STT and TTS provider in TEN Framework, an open-source framework for building real-time, multimodal conversational voice agents. TEN agents are declarative graphs - a voice agent is a pipeline of nodes (RTC transport → STT → LLM → TTS) defined in a property.json file, so switching to Smallest AI is a configuration change, not a code change.
Extensions
Two extensions are available, one per capability:
Prerequisites
- Docker with Docker Compose
- An Agora App ID (TEN’s default RTC transport)
- An LLM provider key (e.g. OpenAI)
- A Smallest AI API key - get one from the Smallest AI dashboard
Setup
Configuration Reference
smallest_asr_python (STT)
Any additional key in params (e.g. word_timestamps, eou_timeout, punctuate) is forwarded verbatim as a query parameter to the live endpoint - see the Pulse feature docs for the full list.
smallest_tts_python (TTS)
Any additional key in params (e.g. language, pronunciation_dicts) is forwarded verbatim in the request body - see the TTS API reference.
Notes
- Graph-level
property.paramsoverride the extension defaults, so different graphs in the same app can use different voices or languages. - Interruptions (barge-in) are handled by the framework: when the user speaks over the agent, TEN flushes the TTS extension and Lightning synthesis is cancelled mid-stream - no custom logic needed.
- Interim transcripts stream with
final=falsefor live captions; final results carry word-level timing. - For issues with the extensions, open an issue in the TEN Framework repository or contact us on Discord.