soundWave

soundWave is an NVDA add-on that renders text to an audio file using installed speech engines. It can export audio from the clipboard, a text file, or text entered directly in the add-on.

Quick start

  1. Press NVDA+Ctrl+= to open soundWave.
  2. Choose a synthesizer.
  3. Optionally set the record base folder. This is the default save folder for renders; soundWave creates output folders under it using your naming templates.
  4. Choose the input source: clipboard, a text file, a folder of text files, or typed/pasted text.
  5. Configure the synthesizer. Use Test to preview the selected settings.
  6. Choose an output filename and format.
  7. Wait for the render to complete, then review the summary.

In soundWave render dialogs, press F1 to open this manual. In the soundWave panel inside NVDA Settings, tab to the Help button or press Alt+H. Dialog controls include keyboard accelerators where practical, such as Alt+T for Test.

Input and output

Render progress

During rendering, soundWave shows a progress dialog with a Cancel button and optional line-by-line details. Use Show details to review current file, text chunk, elapsed time, rendered audio length, and conversion rate where available. Long durations are shown as minutes or hours rather than raw seconds.

For long renders, use Minimize or press Alt+M to hide the progress dialog. The render continues in the background and the hidden dialog is kept out of Alt+Tab. Press the soundWave command again, NVDA+Ctrl+=, to bring the progress dialog back.

Settings

Open NVDA Settings and choose soundWave to set defaults used by future renders.

Naming templates

Naming fields are templates. soundWave replaces each token with information from the current render before suggesting the folder or filename. You can remove tokens, move them, add your own words, or change the punctuation between them.

SettingDefaultExample outputWhat it controls
Single render folder pattern %engine% - %voice% Sonata - Kirsten Two En Medium The folder offered by the Save As dialog for clipboard, typed text, or one text file.
Single file name pattern %source% Clipboard.wav The suggested filename for a single render.
Batch folder pattern %engine% - %voice% Keynote Gold - Fred The output folder created when rendering a folder of text files.
Batch file pattern %number% - %source% 03 - chapter three.wav The filename for each rendered file in a batch.

Naming examples

PatternExample outputWhen it is useful
%engine% - %voice% Orpheus - Synthetic Dave Groups output by synthesizer and voice.
%source% - %engine% chapter one - SAPI5.wav Keeps the source first while still identifying the synthesizer.
%number% - %source% 01 - opening credits.wav Keeps batch output in a predictable order.
Filename token meanings
TokenMeaningExample value
%source% The clipboard, typed text, source file name, or source folder item name. Clipboard, Typed, chapter one, or meeting notes
%engine% The synthesizer name. Orpheus, Sonata, SAPI5, or Pocket TTS
%voice% The selected voice when soundWave can identify it. If no voice is known, this part is left out cleanly. Synthetic Dave, Kirsten Two En Medium, or Fred
%number% An ordered number. Folder renders add this automatically; the token is available for custom naming patterns. 01, 02, or 03

Synthesizer Options

Synthesizers expose settings such as voice, language, variant, speed, rate, pitch, or volume where those options are available. Most settings dialogs include:

Supported Synthesizers

SynthesizerNotes
SAPI5 Uses installed Microsoft SAPI5 voices. 32-bit SAPI5 voices are supported through a separate 32-bit helper path when available. SAPI5 rate, pitch, and volume can be adjusted in the render dialog. soundWave asks SAPI for the selected voice's default output format instead of forcing a fixed sample rate, falling back to 22.05 kHz 16-bit mono only if SAPI does not expose a format.
googleTtsForNvda Requires the Google TTS For NVDA add-on and installed Google voice packages. soundWave captures the add-on's generated PCM audio directly when rendering. The Test button renders a short sample to a temporary WAV and plays it back, avoiding NVDA's live speech path. soundWave only lists Google voices that are installed and reliable through this offline render path, so its list may be shorter than the Google add-on's full voice catalogue.
Pocket TTS Requires the Pocket TTS add-on. soundWave renders in smaller segments when needed so longer text is less likely to hit model limits. The options dialog includes Pocket TTS's end-of-sentence sensitivity setting when the installed synth exposes it.
Supertonic Requires the Supertonic add-on. soundWave uses smaller render chunks for Supertonic to avoid model-size failures on longer input.
Sonata Requires the Sonata Neural Voices add-on and available voice configuration files.
Eloquence and IBMTTS Available when the relevant NVDA add-on is installed. soundWave detects the speech engine automatically and exposes voice and speed options before rendering.
Orpheus Requires Orpheus to be the current NVDA synthesizer before rendering starts. Language, voice, speed, pitch, and volume can be adjusted before rendering. During rendering, soundWave temporarily switches NVDA to an available fallback synthesizer.
Orpheus Classic Available when the Orpheus Classic add-on is installed. soundWave uses a dedicated capture path for this older synthesizer so longer pauses and punctuation do not produce truncated output.
DECtalk and Keynote Gold Available when the required add-on is installed and discoverable. Keynote Gold exposes voice, speed, pitch, volume, and rate boost in its render dialog.
Other NVDA synthesizers soundWave can render many other installed NVDA synthesizers when they use NVDA's normal audio output path. The generic dialog applies voice, variant, rate, pitch, and volume where the selected synthesizer exposes those settings.

Render Summary

After rendering, soundWave reports the synthesizer, saved path, elapsed time, audio length, and realtime speed factor when available.

Updates

soundWave uses NVDA's add-on update channel for store-compatible updates.

Changes

1.2.0

1.1.2

1.1.1

1.1.0

1.0.4

1.0.3

1.0.2

1.0.1

1.0.0

Troubleshooting