Detects language each turn. Replies in the same language. No re-routing.
Real-time voice support that handles language switches mid-conversation. Per-turn detection, multilingual LLM and TTS, single WebSocket session. Built on the streaming-language-detect + streaming-translation contract.
No black box. Each step is a typed-frame node you can edit, monitor, and replace.
Caller speaks. The streaming-language-detect node tags each turn with a language code.
Conversation memory ingests the turn with its language. The prompt template injects locale-aware instructions.
The multilingual LLM answers in the detected language. The matching TTS voice synthesises the reply.
Next turn, the language can change. The router handles it. The session never re-routes.
Streaming graph contract, observability, and cost discipline come standard. The agent ships with a full test suite that runs in CI on every node version bump.
streaming-language-detect tags every transcribed turn with an ISO language code and a confidence. Below-threshold turns fall back to the session default - no silent mis-routing.
The same WebSocket session handles English → Spanish → French without dropping the call. Conversation memory keeps a unified history; only the current turn's locale changes.
The streaming-prompt-template injects per-language instructions into the system prompt. Tone, register, formality - locale-specific defaults you can edit in one place.
STT, language-detect, prompt, LLM, and TTS run concurrently behind the typed-frame contract. Latency stays under the bilingual budget.
The install wizard exposes the LLM and TTS as separate fields per language. Use a multilingual frontier model for everything, or pin a smaller model for high-volume locales.
Each turn's spans carry the detected language as an attribute. Filter the canvas overlay by locale to debug accent issues, regional vocab, or low-confidence detections.
Every dependency is a registered Strongly service or a model you control. Swap any one of them in the install wizard. The graph stays intact.
The marketplace template is the graph. Every customisation below is a config change or a single-node addition - never a rewrite.
Replace the single llm node with a streaming-conditional + branch-per-locale. Cheap models for high-volume languages, premium models for the long tail.
The default supports the multilingual model's full set. Restrict to your supported locales in the language-detect node's allow-list.
If a TTS voice for the detected language isn't available, chain streaming-translation to render the reply into a supported language and disclose the translation.
Inject a locale-aware glossary (technical terms, brand names, do-not-translate list) into the prompt template per turn.
Add streaming-conversation-store tagged with the per-turn language for regulator-friendly transcripts.
We don't leave until it runs. Talk to a forward-deployed engineer about deploying Multilingual Voice Support into your environment with your STT, your LLM, your TTS, your data.
Schedule a Demo