Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
412 commits
Select commit Hold shift + click to select a range
0f6f9aa
fix use_feat_cache feature (#15600)
naymaraq Apr 14, 2026
69288f2
add a unified model link to readme (#15604)
andrusenkoau Apr 14, 2026
c9e6926
README: refer to "vanilla" 26.02 container (#15606)
pzelasko Apr 14, 2026
16f469b
fix: typo in readme (#15539)
L0RD-ZER0 Apr 14, 2026
fe524ac
Limit to `peft<=0.18.0` until CI environment is updated (#15610)
pzelasko Apr 15, 2026
e967011
add agent skill for debugging distributed training log failures (#15612)
gaikwadabhishek Apr 15, 2026
8dac920
Fix codec e2e tests (#15607)
rlangman Apr 16, 2026
06d60fc
Implement formatter to ensure Nemotron VoiceChat speech decoder repro…
Edresson Apr 16, 2026
73a5e7d
Remove tail margin algorithms from all ASR pipelines (#15605)
naymaraq Apr 17, 2026
919c945
SALM with NeMo Automodel integration for Nemotron Nano V3 LLM backbon…
pzelasko Apr 17, 2026
b1cb6de
`CLAUDE.md`, PR babysitter, local dev skills + symlinks for Codex/Cur…
pzelasko Apr 17, 2026
0b7d8c5
[TTS] Added TTS comparison report (#15621)
artem-gorodetskii Apr 20, 2026
16736a3
Bump protobufjs from 7.5.3 to 7.5.5 in /examples/voice_agent/client (…
dependabot[bot] Apr 21, 2026
81b759d
Bump mako from 1.3.10 to 1.3.11 (#15618)
dependabot[bot] Apr 21, 2026
2738ae3
Bump pillow from 12.1.1 to 12.2.0 (#15603)
dependabot[bot] Apr 21, 2026
8078a66
Bump vite from 6.3.6 to 6.4.2 in /examples/voice_agent/client (#15586)
dependabot[bot] Apr 21, 2026
33220c5
chore: bump FW-CI-templates workflow pins to v0.88.0 (#15581)
svcnvidia-nemo-ci Apr 21, 2026
f351ed7
Bump pygments from 2.19.2 to 2.20.0 (#15565)
dependabot[bot] Apr 21, 2026
251f3c1
Bump picomatch from 4.0.2 to 4.0.4 in /examples/voice_agent/client (#…
dependabot[bot] Apr 21, 2026
bdb6868
fix: add missing docstrings to data pipeline utility functions (#15560)
stanley1208 Apr 21, 2026
fa59a8e
ci(babysitter): switch from check_run to workflow_run trigger (#15627)
pzelasko Apr 21, 2026
9db812d
ci: restrict testpypi publish trigger to release branches (#15628)
pzelasko Apr 21, 2026
ed3ebd5
ci: onboard copy-pr-bot (#15631)
ko3n1g Apr 21, 2026
c7ba62d
fix: Remove diskcache from requirements (#15630)
chtruong814 Apr 22, 2026
e7191f9
docs: Add SECURITY.md (#15636)
chtruong814 Apr 22, 2026
44c17e0
Add xatt trimming for multitask beam decoding (#15466)
azziko Apr 23, 2026
7913794
Remove `nemo_log_globalrank-N_localrank-M.txt` file creation (#15626)
pzelasko Apr 23, 2026
b081e93
[Voice Agent] fix empty tools (#15634)
stevehuang52 Apr 23, 2026
154e993
fix: clamp shift perturbation for short audio instead of silently ski…
stanley1208 Apr 23, 2026
87ccac8
to_hf.py + PromptFormatter: produce vLLM-ready SpeechLM checkpoints w…
DongjiGao Apr 24, 2026
52ba833
Add hi-IN , Ko-KR and pt-BR IPA tokenizer support (#15567)
quapham Apr 24, 2026
469a50a
[Voice Agent] Update README (#15642)
stevehuang52 Apr 24, 2026
2223816
Dockerfile: build from the official PyTorch image (#15638)
artbataev Apr 25, 2026
78694d5
Add Arabic char tokenizer and Japanese-English katakana support (#15614)
quapham Apr 25, 2026
52fee26
feat(ci): migrate from Azure to AWS ephemeral runners (#15620)
ko3n1g Apr 28, 2026
0f7e262
fix(ci): increase GPU speech unit test timeouts (TTS: 30 min, ASR: 60…
ko3n1g Apr 29, 2026
32d01f3
[audio codec] Add support for Lhotse training format (#15622)
rfejgin Apr 29, 2026
0558934
Remove the use of pickle throughout codebase (#15629)
blisc Apr 29, 2026
056d937
Update text processing in Magpietts eval (#15608)
rlangman Apr 29, 2026
01485cd
ci(speech): split L0_Unit_Tests GPU/CPU ASR and CPU SpeechLM2 into pa…
ko3n1g Apr 30, 2026
7ff46e4
GRPO fix for frame stacked models (#15643)
shehzeen Apr 30, 2026
43707ab
`SALMAutomodel` - long-context support (chunking, AC) and batch of fi…
pzelasko Apr 30, 2026
24590f2
handle issue 15598 for remote code fix (#15652)
nithinraok May 1, 2026
6335c7c
fix: count_input_cfg_levels now resolves string file references (#15646)
XuesongYang May 1, 2026
7ccc79b
ci: switch formatting CI to check-only and enable pre-commit hooks (#…
chtruong814 May 1, 2026
557814e
Updated estimate_token_bins.py script; remove deprecated speechlm1 sc…
pzelasko May 4, 2026
96c00d8
[ci, build] fix: unblock testpypi publish — drop direct git URL dep, …
ko3n1g May 4, 2026
3286881
Re-add codeowners (#15660)
chtruong814 May 4, 2026
53557ad
[build] fix: restore nemo_automodel in requirements_speechlm2.txt (#1…
ko3n1g May 4, 2026
fb9a6c4
Refactored all ASR collections documentation (#15542)
Ssofja May 4, 2026
c66a379
Add vLLM support for NeMo SpeechLM (#15520)
DongjiGao May 5, 2026
b30e628
Reduce code duplication in audio collection + some small fixes (#15587)
racoiaws May 8, 2026
b580f19
ci: Major refactor of release-workflows (#15668)
ko3n1g May 11, 2026
9a5bc4d
Updating SDE; s3 read; comparison mode; security fix (#15500)
Jorjeous May 11, 2026
c308b6b
[MagpieTTS] Load Whisper with torch_dtype="auto" for fp16 inference (…
matteolippi May 12, 2026
b1e419f
val audio logging fix (#15688)
paarthneekhara May 12, 2026
5a855e7
Preserve SpeechLM perception checkpoint dtype (#15686)
DongjiGao May 13, 2026
03fdadf
ci: Fix CI approval queue (#15693)
chtruong814 May 13, 2026
2a4433a
Easymagpie ZeroShot disabling option using speaker encoder (#15639)
paarthneekhara May 14, 2026
5194be5
Add verbose flag to UTMOSv2Calculator (#15699)
rlangman May 14, 2026
ccbbfbb
Add Transformer Encoder for ASR (#15661)
nithinraok May 14, 2026
44cb1c7
ci: remove build-docs and build-test-publish-wheel workflows (#15685)
ko3n1g May 21, 2026
e6df25c
Reformat files with black. Remove exclusion from black rules. (#15687)
artbataev May 25, 2026
2ea3e0f
Causal transformer (#15730)
nithinraok May 26, 2026
71d88d7
clean commit with EMTTS text embedding disabling and pronunciation co…
paarthneekhara May 26, 2026
9551d86
ci: validate release branch-rules (#15718)
ko3n1g May 27, 2026
5d9b6bc
Fix LazyNeMoIterator for non-tarred S3 audio data (#15732)
melllinia May 28, 2026
e1fcfc4
add freeze, unfreeze methods with experimental tag (#15729)
nithinraok May 28, 2026
5ccc6c8
Add ASR fine-tuning skill (#15733)
pzelasko May 28, 2026
1f0dd72
Support encoder input chunking for SALM vLLM inference (#15716)
pzelasko May 29, 2026
6967f48
Add unified prompt model support for multilingual ASR and streaming i…
enas-albasiri May 29, 2026
a9cecec
ci: Install CI dependencies from uv lock (#15697)
chtruong814 May 29, 2026
e1a7de0
Removing the dependency on Pyannote for Diarization and VAD (#15632)
tango4j May 30, 2026
bfabb1b
fix for release nightly docs CI (#15735)
Ssofja Jun 2, 2026
ffc18a6
Remove stale NeMo dependencies on uv base (#15734)
pzelasko Jun 2, 2026
66ddacb
Add prompt RNNT ASR docs (#15738)
kingformatty Jun 2, 2026
05e8c54
Support offline SpeechLM2 HF exports (#15736)
pzelasko Jun 2, 2026
8abf048
Docs visual improvements (#15745)
Ssofja Jun 2, 2026
d747471
Adding Conformer encoder I/O-styled Transformer encoder (#15703)
tango4j Jun 2, 2026
5b7cfcd
Build Automodel compiled dependencies in CI image (#15737)
pzelasko Jun 3, 2026
76d24f6
[speechlm2] SALMAutomodel: THD (packed sequence) and context parallel…
pzelasko Jun 3, 2026
433340d
add max_duration = 20.0 to lhotse training yaml configs. (#15696)
XuesongYang Jun 3, 2026
be23ce1
Add comprehensive MoE dispatch unit tests with golden-value regressio…
XuesongYang Jun 3, 2026
8bbc07d
ci: bump _release_library.yml to v1.4.3 (#15749)
ko3n1g Jun 4, 2026
240f675
Fixing memory consumption issues with rel_pos in Transformer encoder …
ipmedenn Jun 4, 2026
c703649
Mark legacy navigation docs as orphaned (#15755)
pzelasko Jun 4, 2026
28a723f
chore: Update dependencies to address CVEs and also update Dockerfile…
chtruong814 Jun 5, 2026
907edfd
[Audio Codec] Lhotse data loading updates and fixes (#15742)
rfejgin Jun 5, 2026
b7e0998
Support CUDA 12 container builds (#15747)
pzelasko Jun 5, 2026
8895ff6
Transducer Decoding: 2.4x faster decoding with confidence (#15315)
artbataev Jun 6, 2026
406e047
Add experimental simulated chunked streaming decoding for transducers…
artbataev Jun 6, 2026
160a742
fix: Move code copy to last docker stage (#15761)
chtruong814 Jun 7, 2026
a206c24
Confidence in RNN-T inference pipeline (buffered and cache-aware) (#…
artbataev Jun 8, 2026
a409dfd
Update README.md (#15766)
pzelasko Jun 8, 2026
d947ef7
Add batched streaming beam search for RNN-T (mALSD+mAES) and TDT (mAL…
lilithgrigoryan Jun 8, 2026
0d85884
fix for true bfloat16 inference (#15763)
naymaraq Jun 9, 2026
50ecb05
adding community featured models (#15744)
Ssofja Jun 9, 2026
dc2a4bc
Refactor masking methods (#15739)
MahmoudAshraf97 Jun 9, 2026
f65c61f
add soe fixes in documentation (#15774)
Ssofja Jun 9, 2026
e8fb215
docs: update SpeechLM parallelism strategy docs (#15773)
pzelasko Jun 9, 2026
2cd3e08
refactored Speaker Diarizarion collection's docs (#15647)
Ssofja Jun 9, 2026
11ab220
fix: Move git refs for deep-ep and transformer engine to uv sources (…
chtruong814 Jun 9, 2026
e0c9219
docs: overhaul installation instructions around uv + bring-your-own P…
pzelasko Jun 9, 2026
73cfbcf
[TTS][Magpietts] Added local transformer CFG distillation (#15748)
artem-gorodetskii Jun 10, 2026
b63c1dc
chore: Bump next release to be 3.0 (#15783)
chtruong814 Jun 10, 2026
65c0f49
Version bump to `3.1.0` (#15787)
github-actions[bot] Jun 10, 2026
c904051
chore: Bump lxml and gitpython to address CVEs (#15785)
chtruong814 Jun 10, 2026
95f9273
Parallel Expert Encoder framework for SALM automodel (#15779)
tango4j Jun 12, 2026
abc0f42
update conf scores for RNNT pipelines in the tutorial (#15798)
naymaraq Jun 14, 2026
b483512
add per-stream biasing to RNN-T, TDT streaming beam search (#15781)
lilithgrigoryan Jun 16, 2026
398732d
Remove weights_only=False (#15801)
chtruong814 Jun 16, 2026
0f378e9
Fix reported security vulnerabilities (#15803)
pzelasko Jun 16, 2026
8044a39
[SpeechLM2] Add Rotary Time Embedding (RoTE) module (#15794)
AudranBert Jun 19, 2026
9a4f541
fix: Secure tar archive extraction (#15811)
chtruong814 Jun 22, 2026
a1d5897
fix: Replace direct hydra.utils.instantiate with safe_instantiate (#1…
chtruong814 Jun 22, 2026
74f9dd3
Bug Fix for parallel expert encoder for SALM automodel (#15814)
tango4j Jun 23, 2026
8ef5664
fix: streaming multitalker asr timestamp computation (#15701)
thanhtvt Jun 23, 2026
208149f
Fix voice agent websocket host handling (#15813)
chtruong814 Jun 23, 2026
6ffd048
Distributed OOMptimizer for speechlm2 training (#15807)
pzelasko Jun 23, 2026
4a33e9c
[codex] Fix NEST SSL model-support training batches (#15812)
pzelasko Jun 23, 2026
61d1a24
Fix issue 15599 (#15650)
Edresson Jun 24, 2026
8f85359
add streaming beam search for cache aware models to NeMo inference (#…
lilithgrigoryan Jun 24, 2026
dcd7153
[TTS] Fix: derive do_tts local-transformer flag from model config (#1…
XuesongYang Jun 24, 2026
5846f0c
ASR: report ASR LAAL (transcription commit latency) (#15817)
naymaraq Jun 25, 2026
1f3e19e
Fix duplex_stt.yaml format (#15829)
Edresson Jun 26, 2026
a1b7ffd
Bump dependencies for CVE (#15832)
chtruong814 Jun 26, 2026
5f4ccd6
add fixes (#15850)
nithinraok Jun 29, 2026
7b3548f
fix decorator safe instantiation bug (#15848)
nithinraok Jun 29, 2026
6acb47c
Update Libsox Installation in Docker (#15834)
blisc Jun 30, 2026
916ff90
Add RoPE to ConformerEncoder (#15714)
MahmoudAshraf97 Jun 30, 2026
112c6d2
Deeprecated LM based ASR-diar realignment (#15861)
tango4j Jul 1, 2026
8270308
ci: use NVIDIA inference for Claude review (#15862)
chtruong814 Jul 2, 2026
dab547e
add confidences to beam search + cache_aware in streaming inference (…
lilithgrigoryan Jul 2, 2026
981fd4e
Adding RoPE to TransformerEncoder (#15775)
ipmedenn Jul 4, 2026
8afaa22
update dockerfile (#15866)
blisc Jul 6, 2026
cf06620
fix align_eou (#15871)
stevehuang52 Jul 6, 2026
9649d24
Fix ASR transducer nemo checkpoint export (#15876)
KunalDhawan Jul 7, 2026
a80c059
fix publish-hf-notebook-xet (#15878)
naymaraq Jul 7, 2026
cfeb8a5
fix ssl contrastive loss (#15872)
stevehuang52 Jul 7, 2026
6736be5
chore: Update Python and pyarrow to address CVEs (#15877)
chtruong814 Jul 7, 2026
f0d2268
fix config on automodel (#15884)
stevehuang52 Jul 7, 2026
617a5fd
fix-tutorial-install-line (#15879)
naymaraq Jul 7, 2026
06312c9
numba compatibility for SDE (#15694)
karpnv Jul 7, 2026
9667321
Update language handling in Magpie eval (#15859)
rlangman Jul 8, 2026
6ca6f03
remove deprecated proxies/resume_download from NemotronVoiceChat._fro…
erastorgueva-nv Jul 8, 2026
458e560
update model (fix_6411583) (#15897)
Jorjeous Jul 8, 2026
19873c3
Set trusted checkpoint env for ASR tutorial restores (#15875)
KunalDhawan Jul 10, 2026
8e683a0
Fix/ctc segmentation tutorial deps (#15901)
Jorjeous Jul 10, 2026
3dfe07c
chore: Bump aiohttp to >=3.14.0 (#15909)
chtruong814 Jul 14, 2026
24c4f58
Bring MagpieTTS Release Fixes into Main Branch (#15882)
blisc Jul 15, 2026
8c22fde
Fix bug/6408633 and bug/6071397 (#15912)
Edresson Jul 15, 2026
01f05b6
[TTS] Whitelist TTS AudioTrimmer and ArtifactGenerator (#15914)
rlangman Jul 15, 2026
ba2cd63
Eval/tts multilingual parakeet metrics (#15826)
quapham Jul 17, 2026
8ddab60
Switch to TinyLlama-1.1B-Chat-v1.0 to resolve auto-conversion excepti…
Edresson Jul 20, 2026
93b15b1
chore: Bump pillow to 12.3.0 (#15925)
chtruong814 Jul 20, 2026
50e153f
Update TTS pronunciation dictionaries (#15857)
quapham Jul 21, 2026
6409b84
minor cleanup for now (#15926)
blisc Jul 21, 2026
7be3e2b
Fix ASR tutorial notebook restore and setup paths (#15908)
KunalDhawan Jul 21, 2026
bf014cc
Disable RNNT CUDA graphs in Multilang ASR notebook (#15937)
KunalDhawan Jul 23, 2026
05d224d
Fix monitor key on duplex_stt.yaml (#15939)
Edresson Jul 23, 2026
58e74a2
fix ASR_with_Subword_Tokenization.ipynb fails: InterpolationKeyError …
lilithgrigoryan Jul 23, 2026
551e77a
fix (#15944)
lilithgrigoryan Jul 24, 2026
dbe2fb6
Update TTS Notebooks for Next NeMo Release (#15943)
blisc Jul 24, 2026
c2a329d
Update README.md (#15962)
blisc Jul 24, 2026
fb20f06
Fix 02_NeMo_Adapters.ipynb fails with UnsafeTargetError for notebook-…
lilithgrigoryan Jul 24, 2026
9b9733d
Pin SALM to portable MoE dispatcher (#15963)
DongjiGao Jul 25, 2026
2639d4b
fix Online_ASR_Microphone_Demo_Buffered_Streaming.ipynb failed with C…
lilithgrigoryan Jul 25, 2026
5ff6093
fix(asr): make DynamicLengthTensor indexing Python 3.10-compatible (#…
gauravbyte Jul 28, 2026
38027af
Fix loading of MagpieTTS and add test for all 3 versions (#15941)
blisc Jul 28, 2026
9ae3e66
Qualify SALM Automodel parallelism support (#15976)
DongjiGao Jul 28, 2026
2c63055
Hotfix native Nemotron-V3 Automodel parallelization (#15980)
DongjiGao Jul 29, 2026
afa69e4
fix(docker): upgrade OpenSSL packages (#15973)
svcnemo-autobot Jul 29, 2026
c4ca997
Handle missing validation_ds in RNNT BPE transcribe (#15752)
basnijholt Jul 29, 2026
6e75946
Improve Nest GPU Utilization 5/N: Async H2D in Dataloader (#15920)
MahmoudAshraf97 Jul 29, 2026
7e1e26c
chore(ci): pin GitHub Actions to commit SHAs (#15977)
svcnemo-autobot Jul 29, 2026
9075d73
[TTS] Update multi-language eval report format (#15915)
rlangman Jul 29, 2026
6b5792a
[SpeechLM2] Fix SALM Automodel rc0 compatibility (#15992)
DongjiGao Jul 30, 2026
7cf9b47
Implement Multiturn support for Nemotron-TTS (#15764)
Edresson Jul 30, 2026
f231608
Enfore HF Offline across speech L0 and L2 tests (#15988)
blisc Jul 30, 2026
7175094
fix: add missing f-string prefix in canary2 assertion (#15950)
andrewwhitecdw Jul 30, 2026
1c82990
fix: add missing f-string prefixes in error messages and descriptions…
andrewwhitecdw Jul 31, 2026
23de54b
mark asr test pleasefix me (#15998)
blisc Jul 31, 2026
fc6a475
chore(ci): AUT-1231 bump preflight workflow template (#16014)
svcnemo-autobot Aug 2, 2026
3430fe1
chore(ci): AUT-1298 bump community workflow to v1.8.7 (#16017)
svcnemo-autobot Aug 4, 2026
56ba5ae
Align CUDA 12 and DeepEP dependencies in the Automodel container (#16…
pzelasko Aug 4, 2026
7373ef5
Adding audio false positive docs link (#16023)
chtruong814 Aug 4, 2026
1c9f569
Add EasyMagpie vLLM-Omni serving (#15931)
vklimkov-nvidia Aug 4, 2026
40ace43
Update README.md (#16026)
blisc Aug 4, 2026
75ed73d
[TTS] Add codebook dropout in codec training (#15966)
rlangman Aug 5, 2026
8ff80e7
Resumable lhotse dataloader (#15777)
pzelasko Aug 5, 2026
c40f18d
speechlm2: add deterministic Granary-v2 preference sampling for resto…
pzelasko Aug 5, 2026
6c57e73
Add dataset-level idxpack dataloading (#16000)
pzelasko Aug 5, 2026
e49cba7
Support flat native NeMo lists in idxpacks (#16044)
pzelasko Aug 7, 2026
58f3dd9
Case-Insensitive Phrase Boosting (#15800)
artbataev Aug 7, 2026
5728acf
Fix OOB decode crash in buffered RNNT/TDT pipeline (#15870)
naymaraq Aug 10, 2026
f3a7ebc
Update SpeechLM2 for Automodel main (#16021)
pzelasko Aug 10, 2026
b331a34
Add diarization scoring CLI and improve DER reporting (#16020)
ipmedenn Aug 10, 2026
b992197
Update all links (#15831)
blisc Aug 11, 2026
b24cbb5
Fix Mamba FP32 holder names in SpeechLM vLLM mapping (#16054)
pzelasko Aug 11, 2026
ed11278
Cache-aware Streaming ASR: up to 5x faster encoder with CUDA graphs (…
hamuzhan Aug 12, 2026
ef41369
EMTTS Pronunciation Control (#15965)
paarthneekhara Aug 12, 2026
615a630
Fix broken librosa time-stretch documentation link (#16055)
pzelasko Aug 13, 2026
46791cb
Update NeMo Speech release documentation (#16060)
pzelasko Aug 13, 2026
5f7cedb
fix(ci): enforce Hugging Face offline mode in speech tests
blisc Aug 13, 2026
067cfbf
add comment
blisc Aug 13, 2026
b56f56b
Revert "add comment"
blisc Aug 13, 2026
dada598
Revert "fix(ci): enforce Hugging Face offline mode in speech tests"
blisc Aug 13, 2026
207bad3
ci: bump SSO preflight to v1.8.10 (#16061)
svcnemo-autobot Aug 13, 2026
a819462
Locating the max speaker clamping at NMESC class methods (#16057)
tango4j Aug 13, 2026
71820fb
Core updates for Streaming Sortformer inference (#16032)
ipmedenn Aug 15, 2026
d0a07c0
feat(speechlm2): add optional MTP training modes (#16050)
Slyne Aug 17, 2026
0361552
Remove PR babysitter automation (#16062)
pzelasko Aug 18, 2026
e0a284b
Improve MT-Parakeet streaming inference and timestamps (#16070)
ipmedenn Aug 18, 2026
6230ae3
Implement Prosody metrics for TTS evaluation (#16031)
Edresson Aug 20, 2026
a95ea79
chore(deps): update Automodel for MTP context parallelism (#16071)
Slyne Aug 20, 2026
f6c7f55
Preserve valid audio before terminal codec control (#16059)
vklimkov-nvidia Aug 21, 2026
23fe1cd
adding support for multilinugal cache aware model (#16047)
naymaraq Aug 21, 2026
4fcff72
Replace pointwise convolutions with matmul in ConformerEncoder: 10% E…
MahmoudAshraf97 Aug 21, 2026
c4e5ad2
Fix Hugging Face cache for speaker encoder and remove fsspec requirem…
janbernloehr Aug 21, 2026
0d4ac61
[TTS][EasyMagpietts] Added CFG distillation (#16030)
artem-gorodetskii Aug 21, 2026
ebe62ed
Make reverse-role formatter pickle safe (#16123)
Edresson Aug 21, 2026
c60f7d7
fix(asr): keep TDT token durations under advance_mask in batched gree…
udsy19 Aug 22, 2026
5f15875
fix(asr): stop TDT greedy decoding skipping an extra encoder frame (#…
udsy19 Aug 24, 2026
8e21702
Correctly Propagate HF OFFLINE Environment Vars to Container (#16065)
blisc Aug 24, 2026
3998328
Fix SpeechLM2 remote code opt-in (#16126)
pzelasko Aug 24, 2026
6799bf8
add phoneme control augmentation to multiturn dataloader (#16117)
paarthneekhara Aug 24, 2026
adf6d32
fix(asr): stop EOU segment end times from accumulating frame offsets …
udsy19 Aug 25, 2026
837a31f
[TTS] Updated TTS comparison report (#16127)
artem-gorodetskii Aug 25, 2026
b17490a
docs: fix minor typos in documentation (#16130)
Mrudula-itsjuzme Aug 26, 2026
576042a
Bump minimum torch version to 2.7.0 (#16138)
MahmoudAshraf97 Aug 26, 2026
98467b2
add simulstream backend + qwen reasoning models for ST (#16043)
lilithgrigoryan Aug 26, 2026
c85dd64
ci: trigger approval queue when CICD completes (#16152)
svcnemo-autobot Aug 27, 2026
6281c93
fix(ci): serialize approval queue runs (#16153)
svcnemo-autobot Aug 27, 2026
d47d7a3
fix(asr): preserve Unicode in transcription JSON (#16066)
sylvesterkaczmarek Aug 29, 2026
66f1211
[ASR] Wordboosting by phrase (#15923)
AadamHaq Aug 30, 2026
f7742f0
fix: fixed ml-flow logging
ArneNx Jan 12, 2026
3950f9e
feat: SpeechLevelAug
ArneNx Feb 24, 2026
7508415
feat: speaker concatenation augmentation
ArneNx Feb 25, 2026
ed0ec70
fix: shuffle with augmentations
ArneNx Feb 25, 2026
f5eb60a
fix: propagate to multi-config
ArneNx Feb 25, 2026
92656da
fix: concat on same cut
ArneNx Feb 25, 2026
9873e30
fix: drop datatloading_info from concat cut
ArneNx Feb 25, 2026
a2f3dd0
fix: more fixing..
ArneNx Feb 25, 2026
c056d8f
fix: detach cut
ArneNx Feb 25, 2026
00bd1ee
fix: simplify concat speakers to use pad().append()
ArneNx Feb 25, 2026
f7c465a
feat: overlapping concat and noise instead of silence
ArneNx Feb 27, 2026
fd007cb
fix: floating-point error for concat
ArneNx Feb 27, 2026
c1542ed
fix: floating-point error for concat via padding this time
ArneNx Feb 27, 2026
b051623
feat: enable timestamp support for batched beam search in RNN-T and TDT
ArneNx Apr 13, 2026
a4b6cf3
style: apply black formatting to dataloader.py
JakobHavtorn Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
16 changes: 16 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path' | { read -r f; f=\"${f#\"$(git rev-parse --show-toplevel)/\"}\"; case \"$f\" in *.py) ;; *) exit 0;; esac; case \"$f\" in docs/*|external/*|examples/*) exit 0;; nemo/collections/speechlm2/*) ;; nemo/collections/*) exit 0;; esac; black --quiet \"$f\"; isort --quiet \"$f\"; } 2>/dev/null || true",
"timeout": 30
}
]
}
]
}
}
320 changes: 320 additions & 0 deletions .claude/skills/debug-training-logs/SKILL.md

Large diffs are not rendered by default.

79 changes: 79 additions & 0 deletions .claude/skills/fix-issue/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
name: fix-issue
description: Fix a GitHub issue in NeMo Speech (NVIDIA-NeMo/Speech). Read the issue, reproduce the bug with a failing test, implement the fix, and verify tests pass. Only opens a PR if the user explicitly asks for it.
---

# fix-issue

Fix a GitHub issue in NeMo Speech from first principles: understand the bug, prove it with a test, and fix the root cause.

The key discipline is **reproduce first, fix second**. Writing the failing test before touching the source code forces a precise understanding of what broken actually means, which keeps the fix focused and correct.

## Inputs

The issue number is the primary input. It may come from:
- An explicit argument: `/fix-issue 1234`
- The conversation context: "fix issue #1234"
- A GitHub issue URL pasted into the chat

If no issue number is clear, and the description provided is not good enough, ask for more details before proceeding.

## Before starting

Read the issue description carefully. Identify:
- What is the reported failure (error message, wrong output, crash)?
- Which collections in `nemo/collections` and components are affected?
- Are there any repro steps already in the issue? If so, run them first.
- Is there a linked PR or related issue that gives more context?

## Workflow

1. Read the issue: `gh issue view <ISSUE_NUMBER> --repo NVIDIA-NeMo/Speech`
2. Understand the bug — identify the relevant code
3. Write a minimal reproduction test in `tests/` that demonstrates the failure
4. Run the test to confirm it fails: `pytest <your_test_file> -v`
5. Implement the fix in the source code
6. Run the test again to confirm it now passes
7. Run the broader test suite for the affected collection to check for regressions:
```bash
pytest tests/collections/<collection>/ -m "not pleasefixme" -v --timeout=120
```
8. Tell the user the fix is ready and what was changed

## Opening a PR

Only create a branch and open a PR if the user explicitly asks for it. When they do:

```bash
git checkout -b fix/<ISSUE_NUMBER>-<short-description>
git add <changed files>
git commit -s -m "Fix <short-description> (closes #<ISSUE_NUMBER>)"
git push origin fix/<ISSUE_NUMBER>-<short-description>
gh pr create --repo NVIDIA-NeMo/Speech \
--title "Fix <short-description>" \
--body "$(cat <<'EOF'
# What does this PR do ?
<one-line overview>

# Changelog
<line-by-line high-level changes>

# Usage
<usage example if behavior changed>

Fixes #<ISSUE_NUMBER>
EOF
)"
```

Notes:
- Add specific files by name — do not use `git add -A` or `git add .`.

## Rules

- **Reproduce first.** Do not attempt a fix without a failing test that demonstrates the bug.
- **Do NOT open a PR unless the user asks.** The default is local-only: fix the code, verify it works, report back.
- **Do NOT post comments on the GitHub issue.** Communicate with the user directly.
- **Do NOT reformat files outside your changes.** The `Isort and Black Formatting` action handles formatting automatically.
- **Never push to `main` directly.**
- **Never attempt to merge the PR yourself.**
188 changes: 188 additions & 0 deletions .claude/skills/migrate-to-resumable-dataloader/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
---
name: migrate-to-resumable-dataloader
description: This skill should be used when the user asks to "migrate to the resumable dataloader", "switch to indexed Lhotse", "adopt the indexed + resumable pipeline", "make my training resumable", "set up StatefulDataLoader for NeMo/Lhotse", "use index packs", "use AIStore GetBatch", or "convert this YAML to the resumable path". Walks a NeMo training YAML and optional launcher, data blend, and runtime context through the indexed + resumable Lhotse migration; lints interacting fields; auto-patches safe YAML changes; emits a migration report, pre-flight checklist, and index-build command. Static analysis only; never launches training.
---

# Migrate a NeMo training YAML to indexed + resumable Lhotse

Use this skill to port a NeMo training config from streaming/replay-style Lhotse
loading to indexed access plus `torchdata.StatefulDataLoader` checkpoint/restore.
The migration is fragile because YAML flags, launcher seed policy, index paths,
storage backend, and resume topology all interact.

## Core concepts

- Indexed sources need `.idx` sidecars for random access into JSONL, tar, and
supported Shar-style data. Build these once per blend/source set.
- For datasets with very many shards, an optional dataset-level `.idxpack`
combines existing sidecars into one memory-mapped catalog. Prefer one pack
per independently configured outer `input_cfg`; do not create one global
pack for an entire mixture.
- `use_stateful_dataloader: true` lets Lightning checkpoint the dataloader
iterator state, but only if seeds, worker counts, and distributed topology are
stable across chunks.
- Training configs must use `force_map_dataset: false` so indexed sources
partition across data-parallel ranks and workers without map-style sampler
overhead. Treat `force_map_dataset: true` for training as not launch-ready
unless the user explicitly approves a temporary exception; every source in the
training iteration graph must be indexed and partition-compatible before
launch.
- Remote audio on AIStore/S3 generally needs `USE_AIS_GET_BATCH=true` so audio
fetches are deferred to sample time instead of constructing eager tar readers
for every shard.

## Inputs

| input | required | source | purpose |
|---|---|---|---|
| Training YAML | yes | argument or `--config=` | Inspect `data.train_ds`, `data.validation_ds`, `trainer`, `exp_manager`, and any model fields that affect resume. |
| Launcher script | no | argument or auto-detect from project conventions | Check per-chunk seed policy, resume topology invariance, Python path setup, AIStore env vars, and optional index staging. |
| Data-blend YAML | no | resolved from `data.train_ds.input_cfg` when possible | Check indexability: compressed paths, non-seekable paths, unsupported `extra_fields`, `slice_length`, and mixed indexed/non-indexed chains. |
| Runtime context | no | argument, config file, or user-provided notes | Detect storage backend, AIStore endpoint availability, container constraints, and index mirror destination. |

## Outputs

Every output lands in `migrate-resumable/<config-stem>/` in the current repo:

| output | purpose |
|---|---|
| `migration-report.md` | Findings, rationale, patched fields, and unresolved blockers. |
| `<config-stem>-resumable.yaml` | Patched training config when safe automatic edits are possible. |
| `<blend-stem>-resumable.yaml` | Patched blend, only when a blend was inspected and safe changes are possible. |
| `pre-flight-checklist.md` | User-run steps before submitting training. |
| `build-indexes-cmd.sh` | One-shot sidecar-build command and, when packs are selected, one conversion command per outer dataset. Use a project wrapper when available, otherwise the generic NeMo scripts. |

## Workflow

### 1. Discover and parse inputs

1. Resolve the training YAML path and read it with OmegaConf or a
comment-preserving YAML parser.
2. Resolve any referenced blend YAMLs from `data.*.input_cfg`. Prefer project
conventions when obvious, but fall back to paths relative to the config.
3. If a launcher path is supplied, read it. Otherwise inspect likely project
launchers (`train.py`, `pretrain.py`, shell wrappers, or raw `torchrun` /
`python` commands) and pick the closest match.
4. If runtime context is supplied, read it for container image, environment
variables, filesystem mounts, worker counts, and AIStore endpoint settings.
5. Detect remote storage from source paths (`s3://`, `ais://`, `http(s)://`) and
local filesystem storage from ordinary absolute or relative paths.

### 2. Run lint pipeline

Run every relevant check in:

- `references/option-reference.md`
- `references/conflict-matrix.md`
- `references/failure-modes.md`
- `references/aistore-vs-non-aistore.md` when remote storage is present

Each finding should include severity, field/path, current value, recommended
value, and a short rationale.

Severities:

- **fatal**: automatic patching is not possible; user must preprocess data or
change the source layout.
- **error**: automatic patching is safe and should be applied.
- **warning**: context-dependent; emit a report item and optional YAML comment.
- **note**: informational; no patch.

### 3. Emit patched YAML and blend

Apply safe `error`-severity patches. Preserve comments when possible with
`ruamel.yaml`; otherwise serialize with OmegaConf/YAML and rely on the report for
rationale. For blend edits, never silently drop data: leave an explicit report
entry and comment for every excluded or rewritten source.

### 4. Generate `migration-report.md`

Use `templates/migration-report.md`. Include:

1. Summary of storage workflow, counts by severity, and readiness.
2. Inputs inspected.
3. Findings table.
4. Walkthrough for train data, validation data, trainer/exp manager, launcher,
and storage backend.
5. Data-blend audit.
6. Verification and pre-flight steps.

### 5. Generate `pre-flight-checklist.md`

Use `templates/pre-flight-checklist.md` when present. Required steps:

- Build `.idx` sidecars for every training/validation/test blend involved.
- When startup would open many loose sidecars, build and validate one `.idxpack`
per supported outer dataset after the sidecars exist. Record the owning
`input_cfg` entry and output filename explicitly.
- Verify `indexes_root` points at the same stable mirror used by the runtime, or
that explicit node-local index staging populates it before training starts.
- If AIStore is in play: verify `aistore` SDK availability, `AIS_ENDPOINT`, and
whether `USE_AIS_GET_BATCH` or `USE_AIS_INDIVIDUAL_GETS` is required.
- Verify one invariant seed across resumable chunks.
- Verify `num_workers`, `world_size`, and relevant distributed topology do not
change across resume boundaries.
- Recommend a small smoke ladder: single-node single chunk, single-node resume,
then full topology.

### 6. Generate `build-indexes-cmd.sh`

Prefer a project-provided wrapper when one is clearly present. Otherwise emit a
generic command using:

```bash
python <NeMo>/scripts/dataloading/build_indexes.py \
--indexes-root <shared-index-mirror> \
--workers <N> \
<blend>.yaml [<validation-blend>.yaml ...]
```

When an outer dataset is supported and has enough shards to benefit from one
memory map, append a command for that dataset (repeat for every independently
configured outer `input_cfg`):

```bash
python <NeMo>/scripts/dataloading/convert_indexes_to_idxpack.py \
--indexes-root <shared-index-mirror> \
--output <index-pack-root>/<dataset-name>.idxpack \
<dataset-input-cfg>.yaml
```

Patch the owning outer entry with `index_pack: <dataset-name>.idxpack` and set
`index_pack_root` at the dataloader level. Never infer a pack by filename: an
explicit declaration is part of the runtime validation contract. If the
converter rejects a type, keep that adapter on loose sidecars and report it.

If running through a managed runtime or container wrapper, include comments for required
container image, mounts, environment variables, worker count, and any CPU/GPU
container-hook workaround the project requires.

### 7. Print final summary to chat

Keep the final chat response under 10 lines: output directory, finding counts,
report path, and the next command the user should run.

## Knowledge base

- `references/option-reference.md`: field-by-field reference for YAML and
launcher settings.
- `references/failure-modes.md`: known failure signatures, triggers, and fixes.
- `references/conflict-matrix.md`: incompatible option pairs.
- `references/best-practices.md`: priority-ordered checklist.
- `references/aistore-vs-non-aistore.md`: storage workflow selection.
- `templates/migration-report.md`: report template.
- `templates/pre-flight-checklist.md`: checklist template, when present.
- `scripts/analyze.py`: optional static-analysis helper, when present.

## Constraints

- Prefer static analysis. Do not launch training, build indexes, prefetch data, or
modify external runtime state unless the user explicitly asks.
- Cross-check recommendations against the actual NeMo/Lhotse code in the user's
checkout when paths are available. Relevant areas are common Lhotse dataloader
config, indexed adapters, `lhotse.indexing`, AIStore batch loading, and NeMo
dataloader construction.
- Treat project wrappers as optional conveniences, not as part of the generic
migration contract.
- When evidence is missing, say so. Do not encode project-specific run history
or local experiment names as general guidance.
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# AIStore vs filesystem workflows

Indexed + resumable Lhotse can read audio/tar sources from a local filesystem or
from AIStore-compatible URLs. Manifests/cuts may be on disk in either workflow.
Choose the workflow from source path schemes, not from where the process runs.

## Detection

| signal | workflow |
|---|---|
| `tarred_audio_filepaths: s3://...`, `ais://...`, or `http(s)://...` | AIStore/remote workflow |
| `tarred_audio_filepaths: /path/...` or relative filesystem path | filesystem workflow |
| mixed local and remote paths | remote workflow, because it has the stricter requirements |

`AIS_ENDPOINT` in the environment is necessary for AIStore access, but it is not
sufficient evidence that the blend uses AIStore.

## Remote AIStore workflow

Required setup:

- `aistore` SDK installed in the build/training container.
- `AIS_ENDPOINT` exported into the process that reads remote sources.
- `USE_AIS_GET_BATCH=true` when remote tar/audio should be fetched lazily by
minibatch instead of opening every shard eagerly.

Optional setup:

- `USE_AIS_INDIVIDUAL_GETS=true` to bypass the batch endpoint and fetch each
object individually. This is slower but useful when the batch endpoint is
unavailable or returns empty content for some objects.

Index building:

- The index builder reads remote tar files through AIStore byte-range capable
paths and writes `.idx` sidecars to the configured index mirror.
- A successful index build proves byte-range access worked for the indexed
source paths. It does not prove the batch endpoint will later serve every
object successfully.

Runtime data access:

1. Keep manifests/cuts on a local/shared filesystem when random access would be
inefficient from remote storage.
2. Point `data.*.indexes_root` at a persistent index mirror by default.
3. Use node-local index staging only when direct mirror reads are too slow or
metadata-heavy; make the YAML path match the staged destination.
4. Use manifest prefetch only as a fallback for remote manifest paths that
cannot be cached persistently.

## Filesystem-only workflow

Required setup:

- All audio/tar paths resolve through the local filesystem visible in the
container/process.
- AIStore env vars are unset or ignored when no remote paths are present.
- `USE_AIS_GET_BATCH=false` unless a mixed remote source requires it.

Index building:

- The index builder reads local files directly.
- Filesystem throughput and metadata behavior determine the best worker count.

Runtime data access:

1. Keep manifests/cuts on a local/shared filesystem.
2. Point `data.*.indexes_root` at a persistent index mirror.
3. Stage indexes to node-local SSD only when needed and only with matching YAML
paths.

## Common gotchas

- Do not infer workflow from runtime labels alone; inspect the source paths.
- Verify filesystem mounts inside the runtime/container, not only in the host shell.
- Reusing an index mirror requires identical source path strings and unchanged
source contents.
- AIStore individual GETs and batch GETs can exercise different backend paths;
test the exact access mode used by training.
Loading
Loading