vois/README.md
loki5512344 72769f4615
Rework presets + add Flanger/Tremolo/Overdrive, per-preset gate, vocoder carrier Hz
- New effects: Overdrive (soft atan saturation), Tremolo (LFO AM),
  Flanger (modulated delay + feedback)
- Vocoder carrier is now parametrizable (carrier_hz) and CarrierKind::Input
  is available again; internal makeup raised so no giant external gains
- Per-preset gate_db: Demon/Ghost/etc. gate room noise; user gate wins
- Preset rework per review: Girl gets chorus+overdrive shimmer, Boy
  neutral formant + compressor, Demon less dirty (overdrive, gate, tremolo),
  Robot/Cyborg differentiated, Alien ring-mod 140Hz + flanger, Vader gets
  overdrive growl, Ghost tremolo, Walkie-Talkie bitcrush moved last,
  Growl compressor, Chipmunk drops bitcrush
- Gains normalized to moderate values (no more 6x clip factories)
2026-08-02 22:49:30 +02:00

13 KiB
Raw Permalink Blame History

vois.rs

Real-time voice changer for your mic: pitch/formant shifting, 12 effect presets and a built-in virtual microphone — written in pure Rust.

Rust Platform PipeWire License version

English | Русский


English

Overview

vois.rs turns your microphone into a voice changer in real time: shift pitch and formants with a phase-vocoder DSP chain, apply game/voice-change style presets (Robot, 8-bit, Demon, Girl, Alien, Ghost...), and expose the processed voice as a virtual microphone that Discord, Zoom, OBS and games can use — no external tools required.

Heads up: this project was hacked together very quickly on a "vibe" and may contain bugs, rough edges and half-finished bits. Use at your own risk and report issues!

Features

Feature Description
Real-time pitch shift Phase-vocoder, −12…+12 semitones, formants preserved
Formant shift Change the timbre (girl / deep / bright) independently of pitch
12 presets Clean, Girl/Anime, Boy, Manly/Deep, Demon, Robot, 8-bit, Alien, Radio, Megaphone, Ghost, Cyborg
Effects Vocoder, bitcrush, distortion, overdrive, reverb, chorus, flanger, tremolo, ring-mod, bandpass, noise, compressor, noise gate
Virtual microphone Built-in vois.rs mic (PipeWire/PulseAudio) — no VB-CABLE needed on Linux
Auto-Tune Optional pitch snap to the nearest semitone (smooth, no wobble)
Config file Defaults + custom presets in ~/.config/vois/config.toml
TUI Full-screen terminal UI with arrow-key + mouse control and live meters
WAV recording Record the processed audio with the R hotkey or --record
Test tone --tone 220 lets you hear what a preset does without a mic
Cross-platform Linux (ALSA/PipeWire), Windows (WASAPI), macOS (CoreAudio)

Presets

Preset Pitch Formant Effects
Clean 0 st 1.00× passthrough (A/B compare)
Girl / Anime +5 st 1.25× chorus + overdrive
Boy +2 st 1.08× compressor
Manly / Deep −4 st 0.78× compressor
Demon −9 st 0.85× overdrive + reverb + tremolo
Robot 0 st 1.00× channel vocoder + bitcrush
8-bit 0 st 1.00× bitcrush (5-bit, decimate ×4, auto-level)
Alien −2 st 1.15× ring-mod + flanger
Radio 0 st 1.00× bandpass + noise + compressor
Megaphone 0 st 1.00× distortion + narrow EQ + compressor
Ghost −3 st 1.05× big reverb + chorus + tremolo
Cyborg +2 st 1.00× saw vocoder + overdrive + bitcrush
Chipmunk +7 st 1.40× chorus
Helium +10 st 1.50× chorus
Vader −10 st 0.60× overdrive + reverb + tremolo
Telephone 0 st 1.00× bandpass + noise + compressor
Growl −5 st 0.70× distortion + compressor + reverb
Walkie-Talkie 0 st 1.05× narrow bandpass + squelch noise + compressor + bitcrush

Usage

