SPEC 项目规格说明书

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 业务问题

  1. 空间限制: 城市居民无法在住所架设大型天线
  2. 干扰问题: 城市电磁环境复杂,QRM干扰严重
  3. 移动需求: HAM需要随时随地响应通联
  4. 设备限制: 多台设备需要集中管理

2.2 业务价值

  • 让HAM突破地理限制,在任何有网络的地方操作电台
  • 通过专业DSP降噪提升通联质量
  • 集成天调系统简化天线匹配
  • 支持多电台集中管理

2.3 市场背景

  • 业余无线电在全球有约300万持照爱好者
  • 移动互联网普及,5G/WiFi无处不在
  • 专业SDR设备价格下降,普及率上升
  • 远程电台控制是HAM社区长期需求

3. 目标与成功标准

3.1 核心目标 (3-5个)

  1. 低延迟: TX/RX音频切换延迟 < 100ms
  2. 高可靠: PTT可靠性 ≥ 99%
  3. 专业降噪: WDSP NR2降噪 15-20dB
  4. 移动优先: 完善的iOS/Android支持
  5. 多实例: 单服务器支持多电台独立控制

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定义

  1. 基础Web界面 (频率/模式/PTT控制)
  2. 实时音频TX/RX
  3. WDSP降噪
  4. 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: V5.5 2026-05 记忆频道/登录页重构/MP3录音/FT8桥接增强
M6: V5.6.5 2026-06 PTT安全系统/ATR学习缓冲/FT8远程控制台/EFHW知识库

附录: 功能特性清单

特性 优先级 状态
远程频率控制 P0 ✅ 已完成
远程模式切换 P0 ✅ 已完成
PTT控制 P0 ✅ 已完成
TX音频流 P0 ✅ 已完成
RX音频流 P0 ✅ 已完成
WDSP降噪 P1 ✅ 已完成
ATR-1000集成 P1 ✅ 已完成
语音助手 P2 ✅ 已完成
CW解码 P2 ✅ 已完成
多实例支持 P2 ✅ 已完成
PWA离线支持 P3 ✅ 已完成

文档信息 - 版本: 1.0 - 创建日期: 2026-06-19 - 最后更新: 2026-06-19 - 作者: MRRC Team