MRRC 项目规格说明书
基于 Vibe-SDD 方法论的项目规格文档
1. 项目概述
1.1 项目名称
MRRC (Mobile Remote Radio Control) - 移动端业余电台远程控制系统
1.2 项目类型
- [x] Web应用 (后端 + HTML5前端)
- [ ] 移动应用
- [ ] 后端服务
- [x] 全栈应用 (Python Tornado + HTML5/JS)
1.3 一句话描述
通过现代Web浏览器实现业余电台的远程控制,让HAMRadio爱好者随时随地操控电台进行通联。
1.4 目标用户
- 业余无线电爱好者 (HAM Radio Operators)
- 需要远程操作电台的用户
- 无线电俱乐部成员
2. 业务背景
2.1 业务问题
- 空间限制: 城市居民无法在住所架设大型天线
- 干扰问题: 城市电磁环境复杂,QRM干扰严重
- 移动需求: HAM需要随时随地响应通联
- 设备限制: 多台设备需要集中管理
2.2 业务价值
- 让HAM突破地理限制,在任何有网络的地方操作电台
- 通过专业DSP降噪提升通联质量
- 集成天调系统简化天线匹配
- 支持多电台集中管理
2.3 市场背景
- 业余无线电在全球有约300万持照爱好者
- 移动互联网普及,5G/WiFi无处不在
- 专业SDR设备价格下降,普及率上升
- 远程电台控制是HAM社区长期需求
3. 目标与成功标准
3.1 核心目标 (3-5个)
- 低延迟: TX/RX音频切换延迟 < 100ms
- 高可靠: PTT可靠性 ≥ 99%
- 专业降噪: WDSP NR2降噪 15-20dB
- 移动优先: 完善的iOS/Android支持
- 多实例: 单服务器支持多电台独立控制
3.2 成功标准
| 标准 |
指标 |
目标值 |
测量方式 |
| 性能 |
TX/RX切换延迟 |
< 100ms |
端到端测试 |
| 性能 |
PTT响应时间 |
< 50ms |
协议分析 |
| 性能 |
音频延迟 |
< 100ms |
端到端测试 |
| 可用性 |
系统可用性 |
≥ 99.5% |
月度统计 |
| 可用性 |
PTT可靠性 |
≥ 99% |
长期测试 |
| 功能 |
降噪深度 |
≥ 15dB |
频谱分析 |
| 用户 |
界面满意度 |
≥ 4.5/5 |
用户反馈 |
| 兼容 |
移动端支持 |
100% |
自动化测试 |
4. 项目范围
4.1 包含范围
- 移动端Web界面开发 (mobile_modern.html)
- 后端Tornado服务器 (MRRC主程序)
- 实时音频流处理 (TX/RX)
- DSP降噪集成 (WDSP NR2/NB/ANF/AGC)
- ATR-1000天调集成 (功率/SWR显示)
- AI语音助手 (Whisper + Qwen3-TTS)
- CW实时解码 (ONNX前端推理)
- 多实例部署支持
4.2 不包含范围
- 电台硬件开发/改造
- 移动端原生App (iOS/Android)
- 云端SaaS服务
- 商业授权版本
4.3 MVP定义
- 基础Web界面 (频率/模式/PTT控制)
- 实时音频TX/RX
- WDSP降噪
- ATR-1000功率显示
5. 技术约束
5.1 技术栈偏好
| 层级 |
技术选择 |
理由 |
| 前端 |
HTML5/CSS3/Vanilla JS |
轻量,浏览器兼容性好 |
| 后端 |
Python 3.12+ / Tornado |
原生WebSocket支持 |
| 音频 |
PyAudio |
跨平台音频I/O |
| DSP |
WDSP |
专为SSB优化 |
| 控制 |
Hamlib/rigctld |
电台控制标准 |
| 部署 |
macOS/Linux |
服务器平台 |
5.2 架构约束
- 必须支持WebSocket实时通信
- 音频采样率统一16kHz (传输) / 48kHz (处理)
- TLS加密传输
- 多实例Unix Socket隔离
5.3 组件规范
5.3.1 前端组件
| 组件 |
文件 |
技术 |
职责 |
| 主界面 |
mobile_modern.html |
HTML5 |
移动端UI |
| 控制逻辑 |
controls.js |
Vanilla JS |
音频处理、WebSocket |
| PTT按钮 |
tx_button_optimized.js |
JS |
PTT事件处理、预热帧 |
| 音频播放 |
rx_worklet_processor.js |
AudioWorklet |
低延迟播放 |
| 均衡器 |
controls.js |
Web Audio API |
TX三段EQ |
5.3.2 后端组件
| 组件 |
文件 |
技术 |
职责 |
| Web服务器 |
MRRC |
Tornado |
HTTP/WebSocket |
| 音频处理 |
audio_interface.py |
PyAudio |
采集/播放/分发 |
| DSP处理 |
wdsp_wrapper.py |
ctypes/WDSP |
NR2/NB/ANF/AGC |
| 电台控制 |
hamlib_wrapper.py |
socket |
rigctld通信 |
| 天调代理 |
atr1000_proxy.py |
WebSocket |
ATR-1000桥接 |
| 天调存储 |
atr1000_tuner.py |
JSON |
参数持久化 |
5.4 接口规范
5.4.1 WebSocket接口
| 端点 |
协议 |
描述 |
| /WSMRRC |
WSS |
主控制+音频通道 |
| /WSATR1000 |
WSS |
ATR-1000数据通道 |
5.4.2 控制命令格式
{"action": "setFreq", "data": "7074000"}
{"action": "setMode", "data": "USB"}
{"action": "ptt", "data": true}
{"action": "getFreq"}
5.4.3 音频数据格式
| 参数 |
值 |
| 采样率 |
16kHz (传输) / 48kHz (处理) |
| 格式 |
Int16 PCM |
| 帧大小 |
320 samples (20ms) |
| 声道 |
单声道 |
5.5 部署约束
5.5.1 多实例配置
| 参数 |
radio1 |
radio2 |
| Web端口 |
8891 |
8892 |
| rigctld端口 |
4531 |
4532 |
| Unix Socket |
/tmp/mrrc_radio1.sock |
/tmp/mrrc_radio2.sock |
| 天调JSON |
atr1000_tuner.json |
atr1000_tuner_radio2.json |
5.6 预算与时间
- 预算范围: 开源项目,无商业预算
- 时间要求: 持续迭代,敏捷发布
6. 风险与假设
6.1 主要风险
| 风险 |
影响 |
缓解措施 |
| 音频延迟过高 |
高 |
AudioWorklet优化,缓冲区调整 |
| PTT可靠性不足 |
高 |
预热帧机制,确认重试 |
| WDSP集成困难 |
中 |
备选RNNoise方案 |
| 移动端兼容性 |
中 |
多浏览器测试 |
| 多实例配置复杂 |
中 |
标准化配置模板 |
6.2 关键假设
- 用户有稳定的互联网连接
- 电台支持Cat控制 (rigctld/Hamlib)
- 浏览器支持WebSocket
- 用户具备基本网络配置能力
7. 利益相关者
7.1 核心团队
| 角色 |
名字 |
职责 |
| 项目负责 |
MRRC Team |
整体决策 |
| 开发人员 |
社区贡献 |
代码实现 |
| 测试人员 |
社区成员 |
测试验证 |
7.2 外部干系人
| 角色 |
期望 |
| HAM社区 |
稳定可靠的远程控制 |
| 开源社区 |
代码可读性,文档完整性 |
8. 里程碑
| 里程碑 |
计划日期 |
交付物 |
| M1: 基础TX/RX |
2024-10 |
音频流通 |
| M2: 移动端优化 |
2024-12 |
mobile_modern |
| M3: DSP集成 |
2026-03 |
WDSP NR2 |
| M4: V4.9发布 |
2026-03-14 |
语音助手/CW/多实例 |
| M5: 持续迭代 |
进行中 |
功能增强 |
附录: 功能特性清单
| 特性 |
优先级 |
状态 |
| 远程频率控制 |
P0 |
✅ 已完成 |
| 远程模式切换 |
P0 |
✅ 已完成 |
| PTT控制 |
P0 |
✅ 已完成 |
| TX音频流 |
P0 |
✅ 已完成 |
| RX音频流 |
P0 |
✅ 已完成 |
| WDSP降噪 |
P1 |
✅ 已完成 |
| ATR-1000集成 |
P1 |
✅ 已完成 |
| 语音助手 |
P2 |
✅ 已完成 |
| CW解码 |
P2 |
✅ 已完成 |
| 多实例支持 |
P2 |
✅ 已完成 |
| PWA离线支持 |
P3 |
✅ 已完成 |
文档信息
- 版本: 1.0
- 创建日期: 2026-03-15
- 最后更新: 2026-03-15
- 作者: MRRC Team