NL-2610.001Result[nl.EB]
audio.cpp on an RTX 4060: the CUDA build speaks more than twice as fast as Vulkan
The Nook team
Submitted 5 October 2026 · 3 min read
Nook's speech translator can speak a translation in the speaker's own voice, using the audio.cpp engine. We first shipped audio.cpp's Vulkan build, which runs on any graphics card, then built the CUDA version for NVIDIA cards and timed the two back to back on an RTX 4060 with 8 GB. Cloning a voice to speak three lines took 8.2 seconds with CUDA and 18.3 seconds with Vulkan, and peak video memory was about half a gigabyte lower. It is one run of each, so we treat it as a first look, but the gap was large enough to move every NVIDIA card to the CUDA build in Nook 0.5.6, at the cost of a download of about a gigabyte.
- Comments
- RTX 4060 8 GB, Windows 11. Qwen3-TTS 0.6B voice cloning. One run per build, back to back.
- Subjects
- Engines and builds (nl.EB); Speech and audio (nl.SA); Performance (nl.PF)
- Cite as
NL-2610.001· usenook.ai/labs/audiocpp-cuda-vs-vulkan.html
Full text
On an RTX 4060, audio.cpp's CUDA build cloned a voice and spoke three lines in 8.2 s. The Vulkan build took 18.3 s for the same job. Since Nook 0.5.6, NVIDIA cards get the CUDA build.
The question
Nook's speech translator, the Translate speech Nooklet, listens, translates and then speaks the translation, either in a standard voice or in a clone of the speaker's own. The speaking runs on audio.cpp, an engine for speech models. audio.cpp comes in a Vulkan build, which works on NVIDIA, AMD and Intel cards alike, and a CUDA build, which works only on NVIDIA cards and is far bigger to download. We shipped Vulkan first because it runs everywhere. The question was whether the CUDA build is worth its size for the many people with NVIDIA cards.
Setup
- Graphics card
- NVIDIA GeForce RTX 4060, 8 GB
- System
- Windows 11
- Engine
- audio.cpp, the Vulkan build and the CUDA 12.4 build
- Voice
- Qwen3-TTS 0.6B, cloning a voice from a short English recording
- Job
- Speak three translated sentences in the cloned voice
- Measured
- Time for the whole job; peak card memory from
nvidia-smi, read every 250 ms - Runs
- One per build, back to back
The job is Nook's own live test for the voice engine, which takes the build to use as a setting, so both builds did exactly the same work.
Results
- CUDA build8.2 s
- Vulkan build18.3 s
| Build | Time | Peak memory |
|---|---|---|
| CUDA 12.4 | 8.2 s | 3.4 GB |
| Vulkan | 18.3 s | 3.9 GB |
The CUDA build needed 45% of the Vulkan build's time, and its peak memory was half a gigabyte lower.
What we did with it
Nook 0.5.6 moved every NVIDIA card to the CUDA build. AMD and Intel cards keep Vulkan, and computers without a usable graphics card run audio.cpp on the processor. Once the CUDA build is installed, Nook deletes the old Vulkan copy so the engine is not on disk twice.
The cost is the download. The CUDA build comes as two archives, 461 MB and 607 MB, because it carries NVIDIA's own libraries with it: the CUDA runtime, cuBLAS and cuFFT. For a feature you use often, a gigabyte once is a fair trade for halving every wait.
Limits
Run it yourself
The test is speaks_with_the_real_engine in Nook's public source code. It is skipped in normal test runs, and reads the engine, its build and the voices from environment variables:
$env:NOOK_TEST_AUDIOCPP = "C:\path\to\audiocpp_cli.exe"
$env:NOOK_TEST_AUDIOCPP_BACKEND = "cuda" # or vulkan, or cpu
$env:NOOK_TEST_VOICES = "C:\path\to\voices"
$env:NOOK_TEST_SPEECH = "C:\path\to\english-speech.wav"
$env:NOOK_TEST_OUT = "C:\path\to\output"
cargo test -p nook-core speaks_with_the_real_engine -- --ignored --nocapture
To read the card's memory while it runs, in a second window:
nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits -lms 250