make install     # installs `vois` to ~/.local/bin (make sure it's on PATH)
vois             # just works: auto-picks devices, virtual mic on, 48 kHz
vois -p "Girl / Anime"
vois --no-virtual-mic            # output to your speakers instead
vois --pitch-correct             # Auto-Tune on
vois --tone 220                  # hear presets without a mic
vois --list / --list-presets     # list devices / presets

In Discord / Zoom / OBS select vois.rs as your microphone.

TUI controls

Key / Mouse Action
↑ / ↓ / click switch preset (live preview)
← / → change pitch (main) / change setting (settings)
S / Tab open settings screen
H help
Q / Ctrl+C quit

Settings screen: ↑↓ select, ←→ / Enter change, Esc back — preset, pitch, formant, gate threshold (dB), gain (dB), mute, LIVE/PASSTHROUGH mode, record, Auto-Tune (pitch corr).

Config file

Create ~/.config/vois/config.toml to set defaults and define your own presets:

# ~/.config/vois/config.toml
preset = "Deep Robot"
virtual_mic = true

[custom_presets]
"Deep Robot" = { pitch = -6, formant = 0.8, effects = [
    { Vocoder = { bands = 16, carrier = "Noise", wet = 1.0 } },
    { Reverb = { room = 0.5, damp = 0.4, wet = 0.3 } },
] }

Any CLI option overrides the file. Effects: Distortion, Overdrive, Bitcrush, Reverb, Chorus, Flanger, Tremolo, RingMod, Bandpass, Noise, Compressor, Vocoder (carrier: Noise / Saw / Input). Custom presets also accept gate_db.

Dependencies

  • cpal — audio capture/playback (ALSA / WASAPI / CoreAudio)
  • rustfft — phase-vocoder FFT
  • ratatui + crossterm — terminal UI
  • ringbuf — lock-free sample buffers
  • hound — WAV recording
  • Linux virtual mic requires pactl (PipeWire/PulseAudio)

Installation

  1. cargo build --release
  2. Run ./target/release/vois
  3. Select vois.rs as your microphone in your voice app

Roadmap / ideas

  • Windows/macOS virtual mic (VB-CABLE / BlackHole) as output device
  • Latency meter and lower-latency FFT modes
  • Pitch auto-correction / karaoke-style smoothing
  • More presets and user-defined chains
  • Web UI / tray icon
  • Playback of a soundboard through the virtual mic

Русский

Обзор

vois.rs превращает твой микрофон в войс-ченджер в реальном времени: сдвиг высоты и формант на фазовом вокодере, 12 пресетов в стиле войс-модов (Robot, 8-bit, Demon, Girl, Alien, Ghost...) и виртуальный микрофон, который видят Discord, Zoom, OBS и игры — без внешних программ.

Важно: проект был написан очень быстро, «на вайбе», поэтому могут быть баги, недоделки и шероховатости. Пользуйся на свой страх и риск, баги репорть!

Возможности

Возможность Описание
Сдвиг высоты Фазовый вокодер, −12…+12 полутонов, форманты сохраняются
Сдвиг формант Меняет тембр (девушка / глубокий / звонкий) независимо от высоты
12 пресетов Clean, Girl/Anime, Boy, Manly/Deep, Demon, Robot, 8-bit, Alien, Radio, Megaphone, Ghost, Cyborg
Эффекты Вокодер, биткраш, дисторшн, овердрайв, реверб, хорус, флэнджер, тремоло, кольцевая модуляция, полосовой фильтр, шум, компрессор, шумоподавитель
Виртуальный микрофон Встроенный vois.rs (PipeWire/PulseAudio) — на Linux не нужен VB-CABLE
Автолюн (Auto-Tune) Снап высоты к ближайшему полутону (плавно, без «плавания»)
Конфиг-файл Дефолты и свои пресеты в ~/.config/vois/config.toml
TUI Полноэкранный интерфейс с управлением стрелками и мышью, живые уровни
Запись в WAV Клавиша R или --record
Тестовый тон --tone 220 — послушать пресет без микрофона
Кроссплатформенность Linux (ALSA/PipeWire), Windows (WASAPI), macOS (CoreAudio)

