1337isnot1337/DOPPLERGEIST
安全利用飞机多普勒频移与历史航迹推断录音录制地点,适合 OSINT 与声学定位研究者。
项目介绍
DOPPLERGEIST 是一个实验性的 OSINT 工具,用于估计一段录音的录制位置。它测量经过飞机产生的多普勒频移轨迹,按有依据的录制时间窗检索历史 ADS-B 航迹,建模多普勒频率与声音到达时间,再对候选接收位置排序。多次独立飞越的结果会相互印证,无法排除的竞争解释可以保留,而不是强行给出单一答案。
流程分四步:声学测量、历史航迹获取(默认来自 ADSB.lol 按年份归档的历史数据)、物理建模、地理搜索。README 给出的目标是在 1000 m 内给出有支撑的位置估计,最好达到 100–500 m,但同时说明尚未在真实录音上建立全国范围的独立准确率。
安装与验证
需要 Python 3.11+、FFmpeg(ffmpeg 与 ffprobe 在 PATH 中)和 Git。README 给出的命令面向 Linux/macOS:
git clone https://github.com/1337isnot1337/DOPPLERGEIST.git
cd DOPPLERGEIST
python -m venv .venv
.venv/bin/python -m pip install .
.venv/bin/dopplergeist --version
有兼容 C 编译器时会构建可选的声学与 ridge 原生后端,缺失时仍可用 Python 回退实现;项目文档说明了如何检查实际启用的后端。
快速使用
先做自动事件发现,这一步扫描整段录音,不要求航迹数据或数据服务凭据:
.venv/bin/python scripts/discover_audio.py \
path/to/recording.mp3 \
--output results/my-discovery
结果写在 results/my-discovery/summary.json,诊断信息在 discovery/ 下。要做位置搜索,运行 dopplergeist analyze path/to/recording.mp3 --jobs jobs,同时用 --start-utc、--end-utc 给出首个音频采样对应的可信 UTC 窗口,用 --time-source 说明时间证据来源,并加 --online 允许下载历史数据。缺少时钟证据时任务会返回 needs_input。命令会打印任务 ID,可用 dopplergeist job JOB_ID --jobs jobs --watch 跟踪进度。
也可以使用浏览器流程:dopplergeist serve --jobs jobs --online --max-runtime 14400 --port 8765,打开 http://127.0.0.1:8765 上传录音并填写 UTC 窗口。首次获取数据可能需要数小时和数十 GB,且没有自动磁盘空间上限。
使用约束
必须有可辩护的录制时钟:音频内的相对时间无法确定应检索哪一天的航班,文件修改时间或上传时间也不能作为录音时钟。航迹与地形数据占用大量磁盘,运行时预算不足会让搜索停在未完成状态。Windows 原生运行未经验证。
README 对局限写得很直接:尚无可接受的盲测真实定位;四段 NASA 录音测试多数只得到零提案或不受支持的提案,唯一的 474 m 条件匹配也可能来自背景飞机而非被测无人机。部分搜索会以 inconclusive / search_incomplete 结束。事件缺失、航迹覆盖不全、位置竞争或灵敏度证据不足都可能导致放弃结论。代码采用 MIT 许可证;录音、ADS-B 数据与地形数据各有其权利约束。作者自述项目为完全 AI 辅助编写,处于早期 beta。
HotRepo 点评
DOPPLERGEIST 在 2026-11-03 首次出现在 HotRepo 新项目 Python 榜,自 2026-11-02 创建后约 20 小时的窗口内新增 106 Star、17 Fork。它没有全语言日榜名次记录,也没有讨论线程数据,因此现有证据只能说明这是一个垂直 OSINT 项目较强的单日开局,而不是已被验证的热度趋势。技术上更值得注意的是文档对定位结论的克制:基准表把合成、配置化回放和真实数据结果分开列出,并明确真实数据部分没有任何一项建立了独立认可的真实自动定位。对考虑使用的人来说,这比 Star 数更有参考价值。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。