Xyron Voice Changer is a studio-grade, formant-aware voice changer for Windows. Pick one of 37 hand-tuned voices, or sculpt your own with 31 live controls, and send the result straight to Discord, OBS, games and video calls.
Single portable .exe · no installer · no account · no telemetry. Requires the free VB-CABLE driver to feed other apps.
Every clip below was produced by Xyron Voice Changer's own engine from the same recording, using the built-in presets with no manual tweaking. Press play and compare.
Most voice changers just speed up or slow down your voice. Xyron Voice Changer separates pitch (how high you speak) from formant (the size of your throat) so a deep voice sounds deep and a female voice sounds like a person, not a chipmunk.
Phase-locked Laroche–Dolson peak shifting plus a cepstral spectral envelope keep pitch and timbre independent, with far less of the “phasey” robotic artefact.
Female, Male, Character and Effect voices: from Natural Female and Radio DJ to Demon, Ghost, Walkie-Talkie and Underwater. Save your own in the Mine tab.
Spectral noise suppression with a Learn room noise button, noise gate, de-esser, 4-band EQ, compressor and a look-ahead peak limiter that never clips.
Drag a single dot to move pitch and formant together: up for higher, down for deeper, right for a more feminine timbre. Double-click to snap back to your natural voice.
Robot vocoder, whisper, breath, vibrato, octave harmonizer, distortion, bitcrusher, chorus, phaser, echo and reverb, all adjustable live while you talk.
Ctrl+Alt+B raw voice, M mute, V on/off. They work even while a full-screen game or Discord has focus.
Record 5 s and listen plays back exactly what your friends receive, and Hear myself monitors live through your headphones. Click-free A/B with Raw voice.
Run any WAV, MP3, FLAC, OGG, M4A or AIFF file through the same engine and save a 24-bit WAV, from the app or from the command line.
No network code at all: no account, no cloud, no telemetry. Your voice never leaves your PC. Settings live in a plain JSON file you can read.
The whole interface, every preset and the CLI are translated. The language follows your Windows display language on first launch and can be switched any time.
Adaptive micro-resampling absorbs clock drift between sound cards, a watchdog restarts dropped streams, and live latency, CPU and buffer health are always on screen.
Clean, typed Python with 113 automated tests covering the DSP engine, effects, audio routing, translations, presets and CLI.


