Приложение для голосового общения во время сетевых игр
- Rust 65.1%
- Svelte 18.7%
- TypeScript 14.9%
- CSS 0.6%
- HTML 0.4%
- Other 0.3%
| docs | ||
| src | ||
| src-tauri | ||
| static | ||
| .gitignore | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| eslint.config.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
HomeVoice
Кроссплатформенное десктопное голосовое чат-приложение для компьютерных игр. Каждый экземпляр может быть сервером и клиентом одновременно. Без регистрации — подключение по ссылке-приглашению.
Возможности
- Голосовой чат с минимальной задержкой (< 100 мс интернет, < 30 мс LAN)
- Шифрование (X25519 + ChaCha20-Poly1305)
- Подавление шума (RNNoise)
- Эхоподавление (WebRTC AEC3)
- Автоматическая регулировка усиления (AGC)
- PTT (Push-to-Talk) с несколькими хоткеями
- Комнаты с опциональными паролями
- Ссылки-приглашения (
homevoice://) - UPnP для автоматического проброса портов
- До 64 участников на сервере
Технологии
| Слой | Стек |
|---|---|
| Backend | Rust, Tauri v2, Tokio |
| Frontend | TypeScript, Svelte 5, Skeleton UI, Tailwind CSS v4 |
| Аудио | cpal, Opus, nnnoiseless, webrtc-audio-processing, rubato |
| Сеть | TCP (сигнализация) + UDP (голос), шифрование X25519/ChaCha20-Poly1305 |
Требования
- Rust (stable, edition 2024)
- Node.js >= 18
- Windows 10 1809+ / macOS 12+ / Linux (x11/Wayland)
- Tauri v2 system dependencies: https://v2.tauri.app/start/prerequisites/
Установка и запуск
git clone <repo-url>
cd HomeVoice
npm install
npm run dev
Сборка (release)
npm run build
Готовый исполняемый файл появится в src-tauri/target/release/bundle/.
Скрипты
| Команда | Описание |
|---|---|
npm run dev |
Разработка (hot-reload фронтенд + Rust backend) |
npm run build |
Сборка release |
npm run build:frontend |
Сборка только фронтенда |
npm run dev:frontend |
Dev-сервер только фронтенда |
npm run check |
TypeCheck фронтенда |
npm run lint |
Линт фронтенда |
cargo test |
Запуск тестов Rust |
cargo clippy -- -D warnings |
Линт Rust |
cargo fmt |
Форматирование Rust |
Архитектура
Capture → Resample → Noise Gate → Noise Suppression → Echo Cancel → AGC → Opus Encode → UDP Send
↓
UDP Recv → Jitter Buffer → Opus Decode → Volume → Mix → Playback
- Сервер работает как relay — ретранслирует аудиопотоки, микширование на стороне клиента
- Каждая пара клиент-сервер имеет уникальный ключ шифрования (X25519 key exchange)
- Конфигурация хранится в
%APPDATA%/HomeVoice/(Windows),~/Library/Application Support/HomeVoice/(macOS),~/.config/homevoice/(Linux)
Лицензия
Частный проект.