NIM Service Chart#

Overview#

The nvidia-active-speaker-detection-h4m-service Helm chart deploys the Active Speaker Detection NIM as a standalone inference service on Kubernetes or Red Hat OpenShift.

  • Inputs: Video stream and one or more diarized audio streams via SMPTE ST 2110

  • Outputs: Bounding box metadata via SMPTE ST 2110-40 ancillary data; optionally video with bounding box overlay.

This chart can be deployed standalone for integration into a custom media pipeline, or as a subchart of the end-to-end demo chart.


Installation#

Prerequisites#

Complete all prerequisite steps (Rivermax license, image pull and model pull secrets, high-speed network attachment) before running helm install. For details, refer to Getting Started. For hardware requirements per pod, refer to the Support Matrix.

Pull the Chart#

If not already done, add the Helm repository and pull the chart. For the full repository setup, refer to Pull Helm Charts.

helm pull nim-repo/nvidia-active-speaker-detection-h4m-service --version 1.0.0

The downloaded .tgz is referenced directly in the following installation commands.

Helm Installation#

The chart includes a default values.yaml. For full SMPTE ST 2110 and NMOS override files, refer to Starter Configuration Files.

Important

The default values.yaml ships with example values for cluster-specific fields such as node selector (example-gpu-node), image pull secret, network name, and scheduler. You must update these values to match your cluster before deploying.

Default deployment (SMPTE ST 2110 NMOS mode, 1080p):

helm upgrade --install nvidia-asd-h4m-service \
  nvidia-active-speaker-detection-h4m-service-1.0.0.tgz

With node hostname and secret overrides:

helm upgrade --install nvidia-asd-h4m-service \
  nvidia-active-speaker-detection-h4m-service-1.0.0.tgz \
  --set nodeSelector.hostname=<gpu-node-name> \
  --set image.secret=<image-pull-secret> \
  --set schedulerName=<scheduler-name> \
  --set network.name=<multus-net-attach-def> \
  --set ngcModelDownload.secretName=<model-pull-secret>

--set Flag

Purpose

Default

nodeSelector.hostname

Target GPU node.

image.secret

Image pull secret (docker-registry type).

ngc-api-key

schedulerName

Kubernetes scheduler name.

topo-aware-scheduler

network.name

NetworkAttachmentDefinition name for ST 2110 traffic.

media-a-tx-net

ngcModelDownload.secretName

Model pull secret (generic type) for NGC model download.

ngc-model-pull-api-key

After installation, check the status:

kubectl get pods -o wide
kubectl rollout status deployment/<appName> --timeout=180s

On Red Hat OpenShift, replace kubectl with oc.


Deployment Modes#

The NIM service offers two modes to support media stream connections:

Aspect

SMPTE ST 2110

NMOS

Values file

values-st2110.yaml

values-nmos.yaml

Stream discovery

Fixed multicast IP addresses and ports in values.

Dynamic discovery via NMOS Connection Manager.

Use case

Known network, fixed topology.

Dynamic registration and connection management.

SMPTE ST 2110 Mode#

NMOS discovery is disabled. All multicast IP addresses, ports, and session parameters must be configured explicitly. Sender output IP addresses and ports must match NIM service input IP addresses and ports, and NIM service output IP addresses and ports must match downstream receiver input IP addresses and ports.

helm upgrade --install nvidia-asd-h4m-service \
  nvidia-active-speaker-detection-h4m-service-1.0.0.tgz \
  -f values-st2110.yaml

NMOS Mode#

Stream connections are managed via the NMOS Connection Manager UI. Most input and output transport parameters can be omitted from the values file—only session names and ancillary output parameters must be set. On Holoscan for Media clusters, the UI is typically opened from a browser on the cluster network; for remote graphical access, refer to Chrome Remote Desktop in Getting Started.

helm upgrade --install nvidia-asd-h4m-service \
  nvidia-active-speaker-detection-h4m-service-1.0.0.tgz \
  -f values-nmos.yaml

Note

In NMOS mode, connect receivers to the NIM service before connecting the sender via the NMOS Connection Manager UI. This procedure prevents frames from accumulating in receiver queues.


Starter Configuration Files#

Copy the appropriate configuration below into values-st2110.yaml or values-nmos.yaml, adjust the fields for your environment, and pass it to helm upgrade --install with -f.

For a full reference of all available Helm keys, pipeline tuning parameters, and environment variables, refer to the Configuration Reference.

