Command-line Clients

A Docker image containing sample command-line drivers for the Riva services is available on NGC. Pull and run the container by using the commands below. The client expects that a Riva server is running with models deployed, and all command-line drivers accept an optional argument to specify the location of the server. No GPU is required to run the sample clients.

docker pull nvcr.io/nvidia/riva/riva-speech-client:1.9.0-beta
docker run -it --rm nvcr.io/nvidia/riva/riva-speech-client:1.9.0-beta

Speech Recognition

Both binary and Python clients are included in the Docker image with options to do ASR inference in streaming as well as offline (non-streaming) mode.

Binary Streaming Example

Run the ASR streaming client, where --audio_file is used to specify the audio file that is to be transcribed. Other options can be found in riva_streaming_asr_client --help.

riva_streaming_asr_client --audio_file /work/wav/test/1272-135031-0001.wav

Binary Offline/Batch (non-streaming) Example

Run the binary ASR offline client, where --audio_file is used to specify the audio file that is to be transcribed. Other options can be found in riva_asr_client --help.

riva_asr_client --audio_file /work/wav/test/1272-135031-0001.wav

Python Streaming Example

Run the Python ASR streaming client, where --input-file is used to specify the audio file that is to be transcribed. Other options can be found in riva_streaming_asr_client.py.

python riva_streaming_asr_client.py --input-file=/work/wav/test/1272-135031-0001.wav

Other Python ASR clients are also available. The transcribe_mic.py example is the preferred, cross-platform way to interact with Riva using a microphone from an arbitrary remote system running on any operating system and hardware platform.

  1. transcribe_file.py transcribes audio files in streaming mode.

  2. transcribe_file_offline.py transcribes audio files in offline mode.

  3. transcribe_file_rt.py transcribes audio files while playing back through PyAudio stream.

  4. transcribe_mic.py transcribes audio from a microphone device.

Natural Language Processing

Both binary and Python clients are included in the Docker image for supported NLP tasks.

Binary NER Example

Run the Token Classification Model (NER), where --queries is used to specify the query file in which to provide token labels for. Other options can be found in riva_nlp_classify_tokens --help.

riva_nlp_classify_tokens --queries=/work/test_files/nlu/queries.txt

Binary QA Example

Run the binary Question Answering client, where --questions is used to specify the file containing questions and --contexts is used to specify the file containing the context paragraph. Other options can be found in riva_nlp_qa --help.

riva_nlp_qa --questions=/work/test_files/nlu/qa_questions.txt --contexts=/work/test_files/nlu/qa_contexts.txt

Python QA Example

Run the Python Question Answering client. Modify test_context and req.query in the test_qa.py script to try different Question Answering examples.

python test_qa.py

Binary Punctuation Example

Run the Punctuation client, where --queries is used to specify the file containing inputs to punctuate. Note that if you want to specify --output to write output of the punctuation model to a file, you need to also specify --parallel_requests=1.

riva_nlp_punct --queries=/work/test_files/nlu/punctuation_input.txt

Speech Synthesis

Binary clients are supported in the Docker image for TTS.

Binary TTS Client Example

Run the binary TTS client, where --text is used to specify the input text for which to synthesize audio. The output of the client is a .wav file which can be specified by --audio_file. Other options can be found in riva_tts_client --help.

riva_tts_client --text="I had a dream yesterday."

Binary TTS Performance Client Example

Run the binary TTS Performance client which will provide information about latency and throughput. Options --text can be used to specify the input text and --text_file can be used to specify the file containing multiple text inputs. Other options can be found in riva_tts_perf_client --help.

riva_tts_perf_client --text_file=/work/test_files/tts/ljs_audio_text_test_filelist_small.txt

Python Client Examples

Two command-line clients implemented in Python are provided as an example of how to interact with the TTS service using the Python API. The talk.py script is an implementation of a client for performing offline inference, and talk_stream.py is an implementation using online inference (with audio being streamed back to the client in chunks).