Chatterbox TTS Plugin Samples#
The NVIGI Chatterbox TTS Plugin pack includes a 3D-rendered GUI-based sample application that demonstrates how to integrate Text-to-Speech (TTS) into your applications, along with optional ASR (Automatic Speech Recognition) and GPT (Large Language Model) integration for voice-to-voice AI interactions.
Overview#
The sample demonstrates the use of the NVIGI Chatterbox TTS plugin with CUDA, Vulkan, and D3D12 backends. The sample also integrates GPT and Whisper ASR plugins to create a complete voice-to-voice AI pipeline. The sample is provided in source form within the package, allowing you to build and customize it for your needs.
The 3D Sample#
The 3D sample, nvigi.3d, combines NVIGI and Donut (https://github.com/NVIDIAGameWorks/donut) to create a sample app demonstrating NVIGI TTS integration in a 3D application. Using NVIGI, it’s possible to support multiple backends within a single application. The sample shows this with CUDA, Vulkan, and D3D12 TTS backends.
The Donut-based NVIDIA NVIGI (In-Game Inference) 3D Sample is an interactive 3D application designed to show how one might integrate text-to-speech features into a UI-based workflow. The focus is on presenting options to the user and running TTS workflows without blocking the 3D interaction or rendering. The sample defaults to rendering with Direct3D 12 but can switch to Vulkan via a command-line option. Both rendering modes support the full ASR + GPT + TTS voice-to-voice pipeline.
Requirements#
Hardware:
GPU: NVIDIA GPU with Compute Capability 7.0+ (RTX 20x0 series or newer)
Memory: 16 GB RAM minimum
VRAM: ~2.3 GB for Turbo TTS-only, ~3.5 GB for Multilingual TTS-only, ~8.5 GB+ for full pipeline (ASR + GPT + TTS)
Software:
Windows 10/11 (64-bit)
NVIDIA graphics driver r580 or newer
Visual Studio 2022 with C++ development tools (for rebuilding samples)
Setting up and Launching the Sample#
The sample requires the Chatterbox TTS model (and optionally GPT and ASR models) to be available in the models directory. The models are included in the data/nvigi.models directory.
Launching the Pre-Built Sample#
For those using the prebuilt binaries in the package, the sample executable is available immediately and can be run:
Navigate to
<PACK_ROOT>/bin/x64/Release/Run
.\nvigi.3d.exe, either by double-clicking the executable in Windows Explorer or by running it from a command prompt
The sample requires and looks for AI models and rendering media relative to the executable path. Specifically, it looks for:
The models directory:
<PACK_ROOT>/data/nvigi.modelsThe media directory:
<PACK_ROOT>/data/nvigi.test/nvigi.3dSpeaker embeddings:
<PACK_ROOT>/data/nvigi.test/spk_emb
The code will check upward from the executable directory several times to find these directories. This is done so that the pre-built binary layout is trivially supported with no user effort.
If required, the paths may be specified explicitly via command line arguments:
-pathToModels <path>- Path to the models directory-pathToTestData <path>- Path to test data including speaker embeddings
Using the Sample#
Main UI#
On launch, the sample will show a UI box on the left side of the window and a 3D rendered scene. The main UI contains:
Performance Info: GPU, system and performance statistics at the top
Model Status: Current ASR, GPT, and TTS model/backend status displayed directly
Options Button: Opens a popup with tabs for App settings, ASR, GPT, and TTS configuration
Chat Area: Scrollable message history showing questions (Q:) and answers (A:)
Text Input: Single-line text input field (press Enter to submit)
Voice Controls: Record/Stop button for voice input (when ASR is available)
Reset Chat: Button to clear conversation history (when GPT is available)
Performance Metrics: Real-time display of ASR, GPT, and TTS timing statistics
Operating Modes#
The 3D sample supports two graphics backends, both providing the full voice-to-voice AI pipeline:
D3D12 Mode (Default)#
When running with D3D12 graphics (default), the sample uses D3D12 backends for inference when available, with CUDA as fallback:
ASR → GPT → TTS Pipeline:
Voice Input: Click “Record” to capture audio from your microphone
ASR Processing: Whisper ASR transcribes your speech to text
GPT Processing: The transcribed text is sent to the GPT model for a response
TTS Output: Chatterbox TTS converts the GPT response to speech
Text Input:
Enter text in the input field and press Enter to submit
When GPT is available: Text is sent to GPT for a response, which is then spoken via TTS
The conversation history is displayed in the chat area with questions (Q:) and answers (A:)
Backend Selection:
D3D12 backends are preferred for TTS, GPT, and ASR when available (requires driver 580.61 or newer)
CUDA backends are used as fallback if D3D12 plugins are unavailable or fail compatibility checks
D3D12 backends provide shared context with graphics for optimal GPU scheduling
This mode supports CUDA in Graphics (CIG) optimization for efficient GPU sharing between rendering and inference
Note: D3D12 backend performance characteristics:
First inference may take approximately 6 seconds (one-time shader compilation cost).
Changing speaker embeddings may add approximately 1 second delay to the first inference after the change.
Mitigation: Run a one-off dummy inference during your application’s loading screen — and once per speaker embedding you intend to use — so the user-visible inference always runs at steady-state speed. See D3D12 Warmup Latency for the full recipe and additional strategies.
Vulkan Mode#
When running with -vk flag, the sample uses Vulkan backends for inference:
.\nvigi.3d.exe -vk
Full Pipeline Support:
All features of D3D12 mode are available: ASR, GPT, and TTS
Voice input and text input work the same as D3D12 mode
TTS, GPT, and ASR use Vulkan backends for inference
This mode is useful for testing the Vulkan backend or for broader GPU compatibility.
Note: When attempting to share the Vulkan device between the graphics pipeline and the Chatterbox TTS plugin, the generated output may be incorrect. The plugin creates its own separate Vulkan device (without sharing) to ensure correct output.
Voice Input#
The voice input feature allows you to speak to the AI and hear responses (available in both D3D12 and Vulkan modes when ASR is configured):
Click the “Record” button to start recording (button changes to “Stop”)
Speak your question or statement
Click “Stop” when finished
The ASR model transcribes your speech
If GPT is available, the transcription is sent to GPT for a response, which is then spoken via TTS
If only TTS is available (no GPT), the transcribed text is spoken directly via TTS
Note: Voice input requires a working microphone. The sample uses the system default microphone.
Text Input#
For text-based interaction:
Enter your text in the single-line text input field
Press Enter to submit:
With GPT available: Text is sent to GPT, and the response is spoken via TTS
Without GPT: Text is converted directly to speech via TTS
Click Reset Chat to clear the conversation history (when GPT is available)
Speaker Selection#
The sample supports multiple speaker voice profiles via speaker embeddings:
Click the Options… button to open the settings popup
Select the TTS tab
Use the Voice Name dropdown to select from available voices
Speaker embeddings are JSON files located in
data/nvigi.test/spk_emb/The selected voice will be used for all subsequent TTS output
To add custom voices, place speaker embedding JSON files in the spk_emb directory.
Options Popup#
Click the Options… button to open the settings popup. The popup contains tabs for different settings categories:
App Tab#
Application-level settings:
GPU Scheduling Priority: A dropdown to set the 3D-vs-compute/inference prioritization:
Prioritize Graphics: Give more GPU priority to 3D rendering, at the expense of inference latency. Use this when maintaining a smooth frame rate is critical and higher TTS latency can be tolerated (e.g., visually intensive scenes with background narration).
Prioritize Inference: Give more GPU priority to compute, improving inference latency at the potential expense of rendering time. Use this when low TTS latency is critical and some frame drops can be tolerated (e.g., real-time conversational AI where responsiveness matters most).
Balanced: A more even split between the two. This is a good default for most applications, providing reasonable frame rates and TTS latency without heavily favoring either workload.
Frame Rate Limiter: If checked, allows you to specify the target FPS to avoid the sample running at excessively high frame rates. The 3D sample has minimal graphics load, so without limiting, it may run at hundreds of FPS. This doesn’t reflect real-world game scenarios where the GPU is under heavier load. By limiting the frame rate (e.g., to 60 or 120 FPS), you can simulate more realistic conditions and better evaluate how TTS performance and GPU scheduling modes will behave in an actual game with demanding graphics.
ASR Tab#
Automatic Speech Recognition settings:
Automatic Backend Selection: When enabled, automatically selects the best available backend
VRAM Budget: Set the VRAM budget (in MB) for ASR model loading
Model Name: Select from available Whisper ASR models
GPT Tab#
GPT (Large Language Model) settings:
Automatic Backend Selection: When enabled, automatically selects the best available backend
VRAM Budget: Set the VRAM budget (in MB) for GPT model loading
Model Name: Select from available GPT models
TTS Tab#
Text-to-Speech settings:
Automatic Backend Selection: When enabled, automatically selects the best available backend
VRAM Budget: Set the VRAM budget (in MB) for TTS model loading
Model Name: Select from available Chatterbox TTS models (Turbo or Multilingual)
Voice Name: Select from available speaker embedding profiles
Language: When a multilingual model is selected, a language dropdown appears with 23 supported languages
When switching between Turbo and Multilingual models, the voice selection automatically adjusts to a compatible speaker embedding.
Note that when inference is actively running, the settings will be grayed out and disabled for interaction.
Performance Logging#
The sample includes comprehensive performance logging that tracks:
ASR transcription time and transcribed text
GPT first token latency and generated response
TTS total inference time, first audio latency, and audio duration generated
Performance metrics are displayed in real-time in the UI and also written to a CSV log file (nvigi_perf_log_YYYYMMDD_HHMMSS.csv) in the executable directory for analysis. The CSV format includes columns for Timestamp, InferenceType, TimeMs, and AdditionalInfo.
Logging from the Sample#
By default, the pre-built sample will launch a log window that shows NVIGI log messages during init, creation, runtime and shutdown. In addition, logging to file may be enabled by specifying a path:
.\nvigi.3d.exe -logToFile ..\logs
With this option, a log file would be written to ..\logs\nvigi-log.txt
Logs are useful when debugging issues or sending support questions.
Building the Sample from Source#
While the pre-built 3D sample is ready to run out of the box, building from source offers several advantages:
Debugging: Step through the code in Visual Studio to understand the TTS integration flow, inspect variables, and diagnose issues
Customization: Modify the sample to experiment with different TTS parameters, UI layouts, or integration patterns for your own application
Learning: Study and modify the code to better understand NVIGI plugin loading, TTS callbacks, text chunking, and real-time audio playback handling
Testing: Validate fixes or test new features before integrating them into your own project
The source code for the 3D Sample is provided in <PACK_ROOT>/source/samples/nvigi.3d. To build the sample:
Prerequisites#
Ensure Visual Studio 2022 is installed with C++ development tools
Build Steps#
Open a command prompt or VS2022 Developer Command Prompt
Navigate to
<PACK_ROOT>Run
.\setup_sample.batto download the NVIGI Core SDK and set up dependencies. The NVIGI Developer Full SDK path is required when building the 3D sample (or the full solution) because the 3D project includes headers (nvigi_gpt.h,nvigi_asr_whisper.h) and plugin DLLs that are only available through that SDK. It is optional for a TTS-only build (plugins + CLI sample).:: TTS-only build (plugins + nvigi.tts.chatterbox.exe) .\setup_sample.bat :: Full build including the 3D sample — Developer Full SDK path is REQUIRED .\setup_sample.bat "C:\path\to\nvigi_developer_full_sdk"
When the SDK path is provided,
setup_sample.batalso stages the GPT/ASR plugin DLLs and creates a junction atexternal\nvigi_developer_full_sdk_win64that the 3D project’spremake.luaresolves header paths against. Without the path,build.bat -Releasewill fail the 3D target withcannot open include file: 'nvigi_asr_whisper.h'(and'nvigi_gpt.h'); rerunsetup_sample.batwith the SDK path and re-runsetup.bat.Run
.\setup.batto generate the Visual Studio solutionRun
.\build.bat -Release(or-Production) to build all projects, or:Open
<PACK_ROOT>/_project/vs2022/nvigi.chatterbox.slnin Visual Studio 2022Select your desired configuration (Debug, Release, Production)
Build the
nvigi.3dproject
Run
.\copy_sdk_binaries.bat Release(orProduction) to copy the built executables and DLLs to<PACK_ROOT>/build_bin/x64/Release
The built sample executable will be available at <PACK_ROOT>/build_bin/x64/Release/nvigi.3d.exe.
Building with Local Donut#
The default build uses a pre-built version of the Donut rendering framework. It is also possible to rebuild the Sample against a locally-built version of Donut. To do this:
Open a VS2022 Developer Command Prompt and navigate to
<PACK_ROOT>/source/samples/nvigi.3d/opt-local-donutDownload the Donut source code by running
.\01_pull.batRun
.\02_setup.batto run CMake to create the build filesRun
.\03_build.batto build all three configurations of DonutEdit
<PACK_ROOT>/source/samples/nvigi.3d/premake.luato:Comment out
donut_dir = externaldir.."donut"Uncomment
donut_dir = ROOT.."source/samples/nvigi.3d/opt-local-donut/_package/donut"
Re-run
<PACK_ROOT>\setup.batRebuild the solution
Rerun
.\copy_sdk_binaries.bat Release(orProduction) to copy the binaries
Running the Built Sample in Debugger#
To run the rebuilt sample from within the Visual Studio debugger:
One-time setup in the project file (needs to be redone if
_projectis deleted):In the Visual Studio IDE, edit the project config settings for
nvigi.3dNavigate to the “Debugging” settings
Set “Command” to
$(SolutionDir)..\..\bin\x64\Release\nvigi.3d.exeSet “Command Arguments” as needed (see command-line options below)
Set “Working Directory” to
$(SolutionDir)..\..\bin\x64\Release
Build the desired configuration (Release is recommended - it is optimized but contains symbols)
After each (re-)build, re-run
.\copy_sdk_binaries.bat Releaseto copy the updated binariesSet
nvigi.3das the startup project in Visual StudioLaunch with debugging (F5)
Command-line Options#
Arguments |
Effect |
|---|---|
|
Path to the models directory. Defaults to searching upward from executable directory for |
|
Path to test data directory containing speaker embeddings and media |
|
Sets the destination directory for logging |
Additional Command Line Arguments#
Arguments |
Effect |
|---|---|
|
Use Vulkan for rendering (full ASR/GPT/TTS pipeline with Vulkan backends) |
|
Sets window width |
|
Sets window height |
|
Allows verbose info level logging |
|
Enables NVRHI and Graphics API validation Layer |
|
Does not do NVIGI dll signature check |
|
Enables Vsync |
|
Loads a custom scene |
|
Sets number of frames to render before the app shuts down |
|
Disable the use of CUDA in Graphics optimization (for debugging/testing purposes) |
Input Text Guidelines#
For best TTS output quality, provide grammatically complete sentences with standard punctuation. The following input patterns may produce reduced quality or garbled audio:
Incomplete words or fragments (e.g.,
"the","that","hundred") — the model may not treat these as complete utterances and can generate extra, unintelligible audio.Very short utterances of fewer than ~5 words such as
"Yes","Help!", or"Over here!"— common in game dialogue but more likely to produce artifacts because the model has too little context to anchor prosody.Repeated or excessive punctuation (e.g.,
Hello!!!,Really?!) — multiple punctuation marks in sequence can confuse the tokenizer.
Use complete sentences of moderate to long length (>5 words) with single punctuation marks for the most reliable results. For short game dialogue specifically, see Mitigations for short game dialogue in the Programming Guide for concrete strategies (text padding, paralinguistic anchors, pre-rendered barks).
Notes#
Both D3D12 and Vulkan modes support the full ASR/GPT/TTS voice-to-voice pipeline
D3D12 mode: Uses D3D12 backends for TTS, GPT, and ASR when available (requires driver 580.61+), with CUDA as fallback
Vulkan mode: Uses Vulkan backends for TTS, GPT, and ASR
The sample is designed for use with local systems - use on remote desktop is not recommended
First inference may take longer due to model warmup
D3D12 backends provide shared context with graphics for optimal GPU scheduling
D3D12 backend delays: First inference may take approximately 6 seconds (one-time shader compilation), and changing speaker embeddings adds approximately 1 second to the first inference after the switch. Mitigation: pre-warm with a dummy inference during the loading screen and pre-warm each speaker embedding the level uses; see D3D12 Warmup Latency for the recommended pattern.
Vulkan device sharing limitation: When attempting to share the Vulkan device between the graphics pipeline and the Chatterbox TTS plugin, the generated output may be incorrect. The plugin creates its own separate Vulkan device (without sharing) to ensure correct output.
The CLI Sample#
The CLI sample, nvigi.tts.chatterbox, demonstrates TTS usage with both Chatterbox Turbo and Multilingual models and writes a 24 kHz mono WAV file. It is intended as a minimal, scriptable example for batch generation or quick validation. The sample also supports an interactive mode with real-time audio playback on Windows.
Requirements#
The Chatterbox TTS model(s) in
data/nvigi.modelsA speaker embedding JSON file in
data/nvigi.test/spk_emb
Launching the Pre-Built Sample#
The pre-built CLI sample is available in the package. The sample automatically detects the NVIGI SDK DLLs from the executable directory.
Turbo (English-only, default):
cd <PACK_ROOT>\bin\x64\Release
nvigi.tts.chatterbox.exe --models ..\..\..\data\nvigi.models --speaker ..\..\..\data\nvigi.test\spk_emb\aaron_turbo.json --text "Hello from Chatterbox Turbo." --output output.wav
Multilingual (23 languages):
nvigi.tts.chatterbox.exe --models ..\..\..\data\nvigi.models --speaker ..\..\..\data\nvigi.test\spk_emb\french.json --multilingual --language fr --text "Bonjour, je suis un modèle multilingue." --output output_fr.wav
The --multilingual flag switches to the multilingual model, and --language specifies the language code (e.g., en, fr, de, zh, ja, hi). The model GUID is automatically selected based on the --multilingual flag.
The sample outputs timing statistics after generation, for example (measured on an NVIDIA GeForce RTX 5080 with the CUDA backend and the Turbo model speaking “Hello from Chatterbox Turbo.”):
Inference Time: 393.40 ms
Audio Length: 1820.00 ms (1.82 sec)
RTF: 0.22
Wrote WAV: <absolute path to the file passed via --output>
The RTF (Real-Time Factor) indicates performance: values below 1.0 mean the audio was generated faster than real-time. Absolute numbers will vary with hardware, driver, backend, and text length.
Interactive Mode (Windows Only)#
The CLI sample supports an interactive mode that allows continuous text-to-speech generation with real-time audio playback:
Turbo:
nvigi.tts.chatterbox.exe --models ..\..\..\data\nvigi.models --speaker ..\..\..\data\nvigi.test\spk_emb\aaron_turbo.json --interactive --backend cuda
Multilingual:
nvigi.tts.chatterbox.exe --models ..\..\..\data\nvigi.models --speaker ..\..\..\data\nvigi.test\spk_emb\german.json --interactive --multilingual --language de
In interactive mode:
Enter text prompts at the
>prompt to synthesize speechAudio plays immediately through your default audio device
Timing statistics are displayed after each generation
For multilingual mode, enter text in the selected language (UTF-8 console input is enabled automatically)
Type
exit,quit, or press Enter on an empty line to exit
Batch mode (JSONL)#
For large fixed sets of prompts (e.g. WER/regression), use --batch <manifest.jsonl> with --multilingual and a backend (--backend / -b). Each line of the file is one JSON object with:
Required:
"out"(output WAV path),"text"(UTF-8 string)Optional:
"lang"(language code; falls back to--language),"speaker"(path to speaker JSON; falls back to--speaker)
The process loads NVIGI and the model once, then runs inference for every line. Options: --batch_skip_existing true (skip if "out" already exists), --batch_quiet true (less per-utterance logging). Lines starting with # and empty lines are ignored.
Example (multilingual, CUDA):
nvigi.tts.chatterbox.exe --models ..\..\..\data\nvigi.models --multilingual -b cuda --batch jobs.jsonl --batch_skip_existing true --batch_quiet true
If some rows omit "speaker" or "lang", supply defaults with --speaker and/or --language.
Building the Sample from Source#
While the pre-built CLI sample is ready to use, building from source allows you to:
Debugging: Step through the TTS pipeline in Visual Studio to understand inference flow and diagnose issues
Customization: Modify parameters, add batch processing, or integrate TTS into your own tooling
Learning: Study the code to understand NVIGI plugin loading, speaker embedding setup, and audio output handling
Testing: Validate fixes or test new features before integrating them into your own project
The CLI sample source is in <PACK_ROOT>/source/samples/nvigi.tts.chatterbox.
Open a command prompt to
<PACK_ROOT>Run
.\setup_sample.batto download the NVIGI Core SDK and set up dependencies:.\setup_sample.bat "C:\path\to\nvigi_developer_full_sdk"The NVIGI Developer SDK path is optional (not needed for TTS-only usage).
Run
.\setup.batto generate the Visual Studio solutionRun
.\build.bat -Release(or-Production)Run
.\copy_sdk_binaries.bat Release(orProduction) to copy the binary to<PACK_ROOT>\bin\x64\Release
Command-line Options#
Arguments |
Effect |
|---|---|
|
Path to models directory (required) |
|
Path to speaker JSON (required) |
|
Text prompt (required unless |
|
Output WAV path (default: |
|
Backend selection (default: |
|
Model GUID (auto-selected based on |
|
Enable interactive mode with audio playback (Windows only) |
|
Use multilingual model instead of turbo (23 languages) |
|
Language code for multilingual (default: |
|
Max tokens generated (default: |
|
GPU device index (default: |
|
GPU layers for GGML/llama.cpp (default: |
|
Sampling temperature (default: |
|
CFG weight for speech pacing (default: |
|
Words per chunk, 0 disables (default: |
|
Disable CSV performance logging |
Voice Cloning#
The Chatterbox TTS plugin supports zero-shot voice cloning, allowing you to create custom speaker embeddings from just a few seconds of reference audio. The voice_cloning directory contains scripts to generate speaker embedding JSON files that can be used with the TTS samples.
For complete setup instructions and usage guide, see Create Custom Voices with Voice Cloning in the Getting Started guide.
Quick Reference#
Requirements:
Python 3.11 (automatically installed if not found)
NVIDIA GPU with CUDA support (recommended) or CPU
5-10 seconds of clear reference audio (WAV format)
Hugging Face account with access token
Basic Usage:
setup_venv.ps1 creates a virtual environment under voice_cloning\venv, installs torch, chatterbox-tts, and the rest of the dependencies into it, and activates the venv in the current PowerShell session. After that, python resolves to the venv interpreter and get_voice_embeddings.py can be invoked directly. In a new shell, re-activate the venv with .\venv\Scripts\Activate.ps1 before running the script.
cd <PACK_ROOT>\voice_cloning
.\setup_venv.ps1
# (in a new shell, first run: .\venv\Scripts\Activate.ps1)
# For Turbo model (default)
python get_voice_embeddings.py --wav reference_audio.wav --dump-json my_voice.json --hf-token YOUR_HF_TOKEN
# For Multilingual model
python get_voice_embeddings.py --wav reference_audio.wav --model-type multilingual --dump-json my_voice_multilingual.json --hf-token YOUR_HF_TOKEN
copy my_voice.json ..\data\nvigi.test\spk_emb\
Command-line Options:
Argument |
Description |
|---|---|
|
Path to the reference WAV file (5-10 seconds recommended) |
|
Model type for embedding extraction (default: |
|
Output path for the speaker embedding JSON file |
|
Emotion exaggeration baked into the embedding (default: 0.5, range: 0.0-1.0). Affects Multilingual output only; ignored by Turbo. |
|
Hugging Face token for model download (or use |
Models and Test Data#
The Chatterbox TTS pack includes:
Chatterbox TTS Models: Located in
data/nvigi.models/nvigi.plugin.tts.chatterboxTurbo (
eTurbo): Fast English-only model (~2 GB VRAM)Multilingual (
eMultilingual): 23-language model with CFG (~3 GB VRAM). Supported languages: Arabic, Danish, German, Greek, English, Spanish, Finnish, French, Hebrew, Hindi, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese, Russian, Swedish, Swahili, Turkish, ChineseCompatible with CUDA, Vulkan, and D3D12 backends
Optimized for real-time text-to-speech synthesis
Speaker Embeddings: Located in
data/nvigi.test/spk_emb/JSON files containing voice profiles
Turbo speakers:
aaron_turbo.json,lucy_turbo.jsonMultilingual per-language speakers:
arabic.json,chinese.json,danish.json,dutch.json,english.json,finnish.json,french.json,german.json,greek.json,hebrew.json,hindi.json,italian.json,japanese.json,korean.json,malay.json,norwegian.json,polish.json,portuguese.json,russian.json,spanish.json,swahili.json,swedish.json,turkish.json(23 total, one per supported language)Additional multilingual voices:
ethan_multilingual.json,meera_multilingual.json,speaker_base.jsonMultilingual and Turbo embeddings are not interchangeable — use an embedding that matches the selected
modelTypeCustom speakers can be added via the voice cloning toolkit
Test Media: Located in
data/nvigi.test/nvigi.3d/3D scene assets and media files
Troubleshooting#
Sample Won’t Launch#
Problem: Sample executable doesn’t start or crashes immediately
Solution:
Ensure all DLLs are present in
bin/x64/ReleasedirectoryCheck that models are present in
data/nvigi.modelsReview log files for error messages
Verify NVIDIA GPU drivers are up to date
Update to the latest Microsoft Visual C++ Redistributable
Build Errors#
Problem: Build fails with compilation errors
Solution:
Ensure Visual Studio 2022 is installed with C++ development tools
Run
.\setup.batfrom<PACK_ROOT>to regenerate project filesClean the solution and rebuild
Verify that packman dependencies downloaded correctly during setup
TTS Not Working#
Problem: No audio output when using TTS
Solution:
Check that the TTS model is properly loaded (shown in UI)
Verify speaker embedding file exists and is valid JSON
Check audio output device settings in Windows
Review log files for inference errors
Voice Input Not Working#
Problem: Recording fails or no transcription
Solution:
Ensure a microphone is connected and set as default in Windows
Check Windows microphone permissions for the application
Verify ASR model is loaded (shown in UI as “ASR: model_name”)
Test microphone in Windows Sound settings
GPT Not Responding#
Problem: No GPT response when submitting text
Solution:
Verify GPT model is loaded (shown in UI as “GPT: model_name”)
Check the
nvigi.model.config.jsonexists in the GPT model directoryReview logs for GPT inference errors
Ensure sufficient VRAM is available
Performance Issues#
Problem: Slow inference or frame rate drops
Solution:
Adjust GPU scheduling mode in App Settings (Prioritize Inference vs Graphics)
Enable frame rate limiter to reduce GPU contention
Ensure no other applications are using excessive GPU resources
Use the Turbo model variant for faster inference
Check that CUDA in Graphics (CIG) is enabled (D3D12 mode)
Vulkan Mode Issues#
Problem: Vulkan mode crashes or doesn’t work
Solution:
Ensure GPU supports Vulkan
Update GPU drivers to latest version
Check logs for Vulkan-specific errors
Try D3D12 mode as an alternative
D3D12 Mode Issues#
Problem: D3D12 plugins not available or showing as unavailable in UI
Solution:
D3D12 plugins require NVIDIA driver version 580.61 or newer
Update GPU drivers to the latest version
If D3D12 plugins are unavailable, the sample will automatically fall back to CUDA backends
Check logs for driver version warnings or compatibility issues
Support#
For issues, questions, or feedback, please contact NVIDIA Developer Support or refer to the NVIGI Developer Pack documentation.