Audio is processed in mono at 48 kHz. A dedicated audio thread does the heavy lifting while the interface only updates parameters, so dragging a slider never interrupts your voice.
Effects are only instantiated when they are switched on, and the chain is rebuilt only when its structure changes, so reverb and echo tails keep ringing while you move sliders.
You need Windows 10 or 11 (64-bit), a microphone and, to send your new voice to other apps, the free VB-CABLE virtual audio driver.
Download VB-CABLE from the official VB-Audio website (or the unmodified copy attached to our release), extract it, then right-click VBCABLE_Setup_x64.exe → Run as administrator → Install Driver, and restart your PC.
Tip: extract it into a folder named VBCable next to the app and the in-app “VB-Cable not found: Install” button will launch the installer for you.
Grab Xyron-Voice-Changer-win64.exe from the latest release and double-click it. No installation needed. The first launch takes 5–10 seconds while it unpacks.
In the left sidebar under Audio devices:
Windows WASAPI (recommended; try MME if you hear crackles)CABLE Input (VB-Audio Virtual Cable)Click START, then Learn room noise and stay silent for 2–3 seconds. Click any voice card. Use Record 5 s and listen to hear exactly what others will hear.
In Discord, OBS, your game or meeting app, set the input device / microphone to CABLE Output (VB-Audio Virtual Cable). See the app-specific guides below.
CABLE Output (VB-Audio Virtual Cable).CABLE Output (VB-Audio Virtual Cable).CABLE Output (VB-Audio Virtual Cable).CABLE Output as the default device.CABLE Output (VB-Audio Virtual Cable) as the Microphone.Values are tuned for a typical adult male speaking voice (~100–140 Hz). Using a higher voice? Start from Female to Male or nudge the XY pad. Every preset is a starting point: adjust, then Save profile.
| Voice | Category | Pitch | Formant | Description | CLI key |
|---|
All 31 parameters update in real time. st = semitones (12 st = one octave). Percent values run from 0 (off) to 100%.
| Section | Control | Range | Default | What it does |
|---|
Choose in Audio devices → Engine quality. Engine latency is the STFT window; your sound card adds a few more milliseconds.
| Mode | FFT / hop | Engine latency | Best for |
|---|---|---|---|
| Maximum Clarity max | 4096 / 512 | ≈ 85 ms | Deep voices that sound grainy when shifted |
| Studio Quality (default) studio | 2048 / 256 | ≈ 43 ms | Everyday use, streaming, voice chat |
| Balanced balanced | 2048 / 512 | ≈ 43 ms | Older CPUs (half the processing) |
| Low Latency low_latency | 1024 / 256 | ≈ 21 ms | Competitive games, singing along |
Registered system-wide through the Windows API, so they work while any other app has focus. If another program already owns a combination, the app tells you on start-up.
| Shortcut | Action |
|---|---|
| Ctrl+Alt+B | Raw voice: instantly bypass the changer (click-free A/B) |
| Ctrl+Alt+M | Mute the microphone |
| Ctrl+Alt+V | Start / stop the voice changer |
"hotkey_enabled": false in settings.json.Run main.py without arguments to open the app. With arguments, it becomes a command-line tool for batch conversion and diagnostics. Output follows --lang, your saved language, or your system language.
python main.py --list-presets --lang enf_natural Female Natural Female pitch=+10.0 formant=+3.2
m_deep Male Deep Male pitch=-3.0 formant=-1.5
c_robot Character Robot pitch=+0.0 formant=+0.0
e_radio Effect Walkie-Talkie pitch=+0.0 formant=+0.0python main.py --list-devices== Windows WASAPI
IN [12] Microphone (USB Audio) <- suggested microphone
OUT [ 9] CABLE Input (VB-Audio Virtual Cable) <- virtual cable
OUT [ 7] Headphones (Realtek Audio) <- headphonespython main.py --render podcast.mp3 podcast_trailer.wav --preset m_trailer
# +5 semitones higher, throat 2 semitones smaller python main.py --render in.wav out.wav --pitch 5 --formant 2 --quality max
Get-ChildItem .\voice-lines\*.wav | ForEach-Object { python main.py --render $_.FullName ".\out\$($_.BaseName)_robot.wav" --preset c_robot }
| Option | Description |
|---|---|
| --list-presets | List built-in and saved presets |
| --list-devices | List audio devices per audio system, with suggestions |
| --render IN OUT | Process WAV/MP3/FLAC/OGG/M4A/AIFF → 24-bit 48 kHz WAV |
| --preset KEY | Preset key (default m_clean) |
| --pitch / --formant N | Override pitch / formant in semitones (−12…+12) |
| --quality MODE | max · studio · balanced · low_latency |
| --lang tr|en | Language for CLI output (and the app window) |
| --version / --debug | Show version · show full traceback on errors |
Exit codes: 0 success · 1 runtime error · 2 usage error (missing file, unknown preset).
Requires Python 3.12+ on Windows. Dependencies: numpy, sounddevice (PortAudio), pedalboard, customtkinter and Pillow.
git clone https://github.com/Xyronb1/xyron-voice-changer.git cd xyron-voice-changer python -m venv .venv .venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe main.py
.venv\Scripts\python.exe -m pip install pytest .venv\Scripts\python.exe -m pytest
.venv\Scripts\python.exe -m pip install pyinstaller # single portable file -> dist\Xyron Voice Changer.exe .venv\Scripts\python.exe -m PyInstaller --noconfirm --clean Xyron_Voice_Changer.spec # folder build: faster start, fewer antivirus false positives .venv\Scripts\python.exe -m PyInstaller --noconfirm --clean Xyron_Voice_Changer_onedir.spec
main.py entry point: GUI + CLI
xyrox_voice/
dsp.py STFT engine: denoise, pitch, formant, layers
effects.py Pedalboard chain + look-ahead limiter
processor.py engine + effects + meters, quality modes
audio_io.py devices, ring buffers, real-time router
ui.py customtkinter interface
presets.py 37 presets + user preset store
params.py all parameters, ranges, formatting
i18n.py English / Turkish translations
hotkeys.py global Windows hotkeys (ctypes)
render.py offline file rendering
config.py settings.json
tests/ pytest suiteLANGUAGES in xyrox_voice/i18n.py and a dictionary to TRANSLATIONS. Missing strings fall back gracefully, and tests/test_i18n.py tells you exactly which ones are untranslated.Check the chain end to end: in Xyron, Virtual microphone must be CABLE Input and the app must be started (green “Active”). In Discord or your game, the input device must be CABLE Output. If VB-CABLE doesn't appear anywhere, reinstall it as administrator and reboot.
MME or Windows DirectSound.Choose Engine quality → Low Latency (≈21 ms engine latency) and use WASAPI. Note that Hear myself always sounds slightly delayed and “doubled” because you also hear your real voice through your skull; Record 5 s and listen gives a more honest impression.
Very large pitch shifts on deep voices are the hardest case. Select Engine quality → Maximum Clarity (about 40 ms more latency, much cleaner). Also press Learn room noise while silent, and avoid stacking Discord's Krisp on top.
The executable is built with PyInstaller and is not code-signed yet, which some antivirus engines flag by reputation alone. Choose More info → Run anyway, add an exclusion, use the portable folder build, or run from source. Every release lists SHA-256 checksums so you can verify the download.
In %APPDATA%\Xyron_Voice_Changer\: settings.json (devices, language, last preset) and presets.json (your Mine profiles). Delete the folder to reset everything. Settings from the earlier XYROX Voice Studio builds are migrated automatically.
Use the Dil / Language selector at the bottom of the left sidebar. On first launch the app picks Turkish on a Turkish Windows and English everywhere else.
The DSP engine, effects and CLI are cross-platform Python, but the app targets Windows: global hotkeys use the Win32 API and the virtual cable workflow is built around VB-CABLE. Ports are welcome; see the developer section.
Yes, it's free and MIT-licensed. Nothing is recorded or uploaded: the source contains no networking code. The 5-second test recording stays in memory and is discarded after playback.
Xyron Voice Changer is built by a small human + AI team.
Project owner. Product vision, voice design and preset tuning, testing on real hardware, and releases.
Xyron's AI engineering partner. DSP engine and audio routing, internationalisation, the test suite, code review and this documentation.
Bug reports, new presets, translations and pull requests are welcome. Please run python -m pytest before opening a PR and describe how you tested audio changes. Open an issue to start a discussion.
Pedalboard (Spotify) for effects and audio I/O · python-sounddevice / PortAudio for real-time streams · CustomTkinter for the interface · NumPy for the DSP · VB-CABLE by VB-Audio (donationware) for the virtual microphone.