mjshiggins/dopplertrack
数据通过比对飞机螺旋桨多普勒曲线与历史 ADS-B 航迹,推断录音的拍摄位置。
项目介绍
dopplertrack 利用飞机掠过时螺旋桨叶片通过频率产生的微弱声学痕迹来推断录音位置:约 60–400 Hz 的基频及谐波会随飞机经过向下扫频,扫频形状取决于听者相对于飞机真实航迹的位置。工具对每个候选地面点建模该航班应产生的多普勒曲线,与高分辨率频谱图比对并排序。它是 colsto 视频"I discovered a sound that leaks your exact location" 所展示方法的重实现,原视频未公开代码。
流程拆成若干子命令:spectrogram(ffmpeg 解码 + 白化 STFT)、detect/fit(自动检测并参数化飞越曲线)、fetch-day/extract-region(拉取单日 ADS-B 并保留经过边界框的航班)、search(在格点与航班对上搜索)、refine(细网格精化,可追加事件)。各阶段细节见流水线说明。
适合对声学推断、地理定位和隐私泄露感兴趣的研究者与爱好者,需要一定的命令行和地理空间数据处理经验。
快速使用
需要 uv、ffmpeg,以及知道录制日期的音频。在仓库根目录执行:
uv sync
uv run dopplertrack spectrogram recording.mp4 rec.npz
uv run dopplertrack detect rec.npz --band 60 300 --top 10 --out detected.json
uv run dopplertrack fit rec.npz --window 2090 2200 --band 95 200 --harmonics 2 --out ev1.json
uv run dopplertrack fit rec.npz --window 3020 3130 --band 95 195 --out ev2.json
uv run dopplertrack fetch-day 2026-09-08 traces_ny.npz --bbox 40.4 41.3 -74.4 -72.6
uv run dopplertrack search rec.npz --events ev1.json ev2.json --traces traces_ny.npz \
--bbox 40.4 41.3 -74.4 -72.6 --spacing 200 --out results.csv
uv run dopplertrack refine rec.npz results.csv --events ev1.json ev2.json --traces traces_ny.npz \
--bbox 40.4 41.3 -74.4 -72.6 --extra ev3.json ev4.json --out fine.csv
窗口秒数和边界框是示例值,需换成自己录音中的飞越窗口与搜索区域。detect 会打印按分数排序的候选飞越列表,其 JSON 输出可直接作为 search --events 的输入。对已知位置的录音,search --point LAT LON 只给单点评分而不做网格搜索,是验证数据与物理模型最快的办法,详见使用说明。
结果与精度
项目处于概念验证阶段,已在两段录音上验证状态说明。参考录音(Oyster Bay)在 100 × 150 km 范围盲搜,正确航班对在 328 对中排名第一,50 m 网格精化后距真实位置 43 m,但与第二名的分数差距只有 4.9%。另一段 12 小时的白头海雕直播录像(North Fort Myers)自动检测在 607 对航班中排名第一,但仅两个事件只能把位置定在约 2 km 内;追加三个检测到的飞越后缩小到 592 m。作者把 Oyster Bay 更锐利的结果归因于低空侧向掠过,而近乎正上方经过的航迹对位置约束很弱第二段录音。
使用约束
- 需要已知录制日期以便拉取当天 ADS-B,并给定搜索区域;参考视频的录音起始时间和两架飞机是搜索出来的,而非事先提供。
fetch-day从 adsb.lol 流式读取约 4 GB 的单日归档,网络要快且稳定;extract-region可改用已在磁盘上的归档数据来源。- 打分依据是模型曲线下的频谱亮度,频谱繁忙处可能让错误的航班对得分偏高;作者报告白头海雕案例的领先幅度较薄。
- 长录音和大区域计算量不小:Oyster Bay 搜索在笔记本上约 19 分钟,白头海雕搜索约 8 分钟。
- 文档只描述了 uv/ffmpeg 的命令行流程,未给出 Windows 或 macOS 的特定说明。
- 项目采用 MIT 许可证。
HotRepo 点评
仓库在 2026-11-04 的新项目榜(Python 榜)记录显示,创建后约 20 小时内新增 102 Star、14 Fork。这只是单次快照,不足以判断持续热度;更有价值的信号是 README 对薄弱领先幅度和几何相关误差的如实披露,使 43 m 的 Oyster Bay 结果和 592 m 的白头海雕结果更像是实测边界而非宣传结论。评估该工具时,两段验证的局限(近乎正上方经过、频谱繁忙)比 Star 数更值得关注。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。