rf-datagen
收藏rf-datagen 数据集概述
数据集简介
rf-datagen 是一个用于机器学习训练的射频信号IQ数据集生成器,可合成39种业余无线电信号类别的复杂IQ基带样本,并包含现实的信道损伤。
信号类别(39种)
| 类别 | 模式 |
|---|---|
| 数字文本 | CW, PSK31, PSK63, QPSK, PSK125, 8PSK, RTTY, OLIVIA, JS8, DOMINOEX, MT63, HELLSCHREIBER, MFSK16, MFSK32, CONTESTIA, THOR, FSQ, IFKP, THROB |
| WSJT-X | FT8, FT4, WSPR, JT65, JT9 |
| 模拟语音 | SSB, AM, FM |
| 图像 | SSTV, FAX |
| 数据 | NAVTEX, PACKET |
| 数字语音 | FREEDV, M17, DMR, DSTAR, YSF, P25, NXDN |
| 其他 | NOISE |
损伤场景
样本分布在可配置的传播/接收器场景中,包括:HF clean, HF good/poor, VHF mobile, UHF urban, SDR desktop, contest crowded, overdriven, poorly operated, vintage, near-far, auroral。信噪比水平和相对权重可配置。
先决条件
- Python >= 3.11
- NumPy, SciPy, Pillow, PySSTV(自动安装)
- 可选外部工具(按生成器需求):
- fldigi —
fldigi(用于真实的fldigi编码数字模式) - wsjtx —
wsjtx工具(jt9,wsprd等) - analog/digivoice —
piperTTS引擎 + 语音模型 - packet —
direwolf(用于AX.25数据包编码)
- fldigi —
安装方法
pip(仅Python)
bash pip install -e .
此方法安装Python包,但不安装外部CLI工具。需要单独提供这些工具,缺少工具的生成器会自动跳过。
Nix flake(推荐)
该flake提供了一个完整的开发环境,包含所有Python依赖项和外部CLI工具: bash nix develop
Nix flake + direnv
仓库包含一个.envrc文件,进入目录时环境会自动激活:
bash
direnv allow
devenv
如果使用devenv,可以直接使用该flake。在项目根目录创建devenv.nix或在devenv.yaml中指向该flake,然后激活:
bash
devenv shell
或使用direnv集成: bash direnv allow
使用方法
生成数据集
bash rf-datagen generate -c config.toml
列出信号类别
bash rf-datagen list
验证数据集
bash rf-datagen validate ./output
往返验证
bash rf-datagen validate-roundtrip # 所有模式 rf-datagen validate-roundtrip --clean-only --trials 3 # 快速检查
检查信号类别(从现有数据集)
bash rf-datagen inspect ./output --class FT8
质量控制检查工具
qc子命令可生成实时可视化和自包含的HTML报告,用于检查流水线阶段,无需预生成数据集。需要matplotlib。
bash
显示每种生成器类型的生成文本内容
rf-datagen qc text --generator analog --count 10 rf-datagen qc text --generator fldigi --mode PSK31
将TTS语音音频导出为WAV文件
rf-datagen qc audio --count 5 --output /tmp/qc/audio
可视化干净的调制信号(频谱图、波形、PSD)
rf-datagen qc modulated --mode FT8 CW --output /tmp/qc/modulated rf-datagen qc modulated --all-modes --snr-grid
可视化经过信道损伤后的信号
rf-datagen qc impaired --mode CW --all-snr --output /tmp/qc/impaired rf-datagen qc impaired --mode DMR --scenario hf_poor --snr 5
检查磁盘上现有的.npy数据集(类别分布、样本图)
rf-datagen qc dataset --path ./output --mode FT8 --output /tmp/qc/dataset
单一模式的完整自包含HTML报告(频谱图、音频、SNR网格、所有12种损伤场景、信号统计)
rf-datagen qc report --mode FT8 --output /tmp/qc/reports
配置
完整选项请参见config.toml。关键部分包括:
[dataset]— 采样率、窗口长度、输出目录、种子、工作线程数[impairments]— 信噪比水平、频率偏移、场景权重[generators.*]— 每个生成器的启用/禁用、每类样本数以及生成器特定调优
输出格式
| 文件 | 描述 |
|---|---|
rf_datagen_iq.npy |
(N, window_length) complex64数组 — 每行一个窗口 |
rf_datagen_tags.csv |
每窗口元数据:模式、SNR、场景等 |
Flake输出
| 输出 | 描述 |
|---|---|
packages.*.default |
包含所有外部工具(fldigi, wsjtx, piper等)在PATH中的CLI应用程序 |
packages.*.pythonPackage |
用于下游flake中import rf_datagen的Python库包 |
devShells.*.default |
包含Python依赖项和CLI工具的开发环境 |
Make目标
make generate # 运行完整生成 make validate # 验证数据集完整性 make validate-roundtrip # 往返编码/解码验证 make validate-quick # 快速验证(仅clean,3次试验) make validate-all # 所有模式(包括STT) make qc-report # HTML质量控制报告(默认:FT8;覆盖:make qc-report MODE=CW) make qc-modulated # 所有模式的频谱图/波形/PSD make qc-text # 显示所有生成器的文本内容 make clean # 删除生成的输出
许可证
MIT — 参见 https://github.com/Quantum-Serendipity/rf-datagen/blob/main/LICENSE




