Speech Analysis

August 2, 2026 ยท View on GitHub

ModelFamilyTaskQuick Start
Silero VADsilero_vadvadSilero VAD
MarbleNet VADmarblenet_vadvadMarbleNet VAD
Sortformer Diarizationsortformer_diardiarSortformer Diarization

This page covers VAD and diarization models. ASR models are documented in ASR models.

Common CLI shape:

audiocpp_cli --task <task> --family <family> --model <model-dir> --backend cuda --audio <audio.wav> ...

When --mode streaming is used, the selected model provides its default streaming policy.

Silero VAD

Silero VAD is bundled as a small framework asset and detects speech segments. It supports offline and streaming modes.

FieldValue
Familysilero_vad
Model directoryassets/framework/models/silero_vad
Taskvad
Modesoffline, streaming
OutputSpeech segment JSON through --segments-out; offline VAD chunk windows through --vad-chunks-out
Sample rates16 kHz path is used by the examples; 512-sample streaming chunks are required by the model path

Offline:

audiocpp_cli --task vad --family silero_vad --model assets/framework/models/silero_vad --backend cuda --audio assets/resources/sample_16k.wav --segments-out segments.json

Offline VAD chunk planning:

audiocpp_cli \
  --task vad \
  --family silero_vad \
  --model assets/framework/models/silero_vad \
  --backend cuda \
  --audio assets/resources/sample_16k.wav \
  --segments-out segments.json \
  --vad-chunks-out vad_chunks.json \
  --vad-chunk-max-seconds 45 \
  --vad-chunk-merge-gap-seconds 0.5 \
  --vad-chunk-padding-seconds 0.25

Streaming:

audiocpp_cli --task vad --family silero_vad --model assets/framework/models/silero_vad --backend cuda --mode streaming --audio <512-sample-16k-wav> --segments-out segments.json
OptionValuesDefaultMeaning
--audioWAV pathrequiredInput audio.
--modeoffline, streamingofflineFull-file or streaming VAD.
--segments-outJSON pathnot setWrite speech segments.
--vad-chunks-outJSON pathnot setWrite offline VAD-based chunk windows.
--vad-chunk-max-secondsseconds45Maximum VAD chunk length.
--vad-chunk-merge-gap-secondsseconds0.5Merge padded speech spans separated by this gap or less.
--vad-chunk-padding-secondsseconds0.25Pad each speech segment before chunk planning.
--request-option threshold=<float>float0.5Speech probability threshold.
--request-option neg_threshold=<float>floatthreshold - 0.15, clamped to at least 0.01Negative threshold used by the state machine when not set directly.
--request-option min_speech_duration_ms=<n>integer ms250Minimum speech duration.
--request-option min_silence_duration_ms=<n>integer ms100Minimum silence duration.
--request-option speech_pad_ms=<n>integer ms30Padding around speech segments.
--request-option max_speech_duration_s=<float>seconds1000000000Maximum speech segment length.

MarbleNet VAD

MarbleNet VAD is an offline speech activity detector.

FieldValue
Familymarblenet_vad
Model directoryassets/framework/models/marblenet_vad
Taskvad
Modesoffline
OutputSpeech segment JSON through --segments-out
StreamingNot exposed
audiocpp_cli --task vad --family marblenet_vad --model assets/framework/models/marblenet_vad --backend cuda --audio speech_16k.wav --segments-out segments.json
OptionValuesDefaultMeaning
--audioWAV pathrequiredInput audio.
--segments-outJSON pathnot setWrite speech segments.
--request-option threshold=<float>float0.5Speech probability threshold.

Sortformer Diarization

Sortformer diarization identifies speaker turns. The packaged model path is the 4-speaker variant.

FieldValue
Familysortformer_diar
Model directorymodels/Sortformer-Diar-4spk-v1-GGUF
Taskdiar
Modesoffline
OutputSpeaker turn JSON through --turns-out
SpeakersUp to the speaker count supported by the model package; the default model is 4-speaker
audiocpp_cli --task diar --family sortformer_diar --model models/Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-q8_0.gguf --backend cuda --audio meeting_16k.wav --turns-out turns.json
OptionValuesDefaultMeaning
--audioWAV pathrequiredMeeting or conversation audio.
--turns-outJSON pathnot setWrite speaker turns.
--request-option speaker_threshold=<float>floatsession defaultPer-request speaker activation threshold.
--request-option speaker_min_frames=<n>integersession defaultPer-request minimum speaker segment frames.
--request-option speaker_pad_frames=<n>integersession defaultPer-request padding around speaker turns.
--session-option sortformer_diar.speaker_threshold=<float>float0.5Default speaker activation threshold.
--session-option sortformer_diar.speaker_min_frames=<n>integer0Default minimum speaker segment frames.
--session-option sortformer_diar.speaker_pad_frames=<n>integer0Default padding around speaker turns.
--session-option sortformer_diar.session_len_sec=<float>seconds20.0Diarization graph window length.
--session-option sortformer_diar.graph_capacity_mode=<mode>fixed, tiered, grow, doublebackend defaultOffline graph capacity policy.
--session-option sortformer_diar.graph_arena_mb=<n>MB512Inference graph arena size.
--session-option sortformer_diar.weight_context_mb=<n>MB128Weight context size.
--session-option sortformer_diar.weight_type=<type>storage typef32Default weight storage type.
--session-option sortformer_diar.matmul_weight_type=<type>storage typeweight_typeMatmul weight storage override.
--session-option sortformer_diar.conv_weight_type=<type>storage typeweight_typeConvolution weight storage override.

Compatibility aliases are applied before v1 option validation:

Legacy session optionv1 session option
speaker_thresholdsortformer_diar.speaker_threshold
speaker_min_framessortformer_diar.speaker_min_frames
speaker_pad_framessortformer_diar.speaker_pad_frames
session_len_secsortformer_diar.session_len_sec
graph_context_mb, sortformer_diar.graph_context_mbsortformer_diar.graph_arena_mb
graph_capacity_mode, offline_graph_capacity_modesortformer_diar.graph_capacity_mode
weight_context_mbsortformer_diar.weight_context_mb
weight_typesortformer_diar.weight_type
matmul_weight_typesortformer_diar.matmul_weight_type
conv_weight_typesortformer_diar.conv_weight_type

For backend weight-type controls, use audiocpp_cli --inspect --model <model-dir> --family <family>.