ST2110 Configuration — Static (values-st2110.yaml)#

appName: nvidia-active-speaker-detection-nim-st2110
replicas: 1
nodeSelector:
  hostname: example-gpu-node
image:
  repository: nvcr.io/nim/nvidia/active-speaker-detection-h4m-nim
  tag: "1.0.0"
  secret: ngc-api-key

schedulerName: topo-aware-scheduler

nimLogs:
  enabled: true
  mountPath: "/workspace/nim-logs"

network:
  name: "media-a-tx-net"

nmos:
  enabled: false
  hostname: active-speaker-detection-nim.local
  description: NVIDIA Active Speaker Detection NIM
  label: Nvidia-Active-Speaker-Detection-NIM

video:
  width: 1920
  height: 1080
  framerateNum: 30
  framerateDen: 1

audio:
  pcmFormat: S24BE
  samplingRate: 48000
  numChannels: 1

input:
  video:
    sessionName: video_in
    localInterfaceName: net1
    hostIp: 234.5.8.26
    hostPort: "7005"
    hostNumSubnetBits: 24
  audio:
    sessionName: audio_in
    localInterfaceName: net1
    hostIp: 234.5.8.26
    hostPort: "7006"
    hostNumSubnetBits: 24
    numStreams: 2

output:
  video:
    sessionName: video_out
    localInterfaceName: net1
    hostIp: 234.5.8.27
    hostPort: "7005"
    hostNumSubnetBits: 24
  ancillaryData:
    sessionName: ancillary_out
    localInterfaceName: net1
    hostIp: 234.5.8.27
    hostPort: "7006"
    hostNumSubnetBits: 24

logging:
  level: 3

pipeline:
  testFrameOverlayMode: false
  outputFrameBufferSize: 30
  useAudioThresholdToDetectActiveAudioStream: false
  audioThresholdDb: -40.0
  syncTolerance: 0.5986

ngcModelDownload:
  secretName: "ngc-model-pull-api-key"
  secretKey: "NGC_API_KEY"

# NMOS Node API (port 9010) — Service name: <appName>-endpoint
service:
  enabled: true
  type: NodePort
  port: 9010
  nodePort: 32526

NMOS Configuration (values-nmos.yaml)#

appName: nvidia-active-speaker-detection-nim-nmos
replicas: 1
nodeSelector:
  hostname: example-gpu-node
image:
  repository: nvcr.io/nim/nvidia/active-speaker-detection-h4m-nim
  tag: "1.0.0"
  secret: ngc-api-key

schedulerName: topo-aware-scheduler

nimLogs:
  enabled: true
  mountPath: "/workspace/nim-logs"

network:
  name: "media-a-tx-net"

nmos:
  enabled: true
  hostname: active-speaker-detection-nim.local
  description: NVIDIA Active Speaker Detection NIM
  label: Nvidia-Active-Speaker-Detection-NIM

video:
  width: 1920
  height: 1080
  framerateNum: 30
  framerateDen: 1

audio:
  pcmFormat: S24BE
  samplingRate: 48000
  numChannels: 1

input:
  video:
    sessionName: video_in
  audio:
    sessionName: audio_in
    numStreams: 2

output:
  video:
    sessionName: video_out
  ancillaryData:
    sessionName: ancillary_out
    localInterfaceName: net1
    hostIp: 234.5.8.27
    hostPort: "7006"
    hostNumSubnetBits: 24

logging:
  level: 3

pipeline:
  testFrameOverlayMode: false
  outputFrameBufferSize: 30
  useAudioThresholdToDetectActiveAudioStream: false
  audioThresholdDb: -40.0
  syncTolerance: 0.5986

ngcModelDownload:
  secretName: "ngc-model-pull-api-key"
  secretKey: "NGC_API_KEY"

# NMOS Node API (port 9010) — Service name: <appName>-endpoint
service:
  enabled: true
  type: NodePort
  port: 9010
  nodePort: 32526

Note

In NMOS mode, connect receivers to the NIM service before connecting the sender via the NMOS Connection Manager UI.


Verify#

helm status nvidia-asd-h4m-service
kubectl get pods -o wide

Verify configured Helm values:

helm get values nvidia-asd-h4m-service

On Red Hat OpenShift, replace kubectl with oc. For log access, refer to Observability.


Uninstall#

helm uninstall nvidia-asd-h4m-service

For troubleshooting and advanced configuration, refer to Advanced Usage.