Continuous Talk: - Voice Activity Detection with energy-based detection - Smoothing window (5 frames) to avoid false triggers - Hangover timer (15 frames / 300ms) to keep transmitting during pauses - Hysteresis: threshold * 0.7 to stop, threshold to start - Configurable threshold (default 0.005) Talk Modes: - Push-to-Talk: hold V key to talk (existing) - Continuous: mic always on, VAD auto-starts/stops transmission - Toggle between modes in Settings page Architecture: - VoiceActivation struct with state machine (Silent/Speaking/Hangover) - Subscription monitors mic input in continuous mode - MicSamples messages feed VAD, which triggers StartContinuous/StopContinuous - start_transmission/stop_transmission helper functions (shared by PTT and VAD) - Mic lifecycle managed by subscription (starts on mode enable, stops on disable) 69 tests passing, clippy clean on both builds
ReTeamSpeak
跨平台 TeamSpeak 客户端,支持 Windows、macOS、Linux、iOS 和 Android。
功能特性
- 高质量语音通信 (Opus 编解码器)
- 文本聊天
- 文件传输
- 安全加密通信 (AES-128-EAX)
- 跨平台支持
- 现代化 UI 界面
- 全局热键支持
- 系统通知
支持平台
| 平台 | 状态 |
|---|---|
| Windows | 支持 |
| macOS | 支持 |
| Linux | 支持 |
| iOS | 支持 |
| Android | 支持 |
项目结构
re-teamspeak/
├── src/ # 源代码
│ ├── shared/ # 共享类型定义
│ │ └── src/
│ │ ├── lib.rs # 库入口
│ │ ├── types.rs # 核心类型
│ │ ├── events.rs # 事件定义
│ │ ├── errors.rs # 错误类型
│ │ └── config.rs # 配置管理
│ │
│ ├── tscore/ # 协议核心层
│ │ └── src/
│ │ ├── lib.rs # 库入口
│ │ ├── protocol/ # 协议实现
│ │ │ ├── packet.rs # 数据包处理
│ │ │ ├── types.rs # 协议类型
│ │ │ └── commands.rs # 命令解析
│ │ ├── crypto/ # 加密模块
│ │ │ ├── eax.rs # EAX 加密
│ │ │ ├── keys.rs # 密钥管理
│ │ │ └── hash.rs # 哈希函数
│ │ ├── network/ # 网络模块
│ │ │ ├── socket.rs # Socket 抽象
│ │ │ └── resolver.rs # 地址解析
│ │ └── connection/ # 连接管理
│ │ ├── client.rs # 客户端
│ │ └── state.rs # 状态机
│ │
│ ├── tsaudio/ # 音频引擎
│ │ └── src/
│ │ ├── lib.rs # 库入口
│ │ ├── capture.rs # 音频采集
│ │ ├── playback.rs # 音频播放
│ │ ├── codec.rs # Opus 编解码
│ │ ├── vad.rs # 语音活动检测
│ │ └── buffer.rs # 抖动缓冲
│ │
│ ├── tsdb/ # 数据存储
│ │ └── src/
│ │ ├── lib.rs # 库入口
│ │ ├── identity.rs # 身份管理
│ │ ├── bookmark.rs # 书签管理
│ │ ├── message.rs # 消息管理
│ │ └── config.rs # 配置存储
│ │
│ └── tauri-app/ # Tauri 应用
│ ├── src-tauri/ # Rust 后端
│ │ ├── src/
│ │ │ ├── lib.rs # 库入口
│ │ │ ├── main.rs # 主入口
│ │ │ ├── commands.rs # Tauri 命令
│ │ │ └── state.rs # 状态管理
│ │ ├── Cargo.toml # Rust 依赖
│ │ └── tauri.conf.json # Tauri 配置
│ └── frontend/ # React 前端
│ ├── src/
│ │ ├── main.tsx # 入口
│ │ ├── App.tsx # 主组件
│ │ └── styles.css # 样式
│ ├── package.json # npm 依赖
│ └── vite.config.ts # Vite 配置
│
├── docs/ # 文档
│ ├── protocol.md # 协议分析
│ ├── protocol_stack.md # 协议栈分析
│ ├── architecture.md # 架构设计
│ ├── components.md # 组件设计
│ └── requirements.md # 需求分析
│
├── build.sh # Linux/macOS 构建脚本
├── build.bat # Windows 构建脚本
└── Cargo.toml # Rust workspace 配置
快速开始
环境要求
- Rust: 1.70.0 或更高版本
- Node.js: 18.0.0 或更高版本
- npm: 9.0.0 或更高版本
平台特定要求
Windows:
- Visual Studio 2019 或更高版本(带 C++ 桌面开发工作负载)
- Windows 10 SDK
macOS:
- Xcode 14 或更高版本
- Command Line Tools
Linux:
sudo apt update
sudo apt install -y \
libwebkit2gtk-4.0-dev \
libappindicator3-dev \
librsvg2-dev \
patchelf \
libssl-dev \
libasound2-dev \
libdbus-1-dev \
libgtk-3-dev \
libsoup2.4-dev \
libjavascriptcoregtk-4.0-dev
Android:
- Android Studio
- Android SDK 33 或更高版本
- NDK 25 或更高版本
iOS:
- Xcode 14 或更高版本
- CocoaPods
安装
git clone https://github.com/re-teamspeak/re-teamspeak.git
cd re-teamspeak
# 安装前端依赖
cd src/tauri-app/frontend
npm install
构建
# Linux/macOS
./build.sh all # 构建所有平台
./build.sh desktop # 仅构建桌面应用
./build.sh android # 仅构建 Android 应用
./build.sh ios # 仅构建 iOS 应用
# Windows
build.bat all
build.bat desktop
开发模式
cd src/tauri-app/src-tauri
cargo tauri dev
技术栈
后端 (Rust)
| 库 | 用途 |
|---|---|
| Tauri v2 | 跨平台桌面应用框架 |
| tokio | 异步运行时 |
| aes/ea |