This guide outlines the steps required to fine-tune the pre-trained ASR model (e.g., Parakeet TDT-110M) by optionally merging its existing English vocabulary with new language tokens.
uv venv
source .venv/bin/activate
cd NeMo-2.4.0
uv pip instll -e '.[asr]'
.model and .vocab files) prepared (e.g., located in ./en1024_hi256).3.10.122.8.012.8merge_token.py) (Optional)If you want to preserve the model's original English capabilities while adding new language tokens, you should merge the original English SentencePiece model with your newly trained model.
merge_token.py (Assuming this is your merging script).# Example command (adjust paths as necessary)
uv run merge_token.py
Before running the fine-tuning script, adjust the manifest_filepath and training parameters in your configuration file (ft_110M_enhi.yaml).
File: ft_110M_enhi.yaml
Adjustments Required:
Update the manifest file paths (manifest_filepath) under model.train_ds, model.validation_ds, and model.test_ds to point to your data.
Review and set the trainer parameters (trainer block), such as max_epochs, devices, accelerator, etc.
Execute the main fine-tuning script. This script loads the model, integrates the new vocabulary, transfers weights, and starts training.
If you performed Step 1 (Merging), the script must contain the original weight transfer logic to re-assign the pre-trained English parameters to the corresponding indices in the newly expanded layers.
If you are only replacing the tokenizer with a new language's model without merging:
If you are using a GPU with limited memory (e.g., RTX 4090) and wish to enable the 8-bit AdamW optimizer:
Toggle: Set the bnb_optim flag to True at the beginning of the ft_110M_enhi_demo.py script.
uv pip install bitsandbytes
As an experimental setup(on 0.6b model), the attention in the encoder is replaced with BiRWKV7. In a preliminary test, the model was able to perform transcription on up to 8.5 hours of audio segments in a single pass (or with a chunk size of 480 seconds and a batch size of 64). The test was conducted on a PRO 6000 with 96 GB of VRAM, and the measured RTFx is approximately 1900.
You can enable BiRWKV7 training in the script by setting:
However, since the RWKV parameters are randomly initialized instead of loaded from pretrained weights, it is expected that significantly more training data will be required for the model to converge.

This model was trained using a private dataset provided by https://huggingface.co/spaces/RinggAI/STT. The trained checkpoint (ckpt) will only be released with permission. However, the training script has been organized and includes 8-bit optimization (8-bit optim), which allows increasing the max_duration to achieve a higher batch size on a 24GB memory card.
Here are the observations on the model's prediction stage (character output) during my own training:
@article{xiong2025audiorwkv,
title = {AudioRWKV: Efficient and Stable Bidirectional RWKV for Audio Pattern Recognition},
author = {Xiong, Jiayu and Xue, Jun and Kwan, Jianlong and Wang, Jing},
journal = {arXiv preprint arXiv:2509.02167},
year = {2025}
}
18 commits
Python
98.7%
Shell
1.1%
This guide outlines the steps required to fine-tune the pre-trained ASR model (e.g., Parakeet TDT-110M) by optionally merging its existing English vocabulary with new language tokens.
uv venv
source .venv/bin/activate
cd NeMo-2.4.0
uv pip instll -e '.[asr]'
.model and .vocab files) prepared (e.g., located in ./en1024_hi256).3.10.122.8.012.8merge_token.py) (Optional)If you want to preserve the model's original English capabilities while adding new language tokens, you should merge the original English SentencePiece model with your newly trained model.
merge_token.py (Assuming this is your merging script).# Example command (adjust paths as necessary)
uv run merge_token.py
Before running the fine-tuning script, adjust the manifest_filepath and training parameters in your configuration file (ft_110M_enhi.yaml).
File: ft_110M_enhi.yaml
Adjustments Required:
Update the manifest file paths (manifest_filepath) under model.train_ds, model.validation_ds, and model.test_ds to point to your data.
Review and set the trainer parameters (trainer block), such as max_epochs, devices, accelerator, etc.
Execute the main fine-tuning script. This script loads the model, integrates the new vocabulary, transfers weights, and starts training.
If you performed Step 1 (Merging), the script must contain the original weight transfer logic to re-assign the pre-trained English parameters to the corresponding indices in the newly expanded layers.
If you are only replacing the tokenizer with a new language's model without merging:
If you are using a GPU with limited memory (e.g., RTX 4090) and wish to enable the 8-bit AdamW optimizer:
Toggle: Set the bnb_optim flag to True at the beginning of the ft_110M_enhi_demo.py script.
uv pip install bitsandbytes
As an experimental setup(on 0.6b model), the attention in the encoder is replaced with BiRWKV7. In a preliminary test, the model was able to perform transcription on up to 8.5 hours of audio segments in a single pass (or with a chunk size of 480 seconds and a batch size of 64). The test was conducted on a PRO 6000 with 96 GB of VRAM, and the measured RTFx is approximately 1900.
You can enable BiRWKV7 training in the script by setting:
However, since the RWKV parameters are randomly initialized instead of loaded from pretrained weights, it is expected that significantly more training data will be required for the model to converge.

This model was trained using a private dataset provided by https://huggingface.co/spaces/RinggAI/STT. The trained checkpoint (ckpt) will only be released with permission. However, the training script has been organized and includes 8-bit optimization (8-bit optim), which allows increasing the max_duration to achieve a higher batch size on a 24GB memory card.
Here are the observations on the model's prediction stage (character output) during my own training:
@article{xiong2025audiorwkv,
title = {AudioRWKV: Efficient and Stable Bidirectional RWKV for Audio Pattern Recognition},
author = {Xiong, Jiayu and Xue, Jun and Kwan, Jianlong and Wang, Jing},
journal = {arXiv preprint arXiv:2509.02167},
year = {2025}
}
18 commits
Python
98.7%
Shell
1.1%