Configure voice
Speech recognition and the voice run in the backend and serve every satellite; How voice works explains the split. This guide works on the installation from Self-host Ambrogio; run the commands from ~/ambrogio.
Before you start
Section titled “Before you start”- The backend host has an x86_64 CPU with AVX2; see Before you install.
Turn voice on
Section titled “Turn voice on”-
Add these entries to the
environmentsection of thebackendservice incompose.yaml:AMBROGIO_VOICE_LANGUAGES: enAMBROGIO_VOICE_EN_STT_MODEL_DIR: /opt/ambrogio/models/sherpa-onnx-nemotron-3.5-asr-streaming-0.6b-560ms-int8-2026-06-11AMBROGIO_VOICE_EN_MODEL_DIR: /opt/ambrogio/voices/vits-piper-en_US-kristin-mediumThey use the speech recognition model and the English voice included in the image.
-
To speak Italian instead, list
it, set theAMBROGIO_VOICE_IT_*variables and addAMBROGIO_LANGUAGE: it: the backend uses the profile ofAMBROGIO_LANGUAGE, which must be in the list. -
Recreate the backend:
Terminal window docker compose up -d
If the backend does not start, docker compose logs backend names the variable to fix; see Troubleshooting.
Choose another bundled voice
Section titled “Choose another bundled voice”-
Pick a voice of the image from Bundled models and licenses.
-
Set
AMBROGIO_VOICE_<L>_MODEL_DIRof your language (ENorIT) to its folder, for example:AMBROGIO_VOICE_IT_MODEL_DIR: /opt/ambrogio/voices/vits-piper-it_IT-riccardo-x_low -
Recreate the backend with
docker compose up -d.
Mount your own voice or speech recognition model
Section titled “Mount your own voice or speech recognition model”-
Get the model:
- a voice: a Piper voice converted for sherpa-onnx;
- speech recognition: a sherpa-onnx streaming transducer from the sherpa-onnx pretrained models, one that recognises the language you speak.
Check that its folder has the files listed in Backend configuration, and check its license.
-
Put it under a folder of your installation, for example
~/ambrogio/models/voices/my-voiceor~/ambrogio/models/stt/my-model. -
Mount that folder read-only in the
backendservice ofcompose.yaml, under/custom-modelsso that the bundled models stay available:volumes:- ./agents:/etc/ambrogio/agents:ro- ./models:/custom-models:ro -
Point the variable of your language to the path inside the container:
AMBROGIO_VOICE_EN_MODEL_DIR: /custom-models/voices/my-voiceAMBROGIO_VOICE_EN_STT_MODEL_DIR: /custom-models/stt/my-model -
Recreate the backend with
docker compose up -d.
How voice works explains why only these model families are supported.