Virbe Documentation

Build a Multilingual Kiosk

Set up a Virbe Metahuman Kiosk that automatically detects and switches between multiple languages based on what the user speaks.

This tutorial walks through setting up a kiosk virtual being that can interact in multiple languages – detecting which language the user speaks and switching to it automatically, without any user-visible menu or button.

What you'll build: A kiosk that greets users in English, detects if they respond in another language, switches the STT/TTS engine to that language, and continues the conversation in the detected language.

Time: approximately 45 minutes

Prerequisites:

  • An active Virbe account with a configured STT engine that supports your target languages (Azure STT supports most major languages)
  • A TTS engine configured with voices for each target language
  • A Metahuman Kiosk profile

Step 1 – Add Languages to the Profile

  1. Open Configure → Profiles → [Your Kiosk Profile]
  2. Select the Language tab
  3. The language list shows available STT languages. Drag to reorder – the first language in the list is the default (the language the assistant starts in)
  4. Add all languages you want to support. For this tutorial: English, Spanish, French
  5. Click Save

Standard plans support up to 10 languages per profile. Enterprise plans have no limit. If you cannot add more languages, check your plan limits.


Step 2 – Configure TTS Voices per Language

Each language needs a TTS voice configured in the persona.

  1. Go to Configure → Personas → [Your Persona]
  2. In the Voices section, set a voice for each language you added:
    • English – e.g., Azure en-US-AriaNeural
    • Spanish – e.g., Azure es-ES-ElviraNeural
    • French – e.g., Azure fr-FR-DeniseNeural
  3. Use the Voice Tester to preview each voice
  4. Click Save

Step 3 – Set Up the Language Change Handler

The On Language Change handler fires automatically when the STT engine detects a different language. You need to tell the pipeline what to do with that detection.

  1. Open the Conversation Editor and select the On Language Change handler
  2. Add an Accept Language Change node – this confirms the language switch and updates the active STT and TTS engines to the detected language
  3. Optionally, add a Text node after Accept Language Change to acknowledge the switch: "Of course, let's switch to {{variable.detectedLanguage}}."
  4. Connect the nodes: Flow Entrypoint → Accept Language Change → Text

If you do not want to automatically accept every language change (for example, if you only support two of your three enabled languages for a specific part of the flow), use a Route by Language node before Accept Language Change to apply conditional logic.


Step 4 – Set Up the Greeting Flow

Create a greeting that works across languages by using an LLM-based greeting rather than a hardcoded text node.

  1. Open the Greet flow (or your main entry flow)
  2. Add an LLM Response node
  3. Write a system instruction: "Greet the user warmly. Use the language they are speaking. If you don't know which language to use yet, greet in English first."
  4. This ensures the first greeting is in English, but after language detection kicks in, subsequent responses are in the correct language

Step 5 – Test the Multilingual Flow

  1. Open the Test conversation panel
  2. Enable Show system messages to see language change events in the transcript
  3. Send messages in English first – verify you receive an English response
  4. Then type a message in Spanish – you should see a Flow Change event showing the On Language Change handler fired, followed by a language-switched response
  5. Continue in Spanish – verify subsequent responses are in Spanish

Step 6 – Assign to Profile and Publish

  1. In the Conversation Editor three-dot menu, select Assign draft to profile → select your kiosk profile
  2. Click Publish to publish the draft
  3. On the kiosk hardware, restart the Virbe Kiosk application to load the updated pipeline

Extending This Pattern

Language-specific flows: If different languages need different content or routing, add a Route by Language node in the main handler to branch the flow per language – e.g., routing Spanish speakers to a flow with Spanish-specific Knowledge Base retrieval.

Greeting in the user's language: If you have face detection enabled, the On face-detected handler triggers before the user speaks. Start with a multilingual greeting text ("Hello / Hola / Bonjour") until language detection fires.

Restricting supported languages: If a user speaks a language you have not added to the profile (e.g., Italian when only English and Spanish are enabled), the On Language Change handler will not fire – the STT engine simply does not recognise it as a configured language and the conversation continues in the current language.

On this page