Пресеты

Пресет Высота Форманты Эффекты
Clean 0 пт 1.00× passthrough (сравнение A/B)
Girl / Anime +5 пт 1.25× хорус + овердрайв
Boy +2 пт 1.08× компрессор
Manly / Deep −4 пт 0.78× компрессор
Demon −9 пт 0.85× овердрайв + реверб + тремоло
Robot 0 пт 1.00× вокодер + биткраш
8-bit 0 пт 1.00× биткраш (5 бит, децимация ×4, автолевел)
Alien −2 пт 1.15× кольцевая модуляция + флэнджер
Radio 0 пт 1.00× полосовой фильтр + шум + компрессор
Megaphone 0 пт 1.00× дисторшн + узкий EQ + компрессор
Ghost −3 пт 1.05× большой реверб + хорус + тремоло
Cyborg +2 пт 1.00× saw-вокодер + овердрайв + биткраш
Chipmunk +7 пт 1.40× хорус
Helium +10 пт 1.50× хорус
Vader −10 пт 0.60× овердрайв + реверб + тремоло
Telephone 0 пт 1.00× полосовой фильтр + шум + компрессор
Growl −5 пт 0.70× дисторшн + компрессор + реверб
Walkie-Talkie 0 пт 1.05× узкий bandpass + сквилч-шум + компрессор + биткраш

Запуск

make install     # ставит `vois` в ~/.local/bin (проверь что он в PATH)
vois             # просто работает: авто-устройства, виртуальный микрофон, 48 кГц
vois -p "Girl / Anime"
vois --no-virtual-mic            # вывод в колонки/наушники
vois --pitch-correct             # автолюн
vois --tone 220                  # послушать пресеты без микрофона
vois --list / --list-presets     # список устройств / пресетов

В Discord / Zoom / OBS выбери микрофон vois.rs.

Управление в TUI

Клавиша / мышь Действие
↑ / ↓ / клик переключение пресета (живой предпросмотр)
← / → pitch (главный экран) / изменение параметра (настройки)
S / Tab экран настроек
H справка
Q / Ctrl+C выход

Экран настроек: ↑↓ выбор, ←→ / Enter изменение, Esc назад — пресет, pitch, formant, порог шумоподавителя (дБ), усиление (дБ), mute, режим LIVE/PASSTHROUGH, запись, автолюн.

Конфиг-файл

Создай ~/.config/vois/config.toml для дефолтов и своих пресетов:

# ~/.config/vois/config.toml
preset = "Deep Robot"
virtual_mic = true

[custom_presets]
"Deep Robot" = { pitch = -6, formant = 0.8, effects = [
    { Vocoder = { bands = 16, carrier = "Noise", wet = 1.0 } },
    { Reverb = { room = 0.5, damp = 0.4, wet = 0.3 } },
] }

Любой CLI-флаг перекрывает файл. Эффекты: Distortion, Overdrive, Bitcrush, Reverb, Chorus, Flanger, Tremolo, RingMod, Bandpass, Noise, Compressor, Vocoder (carrier: Noise / Saw / Input). Свои пресеты также принимают gate_db.

Зависимости

  • cpal — захват/вывод звука (ALSA / WASAPI / CoreAudio)
  • rustfft — FFT для фазового вокодера
  • ratatui + crossterm — терминальный интерфейс
  • ringbuf — lock-free буферы сэмплов
  • hound — запись WAV
  • Виртуальный микрофон на Linux требует pactl (PipeWire/PulseAudio)

Установка

  1. cargo build --release
  2. Запусти ./target/release/vois
  3. В голосовом приложении выбери микрофон vois.rs

Планы / идеи

  • Виртуальный микрофон на Windows/macOS (VB-CABLE / BlackHole) как устройство вывода
  • Замер задержки и режимы FFT с меньшей латентностью
  • Автокоррекция высоты / сглаживание в стиле караоке
  • Больше пресетов и пользовательские цепочки эффектов
  • Web-UI / трей-иконка
  • Звуковая плата (soundboard) через виртуальный микрофон

License

GNU General Public License v3.0 (or later)