Nemotron Speech
NVIDIAOfficialCreated by Nemotron Speech TeamDistributed by NVIDIA
- Skill
- Tool integration
- Data and AI
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
Nemotron Speech acts as a central command interface for managing NVIDIA's speech AI NIMs. It provides a structured workflow for users to navigate deployment options, whether using cloud-hosted inference via build.nvidia.com or self-hosted Docker containers. The skill handles the routing of tasks across ASR, TTS, and NMT modalities, ensuring users follow the correct procedures for model selection, pipeline configuration, and system readiness checks.
What it does
- Routes users to specific workflows for ASR, TTS, and NMT deployment.
- Provides guidance on self-hosted Docker deployment and cloud-hosted inference.
- Assists with custom model builds using riva-build and riva-deploy.
- Facilitates ASR pipeline tuning including VAD, diarization, and language models.
- Supports TTS customization such as SSML, zero-shot voice cloning, and pronunciation dictionaries.
- Directs users to authoritative documentation for version-specific model and hardware requirements.
When to use it
- When you need to deploy or test NVIDIA Riva/Nemotron Speech NIMs.
- When configuring custom ASR or TTS pipelines for specific accuracy or vocabulary needs.
- When troubleshooting deployment readiness, GPU compatibility, or container health.
- When integrating speech-to-text, text-to-speech, or translation into an application.
Advantages
- Centralizes complex speech AI workflows into a single, navigable interface.
- Ensures adherence to official NVIDIA documentation and best practices.
- Simplifies the transition between cloud-hosted and self-hosted environments.
- Provides clear, step-by-step procedures for custom model deployment.
Usage examples
- “Deploy a Parakeet ASR NIM”
- The agent loads the ASR reference file and guides the user through the self-hosted deployment steps.
- “How do I fix the pronunciation of NIM in Riva TTS?”
- The agent loads the TTS pronunciation reference, suggests IPA candidates, and provides the necessary gRPC snippet.
- “Can my GPU run this?”
- The agent initiates the deployment readiness check workflow to verify system requirements.
- “Translate English to German”
- The agent loads the NMT reference file and walks the user through the translation deployment flow.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/nvidia/nemotron-speech/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip nemotron-speech.zip -d .agents/skills
Documentation by Nemotron Speech Team
Nemotron Speech Skills
Note: "Nemotron Speech" is the public-facing name for what NVIDIA documents today as Riva / Riva NIM. All commands, container images, gRPC APIs, Python imports, and documentation URLs still use "Riva" — the rename is brand-only. Do not rename commands, images, or doc URLs.
Agent: When walking the user through a multi-step workflow, announce each step before presenting it: Step N/M — Step Title (e.g., "Step 1/4 — Deploy the Container").
Purpose
Single entry point for all NVIDIA Nemotron Speech (Riva) NIM workflows: ASR (speech-to-text), TTS (text-to-speech), and NMT (translation). Covers cloud-hosted inference via build.nvidia.com, self-hosted Docker deployment, client-protocol choice for ASR (gRPC, HTTP, WebSocket), custom NeMo model deployment via riva-build, ASR pipeline tuning (VAD, diarization, language models), and the prerequisite Docker / NGC / driver setup.
When to Use This Skill
Use this skill for any Nemotron Speech / Riva NIM task — deployment, testing, custom model build, system requirements check, or model selection across ASR / TTS / NMT modalities.
Workflow
Identify the user's task type, then load the corresponding reference file from references/. The reference files contain the detailed per-workflow content; this SKILL.md is a routing surface. Load only the reference relevant to the task at hand.
Prerequisites
For self-hosted deployment: NVIDIA AI Enterprise (NVAIE) entitlement, then complete the environment setup — NVIDIA drivers, Docker, Container Toolkit, NGC API key, Riva Python client. See
references/setup.md.For cloud-hosted inference:
pip install -U nvidia-riva-clientand a validNVIDIA_API_KEYfrom https://build.nvidia.com.Treat
NVIDIA_API_KEYandNGC_API_KEYas secrets: never print, paste, commit, or log real key values. Prefer--password-stdinfor Docker login and store persistent keys in a credential manager or achmod 600env file rather than world-readable shell startup files.For self-hosted Docker model caching: host directories mounted at
/opt/nim/.cachemust be writable by the container user (the NIM container runs asnvs:1000internally), not just the host user. Runsudo chown 1000:1000 $LOCAL_NIM_CACHEafter creating the directory so the container can write to it. Avoid world-writable modes — they let any local user replace cached model artifacts. Also avoid-u "$(id -u):$(id -g)"on the docker run —/opt/nim/workspaceinside the container isn't writable to arbitrary UIDs. If you seeI/O error Permission denied (os error 13)during model download, the host directory ownership is the issue.
Instructions
Match the user's task to one reference file and load only that file; the references are detailed, so progressive disclosure keeps context tight.
Route setup requests for drivers, Docker, Container Toolkit, and NGC to
references/setup.md.Route GPU compatibility, deployment readiness, and container health checks to
references/deployment-readiness-checks.md.Route model choice across ASR, TTS, and NMT to
references/model-selection.md.Route ASR deployment or inference for Parakeet, Canary, Whisper, and Nemotron ASR Streaming to
references/asr.md.Route custom-trained NeMo ASR deployment (
.nemo→ RMIR → NIM) toreferences/asr-custom.md.Route ASR pipeline configuration for VAD, diarization, language models, and chunk size to
references/pipelines.md.Route TTS deployment or inference for Magpie to
references/tts.md.Route custom or fine-tuned TTS model deployment (
.nemo→ RMIR → NIM) toreferences/tts-custom.md.Route TTS synthesis pipeline configuration — SSML, zero-shot voice cloning, applying an existing pronunciation dictionary, audio encoding, sample rate,
custom_configurationkeys — toreferences/tts-pipelines.md. (For discovering and constructing the pronunciation itself, usetts-pronunciation.md.)Route TTS pronunciation discovery — finding, testing, and applying IPA pronunciations for specific words or phrases — to
references/tts-pronunciation.md.Route NMT deployment or inference for Riva Translate, language pairs, and DNT tags to
references/nmt.md.
Source of truth
For per-release detail — current model catalog, container IDs, function IDs, voice lists, VRAM minimums, per-model feature support — fetch or open the canonical NVIDIA doc rather than relying on text in this SKILL.md or the references. Each reference file includes its own routing table to the relevant doc pages.
Top-level landing pages:
Examples
"Deploy a Parakeet ASR NIM" → load references/asr.md, follow Option B (self-hosted), Steps 1–4.
"Synthesize speech with Magpie" → load references/tts.md, follow Option A (cloud) or Option B (self-hosted).
"Translate English to German" → load references/nmt.md, follow the 4-step flow.
"Convert my fine-tuned .nemo to a NIM" → load references/asr-custom.md for the 4-phase pipeline and references/pipelines.md for build-time config.
"Deploy a custom fine-tuned TTS voice as a NIM" → load references/tts-custom.md for the 4-phase pipeline.
"Use zero-shot voice cloning with Magpie" → load references/tts-pipelines.md.
"Add SSML emphasis tags to my TTS request" → load references/tts-pipelines.md.
"'NVIDIA' sounds wrong in my Magpie TTS output — suggest a few IPA options to test" → load references/tts-pronunciation.md, generate IPA candidates, synthesize variants, then output all three delivery formats.
"How do I fix the pronunciation of 'NIM' in Riva TTS with a custom_dictionary in gRPC Python?" → load references/tts-pronunciation.md, propose IPA for 'NIM', show wire format and gRPC snippet.
"Can my GPU run this?" → load references/deployment-readiness-checks.md and run the 6-step system check.
"Which Riva model should I use?" → load references/model-selection.md, apply the decision framework, then fetch the support matrix for the specific current model name.
Naming & Terminology
Skill brand: Nemotron Speech (public-facing name).
Internal naming preserved: commands (
riva-build,riva-deploy,riva_streaming_asr_client), Python client (riva.client), gRPC namespace (nvidia.riva.asr.*), container registry (nvcr.io/nim/nvidia/*), and all NVIDIA documentation URLs still use "Riva". Do not rename these in code, commands, or docs.
Troubleshooting
For task-specific runtime or modality issues, use the relevant reference file (references/<task>.md). Cross-cutting readiness checks:
Container does not become ready →
references/deployment-readiness-checks.md(system check + health check table)Health check fails →
references/deployment-readiness-checks.mddocker pullfromnvcr.ioreturns 403 →references/setup.md(Step 5 — Docker login)Wrong base image / model architecture mismatch →
references/asr-custom.md(Phase 2 base image)VRAM / GPU compatibility →
references/deployment-readiness-checks.md, then verify on the support matrix
Limitations
x86_64 architecture only — WSL2 on Windows requires Podman and supports a subset of NIMs (see
references/setup.md)Self-hosted deployment requires an NVIDIA AI Enterprise license
Cloud-hosted inference requires an active
NVIDIA_API_KEYand internet accessPublic skill branding is "Nemotron Speech"; commands, container images, Python imports (
riva.client), gRPC services (nvidia.riva.*), and NVIDIA documentation URLs still use "Riva" — follow official docs and catalogs for naming, do not rename these in commands or code
Next Steps
Verify hardware compatibility:
references/deployment-readiness-checks.mdSet up the environment:
references/setup.mdPick a model:
references/model-selection.mdDeploy:
references/asr.md,references/tts.md, orreferences/nmt.md
Files
- ATTRIBUTION.mdAdded by AutoGineer917 B
- BENCHMARK.md10.7 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md11.7 KiB
- evals/EVAL.md1.2 KiB
- evals/evals.json17.3 KiB
- references/asr-custom.md14.6 KiB
- references/asr.md26.4 KiB
- references/deployment-readiness-checks.md7.8 KiB
- references/model-selection.md19.2 KiB
- references/nmt.md15.5 KiB
- references/pipelines.md16.3 KiB
- references/setup.md7.2 KiB
- references/tts-custom.md14.1 KiB
- references/tts-pipelines.md21.5 KiB
- references/tts-pronunciation.md13.3 KiB
- references/tts.md17.1 KiB
- scripts/main.pyScript13.3 KiB
- skill-card.md4.1 KiB
- skill.oms.sig7.5 KiB
references/model-selection.md
Riva Model Selection & Routing
Agent: This is the entry point for any Riva task. Walk through the Procedure below before opening the relevant modality reference — environment context changes what's possible (some boxes have no GPU; some have a key for one path and not the other; some already have a NIM running). The modality references (
asr.md/tts.md/nmt.md) expect you to arrive withSERVER,FID(if cloud), and the model name already resolved.Source of truth. Model catalog, container IDs, supported languages, voice lists, and VRAM requirements change with every Riva release. This skill provides routing logic and a stable family taxonomy — the docs are the contract for what exists right now. Always fetch or open the support matrix before recommending a specific model name.
Looking up current information
| Question type | Fetch this page |
|---|---|
| Current ASR models, container IDs, supported languages, VRAM | https://docs.nvidia.com/nim/speech/latest/reference/support-matrix/asr.html |
| Current TTS models, voice lists, supported languages, VRAM | https://docs.nvidia.com/nim/speech/latest/reference/support-matrix/tts.html |
| Current NMT models, language pairs, VRAM | https://docs.nvidia.com/nim/speech/latest/reference/support-matrix/nmt.html |
| ASR per-model feature support (word boosting, ITN, force_eou, diarization, etc.) | https://docs.nvidia.com/nim/speech/latest/asr/customization/customization.html |
TTS per-model feature support (SSML, custom dictionaries, custom_configuration keys) | https://docs.nvidia.com/nim/speech/latest/tts/customization.html |
| TTS voices and emotional styles | https://docs.nvidia.com/nim/speech/latest/tts/voices.html |
NMT per-model feature support (<dnt> tags, custom dictionaries, batch translation) | https://docs.nvidia.com/nim/speech/latest/nmt/custom-dictionaries.html |
| ASR performance benchmarks (latency, throughput, RTFX per GPU) | https://docs.nvidia.com/nim/speech/latest/reference/performances/asr/performance.html |
| TTS performance benchmarks | https://docs.nvidia.com/nim/speech/latest/reference/performances/tts/performance.html |
| NMT performance benchmarks | https://docs.nvidia.com/nim/speech/latest/reference/performances/nmt/performance.html |
| Active cloud functions (function-ids for build.nvidia.com / NVCF inference) | https://api.nvcf.nvidia.com/v2/nvcf/functions (auth with $NVIDIA_API_KEY; filter by name and status=="ACTIVE") |
Do not infer model names, container IDs, or feature support from this skill's text. Use the family taxonomy below as a starting point, then fetch the support matrix to find the specific model and its CONTAINER_ID / NIM_TAGS_SELECTOR.
Purpose
Main entry point for any Riva Speech NIM task. Encodes four concerns in one skill:
Pick a model family for the user's goal (ASR / TTS / NMT, language, mode, special needs).
Detect environment — GPU + VRAM, API keys, network, NIMs already running on the host.
Route cloud (build.nvidia.com / NVCF) vs self-hosted, gated by capability and privacy.
Open the relevant modality reference (
asr.md/tts.md/nmt.md) with routing values pre-resolved.
Procedure
Lead with the fast path. Escalate only when necessary, and narrate before probing. When a routine signal already tells you which path to take, take it — don't run system inspections "just in case." When you do need to inspect the user's environment, state what you're checking and why before running the command, and ask before probing if the user didn't directly request the check.
Default — NVIDIA_API_KEY is set → cloud, zero friction
If the user's environment has NVIDIA_API_KEY exported, the path is decided. Open the relevant modality reference (asr.md / tts.md / nmt.md) with SERVER=grpc.nvcf.nvidia.com:443; that file shows how to discover the function-id — then follow the Quick path heredoc there.
No GPU detection, no docker ps, no privacy interrogation, no Docker checks — these add friction without value when cloud is wired up. The user explicitly opted into cloud by setting the key.
Reasonable model defaults when the user hasn't named one:
ASR English → Parakeet CTC 1.1b English (
ai-parakeet-ctc-1_1b-asr) — best-accuracy English; streaming.ASR multilingual → Parakeet RNNT Multilingual.
ASR with diarization → Nemotron ASR Streaming (
ai-nemotron-asr-streaming) — includes Sortformer.TTS → Magpie TTS Multilingual (
ai-magpie-tts-multilingual).NMT → Riva Translate 1.6b (
ai-riva-translate-1_6b).
Confirm the model choice with the user only if you have a reason to (e.g. they said "diarization", which routes away from the default Parakeet).
NVIDIA_API_KEY not set — surface the two options to the user
Don't probe the system. Ask:
"I don't see
NVIDIA_API_KEYin your environment. Two options for transcribing:
Cloud — set
NVIDIA_API_KEY(free key at https://build.nvidia.com). Fastest path; runs on NVIDIA's GPUs.Local deploy — pull a Riva NIM container and run it on this box. Needs an NVIDIA GPU and
NGC_API_KEY; first-run model pull is 10–30 GB.Which do you prefer?"
Wait. Do not pre-probe the GPU in case they say local — that's invisible work the user didn't ask for.
User picked cloud → tell them how to set the key
"Get a key from https://build.nvidia.com (NGC personal keys with the Cloud Functions scope also work). Then
export NVIDIA_API_KEY=...and re-ask."
User picked local deploy → ask about existing NIMs first
Before reaching for nvidia-smi, surface the simpler question:
"Before I check whether this system can run a NIM, is there already a Riva NIM running on this box that you want me to reuse? I can scan running containers with
docker ps— want me to check?"
If yes:
"Scanning for Riva/NIM containers…
docker ps | grep -iE 'riva|nim'"
[run the scan, report what showed up inline]
"Found
<container>on port 50051. Probing its gRPC port to confirm it's actually serving ASR…"
[run the modality reference's inline probe]
If the probe returns models, open the relevant modality reference with SERVER=0.0.0.0:50051. Skip the rest of this section.
No reusable NIM → check feasibility, narrate each step
State the plan before running anything:
"OK, no existing NIM to reuse. Before I propose a fresh deploy, I'll verify this system can actually run a NIM. I need to check four things:
GPU + VRAM — Riva NIMs need an NVIDIA GPU. The specific VRAM minimum depends on the model you pick (usually ≥ 16 GB).
nvidia-container-toolkit— without it, Docker can't pass the GPU through to the container.Disk space — first-time model pull is 10–30 GB.
NGC_API_KEY— needed to pull fromnvcr.io.Running those now."
Then run them one at a time (see Environment Detection Reference for commands), reporting each result inline. Don't batch them into a single output dump.
If any check fails: tell the user which one and what would unblock it. Often the unblock is "set NVIDIA_API_KEY and use cloud instead" — surface that explicitly rather than letting the user assume local is their only option.
If all four pass: confirm the user still wants to proceed (the cloud path is faster on first run; only proceed with local if the user's reason for picking it still holds).
Privacy gate — only when warranted
If the input looks sensitive (PII, health records, internal-confidential content, or the user mentioned it), ask before cloud. Do not ask on every routine transcription — that's friction the cloud-by-default users will resent. Default-yes on cloud unless there's a signal.
Routing values handoff (any path)
Once a path is committed:
Cloud: the modality reference shows how to discover the NVCF function-id via its file-based curl recipe in the Quick path; you don't need to pre-resolve it.
Local (running NIM): pass
SERVER=0.0.0.0:50051when opening the relevant modality reference.Local (fresh deploy): follow the modality reference's Step 1 deploy with
CONTAINER_ID+NIM_TAGS_SELECTORfrom the support matrix.
For ASR, also remind the user: audio must be mono WAV (16-bit PCM) or Opus; the heredoc fails fast on stereo with an ffmpeg conversion hint.
Decision Framework
Use after Step 4 to narrow to a family:
Task — transcription (ASR), speech synthesis (TTS), or translation (NMT)?
Language(s) — English only, one specific non-English language, or multilingual?
Mode — real-time streaming (low-latency, partial transcripts) or offline batch (full audio in one shot, often higher accuracy)?
Special needs — speaker diarization, word timestamps, translation alongside transcription, custom-trained model?
ASR Family Taxonomy
Riva ASR currently spans several model families. Family names are stable across releases; specific model sizes and language variants within a family rotate. Always fetch the support matrix for current model names and CONTAINER_ID values.
| Family | Architecture | Typical use cases | Notes |
|---|---|---|---|
| Parakeet CTC | CTC | Best-accuracy English / per-language production; works with word boosting; best word-timestamp accuracy | Streaming + offline; multiple model sizes and per-language variants |
| Parakeet RNNT | RNNT | Multilingual streaming with auto-detect | Streaming + offline |
| Parakeet TDT | TDT | Offline transcription with word timestamps | Often offline-only; check support matrix |
| Canary | Encoder-decoder | Multilingual transcription with bidirectional translation | Often offline-only |
| Whisper | OpenAI Whisper | Broadest language coverage; transcription + translate-to-English | Offline-only |
| Nemotron ASR Streaming | Cache-aware RNNT | Low-latency English streaming; supports client-driven force_eou | Streaming-only |
| Conformer | CTC | Legacy; for custom-trained model deployments via asr-custom.md | — |
ASR Quick Picks (decision-only; fetch matrix for specific model)
| Use Case | Family to start from |
|---|---|
| English production (best accuracy) | Parakeet CTC English |
| English real-time streaming | Parakeet CTC English or Nemotron ASR Streaming |
| Need word timestamps (best accuracy) | Any Parakeet CTC family model |
| Need word timestamps (offline) | Parakeet TDT |
| Need word timestamps (multilingual streaming) | Parakeet RNNT Multilingual |
| Multilingual streaming | Parakeet RNNT Multilingual |
| Any-language auto-detect (offline) | Whisper |
| ASR + translate to English | Whisper |
| ASR + bidirectional translation | Canary |
| Per-language variant (e.g., Spanish, Mandarin, Vietnamese) | Per-language Parakeet CTC |
| Lowest-latency English streaming with client-driven EOU | Nemotron ASR Streaming |
| Custom-trained acoustic model | Conformer / CTC via asr-custom.md |
Word timestamp accuracy ranking (stable across releases): CTC > TDT > RNNT. Use --word-time-offsets. Whisper and Canary do not currently expose word timestamps — verify on the customization page.
TTS Family Taxonomy
| Family | Typical use cases | Notes |
|---|---|---|
| Magpie TTS Multilingual | Production multilingual synthesis with named voices | Streaming + offline |
TTS Quick Picks
| Use Case | Family to start from |
|---|---|
| Production multilingual TTS | Magpie TTS Multilingual |
For the current voice list, discover at runtime via --list-voices on the running NIM (or GET /v1/audio/list_voices). Voice strings are case-sensitive and per-model.
NMT Family Taxonomy
A small number of bidirectional translation models cover all language pairs. Always run --list-models against a running NIM to see the current language pairs the server supports — language code conventions can drift between releases.
For the current CONTAINER_ID and supported languages, fetch the NMT support matrix.
GPU and VRAM Requirements
GPU compatibility, VRAM, and driver minimums vary significantly by model and profile. Check the support matrix before deploying — these change per release. If you're uncertain whether your hardware can run a specific NIM, run deployment-readiness-checks.md first.
Environment Detection Reference
Concrete shell probes for the Procedure's local-deploy feasibility check. Run only when escalated to — never preemptively. Each probe should be preceded by a one-line statement of intent ("I need to check X because Y") so the user understands why their system is being inspected; see [[narrate-before-probing]] in agent memory.
GPU + driver:
command -v nvidia-smi >/dev/null && \
nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader
# → "NVIDIA H100 80GB HBM3, 81559 MiB, 555.42.06"nvidia-container-toolkit wired up (Docker can pass GPU through):
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi -L 2>/dev/null | head -1
# → "GPU 0: ..." if working; empty / error if toolkit not installedAPI keys present:
[ -n "$NVIDIA_API_KEY" ] && echo "cloud OK" || echo "no NVIDIA_API_KEY (cloud unavailable)"
[ -n "$NGC_API_KEY" ] && echo "ngc OK" || echo "no NGC_API_KEY (self-hosted pulls unavailable)"NVCF reachable + key valid (one shot — fails fast on bad key or air-gapped box):
NVCF_FUNCTIONS_JSON=$(mktemp)
trap 'rm -f "$NVCF_FUNCTIONS_JSON"' EXIT
curl --max-time 3 -fsS -H "Authorization: Bearer $NVIDIA_API_KEY" \
--output "$NVCF_FUNCTIONS_JSON" \
"https://api.nvcf.nvidia.com/v2/nvcf/functions?visibility=public,authorized"
python3 - "$NVCF_FUNCTIONS_JSON" <<'PY'
import json
import sys
with open(sys.argv[1], encoding="utf-8") as response:
print(len(json.load(response).get('functions', [])), 'functions visible')
PY
# → "N functions visible" on success; "401 Unauthorized" / curl exit non-zero otherwiseRunning NIM container scan:
docker ps --format '{{.Names}}\t{{.Image}}\t{{.Ports}}' | grep -iE 'riva|nim'Then probe any candidate's gRPC port using the modality reference's python3 - <<PY ... PY readiness check (see asr.md / tts.md / nmt.md Step 2 / 3 "Verify Readiness"). A host-mapped port can still route to a container with nothing bound inside, so HTTP /v1/health/ready alone is not sufficient.
Disk space (for fresh NIM pull — 10–30 GB typical):
df -BG --output=avail "$HOME/.cache/nim" 2>/dev/null || df -BG --output=avail "$HOME"Examples
Example 1 — "Transcribe this audio file" (the common case)
$NVIDIA_API_KEY is set. You're done with selection mechanics. Hand off to asr.md with SERVER=grpc.nvcf.nvidia.com:443 and let it pick ai-parakeet-ctc-1_1b-asr (default English ASR) via the Quick path heredoc. No probes, no questions, no privacy interrogation — the user opted into cloud by setting the key.
If the user names a different need (e.g. "I need diarization"), swap the default model: ai-nemotron-asr-streaming for diarization, ai-canary-1b-asr for offline batch, etc.
Example 2 — "Transcribe this audio file", NVIDIA_API_KEY not set
Don't probe anything yet. Use the NVIDIA_API_KEY prompt template in the Procedure section above, then branch based on the user's answer. If cloud → tell them how to set the key. If local → next example.
Example 3 — "Local deploy" branch with existing-NIM check first
User asked for local. Follow the existing-NIM check in the Procedure section above before any hardware probing: ask whether to reuse a running NIM, scan only after the user agrees, then narrate the gRPC probe.
If the probe succeeds → hand off to asr.md with SERVER=0.0.0.0:50051. Done.
If probe fails → tell the user: "the container is up but no ASR model is bound. I'd suggest restarting the NIM, or moving on to deploying a fresh one — want me to check this system's feasibility for a fresh deploy?"
Example 4 — Fresh local deploy, feasibility check with narration
No existing NIM and the user wants a fresh deploy. Narrate the plan before running anything:
"OK, no NIM to reuse. Before proposing a deploy, I'll verify this system can run one. I need to check:
GPU + VRAM — Riva NIMs need an NVIDIA GPU; the specific VRAM minimum depends on the model.
nvidia-container-toolkit— without it, Docker can't pass the GPU through.Disk space — first model pull is 10–30 GB.
NGC_API_KEY— needed to pull fromnvcr.io.Running them now."
Then run each, reporting inline:
"GPU check:
nvidia-smi --query-gpu=...→ RTX A5000, 24 GB. ✓" "Container toolkit:docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi -L→ GPU 0 visible. ✓" "Disk: 1.39 TB free. ✓" "NGC_API_KEYset. ✓" "All four pass. Proceed with deploying Parakeet CTC 1.1b English? It's a ~15 GB pull; takes about 5 minutes the first time."
Narrow model-comparison example — "Which model has the best word timestamps?"
Pure selection question, no orchestration: don't probe anything. Go straight to the ASR Family Taxonomy → CTC > TDT > RNNT ranking; fetch the customization page for current per-model badges; answer.
Troubleshooting
"Which model should I use?" — fetch the support matrix for the modality; this skill only narrows to a family.
Model not found in support matrix — model catalog rotates per release. Family names are stable; specific names within a family may have moved.
Custom-trained acoustic model — pre-built NIMs cover the families above; for your own
.riva/.nemocheckpoints seeasr-custom.md.GPU detected but Docker can't pass it through —
nvidia-container-toolkitmissing or unconfigured; seesetup.mdStep 3.Key set but rejected (401) — the env var is set but the key value isn't scoped for the plane being called. Most commonly: an NGC personal key without the Cloud Functions scope works for
docker login nvcr.iobut fails againstapi.nvcf.nvidia.com. Re-issue the key with the Cloud Functions scope ticked, or get a key frombuild.nvidia.comfor the cloud path.NIM running but gRPC drops mid-RPC — container is alive but no model is bound. Probe via the modality reference's inline gRPC
Get*Configcheck; if empty, restart the NIM./v1/health/readysays ready but gRPC fails — HTTP probe is not sufficient on its own when the container was started by someone else. Always run the modality reference's gRPC probe before assuming the service is usable.
Limitations
This skill does not carry the live model catalog — it intentionally points to docs.
Self-hosted models require an NVIDIA AI Enterprise license; WSL2 on Windows requires Podman instead of Docker.
Family taxonomy is stable across releases; specific model names, sizes, language variants, voice names, and
CONTAINER_IDvalues are not — always verify with the support matrix.Environment-detection probes assume a Linux host with
dockerandcurlavailable; adapt for other shells / runtimes.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key, Needs Python
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Nemotron Speech Team
- Publisher
- NVIDIA (Official)
- Distributed by
- NVIDIA
- Source
- NVIDIA/skills · skills/nemotron-speech · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Nemotron Speech Team or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download nemotron-speech.zip