vois/README.md
loki5512344 b0d685a110 Initial release: real-time voice changer in pure Rust
Phase-vocoder pitch/formant shifting, 12 presets, effect chain,
noise gate, WAV recording, full-screen TUI (arrow/mouse control)
and a built-in PipeWire/PulseAudio virtual mic (vois.rs).
GPL-3.0-or-later.
2026-08-02 17:54:50 +02:00

10 KiB
Raw 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, reverb, chorus, ring-mod, bandpass, noise, compressor, noise gate
Virtual microphone Built-in vois.rs mic (PipeWire/PulseAudio) — no VB-CABLE needed on Linux
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), macOS (CoreAudio), Windows (WASAPI)

Presets

Preset Pitch Formant Effects
Clean 0 st 1.00× passthrough (A/B compare)
Girl / Anime +5 st 1.25× —
Boy +3 st 1.12× —
Manly / Deep −4 st 0.78× compressor
Demon −9 st 0.85× distortion + reverb
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 + chorus
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
Cyborg +2 st 1.00× vocoder + bitcrush

Usage

cargo build --release
./target/release/vois                          # virtual mic is ON by default
./target/release/vois -p "Girl / Anime"        # pick a preset
./target/release/vois --no-virtual-mic         # just output to your speakers
./target/release/vois --tone 220               # hear presets without a mic
./target/release/vois --list                   # list audio devices
./target/release/vois --list-presets           # list 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.

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
TUI Полноэкранный интерфейс с управлением стрелками и мышью, живые уровни
Запись в WAV Клавиша R или --record
Тестовый тон --tone 220 — послушать пресет без микрофона
Кроссплатформенность Linux (ALSA/PipeWire), macOS (CoreAudio), Windows (WASAPI)

Пресеты

Пресет Высота Форманты Эффекты
Clean 0 пт 1.00× passthrough (сравнение A/B)
Girl / Anime +5 пт 1.25× —
Boy +3 пт 1.12× —
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× вокодер + биткраш

Запуск

cargo build --release
./target/release/vois                          # виртуальный микрофон включён по умолчанию
./target/release/vois -p "Girl / Anime"        # выбрать пресет
./target/release/vois --no-virtual-mic         # просто вывод в колонки/наушники
./target/release/vois --tone 220               # послушать пресеты без микрофона
./target/release/vois --list                   # список устройств
./target/release/vois --list-presets           # список пресетов

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

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

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

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

Зависимости

  • 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)