ASR Latency with Parakeet-RNNT

I have deployed Parakeet-1.1b-RNNT-Multilingual-ASR on an H100.

When I run the transcribe_mic.py file from Nvidia’s https://github.com/nvidia-riva/python-clients.git, as well as transcribe_file.py with --simulate-realtime flag, the latency is around 5-6 seconds.

TImestamped output from a file very similar to transcribe_file.py:

[  7.73s] anti 
[  9.15s] berta and 
[  9.88s] ablupur 
[ 10.56s] both 
[ 10.94s] transformer 
[ 11.26s] basedd 
[ 11.96s] language 
[ 12.68s] models are 
[ 13.41s] examples of the 
[ 14.48s] emerging work in 
[ 15.15s] using graph 
[ 15.87s] neural 
[ 16.57s] networks to 
[ 16.70s] design protein sequences for particular target antigens 
[ 16.70s] 
Transcription completed in 16.70 seconds
[ 16.70s] Transcription completed

You can see that after I executed the command it takes around 7 seconds to get the first transcribed word. Is this normal behavior?

Please do help me out with understanding how to remedy this. Thank you!

We are releasing an improved version soon.

Could you please elaborate what would have a newer version soon? The model, documentation or Nvidia Riva GitHub repo?

Parakeet-1.1b-RNNT-Multilingual-ASR model will be updated with improved latency. Targeting Early July - 2025

Thank you! That explains it!

is the latency issue solved with Parakeet-1.1b-RNNT-Multilingual-ASR. i am facing similar problem

checkout the updated numbers. Can you details on the HW used, NIM version and latency measured ?

I deployed the parakeet RNNT with Nvidia RIVA NIM (as shown here Getting Started — NVIDIA NIM Riva ASR ) on AWS/GCP machine with GPU A10.
When I call the server with a client (nvidia-riva/python-clients) I also have these huge delays in final segments arrival. The intermediate segments (is_final = False) are getting so fast it feels real time, but the is_final=True are like few seconds (5±) after the actual speech.

Is it a known problem? Did you really solve it? @mayjain @amargolin

Are you using the latest NIM?
Final transcript is generated only when the ASR sees 800ms silence. Until then, it will generate partial transcripts.
You can change the parameter value (800 ms default) from client side by using —stop_history parameter from client

Hey,
Thank you for the rapid answer :)

Yes. I execute the “docker run” command with nim…:latest
Specifically:
docker run -it --rm --name=$CONTAINER_ID --runtime=nvidia --gpus ‘“device=0”’ --shm-size=28GB -e NGC_API_KEY -e NIM_HTTP_API_PORT=9000 -e NIM_GRPC_API_PORT=50051 -p 9000:9000 -p 50051:50051 -e NIM_TAGS_SELECTOR nvcr.io/nim/nvidia/$CONTAINER_ID:latest

with CONTAINER_ID=parakeet-1-1b-rnnt-multilingual
and NIM_TAGS_SELECTOR=name=parakeet-1-1b-rnnt-multilingual,mode=str

I saw the stop_history: 800 param and tried to decrease it (from the client side with StreamingRecognitionConfig) but it seems to have no affect on the delay, even with extremely low values.

I still can see the final transcription as intermediate for few seconds, before it returns as a final. Also, I thought that using VAD might help, but as I saw it is not supported with RNNT through NIM (here https://docs.nvidia.com/nim/riva/asr/latest/customization.html )

can you check the image’s digest
sha256:cfafdfab87927d99141c88cc815c4f709a65adc4e8040501208479d89e458c4a

Yes you got it!

The digest did not match the one you showed, every time I executed “docker run” with “latest” version it used the image I pulled about two months ago.

Now I pruned the old image and pulled the actual new one (which matches the digest), and the ASR model behaves as expected (pretty fast and configurable with stop_history etc).

Thank you very much :)