Server Config Schema
This reference lists every YAML server-configuration key that NeMo Labs Voice Agent reads, including its
type, default, and consumer. The content is derived from
examples/generic_voice_agent/server/server_configs/default.yaml,
nemo_voice_agent/utils/config_manager.py, nemo_voice_agent/pipecat/services/nemo/builders.py, and the
three service factories: get_stt_service_from_config, get_llm_service_from_config, and
get_tts_service_from_config.
For task-oriented editing instructions, refer to Server Configuration.
This reference is hand-maintained. The configuration uses plain OmegaConf dictionaries that each call
site reads with .get(), so no schema class is available to generate the tables. Treat the named source
files as authoritative, and open an issue if you find drift.
How a Config Resolves
The server resolves a configuration in the following order before any service builders consume it.
ConfigManagerloads the top-level YAML (SERVER_CONFIG_PATH, elseserver_configs/default.yaml) and resolves all OmegaConf interpolation such as${llm.temperature}.- For each of
stt,llm,ttsit picks a sub-config: the basename of that block’smodel_configkey, else theyaml_idfrommodel_registry.yamlwhenserver.use_model_registryis true. Only the basename is used — the file is always loaded from<server_base_path>/server_configs/{stt,llm,tts}_configs/. - The sub-config overwrites the top-level block, key by key. Setting a key in
default.yamlthat the sub-config also sets has no effect. Overrides are logged at INFO. - The server logs the fully resolved configuration at startup as
Server config: .... Use that entry to confirm which values took effect.
“Required” below means the code reads the key without a fallback, so the server raises if it is missing.
server
The server block controls model-registry lookup and evaluation-server logging and startup behavior.
The example server examples/generic_voice_agent/server/server.py calls setup_logging() with no arguments
and passes talk_first=True literally. The five logging and talk_first keys above therefore take effect
only in evaluation/bot_server.py or in your own bot script that wires them through the builders.
transport
The transport block controls WebSocket audio framing, sample rates, and optional audio recording.
Refer to Audio Logging for the on-disk layout.
vad
The code reads all four voice activity detection (VAD) keys without a fallback and passes them to Pipecat’s
VADParams. VAD is not optional:
build_vad_analyzer always returns a SileroVADAnalyzer.
vad.type appears in the shipped configs but is not read by any code — Silero is always used.
stt
The stt block selects and configures the local or hosted speech-to-text (STT) backend.
For more detail, refer to ASR.
diar
The diar block enables speaker diarization and sets its model and detection parameters.
diar.type and diar.device are present in the shipped configs but not read: build_diar reuses
stt.device for the diarizer. For more detail, refer to
Diarization.
turn_taking
The turn_taking block controls backchannel handling and interruption timing.
Disabling turn-taking also changes turn detection ownership: build_context_and_aggregators falls back to
VAD-driven strategies in the user aggregator. For more detail, refer to
Turn Taking.
llm
The llm block selects and configures the large language model (LLM) backend. The following keys apply to
all backends:
Hugging Face backend:
vLLM backend, described in vLLM:
NVIDIA hosted backend, described in NVIDIA NIM:
Omni and multimodal keys, read by server.py to insert a UserAudioBuffer and described in
Multimodal:
tts
The tts block selects the text-to-speech (TTS) backend and configures its model, voice, and retry behavior.
Text segmentation keys, read by build_text_aggregator for the LLMTextProcessor placed upstream of TTS.
Only extra_separator appears in the shipped YAML files — every tts_configs/*.yaml sets it to
[',', '\n', '.', '?', '!', ';'], which the merged TTS config hands to build_text_aggregator. The other
three are absent, so their defaults apply unless you add them:
Related
Use these pages for task-oriented configuration guidance and related runtime references.
- Server Configuration — editing workflow and precedence rules
- Model Registry — how
yaml_idandreasoning_supportedresolve - Prompts —
system_prompt/system_prompt_suffixauthoring - Environment Variables —
SERVER_CONFIG_PATH,NVIDIA_API_KEY, ports - Tool Calling — what
llm.enable_tool_callingturns on