NIM Service Chart#

Overview#

The nvidia-studio-voice-h4m-service Helm chart deploys the Studio Voice NIM as a standalone inference service on Kubernetes or Red Hat OpenShift.

  • Input: Audio stream via SMPTE ST 2110-30.

  • Output: Enhanced audio via SMPTE ST 2110-30.

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-studio-voice-h4m-service --version 1.2.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 (static) 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. Before deploying, you must update these fields to match your cluster.

Default deployment (NMOS mode):

helm upgrade --install nvidia-studio-voice-h4m-service \
  nvidia-studio-voice-h4m-service-1.2.0.tgz

With node hostname, network, scheduler, and secret overrides:

helm upgrade --install nvidia-studio-voice-h4m-service \
  nvidia-studio-voice-h4m-service-1.2.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 ngc.secretName=<model-pull-secret>

--set Flag

Purpose

Default

nodeSelector.hostname

Target GPU node.

example-gpu-node

image.secret

Image pull secret (docker-registry type) for nvcr.io.

ngc-image-secret

schedulerName

Pod spec.schedulerName. Refer to Scheduler and NUMA Topology.

topo-aware-scheduler

network.name

Multus NetworkAttachmentDefinition for SMPTE ST 2110. Refer to High-Speed Network Configuration.

media-a-tx-net

ngc.secretName

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

ngc-api-key

Note

The image pull secret and the model pull secret must have different names and different types (docker-registry versus generic). For creation steps, refer to Getting Started.

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 Studio Voice service offers two modes to support media stream connections:

Aspect

SMPTE ST 2110 (static)

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 Static Mode#

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

helm upgrade --install nvidia-studio-voice-h4m-service \
  nvidia-studio-voice-h4m-service-1.2.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 must be set, and transport details are negotiated dynamically over IS-04 or IS-05. 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-studio-voice-h4m-service \
  nvidia-studio-voice-h4m-service-1.2.0.tgz \
  -f values-nmos.yaml

Note

In NMOS mode, connect receivers to the Studio Voice service before connecting the sender via the NMOS Connection Manager UI. This procedure prevents audio 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.

ST 2110 Configuration — Static (values-st2110.yaml)#

appName: nvidia-studio-voice-nim-st2110
replicas: 1
nodeSelector:
  hostname: example-gpu-node
image:
  repository: nvcr.io/nim/nvidia/studio-voice-h4m
  tag: "1.2.0"
  pullPolicy: IfNotPresent
  secret: ngc-image-secret

nmos:
  enabled: false
  httpPort: 9010
  seed: nvidia-studio-voice-nim-st2110

audio:
  pcmFormat: S24BE
  samplingRate: 48000
  numChannels: 1

input:
  audio:
    sessionName: audio_in
    localInterfaceName: net1
    hostIp: "234.5.8.9"
    hostPort: 5003
    hostNumSubnetBits: 24

output:
  audio:
    sessionName: audio_out
    localInterfaceName: net1
    hostIp: "234.5.8.9"
    hostPort: 5004
    hostNumSubnetBits: 24

network:
  name: media-a-tx-net

studiovoice:
  nmosEnabled: false
  nimEnabled: true

NMOS Configuration (values-nmos.yaml)#

In NMOS mode the transport parameters (multicast IP address, port, subnet) are negotiated dynamically by the NMOS Connection Manager over IS-04 and IS-05, so only the session names need to be set on the NIM service; the values are discovered at runtime.

appName: nvidia-studio-voice-nim-nmos
replicas: 1
nodeSelector:
  hostname: example-gpu-node
image:
  repository: nvcr.io/nim/nvidia/studio-voice-h4m
  tag: "1.2.0"
  pullPolicy: IfNotPresent
  secret: ngc-image-secret

nmos:
  enabled: true
  httpPort: 9010
  seed: nvidia-studio-voice-nim-nmos
  hostname: studio-voice-nim.local
  description: Studio-Voice-NIM
  label: Studio-Voice-NIM

audio:
  pcmFormat: S24BE
  samplingRate: 48000
  numChannels: 1

input:
  audio:
    sessionName: audio_in

output:
  audio:
    sessionName: audio_out

network:
  name: media-a-tx-net

studiovoice:
  nmosEnabled: true
  nimEnabled: true

Note

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


Verify#

helm status nvidia-studio-voice-h4m-service
kubectl get pods -o wide

Verify configured Helm values:

helm get values nvidia-studio-voice-h4m-service

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


Uninstall#

helm uninstall nvidia-studio-voice-h4m-service

Note

The *-model-cache and *-nim-logs PVCs carry helm.sh/resource-policy: keep and are not removed by helm uninstall. This preserves the cached model across reinstalls; clean them up manually when no longer needed:

kubectl delete pvc -l app.kubernetes.io/instance=nvidia-studio-voice-h4m-service -n <your-namespace>

For troubleshooting and advanced configuration, refer to Advanced Usage.